am 3b024f09: Fix packaging of cardview for non-maven extra package.

* commit '3b024f09a4e7c1bb8a386894de6073e720fed257':
  Fix packaging of cardview for non-maven extra package.
diff --git a/apps/Development/src/com/android/development/Connectivity.java b/apps/Development/src/com/android/development/Connectivity.java
index accdbf0..93d199b 100644
--- a/apps/Development/src/com/android/development/Connectivity.java
+++ b/apps/Development/src/com/android/development/Connectivity.java
@@ -225,10 +225,13 @@
                     mStartTime = -1;
                 }
                 Log.d(TAG, "Scan: READY " + mScanCur);
+                mScanResults.setVisibility(View.INVISIBLE);
 
                 List<ScanResult> wifiScanResults = mWm.getScanResults();
                 if (wifiScanResults != null) {
                     mTotalScanCount += wifiScanResults.size();
+                    mScanResults.setText("Current scan = " + Long.toString(wifiScanResults.size()));
+                    mScanResults.setVisibility(View.VISIBLE);
                     Log.d(TAG, "Scan: Results = " + wifiScanResults.size());
                 }
 
@@ -237,6 +240,7 @@
                 if (mScanCur == 0) {
                     unregisterReceiver(mScanRecv);
                     mScanButton.setText(GET_SCAN_RES);
+                    mScanResults.setVisibility(View.INVISIBLE);
                 } else {
                     Log.d(TAG, "Scan: START " + mScanCur);
                     mStartTime = SystemClock.elapsedRealtime();
diff --git a/apps/Development/src/com/android/development/InstrumentationList.java b/apps/Development/src/com/android/development/InstrumentationList.java
index fddfe86..654077e 100644
--- a/apps/Development/src/com/android/development/InstrumentationList.java
+++ b/apps/Development/src/com/android/development/InstrumentationList.java
@@ -156,7 +156,7 @@
             try {
                 ActivityManagerNative.getDefault().
                     startInstrumentation(className, profilingFile, 0, null, mWatcher, null,
-                            UserHandle.myUserId());
+                            UserHandle.myUserId(), null);
             } catch (RemoteException ex) {
             }
         }
diff --git a/build/Android.mk b/build/Android.mk
index b9e3fbb..6b854ee 100644
--- a/build/Android.mk
+++ b/build/Android.mk
@@ -1,3 +1,5 @@
+LOCAL_PATH := $(call my-dir)
+
 # ===== SDK source.property files =====
 
 # Add all files to be generated from the source.prop templates to the SDK pre-requisites
@@ -52,53 +54,11 @@
 		$< > $@ && sed -i -e '/^AndroidVersion.CodeName=\s*$$/d' $@
 
 
-# ===== Android Support/Compatibility Library =====
-
-LOCAL_PATH := $(call my-dir)
-
-# The source files for this library are _all_ generated, something we don't do
-# anywhere else, and the rules don't support.  Aditionally, the depenencies on
-# these files don't really matter, because they are all generated as part of
-# building the docs.  So for the dependency, we just use the
-# api-stubs-timestamp file, which is the $@ of the droiddoc rule.
-# We also need to depend on framework-res.apk, in order to pull the
-# resource files out of there for aapt.
-#
-# Normally the package rule runs aapt, which includes the resource,
-# but we're not running that in our package rule so just copy in the
-# resource files here.
-intermediates := $(TARGET_OUT_COMMON_INTERMEDIATES)/JAVA_LIBRARIES/android_stubs_current_intermediates
-full_target := $(intermediates)/classes.jar
-src_dir := $(intermediates)/src
-classes_dir := $(intermediates)/classes
-framework_res_package := $(call intermediates-dir-for,APPS,framework-res,,COMMON)/package-export.apk
-
-$(full_target): PRIVATE_SRC_DIR := $(src_dir)
-$(full_target): PRIVATE_INTERMEDIATES_DIR := $(intermediates)
-$(full_target): PRIVATE_CLASS_INTERMEDIATES_DIR := $(classes_dir)
-$(full_target): PRIVATE_FRAMEWORK_RES_PACKAGE := $(framework_res_package)
-
-$(full_target): $(OUT_DOCS)/api-stubs-timestamp $(framework_res_package)
-	@echo Compiling SDK Stubs: $@
-	$(hide) rm -rf $(PRIVATE_CLASS_INTERMEDIATES_DIR)
-	$(hide) mkdir -p $(PRIVATE_CLASS_INTERMEDIATES_DIR)
-	$(hide) find $(PRIVATE_SRC_DIR) -name "*.java" > \
-        $(PRIVATE_INTERMEDIATES_DIR)/java-source-list
-	$(hide) $(TARGET_JAVAC) -encoding ascii -bootclasspath "" \
-			-g $(xlint_unchecked) \
-			-extdirs "" -d $(PRIVATE_CLASS_INTERMEDIATES_DIR) \
-			\@$(PRIVATE_INTERMEDIATES_DIR)/java-source-list \
-		|| ( rm -rf $(PRIVATE_CLASS_INTERMEDIATES_DIR) ; exit 41 )
-	$(hide) if [ ! -f $(PRIVATE_FRAMEWORK_RES_PACKAGE) ]; then \
-		echo Missing file $(PRIVATE_FRAMEWORK_RES_PACKAGE); \
-		rm -rf $(PRIVATE_CLASS_INTERMEDIATES_DIR); \
-		exit 1; \
-	fi;
-	$(hide) unzip -qo $(PRIVATE_FRAMEWORK_RES_PACKAGE) -d $(PRIVATE_CLASS_INTERMEDIATES_DIR)
-	$(hide) (cd $(PRIVATE_CLASS_INTERMEDIATES_DIR) && rm -rf classes.dex META-INF)
-	$(hide) mkdir -p $(dir $@)
-	$(hide) jar -cf $@ -C $(PRIVATE_CLASS_INTERMEDIATES_DIR) .
-	$(hide) jar -u0f $@ -C $(PRIVATE_CLASS_INTERMEDIATES_DIR) resources.arsc
+# ===== SDK jar file of stubs =====
+# A.k.a the "current" version of the public SDK (android.jar inside the SDK package).
+sdk_stub_name := android_stubs_current
+stub_timestamp := $(OUT_DOCS)/api-stubs-timestamp
+include $(LOCAL_PATH)/build_android_stubs.mk
 
 .PHONY: android_stubs
 android_stubs: $(full_target)
@@ -110,7 +70,7 @@
 $(dir $(full_target))javalib.jar: $(full_target)
 	$(hide)$(ACP) $< $@
 
-
+# android.jar is what we put in the SDK package.
 android_jar_intermediates := $(TARGET_OUT_COMMON_INTERMEDIATES)/PACKAGING/android_jar_intermediates
 android_jar_full_target := $(android_jar_intermediates)/android.jar
 
@@ -121,6 +81,8 @@
 
 ALL_SDK_FILES += $(android_jar_full_target)
 
+# ====================================================
+
 # The uiautomator stubs
 ALL_SDK_FILES += $(TARGET_OUT_COMMON_INTERMEDIATES)/JAVA_LIBRARIES/android_uiautomator_intermediates/javalib.jar
 
@@ -153,3 +115,32 @@
     android-support-multidex-instrumentation
 
 $(foreach lib, $(ANDROID_SUPPORT_LIBRARIES), $(eval $(call _package_sdk_library,$(lib))))
+
+# ======= Lint API XML ===========
+
+ALL_SDK_FILES += $(HOST_OUT)/development/sdk/generated-api-versions.xml
+
+api_gen_jar := $(TOPDIR)prebuilts/tools/common/api-generator/api-generator-22.9.1.jar
+api_gen_deps := \
+  $(TOPDIR)prebuilts/tools/common/kxml2-tools/kxml2-2.3.0.jar \
+  $(TOPDIR)prebuilts/tools/common/asm-tools/asm-4.0.jar \
+  $(TOPDIR)prebuilts/tools/common/asm-tools/asm-tree-4.0.jar \
+  $(TOPDIR)prebuilts/devtools/tools/lib/common.jar
+api_gen_classpath := $(subst $(space),:,$(api_gen_jar) $(api_gen_deps))
+
+
+$(HOST_OUT)/development/sdk/generated-api-versions.xml :
+	java -cp $(api_gen_classpath) \
+	  com.android.apigenerator.Main \
+	  --pattern $(TOPDIR)prebuilts/tools/common/api-versions/android-%/android.jar \
+	  --pattern $(TOPDIR)prebuilts/sdk/%/android.jar \
+	  $@
+
+
+# ============ System SDK ============
+sdk_stub_name := android_system_stubs_current
+stub_timestamp := $(OUT_DOCS)/system-api-stubs-timestamp
+include $(LOCAL_PATH)/build_android_stubs.mk
+
+.PHONY: android_system_stubs
+android_system_stubs: $(full_target)
diff --git a/build/build_android_stubs.mk b/build/build_android_stubs.mk
new file mode 100644
index 0000000..a028900
--- /dev/null
+++ b/build/build_android_stubs.mk
@@ -0,0 +1,51 @@
+# Build an SDK jar file out of the generated stubs
+# Input variable:
+#   sdk_stub_name: the name of the SDK stubs; the stub source code should have been generated to
+#                  $(TARGET_OUT_COMMON_INTERMEDIATES)/JAVA_LIBRARIES/$(sdk_stub_name)_intermediates.
+#   stub_timestamp: the timestamp file we use as dependency of the generated source.
+# Output variable:
+#   full_target: the built classes.jar
+
+# The source files for this library are _all_ generated, something we don't do
+# anywhere else, and the rules don't support.  Aditionally, the depenencies on
+# these files don't really matter, because they are all generated as part of
+# building the docs.  So for the dependency, we just use the
+# api-stubs-timestamp file, which is the $@ of the droiddoc rule.
+# We also need to depend on framework-res.apk, in order to pull the
+# resource files out of there for aapt.
+#
+# Normally the package rule runs aapt, which includes the resource,
+# but we're not running that in our package rule so just copy in the
+# resource files here.
+intermediates := $(TARGET_OUT_COMMON_INTERMEDIATES)/JAVA_LIBRARIES/$(sdk_stub_name)_intermediates
+full_target := $(intermediates)/classes.jar
+src_dir := $(intermediates)/src
+classes_dir := $(intermediates)/classes
+framework_res_package := $(call intermediates-dir-for,APPS,framework-res,,COMMON)/package-export.apk
+
+$(full_target): PRIVATE_SRC_DIR := $(src_dir)
+$(full_target): PRIVATE_INTERMEDIATES_DIR := $(intermediates)
+$(full_target): PRIVATE_CLASS_INTERMEDIATES_DIR := $(classes_dir)
+$(full_target): PRIVATE_FRAMEWORK_RES_PACKAGE := $(framework_res_package)
+
+$(full_target): $(stub_timestamp) $(framework_res_package)
+	@echo Compiling SDK Stubs: $@
+	$(hide) rm -rf $(PRIVATE_CLASS_INTERMEDIATES_DIR)
+	$(hide) mkdir -p $(PRIVATE_CLASS_INTERMEDIATES_DIR)
+	$(hide) find $(PRIVATE_SRC_DIR) -name "*.java" > \
+        $(PRIVATE_INTERMEDIATES_DIR)/java-source-list
+	$(hide) $(TARGET_JAVAC) -encoding ascii -bootclasspath "" \
+			-g $(xlint_unchecked) \
+			-extdirs "" -d $(PRIVATE_CLASS_INTERMEDIATES_DIR) \
+			\@$(PRIVATE_INTERMEDIATES_DIR)/java-source-list \
+		|| ( rm -rf $(PRIVATE_CLASS_INTERMEDIATES_DIR) ; exit 41 )
+	$(hide) if [ ! -f $(PRIVATE_FRAMEWORK_RES_PACKAGE) ]; then \
+		echo Missing file $(PRIVATE_FRAMEWORK_RES_PACKAGE); \
+		rm -rf $(PRIVATE_CLASS_INTERMEDIATES_DIR); \
+		exit 1; \
+	fi;
+	$(hide) unzip -qo $(PRIVATE_FRAMEWORK_RES_PACKAGE) -d $(PRIVATE_CLASS_INTERMEDIATES_DIR)
+	$(hide) (cd $(PRIVATE_CLASS_INTERMEDIATES_DIR) && rm -rf classes.dex META-INF)
+	$(hide) mkdir -p $(dir $@)
+	$(hide) jar -cf $@ -C $(PRIVATE_CLASS_INTERMEDIATES_DIR) .
+	$(hide) jar -u0f $@ -C $(PRIVATE_CLASS_INTERMEDIATES_DIR) resources.arsc
diff --git a/build/sdk.atree b/build/sdk.atree
index 023fd65..6744837 100644
--- a/build/sdk.atree
+++ b/build/sdk.atree
@@ -51,7 +51,7 @@
 
 
 # API database for tools such as lint
-development/sdk/api-versions.xml              platform-tools/api/api-versions.xml
+development/sdk/generated-api-versions.xml    platform-tools/api/api-versions.xml
 
 # systrace
 external/chromium-trace/systrace.py           platform-tools/systrace/systrace.py
@@ -74,6 +74,7 @@
 
 development/sdk/sdk_files_NOTICE.txt           build-tools/${PLATFORM_NAME}/NOTICE.txt
 development/sdk/build_tools_source.properties  build-tools/${PLATFORM_NAME}/source.properties
+development/sdk/build_tools_runtime.properties build-tools/${PLATFORM_NAME}/runtime.properties
 
 # build tools from out/host/$(HOST_OS)-$(HOST_ARCH)/
 bin/aapt                                strip build-tools/${PLATFORM_NAME}/aapt
@@ -285,6 +286,23 @@
 
 developers/build/prebuilts/androidtv                                         samples/${PLATFORM_NAME}/androidtv
 
+# Wearable sample tree
+development/samples/wearable/AgendaData              samples/${PLATFORM_NAME}/wearable/AgendaData
+development/samples/wearable/DataLayer               samples/${PLATFORM_NAME}/wearable/DataLayer
+development/samples/wearable/DelayedConfirmation     samples/${PLATFORM_NAME}/wearable/DelayedConfirmation
+development/samples/wearable/ElizaChat               samples/${PLATFORM_NAME}/wearable/ElizaChat
+development/samples/wearable/FindMyPhone             samples/${PLATFORM_NAME}/wearable/FindMyPhone
+development/samples/wearable/Flashlight              samples/${PLATFORM_NAME}/wearable/Flashlight
+development/samples/wearable/Geofencing              samples/${PLATFORM_NAME}/wearable/Geofencing
+development/samples/wearable/GridViewPager           samples/${PLATFORM_NAME}/wearable/GridViewPager
+development/samples/wearable/JumpingJack             samples/${PLATFORM_NAME}/wearable/JumpingJack
+development/samples/wearable/Notifications           samples/${PLATFORM_NAME}/wearable/Notifications
+development/samples/wearable/Quiz                    samples/${PLATFORM_NAME}/wearable/Quiz
+development/samples/wearable/RecipeAssistant         samples/${PLATFORM_NAME}/wearable/RecipeAssistant
+development/samples/wearable/SkeletonWearableApp     samples/${PLATFORM_NAME}/wearable/SkeletonWearableApp
+development/samples/wearable/Timer                   samples/${PLATFORM_NAME}/wearable/Timer
+development/samples/wearable/WatchViewStub           samples/${PLATFORM_NAME}/wearable/WatchViewStub
+
 # Old sample tree
 development/samples/AccelerometerPlay          samples/${PLATFORM_NAME}/legacy/AccelerometerPlay
 development/samples/ActionBarCompat            samples/${PLATFORM_NAME}/legacy/ActionBarCompat
diff --git a/build/tools/windows_sdk.mk b/build/tools/windows_sdk.mk
index aaf8fa4..c4fcfa2 100644
--- a/build/tools/windows_sdk.mk
+++ b/build/tools/windows_sdk.mk
@@ -65,8 +65,8 @@
 
 
 # MAIN_SDK_NAME/DIR is set in build/core/Makefile
-WIN_SDK_NAME := $(subst $(HOST_OS)-$(HOST_ARCH),windows,$(MAIN_SDK_NAME))
-WIN_SDK_DIR  := $(subst $(HOST_OS)-$(HOST_ARCH),windows,$(MAIN_SDK_DIR))
+WIN_SDK_NAME := $(subst $(HOST_OS)-$(SDK_HOST_ARCH),windows,$(MAIN_SDK_NAME))
+WIN_SDK_DIR  := $(subst $(HOST_OS)-$(SDK_HOST_ARCH),windows,$(MAIN_SDK_DIR))
 WIN_SDK_ZIP  := $(WIN_SDK_DIR)/$(WIN_SDK_NAME).zip
 
 $(call dist-for-goals, win_sdk, $(WIN_SDK_ZIP))
diff --git a/cmds/monkey/src/com/android/commands/monkey/MonkeyInstrumentationEvent.java b/cmds/monkey/src/com/android/commands/monkey/MonkeyInstrumentationEvent.java
index b2ae247..a4f276d 100644
--- a/cmds/monkey/src/com/android/commands/monkey/MonkeyInstrumentationEvent.java
+++ b/cmds/monkey/src/com/android/commands/monkey/MonkeyInstrumentationEvent.java
@@ -45,7 +45,7 @@
         Bundle args = new Bundle();
         args.putString("class", mTestCaseName);
         try {
-            iam.startInstrumentation(cn, null, 0, args, null, null, 0);
+            iam.startInstrumentation(cn, null, 0, args, null, null, 0, null);
         } catch (RemoteException e) {
             System.err.println("** Failed talking with activity manager!");
             return MonkeyEvent.INJECT_ERROR_REMOTE_EXCEPTION;
diff --git a/host/windows/prebuilt/usb/Android.mk b/host/windows/prebuilt/usb/Android.mk
index 9cf4e61..e8af167 100644
--- a/host/windows/prebuilt/usb/Android.mk
+++ b/host/windows/prebuilt/usb/Android.mk
@@ -1,24 +1,28 @@
 LOCAL_PATH:= $(call my-dir)
 
 include $(CLEAR_VARS)
+LOCAL_IS_HOST_MODULE := true
+LOCAL_MODULE := AdbWinApi
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_SRC_FILES_x86 := AdbWinApi.a
+LOCAL_MODULE_SUFFIX := .a
+LOCAL_MULTILIB := 32
+include $(BUILD_PREBUILT)
 
-LOCAL_PREBUILT_LIBS := \
-	AdbWinApi.a
+include $(CLEAR_VARS)
+LOCAL_IS_HOST_MODULE := true
+LOCAL_MODULE := AdbWinApi
+LOCAL_MODULE_CLASS := EXECUTABLES
+LOCAL_SRC_FILES_x86 := AdbWinApi.dll
+LOCAL_MODULE_SUFFIX := .dll
+LOCAL_MULTILIB := 32
+include $(BUILD_PREBUILT)
 
-LOCAL_PREBUILT_EXECUTABLES := \
-	AdbWinApi.dll  \
-	AdbWinUsbApi.dll
-	
-.PHONY : kill-adb
-	
-$(LOCAL_PATH)/AdbWinApi.dll : kill-adb
-
-kill-adb:
-	@echo "Killing adb server so we can replace AdbWinApi.dll"
-	@adb kill-server || echo "adb appears to be missing"
-
-# generate AdbWinApi stub library
-#$(LOCAL_PATH)/AdbWinApi.a: $(LOCAL_PATH)/AdbWinApi.def
-#	dlltool --def $(LOCAL_PATH)/AdbWinApi.def --dllname AdbWinApi.dll --output-lib $(LOCAL_PATH)/AdbWinApi.a
-
-include $(BUILD_HOST_PREBUILT)
+include $(CLEAR_VARS)
+LOCAL_IS_HOST_MODULE := true
+LOCAL_MODULE := AdbWinUsbApi
+LOCAL_MODULE_CLASS := EXECUTABLES
+LOCAL_SRC_FILES_x86 := AdbWinUsbApi.dll
+LOCAL_MODULE_SUFFIX := .dll
+LOCAL_MULTILIB := 32
+include $(BUILD_PREBUILT)
diff --git a/host/windows/usb/android_winusb.inf b/host/windows/usb/android_winusb.inf
index 6c2d525..d12ba27 100755
--- a/host/windows/usb/android_winusb.inf
+++ b/host/windows/usb/android_winusb.inf
@@ -6,7 +6,7 @@
 Class               = AndroidUsbDeviceClass

 ClassGuid           = {3F966BD9-FA04-4ec5-991C-D326973B5128}

 Provider            = %ProviderName%

-DriverVer           = 01/27/2014,9.0.0000.00000

+DriverVer           = 06/06/2014,10.0.0000.00000

 CatalogFile.NTx86   = androidwinusb86.cat

 CatalogFile.NTamd64 = androidwinusba64.cat

 

@@ -50,6 +50,7 @@
 %CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4EE2&MI_01

 %CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4EE4&MI_02

 %CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4EE6&MI_01

+%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4EE7

 

 ;Google Glass

 %SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_9001

@@ -84,6 +85,7 @@
 %CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4EE2&MI_01

 %CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4EE4&MI_02

 %CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4EE6&MI_01

+%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4EE7

 

 ;Google Glass

 %SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_9001

diff --git a/ide/eclipse/.classpath b/ide/eclipse/.classpath
index 5bd032f..eb37216 100644
--- a/ide/eclipse/.classpath
+++ b/ide/eclipse/.classpath
@@ -111,7 +111,7 @@
 	<classpathentry kind="src" path="development/samples/Snake/tests/src"/>
 	<classpathentry kind="src" path="libcore/dalvik/src/main/java"/>
 	<classpathentry kind="src" path="libcore/json/src/main/java"/>
-	<classpathentry kind="src" path="libcore/libdvm/src/main/java"/>
+	<classpathentry kind="src" path="libcore/libart/src/main/java"/>
 	<classpathentry kind="src" path="libcore/luni/src/main/java"/>
 	<classpathentry kind="src" path="libcore/xml/src/main/java"/>
 	<classpathentry kind="src" path="out/target/common/obj/APPS/ApiDemos_intermediates/src/src"/>
diff --git a/ndk/platforms/android-14/samples/native-media/jni/Application.mk b/ndk/platforms/android-14/samples/native-media/jni/Application.mk
new file mode 100644
index 0000000..e619d92
--- /dev/null
+++ b/ndk/platforms/android-14/samples/native-media/jni/Application.mk
@@ -0,0 +1 @@
+APP_ABI := all
\ No newline at end of file
diff --git a/ndk/platforms/android-14/samples/native-media/jni/native-media-jni.c b/ndk/platforms/android-14/samples/native-media/jni/native-media-jni.c
index bdf568a..ad6d874 100644
--- a/ndk/platforms/android-14/samples/native-media/jni/native-media-jni.c
+++ b/ndk/platforms/android-14/samples/native-media/jni/native-media-jni.c
@@ -288,7 +288,7 @@
         LOGV("Dropping last packet because it is not whole");
     }
     size_t packetsRead = bytesRead / MPEG2_TS_PACKET_SIZE;
-    LOGV("Initially queueing %u packets", packetsRead);
+    LOGV("Initially queueing %zu packets", packetsRead);
 
     /* Enqueue the content of our cache before starting to play,
        we don't want to starve the player */
diff --git a/ndk/platforms/android-18/samples/gles3jni/jni/Application.mk b/ndk/platforms/android-18/samples/gles3jni/jni/Application.mk
new file mode 100644
index 0000000..a252a72
--- /dev/null
+++ b/ndk/platforms/android-18/samples/gles3jni/jni/Application.mk
@@ -0,0 +1 @@
+APP_ABI := all
diff --git a/ndk/platforms/android-20/arch-arm/include/machine/endian.h b/ndk/platforms/android-20/arch-arm/include/machine/endian.h
deleted file mode 100644
index 8d9723d..0000000
--- a/ndk/platforms/android-20/arch-arm/include/machine/endian.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/*	$OpenBSD: endian.h,v 1.3 2005/12/13 00:35:23 millert Exp $	*/
-
-/*
- * Copyright (C) 2010 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *  * Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  * Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef _ARM_ENDIAN_H_
-#define _ARM_ENDIAN_H_
-
-#ifdef __GNUC__
-
-/* According to RealView Assembler User's Guide, REV and REV16 are available
- * in Thumb code and 16-bit instructions when used in Thumb-2 code.
- *
- * REV Rd, Rm
- *   Rd and Rm must both be Lo registers.
- *
- * REV16 Rd, Rm
- *   Rd and Rm must both be Lo registers.
- *
- * The +l constraint takes care of this without constraining us in ARM mode.
- */
-#define __swap16md(x) ({                                        \
-    register u_int16_t _x = (x);                                \
-    __asm__ __volatile__("rev16 %0, %0" : "+l" (_x));           \
-    _x;                                                         \
-})
-
-#define __swap32md(x) ({                                        \
-    register u_int32_t _x = (x);                                \
-    __asm__ __volatile__("rev %0, %0" : "+l" (_x));             \
-    _x;                                                         \
-})
-
-#define __swap64md(x) ({                                        \
-    u_int64_t _swap64md_x = (x);                                \
-    (u_int64_t) __swap32md(_swap64md_x >> 32) |                 \
-        (u_int64_t) __swap32md(_swap64md_x & 0xffffffff) << 32; \
-})
-
-/* Tell sys/endian.h we have MD variants of the swap macros.  */
-#define MD_SWAP
-
-#endif  /* __GNUC__ */
-
-#if defined(__ARMEB__)
-#define _BYTE_ORDER _BIG_ENDIAN
-#else
-#define _BYTE_ORDER _LITTLE_ENDIAN
-#endif
-#define __STRICT_ALIGNMENT
-#include <sys/types.h>
-#include <sys/endian.h>
-
-#endif  /* !_ARM_ENDIAN_H_ */
diff --git a/ndk/platforms/android-20/arch-arm/include/machine/fenv.h b/ndk/platforms/android-20/arch-arm/include/machine/fenv.h
deleted file mode 100644
index d8749dd..0000000
--- a/ndk/platforms/android-20/arch-arm/include/machine/fenv.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/*-
- * Copyright (c) 2004-2005 David Schultz <das@FreeBSD.ORG>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $FreeBSD: src/lib/msun/arm/fenv.h,v 1.5 2005/03/16 19:03:45 das Exp $
- */
-
-/*
- * Rewritten for Android.
- *
- * The ARM FPSCR is described here:
- * http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0344b/Chdfafia.html
- */
-
-#ifndef _ARM_FENV_H_
-#define _ARM_FENV_H_
-
-#include <sys/types.h>
-
-__BEGIN_DECLS
-
-typedef __uint32_t fenv_t;
-typedef __uint32_t fexcept_t;
-
-/* Exception flags. */
-#define FE_INVALID    0x01
-#define FE_DIVBYZERO  0x02
-#define FE_OVERFLOW   0x04
-#define FE_UNDERFLOW  0x08
-#define FE_INEXACT    0x10
-#define FE_ALL_EXCEPT (FE_DIVBYZERO | FE_INEXACT | FE_INVALID | \
-                       FE_OVERFLOW | FE_UNDERFLOW)
-
-#define _FPSCR_ENABLE_SHIFT 8
-#define _FPSCR_ENABLE_MASK  (FE_ALL_EXCEPT << _FPSCR_ENABLE_SHIFT)
-
-/* Rounding modes. */
-#define FE_TONEAREST  0x0
-#define FE_UPWARD     0x1
-#define FE_DOWNWARD   0x2
-#define FE_TOWARDZERO 0x3
-
-#define _FPSCR_RMODE_SHIFT 22
-
-__END_DECLS
-
-#endif /* !_ARM_FENV_H_ */
diff --git a/ndk/platforms/android-20/arch-arm/lib/libc.a b/ndk/platforms/android-20/arch-arm/lib/libc.a
deleted file mode 100644
index e8b7397..0000000
--- a/ndk/platforms/android-20/arch-arm/lib/libc.a
+++ /dev/null
Binary files differ
diff --git a/ndk/platforms/android-20/arch-arm/lib/libm.a b/ndk/platforms/android-20/arch-arm/lib/libm.a
deleted file mode 100644
index e807a64..0000000
--- a/ndk/platforms/android-20/arch-arm/lib/libm.a
+++ /dev/null
Binary files differ
diff --git a/ndk/platforms/android-20/arch-arm/lib/libstdc++.a b/ndk/platforms/android-20/arch-arm/lib/libstdc++.a
deleted file mode 100644
index d8bf32f..0000000
--- a/ndk/platforms/android-20/arch-arm/lib/libstdc++.a
+++ /dev/null
Binary files differ
diff --git a/ndk/platforms/android-20/arch-arm/symbols/libc.so.functions.txt b/ndk/platforms/android-20/arch-arm/symbols/libc.so.functions.txt
deleted file mode 100644
index 9844e68..0000000
--- a/ndk/platforms/android-20/arch-arm/symbols/libc.so.functions.txt
+++ /dev/null
@@ -1,1344 +0,0 @@
-MD5_Final
-MD5_Init
-MD5_Update
-SHA1Final
-SHA1Init
-SHA1Transform
-SHA1Update
-_Exit
-_Unwind_Backtrace
-_Unwind_Complete
-_Unwind_DeleteException
-_Unwind_ForcedUnwind
-_Unwind_GetCFA
-_Unwind_GetDataRelBase
-_Unwind_GetLanguageSpecificData
-_Unwind_GetRegionStart
-_Unwind_GetTextRelBase
-_Unwind_RaiseException
-_Unwind_Resume
-_Unwind_Resume_or_Rethrow
-_Unwind_VRS_Get
-_Unwind_VRS_Pop
-_Unwind_VRS_Set
-__FD_CLR_chk
-__FD_ISSET_chk
-__FD_SET_chk
-___Unwind_Backtrace
-___Unwind_ForcedUnwind
-___Unwind_RaiseException
-___Unwind_Resume
-___Unwind_Resume_or_Rethrow
-__accept
-__adddf3
-__addsf3
-__aeabi_atexit
-__aeabi_cdcmpeq
-__aeabi_cdcmple
-__aeabi_cdrcmple
-__aeabi_d2f
-__aeabi_d2iz
-__aeabi_dadd
-__aeabi_dcmpeq
-__aeabi_dcmpge
-__aeabi_dcmpgt
-__aeabi_dcmple
-__aeabi_dcmplt
-__aeabi_dcmpun
-__aeabi_ddiv
-__aeabi_dmul
-__aeabi_drsub
-__aeabi_dsub
-__aeabi_f2d
-__aeabi_f2iz
-__aeabi_f2uiz
-__aeabi_fadd
-__aeabi_fcmpun
-__aeabi_fdiv
-__aeabi_fmul
-__aeabi_frsub
-__aeabi_fsub
-__aeabi_i2d
-__aeabi_i2f
-__aeabi_idiv
-__aeabi_idiv0
-__aeabi_idivmod
-__aeabi_l2d
-__aeabi_l2f
-__aeabi_lasr
-__aeabi_ldiv0
-__aeabi_ldivmod
-__aeabi_llsl
-__aeabi_llsr
-__aeabi_lmul
-__aeabi_memclr
-__aeabi_memclr4
-__aeabi_memclr8
-__aeabi_memcpy
-__aeabi_memcpy4
-__aeabi_memcpy8
-__aeabi_memmove
-__aeabi_memmove4
-__aeabi_memmove8
-__aeabi_memset
-__aeabi_memset4
-__aeabi_memset8
-__aeabi_ui2d
-__aeabi_ui2f
-__aeabi_uidiv
-__aeabi_uidivmod
-__aeabi_ul2d
-__aeabi_ul2f
-__aeabi_uldivmod
-__aeabi_unwind_cpp_pr0
-__aeabi_unwind_cpp_pr1
-__aeabi_unwind_cpp_pr2
-__android_set_abort_message
-__arc4_getbyte
-__ashldi3
-__ashrdi3
-__assert
-__assert2
-__atexit_register_cleanup
-__atomic_cmpxchg
-__atomic_dec
-__atomic_inc
-__atomic_swap
-__b64_ntop
-__b64_pton
-__bionic_name_mem
-__brk
-__cmpdf2
-__connect
-__cxa_atexit
-__cxa_finalize
-__divdf3
-__divdi3
-__divsf3
-__divsi3
-__dn_comp
-__dn_count_labels
-__dn_skipname
-__dorand48
-__epoll_pwait
-__eqdf2
-__errno
-__evAddTime
-__evCmpTime
-__evConsIovec
-__evConsTime
-__evNowTime
-__evSubTime
-__evTimeSpec
-__evTimeVal
-__evUTCTime
-__exit
-__extendsfdf2
-__fcntl64
-__fgets_chk
-__fgetwc_unlock
-__findenv
-__fixdfsi
-__fixsfsi
-__fixunssfsi
-__floatdidf
-__floatdisf
-__floatsidf
-__floatsisf
-__floatundidf
-__floatundisf
-__floatunsidf
-__floatunsisf
-__fp_nquery
-__fp_query
-__fpclassify
-__fpclassifyd
-__fpclassifyf
-__fpclassifyl
-__fputwc_unlock
-__fstatfs64
-__futex_syscall3
-__futex_syscall4
-__futex_wait
-__futex_wait_ex
-__futex_wake
-__futex_wake_ex
-__gedf2
-__get_h_errno
-__get_sp
-__get_tls
-__getcpu
-__getcwd
-__getpriority
-__gnu_Unwind_Backtrace
-__gnu_Unwind_Find_exidx
-__gnu_Unwind_ForcedUnwind
-__gnu_Unwind_RaiseException
-__gnu_Unwind_Restore_VFP
-__gnu_Unwind_Restore_VFP_D
-__gnu_Unwind_Restore_VFP_D_16_to_31
-__gnu_Unwind_Restore_WMMXC
-__gnu_Unwind_Restore_WMMXD
-__gnu_Unwind_Resume
-__gnu_Unwind_Resume_or_Rethrow
-__gnu_Unwind_Save_VFP
-__gnu_Unwind_Save_VFP_D
-__gnu_Unwind_Save_VFP_D_16_to_31
-__gnu_Unwind_Save_WMMXC
-__gnu_Unwind_Save_WMMXD
-__gnu_ldivmod_helper
-__gnu_uldivmod_helper
-__gnu_unwind_execute
-__gnu_unwind_frame
-__gtdf2
-__hostalias
-__ioctl
-__isfinite
-__isfinitef
-__isfinitel
-__isinf
-__isinff
-__isinfl
-__isnan
-__isnanf
-__isnanl
-__isnormal
-__isnormalf
-__isnormall
-__ledf2
-__libc_current_sigrtmax
-__libc_current_sigrtmin
-__libc_fini
-__libc_init
-__llseek
-__loc_aton
-__loc_ntoa
-__lshrdi3
-__ltdf2
-__memcmp16
-__memcpy_chk
-__memmove_chk
-__memset_chk
-__mmap2
-__muldf3
-__muldi3
-__mulsf3
-__nedf2
-__ns_format_ttl
-__ns_get16
-__ns_get32
-__ns_initparse
-__ns_makecanon
-__ns_msg_getflag
-__ns_name_compress
-__ns_name_eq
-__ns_name_labels
-__ns_name_length
-__ns_name_map
-__ns_name_ntol
-__ns_name_ntop
-__ns_name_owned
-__ns_name_pack
-__ns_name_pton
-__ns_name_pton2
-__ns_name_rollback
-__ns_name_skip
-__ns_name_uncompress
-__ns_name_unpack
-__ns_name_unpack2
-__ns_parserr
-__ns_parserr2
-__ns_put16
-__ns_put32
-__ns_samename
-__ns_skiprr
-__ns_sprintrr
-__ns_sprintrrf
-__open
-__open_2
-__openat
-__openat_2
-__p_cdname
-__p_cdnname
-__p_class
-__p_fqname
-__p_fqnname
-__p_option
-__p_query
-__p_rcode
-__p_secstodate
-__p_section
-__p_sockun
-__p_time
-__p_type
-__popcountsi2
-__ppoll
-__pselect6
-__pthread_cleanup_pop
-__pthread_cleanup_push
-__pthread_gettid
-__ptrace
-__putlong
-__putshort
-__read_chk
-__reboot
-__recvfrom_chk
-__res_close
-__res_dnok
-__res_get_nibblesuffix
-__res_get_nibblesuffix2
-__res_get_state
-__res_get_static
-__res_getservers
-__res_hnok
-__res_hostalias
-__res_isourserver
-__res_mailok
-__res_nameinquery
-__res_nametoclass
-__res_nametotype
-__res_nclose
-__res_ndestroy
-__res_ninit
-__res_nmkquery
-__res_nopt
-__res_nquery
-__res_nquerydomain
-__res_nsearch
-__res_nsend
-__res_opt
-__res_ownok
-__res_pquery
-__res_put_state
-__res_queriesmatch
-__res_querydomain
-__res_randomid
-__res_send
-__res_send_setqhook
-__res_send_setrhook
-__res_setservers
-__res_vinit
-__restore_core_regs
-__rt_sigaction
-__rt_sigpending
-__rt_sigprocmask
-__rt_sigsuspend
-__rt_sigtimedwait
-__sched_cpualloc
-__sched_cpucount
-__sched_cpufree
-__sched_getaffinity
-__sclose
-__set_errno
-__set_tid_address
-__set_tls
-__sflags
-__sflush
-__sflush_locked
-__sfp
-__sfvwrite
-__sigaction
-__sinit
-__smakebuf
-__snprintf_chk
-__sprintf_chk
-__sread
-__srefill
-__srget
-__sseek
-__stack_chk_fail
-__statfs64
-__stpcpy_chk
-__stpncpy_chk
-__stpncpy_chk2
-__strcat_chk
-__strchr_chk
-__strcpy_chk
-__strlcat_chk
-__strlcpy_chk
-__strlen_chk
-__strncat_chk
-__strncpy_chk
-__strncpy_chk2
-__strrchr_chk
-__subdf3
-__subsf3
-__svfscanf
-__swbuf
-__swhatbuf
-__swrite
-__swsetup
-__sym_ntop
-__sym_ntos
-__sym_ston
-__syslog
-__system_properties_init
-__system_property_add
-__system_property_area_init
-__system_property_find
-__system_property_find_compat
-__system_property_find_nth
-__system_property_foreach
-__system_property_foreach_compat
-__system_property_get
-__system_property_read
-__system_property_read_compat
-__system_property_serial
-__system_property_set
-__system_property_set_filename
-__system_property_update
-__system_property_wait_any
-__timer_create
-__timer_delete
-__timer_getoverrun
-__timer_gettime
-__timer_settime
-__truncdfsf2
-__udivdi3
-__udivsi3
-__umask_chk
-__ungetwc
-__unorddf2
-__unordsf2
-__vfprintf
-__vfwprintf
-__vfwscanf
-__vsnprintf_chk
-__vsprintf_chk
-__wait4
-__waitid
-_cleanup
-_exit
-_exit_with_stack_teardown
-_fwalk
-_getlong
-_getshort
-_longjmp
-_resolv_flush_cache_for_net
-_resolv_set_nameservers_for_net
-_setjmp
-_thread_created_hook
-_tolower
-_toupper
-abort
-abs
-accept
-accept4
-access
-acct
-alarm
-alphasort
-alphasort64
-android_getaddrinfofornet
-android_gethostbyaddrfornet
-android_gethostbyaddrfornet_proxy
-android_gethostbyaddrfornet_real
-android_gethostbynamefornet
-android_getnameinfofornet
-arc4random
-arc4random_addrandom
-arc4random_buf
-arc4random_stir
-arc4random_uniform
-asctime
-asctime64
-asctime64_r
-asctime_r
-asprintf
-at_quick_exit
-atexit
-atof
-atoi
-atol
-atoll
-basename
-basename_r
-bcopy
-bind
-bindresvport
-brk
-bsd_signal
-bsearch
-btowc
-bzero
-cacheflush
-calloc
-capget
-capset
-cfgetispeed
-cfgetospeed
-cfmakeraw
-cfsetispeed
-cfsetospeed
-cfsetspeed
-chdir
-chmod
-chown
-chroot
-clearenv
-clearerr
-clock
-clock_getres
-clock_gettime
-clock_nanosleep
-clock_settime
-clone
-close
-closedir
-closelog
-closelog_r
-cmsg_nxthdr
-connect
-creat
-creat64
-ctime
-ctime64
-ctime64_r
-ctime_r
-daemon
-delete_module
-difftime
-dirfd
-dirname
-dirname_r
-div
-dlbulk_free
-dlcalloc
-dlfree
-dlindependent_calloc
-dlindependent_comalloc
-dlmallinfo
-dlmalloc
-dlmalloc_footprint
-dlmalloc_footprint_limit
-dlmalloc_inspect_all
-dlmalloc_max_footprint
-dlmalloc_set_footprint_limit
-dlmalloc_stats
-dlmalloc_trim
-dlmalloc_usable_size
-dlmallopt
-dlmemalign
-dlposix_memalign
-dlpvalloc
-dlrealloc
-dlrealloc_in_place
-dlvalloc
-dn_expand
-drand48
-dup
-dup2
-dup3
-duplocale
-endmntent
-endpwent
-endservent
-endusershell
-endutent
-epoll_create
-epoll_create1
-epoll_ctl
-epoll_pwait
-epoll_wait
-erand48
-err
-errx
-ether_aton
-ether_aton_r
-ether_ntoa
-ether_ntoa_r
-eventfd
-eventfd_read
-eventfd_write
-execl
-execle
-execlp
-execv
-execve
-execvp
-execvpe
-exit
-faccessat
-fallocate
-fallocate64
-fchdir
-fchmod
-fchmodat
-fchown
-fchownat
-fclose
-fcntl
-fdatasync
-fdopen
-fdopendir
-fdprintf
-feof
-ferror
-fflush
-ffs
-fgetc
-fgetln
-fgetpos
-fgets
-fgetwc
-fgetws
-fgetxattr
-fileno
-flistxattr
-flock
-flockfile
-fnmatch
-fopen
-fork
-fpathconf
-fprintf
-fpurge
-fputc
-fputs
-fputwc
-fputws
-fread
-free
-freeaddrinfo
-freelocale
-fremovexattr
-freopen
-fscanf
-fseek
-fseeko
-fsetpos
-fsetxattr
-fstat
-fstat64
-fstatat
-fstatat64
-fstatfs
-fstatfs64
-fstatvfs
-fstatvfs64
-fsync
-ftell
-ftello
-ftime
-ftok
-ftruncate
-ftruncate64
-ftrylockfile
-fts_children
-fts_close
-fts_open
-fts_read
-fts_set
-ftw
-ftw64
-funlockfile
-funopen
-futex
-futimens
-fwide
-fwprintf
-fwrite
-fwscanf
-gai_strerror
-get_malloc_leak_info
-getaddrinfo
-getauxval
-getc
-getc_unlocked
-getchar
-getchar_unlocked
-getcwd
-getdelim
-getdents
-getdtablesize
-getegid
-getenv
-geteuid
-getgid
-getgrgid
-getgrnam
-getgrouplist
-getgroups
-gethostbyaddr
-gethostbyname
-gethostbyname2
-gethostbyname_r
-gethostent
-gethostname
-getitimer
-getline
-getlogin
-getmntent
-getmntent_r
-getnameinfo
-getnetbyaddr
-getnetbyname
-getopt
-getopt_long
-getopt_long_only
-getpagesize
-getpeername
-getpgid
-getpgrp
-getpid
-getppid
-getpriority
-getprogname
-getprotobyname
-getprotobynumber
-getpt
-getpwnam
-getpwnam_r
-getpwuid
-getpwuid_r
-getresgid
-getresuid
-getrlimit
-getrlimit64
-getrusage
-gets
-getservbyname
-getservbyport
-getservent
-getservent_r
-getsid
-getsockname
-getsockopt
-gettid
-gettimeofday
-getuid
-getusershell
-getutent
-getwc
-getwchar
-getxattr
-gmtime
-gmtime64
-gmtime64_r
-gmtime_r
-herror
-hstrerror
-htonl
-htons
-if_indextoname
-if_nametoindex
-imaxabs
-imaxdiv
-index
-inet_addr
-inet_aton
-inet_lnaof
-inet_makeaddr
-inet_netof
-inet_network
-inet_nsap_addr
-inet_nsap_ntoa
-inet_ntoa
-inet_ntop
-inet_pton
-init_module
-initgroups
-inotify_add_watch
-inotify_init
-inotify_init1
-inotify_rm_watch
-ioctl
-ioprio_get
-ioprio_set
-isalnum
-isalpha
-isascii
-isatty
-isblank
-iscntrl
-isdigit
-isfinite
-isfinitef
-isfinitel
-isgraph
-isinf
-isinff
-isinfl
-islower
-isnan
-isnanf
-isnanl
-isnormal
-isnormalf
-isnormall
-isprint
-ispunct
-issetugid
-isspace
-isupper
-iswalnum
-iswalpha
-iswblank
-iswcntrl
-iswctype
-iswdigit
-iswgraph
-iswlower
-iswprint
-iswpunct
-iswspace
-iswupper
-iswxdigit
-isxdigit
-jrand48
-kill
-killpg
-klogctl
-labs
-lchown
-ldexp
-ldiv
-lfind
-lgetxattr
-link
-linkat
-listen
-listxattr
-llabs
-lldiv
-llistxattr
-localeconv
-localtime
-localtime64
-localtime64_r
-localtime_r
-localtime_tz
-longjmp
-longjmperror
-lrand48
-lremovexattr
-lsearch
-lseek
-lseek64
-lsetxattr
-lstat
-lstat64
-madvise
-mallinfo
-malloc
-malloc_usable_size
-mbrlen
-mbrtowc
-mbsinit
-mbsnrtowcs
-mbsrtowcs
-mbstowcs
-mbtowc
-memalign
-memccpy
-memchr
-memcmp
-memcpy
-memmem
-memmove
-memrchr
-memset
-memswap
-mincore
-mkdir
-mkdirat
-mkdtemp
-mkfifo
-mknod
-mknodat
-mkstemp
-mkstemp64
-mkstemps
-mktemp
-mktime
-mktime64
-mktime_tz
-mlock
-mlockall
-mmap
-mmap64
-mount
-mprotect
-mrand48
-mremap
-msync
-munlock
-munlockall
-munmap
-nanosleep
-newlocale
-nftw
-nftw64
-nice
-nrand48
-nsdispatch
-ntohl
-ntohs
-open
-open64
-openat
-openat64
-opendir
-openlog
-openlog_r
-pathconf
-pause
-pclose
-perf_event_open
-perror
-personality
-pipe
-pipe2
-poll
-popen
-posix2time
-posix_fallocate
-posix_fallocate64
-posix_memalign
-ppoll
-prctl
-pread
-pread64
-printf
-prlimit64
-pselect
-psiginfo
-psignal
-pthread_atfork
-pthread_attr_destroy
-pthread_attr_getdetachstate
-pthread_attr_getguardsize
-pthread_attr_getschedparam
-pthread_attr_getschedpolicy
-pthread_attr_getscope
-pthread_attr_getstack
-pthread_attr_getstackaddr
-pthread_attr_getstacksize
-pthread_attr_init
-pthread_attr_setdetachstate
-pthread_attr_setguardsize
-pthread_attr_setschedparam
-pthread_attr_setschedpolicy
-pthread_attr_setscope
-pthread_attr_setstack
-pthread_attr_setstackaddr
-pthread_attr_setstacksize
-pthread_cond_broadcast
-pthread_cond_destroy
-pthread_cond_init
-pthread_cond_signal
-pthread_cond_timedwait
-pthread_cond_timedwait_monotonic
-pthread_cond_timedwait_monotonic_np
-pthread_cond_timedwait_relative_np
-pthread_cond_timeout_np
-pthread_cond_wait
-pthread_condattr_destroy
-pthread_condattr_getclock
-pthread_condattr_getpshared
-pthread_condattr_init
-pthread_condattr_setclock
-pthread_condattr_setpshared
-pthread_create
-pthread_detach
-pthread_equal
-pthread_exit
-pthread_getattr_np
-pthread_getcpuclockid
-pthread_getschedparam
-pthread_getspecific
-pthread_join
-pthread_key_create
-pthread_key_delete
-pthread_kill
-pthread_mutex_destroy
-pthread_mutex_init
-pthread_mutex_lock
-pthread_mutex_lock_timeout_np
-pthread_mutex_timedlock
-pthread_mutex_trylock
-pthread_mutex_unlock
-pthread_mutexattr_destroy
-pthread_mutexattr_getpshared
-pthread_mutexattr_gettype
-pthread_mutexattr_init
-pthread_mutexattr_setpshared
-pthread_mutexattr_settype
-pthread_once
-pthread_rwlock_destroy
-pthread_rwlock_init
-pthread_rwlock_rdlock
-pthread_rwlock_timedrdlock
-pthread_rwlock_timedwrlock
-pthread_rwlock_tryrdlock
-pthread_rwlock_trywrlock
-pthread_rwlock_unlock
-pthread_rwlock_wrlock
-pthread_rwlockattr_destroy
-pthread_rwlockattr_getpshared
-pthread_rwlockattr_init
-pthread_rwlockattr_setpshared
-pthread_self
-pthread_setname_np
-pthread_setschedparam
-pthread_setspecific
-pthread_sigmask
-ptrace
-ptsname
-ptsname_r
-putc
-putc_unlocked
-putchar
-putchar_unlocked
-putenv
-puts
-pututline
-putw
-putwc
-putwchar
-pvalloc
-pwrite
-pwrite64
-qsort
-quick_exit
-raise
-read
-readahead
-readdir
-readdir64
-readdir64_r
-readdir_r
-readlink
-readlinkat
-readv
-realloc
-realpath
-reboot
-recv
-recvfrom
-recvmmsg
-recvmsg
-regcomp
-regerror
-regexec
-regfree
-remove
-removexattr
-rename
-renameat
-res_init
-res_mkquery
-res_query
-res_search
-res_setmark
-res_setnetid
-restore_core_regs
-rewind
-rewinddir
-rmdir
-sbrk
-scandir
-scandir64
-scanf
-sched_get_priority_max
-sched_get_priority_min
-sched_getaffinity
-sched_getcpu
-sched_getparam
-sched_getscheduler
-sched_rr_get_interval
-sched_setaffinity
-sched_setparam
-sched_setscheduler
-sched_yield
-seed48
-select
-sem_close
-sem_destroy
-sem_getvalue
-sem_init
-sem_open
-sem_post
-sem_timedwait
-sem_trywait
-sem_unlink
-sem_wait
-send
-sendfile
-sendfile64
-sendmmsg
-sendmsg
-sendto
-setbuf
-setbuffer
-setegid
-setenv
-seteuid
-setgid
-setgroups
-setitimer
-setjmp
-setlinebuf
-setlocale
-setlogmask
-setlogmask_r
-setmntent
-setns
-setpgid
-setpgrp
-setpriority
-setprogname
-setregid
-setresgid
-setresuid
-setreuid
-setrlimit
-setrlimit64
-setservent
-setsid
-setsockopt
-settimeofday
-setuid
-setusershell
-setutent
-setvbuf
-setxattr
-shutdown
-sigaction
-sigaddset
-sigaltstack
-sigblock
-sigdelset
-sigemptyset
-sigfillset
-siginterrupt
-sigismember
-siglongjmp
-signal
-signalfd
-signalfd4
-sigpending
-sigprocmask
-sigsetjmp
-sigsetmask
-sigsuspend
-sigwait
-sleep
-snprintf
-socket
-socketpair
-sprintf
-srand48
-sscanf
-stat
-stat64
-statfs
-statfs64
-statvfs
-statvfs64
-stpcpy
-stpncpy
-strcasecmp
-strcasestr
-strcat
-strchr
-strcmp
-strcoll
-strcpy
-strcspn
-strdup
-strerror
-strerror_r
-strftime
-strftime_tz
-strlcat
-strlcpy
-strlen
-strncasecmp
-strncat
-strncmp
-strncpy
-strndup
-strnlen
-strntoimax
-strntoumax
-strpbrk
-strptime
-strrchr
-strsep
-strsignal
-strspn
-strstr
-strtod
-strtof
-strtoimax
-strtok
-strtok_r
-strtol
-strtold
-strtoll
-strtoq
-strtotimeval
-strtoul
-strtoull
-strtoumax
-strtouq
-strxfrm
-swapoff
-swapon
-swprintf
-swscanf
-symlink
-symlinkat
-sync
-syscall
-sysconf
-sysinfo
-syslog
-syslog_r
-system
-sysv_signal
-tcdrain
-tcflow
-tcflush
-tcgetattr
-tcgetpgrp
-tcgetsid
-tcsendbreak
-tcsetattr
-tcsetpgrp
-tdelete
-tdestroy
-tempnam
-tfind
-tgkill
-time
-time2posix
-timegm
-timegm64
-timelocal
-timelocal64
-timer_create
-timer_delete
-timer_getoverrun
-timer_gettime
-timer_settime
-timerfd_create
-timerfd_gettime
-timerfd_settime
-times
-tkill
-tmpfile
-tmpnam
-toascii
-tolower
-toupper
-towlower
-towupper
-truncate
-truncate64
-tsearch
-ttyname
-ttyname_r
-tzset
-tzsetwall
-umask
-umount
-umount2
-uname
-ungetc
-ungetwc
-unlink
-unlinkat
-unlockpt
-unsetenv
-unshare
-uselocale
-usleep
-utime
-utimensat
-utimes
-utmpname
-valloc
-vasprintf
-verr
-verrx
-vfdprintf
-vfork
-vfprintf
-vfscanf
-vfwprintf
-vfwscanf
-vprintf
-vscanf
-vsnprintf
-vsprintf
-vsscanf
-vswprintf
-vswscanf
-vsyslog
-vsyslog_r
-vwarn
-vwarnx
-vwprintf
-vwscanf
-wait
-wait3
-wait4
-waitid
-waitpid
-warn
-warnx
-wcpcpy
-wcpncpy
-wcrtomb
-wcscasecmp
-wcscat
-wcschr
-wcscmp
-wcscoll
-wcscpy
-wcscspn
-wcsdup
-wcsftime
-wcslcat
-wcslcpy
-wcslen
-wcsncasecmp
-wcsncat
-wcsncmp
-wcsncpy
-wcsnlen
-wcsnrtombs
-wcspbrk
-wcsrchr
-wcsrtombs
-wcsspn
-wcsstr
-wcstod
-wcstof
-wcstoimax
-wcstok
-wcstol
-wcstold
-wcstoll
-wcstombs
-wcstoul
-wcstoull
-wcstoumax
-wcswcs
-wcswidth
-wcsxfrm
-wctob
-wctomb
-wctype
-wcwidth
-wmemchr
-wmemcmp
-wmemcpy
-wmemmove
-wmemset
-wprintf
-write
-writev
-wscanf
diff --git a/ndk/platforms/android-20/arch-arm/symbols/libc.so.variables.txt b/ndk/platforms/android-20/arch-arm/symbols/libc.so.variables.txt
deleted file mode 100644
index 3d7161c..0000000
--- a/ndk/platforms/android-20/arch-arm/symbols/libc.so.variables.txt
+++ /dev/null
@@ -1,50 +0,0 @@
-_C_ctype_
-_C_tolower_
-_C_toupper_
-__atexit
-__atexit_invalid
-__bionic_brk
-__bionic_libgcc_compat_symbols
-__dso_handle
-__isthreaded
-__libc_malloc_default_dispatch
-__libc_malloc_dispatch
-__netdClientDispatch
-__p_cert_syms
-__p_class_syms
-__p_key_syms
-__p_rcode_syms
-__p_type_syms
-__page_shift
-__page_size
-__popcount_tab
-__progname
-__rand48_add
-__rand48_mult
-__rand48_seed
-__sF
-__sdidinit
-__sglue
-__stack_chk_guard
-__system_property_area__
-_ctype_
-_ns_flagdata
-_tolower_tab_
-_toupper_tab_
-daylight
-environ
-g_allocations_mutex
-g_hash_table
-g_malloc_debug_backlog
-g_malloc_debug_level
-h_errlist
-h_nerr
-optarg
-opterr
-optind
-optopt
-optreset
-sys_siglist
-sys_signame
-timezone
-tzname
diff --git a/ndk/platforms/android-20/arch-arm/symbols/libm.so.functions.txt b/ndk/platforms/android-20/arch-arm/symbols/libm.so.functions.txt
deleted file mode 100644
index 41c1f41..0000000
--- a/ndk/platforms/android-20/arch-arm/symbols/libm.so.functions.txt
+++ /dev/null
@@ -1,297 +0,0 @@
-__aeabi_cfcmpeq
-__aeabi_cfcmple
-__aeabi_cfrcmple
-__aeabi_d2lz
-__aeabi_d2uiz
-__aeabi_d2ulz
-__aeabi_f2lz
-__aeabi_f2ulz
-__aeabi_fcmpeq
-__aeabi_fcmpge
-__aeabi_fcmpgt
-__aeabi_fcmple
-__aeabi_fcmplt
-__cmpsf2
-__eqsf2
-__exp__D
-__fixdfdi
-__fixsfdi
-__fixunsdfdi
-__fixunsdfsi
-__fixunssfdi
-__gesf2
-__gtsf2
-__ieee754_rem_pio2
-__ieee754_rem_pio2f
-__kernel_cos
-__kernel_cosdf
-__kernel_rem_pio2
-__kernel_sin
-__kernel_sindf
-__kernel_tan
-__kernel_tandf
-__ldexp_cexp
-__ldexp_cexpf
-__ldexp_exp
-__ldexp_expf
-__lesf2
-__log__D
-__ltsf2
-__nesf2
-__signbit
-__signbitf
-__signbitl
-_scan_nan
-acos
-acosf
-acosh
-acoshf
-acoshl
-acosl
-asin
-asinf
-asinh
-asinhf
-asinhl
-asinl
-atan
-atan2
-atan2f
-atan2l
-atanf
-atanh
-atanhf
-atanhl
-atanl
-cabs
-cabsf
-cabsl
-carg
-cargf
-cbrt
-cbrtf
-cbrtl
-ccos
-ccosf
-ccosh
-ccoshf
-ceil
-ceilf
-ceill
-cexp
-cexpf
-cimag
-cimagf
-conj
-conjf
-copysign
-copysignf
-copysignl
-cos
-cosf
-cosh
-coshf
-coshl
-cosl
-cproj
-cprojf
-cprojl
-creal
-crealf
-csin
-csinf
-csinh
-csinhf
-csqrt
-csqrtf
-csqrtl
-ctan
-ctanf
-ctanh
-ctanhf
-drem
-dremf
-erf
-erfc
-erfcf
-erfcl
-erff
-erfl
-exp
-exp2
-exp2f
-exp2l
-expf
-expl
-expm1
-expm1f
-expm1l
-fabs
-fabsf
-fabsl
-fdim
-fdimf
-fdiml
-feclearexcept
-fedisableexcept
-feenableexcept
-fegetenv
-fegetexcept
-fegetexceptflag
-fegetround
-feholdexcept
-feraiseexcept
-fesetenv
-fesetexceptflag
-fesetround
-fetestexcept
-feupdateenv
-finite
-finitef
-floor
-floorf
-floorl
-fma
-fmaf
-fmal
-fmax
-fmaxf
-fmaxl
-fmin
-fminf
-fminl
-fmod
-fmodf
-fmodl
-frexp
-frexpf
-frexpl
-gamma
-gamma_r
-gammaf
-gammaf_r
-hypot
-hypotf
-hypotl
-ilogb
-ilogbf
-ilogbl
-imprecise_coshl
-imprecise_erfcl
-imprecise_erfl
-imprecise_lgammal
-imprecise_powl
-imprecise_sinhl
-imprecise_tanhl
-imprecise_tgammal
-j0
-j0f
-j1
-j1f
-jn
-jnf
-ldexpf
-ldexpl
-lgamma
-lgamma_r
-lgammaf
-lgammaf_r
-lgammal
-llrint
-llrintf
-llrintl
-llround
-llroundf
-llroundl
-log
-log10
-log10f
-log10l
-log1p
-log1pf
-log1pl
-log2
-log2f
-log2l
-logb
-logbf
-logbl
-logf
-logl
-lrint
-lrintf
-lrintl
-lround
-lroundf
-lroundl
-modf
-modff
-modfl
-nan
-nanf
-nanl
-nearbyint
-nearbyintf
-nearbyintl
-nextafter
-nextafterf
-nextafterl
-nexttoward
-nexttowardf
-nexttowardl
-pow
-powf
-powl
-remainder
-remainderf
-remainderl
-remquo
-remquof
-remquol
-rint
-rintf
-rintl
-round
-roundf
-roundl
-scalb
-scalbf
-scalbln
-scalblnf
-scalblnl
-scalbn
-scalbnf
-scalbnl
-significand
-significandf
-significandl
-sin
-sincos
-sincosf
-sincosl
-sinf
-sinh
-sinhf
-sinhl
-sinl
-sqrt
-sqrtf
-sqrtl
-tan
-tanf
-tanh
-tanhf
-tanhl
-tanl
-tgamma
-tgammaf
-tgammal
-trunc
-truncf
-truncl
-y0
-y0f
-y1
-y1f
-yn
-ynf
diff --git a/ndk/platforms/android-20/arch-arm/symbols/libstdc++.so.functions.txt b/ndk/platforms/android-20/arch-arm/symbols/libstdc++.so.functions.txt
deleted file mode 100644
index 991ae87..0000000
--- a/ndk/platforms/android-20/arch-arm/symbols/libstdc++.so.functions.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-_ZN9type_infoC1ERKS_
-_ZN9type_infoC1Ev
-_ZN9type_infoC2ERKS_
-_ZN9type_infoC2Ev
-_ZN9type_infoD0Ev
-_ZN9type_infoD1Ev
-_ZN9type_infoD2Ev
-_ZNK9type_info4nameEv
-_ZNK9type_info6beforeERKS_
-_ZNK9type_infoeqERKS_
-_ZNK9type_infoneERKS_
-_ZdaPv
-_ZdaPvRKSt9nothrow_t
-_ZdlPv
-_ZdlPvRKSt9nothrow_t
-_Znam
-_ZnamRKSt9nothrow_t
-_Znwm
-_ZnwmRKSt9nothrow_t
-__cxa_guard_abort
-__cxa_guard_acquire
-__cxa_guard_release
-__cxa_pure_virtual
diff --git a/ndk/platforms/android-20/arch-arm/symbols/libstdc++.so.variables.txt b/ndk/platforms/android-20/arch-arm/symbols/libstdc++.so.variables.txt
deleted file mode 100644
index d5aab66..0000000
--- a/ndk/platforms/android-20/arch-arm/symbols/libstdc++.so.variables.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-_ZSt7nothrow
-_ZTV9type_info
diff --git a/ndk/platforms/android-20/arch-arm64/include/machine/fenv.h b/ndk/platforms/android-20/arch-arm64/include/machine/fenv.h
deleted file mode 100644
index 2efeee3..0000000
--- a/ndk/platforms/android-20/arch-arm64/include/machine/fenv.h
+++ /dev/null
@@ -1,121 +0,0 @@
-/*-
- * Copyright (c) 2004-2005 David Schultz <das@FreeBSD.ORG>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $FreeBSD: src/lib/msun/arm/fenv.h,v 1.5 2005/03/16 19:03:45 das Exp $
- */
-
-/*
- * Rewritten for Android.
- *
- * The ARM FPSCR (Floating-point Status and Control Register) described here:
- * http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0344b/Chdfafia.html
- * has been split into the FPCR (Floating-point Control Register) and FPSR
- * (Floating-point Status Register) on the ARMv8. These are described briefly in
- * "Procedure Call Standard for the ARM 64-bit Architecture"
- * http://infocenter.arm.com/help/topic/com.arm.doc.ihi0055a/IHI0055A_aapcs64.pdf
- * section 5.1.2 SIMD and Floating-Point Registers
- */
-
-#ifndef _ARM64_FENV_H_
-#define _ARM64_FENV_H_
-
-#include <sys/types.h>
-
-__BEGIN_DECLS
-
-typedef __uint32_t fenv_t;
-typedef __uint32_t fexcept_t;
-
-/* Exception flags. */
-#define FE_INVALID    0x01
-#define FE_DIVBYZERO  0x02
-#define FE_OVERFLOW   0x04
-#define FE_UNDERFLOW  0x08
-#define FE_INEXACT    0x10
-#define FE_ALL_EXCEPT (FE_DIVBYZERO | FE_INEXACT | FE_INVALID | \
-                       FE_OVERFLOW | FE_UNDERFLOW)
-
-#define _FPSCR_ENABLE_SHIFT 8
-#define _FPSCR_ENABLE_MASK  (FE_ALL_EXCEPT << _FPSCR_ENABLE_SHIFT)
-
-/* Rounding modes. */
-#define FE_TONEAREST  0x0
-#define FE_UPWARD     0x1
-#define FE_DOWNWARD   0x2
-#define FE_TOWARDZERO 0x3
-
-#define _FPSCR_RMODE_SHIFT 22
-
-#define FPCR_IOE    (1 << 8)
-#define FPCR_DZE    (1 << 9)
-#define FPCR_OFE    (1 << 10)
-#define FPCR_UFE    (1 << 11)
-#define FPCR_IXE    (1 << 12)
-#define FPCR_IDE    (1 << 15)
-#define FPCR_LEN    (7 << 16)
-#define FPCR_STRIDE (3 << 20)
-#define FPCR_RMODE  (3 << 22)
-#define FPCR_FZ     (1 << 24)
-#define FPCR_DN     (1 << 25)
-#define FPCR_AHP    (1 << 26)
-#define FPCR_MASK   (FPCR_IOE | \
-                     FPCR_DZE | \
-                     FPCR_OFE | \
-                     FPCR_UFE | \
-                     FPCR_IXE | \
-                     FPCR_IDE | \
-                     FPCR_LEN | \
-                     FPCR_STRIDE | \
-                     FPCR_RMODE | \
-                     FPCR_FZ | \
-                     FPCR_DN | \
-                     FPCR_AHP )
-
-#define FPSR_IOC    (1 << 0)
-#define FPSR_DZC    (1 << 1)
-#define FPSR_OFC    (1 << 2)
-#define FPSR_UFC    (1 << 3)
-#define FPSR_IXC    (1 << 4)
-#define FPSR_IDC    (1 << 7)
-#define FPSR_QC     (1 << 27)
-#define FPSR_V      (1 << 28)
-#define FPSR_C      (1 << 29)
-#define FPSR_Z      (1 << 30)
-#define FPSR_N      (1 << 31)
-#define FPSR_MASK   (FPSR_IOC | \
-                     FPSR_DZC | \
-                     FPSR_OFC | \
-                     FPSR_UFC | \
-                     FPSR_IXC | \
-                     FPSR_IDC | \
-                     FPSR_QC | \
-                     FPSR_V | \
-                     FPSR_C | \
-                     FPSR_Z | \
-                     FPSR_N )
-
-__END_DECLS
-
-#endif /* !_ARM64_FENV_H_ */
diff --git a/ndk/platforms/android-20/arch-arm64/lib/libc.a b/ndk/platforms/android-20/arch-arm64/lib/libc.a
deleted file mode 100644
index ea9ec46..0000000
--- a/ndk/platforms/android-20/arch-arm64/lib/libc.a
+++ /dev/null
Binary files differ
diff --git a/ndk/platforms/android-20/arch-arm64/lib/libm.a b/ndk/platforms/android-20/arch-arm64/lib/libm.a
deleted file mode 100644
index 5e95ceb..0000000
--- a/ndk/platforms/android-20/arch-arm64/lib/libm.a
+++ /dev/null
Binary files differ
diff --git a/ndk/platforms/android-20/arch-arm64/lib/libstdc++.a b/ndk/platforms/android-20/arch-arm64/lib/libstdc++.a
deleted file mode 100644
index 25d4657..0000000
--- a/ndk/platforms/android-20/arch-arm64/lib/libstdc++.a
+++ /dev/null
Binary files differ
diff --git a/ndk/platforms/android-20/arch-arm64/lib/libz.a b/ndk/platforms/android-20/arch-arm64/lib/libz.a
deleted file mode 100644
index b41e0fb..0000000
--- a/ndk/platforms/android-20/arch-arm64/lib/libz.a
+++ /dev/null
Binary files differ
diff --git a/ndk/platforms/android-20/arch-arm64/symbols/libc.so.functions.txt b/ndk/platforms/android-20/arch-arm64/symbols/libc.so.functions.txt
deleted file mode 100644
index b6b8c9f..0000000
--- a/ndk/platforms/android-20/arch-arm64/symbols/libc.so.functions.txt
+++ /dev/null
@@ -1,1167 +0,0 @@
-MD5_Final
-MD5_Init
-MD5_Update
-SHA1Final
-SHA1Init
-SHA1Transform
-SHA1Update
-_Exit
-_Unwind_Backtrace
-_Unwind_DeleteException
-_Unwind_FindEnclosingFunction
-_Unwind_Find_FDE
-_Unwind_ForcedUnwind
-_Unwind_GetCFA
-_Unwind_GetDataRelBase
-_Unwind_GetGR
-_Unwind_GetIP
-_Unwind_GetIPInfo
-_Unwind_GetLanguageSpecificData
-_Unwind_GetRegionStart
-_Unwind_GetTextRelBase
-_Unwind_RaiseException
-_Unwind_Resume
-_Unwind_Resume_or_Rethrow
-_Unwind_SetGR
-_Unwind_SetIP
-__FD_CLR_chk
-__FD_ISSET_chk
-__FD_SET_chk
-__android_set_abort_message
-__arc4_getbyte
-__assert
-__assert2
-__b64_ntop
-__b64_pton
-__bionic_name_mem
-__cxa_atexit
-__cxa_finalize
-__deregister_frame
-__deregister_frame_info
-__deregister_frame_info_bases
-__dn_comp
-__dn_count_labels
-__dn_skipname
-__dorand48
-__errno
-__evAddTime
-__evCmpTime
-__evConsIovec
-__evConsTime
-__evNowTime
-__evSubTime
-__evTimeSpec
-__evTimeVal
-__evUTCTime
-__fgets_chk
-__fgetwc_unlock
-__findenv
-__fp_nquery
-__fp_query
-__fpclassify
-__fpclassifyd
-__fpclassifyf
-__fpclassifyl
-__fputwc_unlock
-__frame_state_for
-__futex_syscall3
-__futex_syscall4
-__futex_wait
-__futex_wait_ex
-__futex_wake
-__futex_wake_ex
-__get_h_errno
-__get_sp
-__hostalias
-__isfinite
-__isfinitef
-__isfinitel
-__isinf
-__isinff
-__isinfl
-__isnan
-__isnanf
-__isnanl
-__isnormal
-__isnormalf
-__isnormall
-__libc_current_sigrtmax
-__libc_current_sigrtmin
-__libc_fini
-__libc_init
-__loc_aton
-__loc_ntoa
-__memcmp16
-__memcpy_chk
-__memmove_chk
-__memset_chk
-__multf3
-__ns_format_ttl
-__ns_get16
-__ns_get32
-__ns_initparse
-__ns_makecanon
-__ns_msg_getflag
-__ns_name_compress
-__ns_name_eq
-__ns_name_labels
-__ns_name_length
-__ns_name_map
-__ns_name_ntol
-__ns_name_ntop
-__ns_name_owned
-__ns_name_pack
-__ns_name_pton
-__ns_name_pton2
-__ns_name_rollback
-__ns_name_skip
-__ns_name_uncompress
-__ns_name_unpack
-__ns_name_unpack2
-__ns_parserr
-__ns_parserr2
-__ns_put16
-__ns_put32
-__ns_samename
-__ns_skiprr
-__ns_sprintrr
-__ns_sprintrrf
-__open_2
-__openat_2
-__p_cdname
-__p_cdnname
-__p_class
-__p_fqname
-__p_fqnname
-__p_option
-__p_query
-__p_rcode
-__p_secstodate
-__p_section
-__p_sockun
-__p_time
-__p_type
-__popcountdi2
-__pthread_cleanup_pop
-__pthread_cleanup_push
-__pthread_gettid
-__putlong
-__putshort
-__read_chk
-__recvfrom_chk
-__register_frame
-__register_frame_info
-__register_frame_info_bases
-__register_frame_info_table
-__register_frame_info_table_bases
-__register_frame_table
-__res_close
-__res_dnok
-__res_get_nibblesuffix
-__res_get_nibblesuffix2
-__res_get_state
-__res_get_static
-__res_getservers
-__res_hnok
-__res_hostalias
-__res_isourserver
-__res_mailok
-__res_nameinquery
-__res_nametoclass
-__res_nametotype
-__res_nclose
-__res_ndestroy
-__res_ninit
-__res_nmkquery
-__res_nopt
-__res_nquery
-__res_nquerydomain
-__res_nsearch
-__res_nsend
-__res_opt
-__res_ownok
-__res_pquery
-__res_put_state
-__res_queriesmatch
-__res_querydomain
-__res_randomid
-__res_send
-__res_send_setqhook
-__res_send_setrhook
-__res_setservers
-__res_vinit
-__sched_cpualloc
-__sched_cpucount
-__sched_cpufree
-__sclose
-__set_tls
-__sflags
-__sflush
-__sflush_locked
-__sfp
-__sfp_handle_exceptions
-__sfvwrite
-__sinit
-__smakebuf
-__snprintf_chk
-__sprintf_chk
-__sread
-__srefill
-__srget
-__sseek
-__stack_chk_fail
-__stpcpy_chk
-__stpncpy_chk
-__stpncpy_chk2
-__strcat_chk
-__strchr_chk
-__strcpy_chk
-__strlcat_chk
-__strlcpy_chk
-__strlen_chk
-__strncat_chk
-__strncpy_chk
-__strncpy_chk2
-__strrchr_chk
-__svfscanf
-__swbuf
-__swhatbuf
-__swrite
-__swsetup
-__sym_ntop
-__sym_ntos
-__sym_ston
-__system_properties_init
-__system_property_add
-__system_property_area_init
-__system_property_find
-__system_property_find_compat
-__system_property_find_nth
-__system_property_foreach
-__system_property_foreach_compat
-__system_property_get
-__system_property_read
-__system_property_read_compat
-__system_property_serial
-__system_property_set
-__system_property_set_filename
-__system_property_update
-__system_property_wait_any
-__umask_chk
-__ungetwc
-__vfprintf
-__vfwprintf
-__vfwscanf
-__vsnprintf_chk
-__vsprintf_chk
-_cleanup
-_exit
-_exit_with_stack_teardown
-_fwalk
-_getlong
-_getshort
-_longjmp
-_resolv_flush_cache_for_net
-_resolv_set_nameservers_for_net
-_setjmp
-_thread_created_hook
-_tolower
-_toupper
-abort
-abs
-accept
-accept4
-access
-acct
-alarm
-alphasort
-alphasort64
-android_getaddrinfofornet
-android_gethostbyaddrfornet
-android_gethostbyaddrfornet_proxy
-android_gethostbyaddrfornet_real
-android_gethostbynamefornet
-android_getnameinfofornet
-arc4random
-arc4random_addrandom
-arc4random_buf
-arc4random_stir
-arc4random_uniform
-asctime
-asctime_r
-asprintf
-at_quick_exit
-atof
-atoi
-atol
-atoll
-basename
-basename_r
-bcopy
-bind
-bindresvport
-brk
-bsd_signal
-bsearch
-btowc
-bzero
-calloc
-capget
-capset
-cfgetispeed
-cfgetospeed
-cfmakeraw
-cfsetispeed
-cfsetospeed
-cfsetspeed
-chdir
-chmod
-chown
-chroot
-clearenv
-clearerr
-clock
-clock_getres
-clock_gettime
-clock_nanosleep
-clock_settime
-clone
-close
-closedir
-closelog
-closelog_r
-cmsg_nxthdr
-connect
-creat
-creat64
-ctime
-ctime_r
-daemon
-delete_module
-difftime
-dirfd
-dirname
-dirname_r
-div
-dlbulk_free
-dlcalloc
-dlfree
-dlindependent_calloc
-dlindependent_comalloc
-dlmallinfo
-dlmalloc
-dlmalloc_footprint
-dlmalloc_footprint_limit
-dlmalloc_inspect_all
-dlmalloc_max_footprint
-dlmalloc_set_footprint_limit
-dlmalloc_stats
-dlmalloc_trim
-dlmalloc_usable_size
-dlmallopt
-dlmemalign
-dlposix_memalign
-dlpvalloc
-dlrealloc
-dlrealloc_in_place
-dlvalloc
-dn_expand
-drand48
-dup
-dup2
-dup3
-duplocale
-endmntent
-endpwent
-endservent
-endusershell
-endutent
-epoll_create
-epoll_create1
-epoll_ctl
-epoll_pwait
-epoll_wait
-erand48
-err
-errx
-ether_aton
-ether_aton_r
-ether_ntoa
-ether_ntoa_r
-eventfd
-eventfd_read
-eventfd_write
-execl
-execle
-execlp
-execv
-execve
-execvp
-execvpe
-exit
-faccessat
-fallocate
-fallocate64
-fchdir
-fchmod
-fchmodat
-fchown
-fchownat
-fclose
-fcntl
-fdatasync
-fdopen
-fdopendir
-fdprintf
-feof
-ferror
-fflush
-ffs
-fgetc
-fgetln
-fgetpos
-fgets
-fgetwc
-fgetws
-fgetxattr
-fileno
-flistxattr
-flock
-flockfile
-fnmatch
-fopen
-fork
-fpathconf
-fprintf
-fpurge
-fputc
-fputs
-fputwc
-fputws
-fread
-free
-freeaddrinfo
-freelocale
-fremovexattr
-freopen
-fscanf
-fseek
-fseeko
-fsetpos
-fsetxattr
-fstat
-fstat64
-fstatat
-fstatat64
-fstatfs
-fstatfs64
-fstatvfs
-fstatvfs64
-fsync
-ftell
-ftello
-ftime
-ftok
-ftruncate
-ftruncate64
-ftrylockfile
-fts_children
-fts_close
-fts_open
-fts_read
-fts_set
-ftw
-ftw64
-funlockfile
-funopen
-futex
-futimens
-fwide
-fwprintf
-fwrite
-fwscanf
-gai_strerror
-get_malloc_leak_info
-getaddrinfo
-getauxval
-getc
-getc_unlocked
-getchar
-getchar_unlocked
-getcwd
-getdelim
-getdents
-getdtablesize
-getegid
-getenv
-geteuid
-getgid
-getgrgid
-getgrnam
-getgrouplist
-getgroups
-gethostbyaddr
-gethostbyname
-gethostbyname2
-gethostbyname_r
-gethostent
-gethostname
-getitimer
-getline
-getlogin
-getmntent
-getmntent_r
-getnameinfo
-getnetbyaddr
-getnetbyname
-getopt
-getopt_long
-getopt_long_only
-getpagesize
-getpeername
-getpgid
-getpgrp
-getpid
-getppid
-getpriority
-getprogname
-getprotobyname
-getprotobynumber
-getpt
-getpwnam
-getpwnam_r
-getpwuid
-getpwuid_r
-getresgid
-getresuid
-getrlimit
-getrlimit64
-getrusage
-gets
-getservbyname
-getservbyport
-getservent
-getservent_r
-getsid
-getsockname
-getsockopt
-gettid
-gettimeofday
-getuid
-getusershell
-getutent
-getwc
-getwchar
-getxattr
-gmtime
-gmtime_r
-herror
-hstrerror
-htonl
-htons
-if_indextoname
-if_nametoindex
-imaxabs
-imaxdiv
-index
-inet_addr
-inet_aton
-inet_lnaof
-inet_makeaddr
-inet_netof
-inet_network
-inet_nsap_addr
-inet_nsap_ntoa
-inet_ntoa
-inet_ntop
-inet_pton
-init_module
-initgroups
-inotify_add_watch
-inotify_init
-inotify_init1
-inotify_rm_watch
-ioctl
-ioprio_get
-ioprio_set
-isalnum
-isalpha
-isascii
-isatty
-isblank
-iscntrl
-isdigit
-isfinite
-isfinitef
-isfinitel
-isgraph
-isinf
-isinff
-isinfl
-islower
-isnan
-isnanf
-isnanl
-isnormal
-isnormalf
-isnormall
-isprint
-ispunct
-issetugid
-isspace
-isupper
-iswalnum
-iswalpha
-iswblank
-iswcntrl
-iswctype
-iswdigit
-iswgraph
-iswlower
-iswprint
-iswpunct
-iswspace
-iswupper
-iswxdigit
-isxdigit
-jrand48
-kill
-killpg
-klogctl
-labs
-lchown
-ldexp
-ldiv
-lfind
-lgetxattr
-link
-linkat
-listen
-listxattr
-llabs
-lldiv
-llistxattr
-localeconv
-localtime
-localtime_r
-localtime_tz
-longjmp
-longjmperror
-lrand48
-lremovexattr
-lsearch
-lseek
-lseek64
-lsetxattr
-lstat
-lstat64
-madvise
-mallinfo
-malloc
-malloc_usable_size
-mbrlen
-mbrtowc
-mbsinit
-mbsnrtowcs
-mbsrtowcs
-mbstowcs
-mbtowc
-memalign
-memccpy
-memchr
-memcmp
-memcpy
-memmem
-memmove
-memrchr
-memset
-mincore
-mkdir
-mkdirat
-mkdtemp
-mkfifo
-mknod
-mknodat
-mkstemp
-mkstemp64
-mkstemps
-mktemp
-mktime
-mktime_tz
-mlock
-mlockall
-mmap
-mmap64
-mount
-mprotect
-mrand48
-mremap
-msync
-munlock
-munlockall
-munmap
-nanosleep
-newlocale
-nftw
-nftw64
-nice
-nrand48
-nsdispatch
-ntohl
-ntohs
-open
-open64
-openat
-openat64
-opendir
-openlog
-openlog_r
-pathconf
-pause
-pclose
-perf_event_open
-perror
-personality
-pipe
-pipe2
-poll
-popen
-posix2time
-posix_fallocate
-posix_fallocate64
-posix_memalign
-ppoll
-prctl
-pread
-pread64
-printf
-prlimit
-prlimit64
-pselect
-psiginfo
-psignal
-pthread_atfork
-pthread_attr_destroy
-pthread_attr_getdetachstate
-pthread_attr_getguardsize
-pthread_attr_getschedparam
-pthread_attr_getschedpolicy
-pthread_attr_getscope
-pthread_attr_getstack
-pthread_attr_getstacksize
-pthread_attr_init
-pthread_attr_setdetachstate
-pthread_attr_setguardsize
-pthread_attr_setschedparam
-pthread_attr_setschedpolicy
-pthread_attr_setscope
-pthread_attr_setstack
-pthread_attr_setstacksize
-pthread_cond_broadcast
-pthread_cond_destroy
-pthread_cond_init
-pthread_cond_signal
-pthread_cond_timedwait
-pthread_cond_wait
-pthread_condattr_destroy
-pthread_condattr_getclock
-pthread_condattr_getpshared
-pthread_condattr_init
-pthread_condattr_setclock
-pthread_condattr_setpshared
-pthread_create
-pthread_detach
-pthread_equal
-pthread_exit
-pthread_getattr_np
-pthread_getcpuclockid
-pthread_getschedparam
-pthread_getspecific
-pthread_join
-pthread_key_create
-pthread_key_delete
-pthread_kill
-pthread_mutex_destroy
-pthread_mutex_init
-pthread_mutex_lock
-pthread_mutex_timedlock
-pthread_mutex_trylock
-pthread_mutex_unlock
-pthread_mutexattr_destroy
-pthread_mutexattr_getpshared
-pthread_mutexattr_gettype
-pthread_mutexattr_init
-pthread_mutexattr_setpshared
-pthread_mutexattr_settype
-pthread_once
-pthread_rwlock_destroy
-pthread_rwlock_init
-pthread_rwlock_rdlock
-pthread_rwlock_timedrdlock
-pthread_rwlock_timedwrlock
-pthread_rwlock_tryrdlock
-pthread_rwlock_trywrlock
-pthread_rwlock_unlock
-pthread_rwlock_wrlock
-pthread_rwlockattr_destroy
-pthread_rwlockattr_getpshared
-pthread_rwlockattr_init
-pthread_rwlockattr_setpshared
-pthread_self
-pthread_setname_np
-pthread_setschedparam
-pthread_setspecific
-pthread_sigmask
-ptrace
-ptsname
-ptsname_r
-putc
-putc_unlocked
-putchar
-putchar_unlocked
-putenv
-puts
-pututline
-putw
-putwc
-putwchar
-pvalloc
-pwrite
-pwrite64
-qsort
-quick_exit
-raise
-read
-readahead
-readdir
-readdir64
-readdir64_r
-readdir_r
-readlink
-readlinkat
-readv
-realloc
-realpath
-reboot
-recv
-recvfrom
-recvmmsg
-recvmsg
-regcomp
-regerror
-regexec
-regfree
-remove
-removexattr
-rename
-renameat
-res_init
-res_mkquery
-res_query
-res_search
-res_setmark
-res_setnetid
-rewind
-rewinddir
-rmdir
-sbrk
-scandir
-scandir64
-scanf
-sched_get_priority_max
-sched_get_priority_min
-sched_getaffinity
-sched_getcpu
-sched_getparam
-sched_getscheduler
-sched_rr_get_interval
-sched_setaffinity
-sched_setparam
-sched_setscheduler
-sched_yield
-seed48
-select
-sem_close
-sem_destroy
-sem_getvalue
-sem_init
-sem_open
-sem_post
-sem_timedwait
-sem_trywait
-sem_unlink
-sem_wait
-send
-sendfile
-sendfile64
-sendmmsg
-sendmsg
-sendto
-setbuf
-setbuffer
-setegid
-setenv
-seteuid
-setgid
-setgroups
-setitimer
-setjmp
-setlinebuf
-setlocale
-setlogmask
-setlogmask_r
-setmntent
-setns
-setpgid
-setpgrp
-setpriority
-setprogname
-setregid
-setresgid
-setresuid
-setreuid
-setrlimit
-setrlimit64
-setservent
-setsid
-setsockopt
-settimeofday
-setuid
-setusershell
-setutent
-setvbuf
-setxattr
-shutdown
-sigaction
-sigaddset
-sigaltstack
-sigblock
-sigdelset
-sigemptyset
-sigfillset
-siginterrupt
-sigismember
-siglongjmp
-signal
-signalfd
-signalfd4
-sigpending
-sigprocmask
-sigsetjmp
-sigsetmask
-sigsuspend
-sigwait
-sleep
-snprintf
-socket
-socketpair
-sprintf
-srand48
-sscanf
-stat
-stat64
-statfs
-statfs64
-statvfs
-statvfs64
-stpcpy
-stpncpy
-strcasecmp
-strcasestr
-strcat
-strchr
-strcmp
-strcoll
-strcpy
-strcspn
-strdup
-strerror
-strerror_r
-strftime
-strftime_tz
-strlcat
-strlcpy
-strlen
-strncasecmp
-strncat
-strncmp
-strncpy
-strndup
-strnlen
-strpbrk
-strptime
-strrchr
-strsep
-strsignal
-strspn
-strstr
-strtod
-strtof
-strtoimax
-strtok
-strtok_r
-strtol
-strtold
-strtoll
-strtoq
-strtoul
-strtoull
-strtoumax
-strtouq
-strxfrm
-swapoff
-swapon
-swprintf
-swscanf
-symlink
-symlinkat
-sync
-syscall
-sysconf
-sysinfo
-syslog
-syslog_r
-system
-sysv_signal
-tcdrain
-tcflow
-tcflush
-tcgetattr
-tcgetpgrp
-tcgetsid
-tcsendbreak
-tcsetattr
-tcsetpgrp
-tdelete
-tdestroy
-tempnam
-tfind
-tgkill
-time
-time2posix
-timegm
-timelocal
-timer_create
-timer_delete
-timer_getoverrun
-timer_gettime
-timer_settime
-timerfd_create
-timerfd_gettime
-timerfd_settime
-times
-tkill
-tmpfile
-tmpnam
-toascii
-tolower
-toupper
-towlower
-towupper
-truncate
-truncate64
-tsearch
-ttyname
-ttyname_r
-tzset
-tzsetwall
-umask
-umount
-umount2
-uname
-ungetc
-ungetwc
-unlink
-unlinkat
-unlockpt
-unsetenv
-unshare
-uselocale
-usleep
-utime
-utimensat
-utimes
-utmpname
-valloc
-vasprintf
-verr
-verrx
-vfdprintf
-vfork
-vfprintf
-vfscanf
-vfwprintf
-vfwscanf
-vprintf
-vscanf
-vsnprintf
-vsprintf
-vsscanf
-vswprintf
-vswscanf
-vsyslog
-vsyslog_r
-vwarn
-vwarnx
-vwprintf
-vwscanf
-wait
-wait3
-wait4
-waitid
-waitpid
-warn
-warnx
-wcpcpy
-wcpncpy
-wcrtomb
-wcscasecmp
-wcscat
-wcschr
-wcscmp
-wcscoll
-wcscpy
-wcscspn
-wcsdup
-wcsftime
-wcslcat
-wcslcpy
-wcslen
-wcsncasecmp
-wcsncat
-wcsncmp
-wcsncpy
-wcsnlen
-wcsnrtombs
-wcspbrk
-wcsrchr
-wcsrtombs
-wcsspn
-wcsstr
-wcstod
-wcstof
-wcstoimax
-wcstok
-wcstol
-wcstold
-wcstoll
-wcstombs
-wcstoul
-wcstoull
-wcstoumax
-wcswcs
-wcswidth
-wcsxfrm
-wctob
-wctomb
-wctype
-wcwidth
-wmemchr
-wmemcmp
-wmemcpy
-wmemmove
-wmemset
-wprintf
-write
-writev
-wscanf
diff --git a/ndk/platforms/android-20/arch-arm64/symbols/libc.so.variables.txt b/ndk/platforms/android-20/arch-arm64/symbols/libc.so.variables.txt
deleted file mode 100644
index fc7f9d8..0000000
--- a/ndk/platforms/android-20/arch-arm64/symbols/libc.so.variables.txt
+++ /dev/null
@@ -1,45 +0,0 @@
-_C_ctype_
-_C_tolower_
-_C_toupper_
-__atexit
-__atexit_invalid
-__isthreaded
-__libc_malloc_default_dispatch
-__libc_malloc_dispatch
-__netdClientDispatch
-__p_cert_syms
-__p_class_syms
-__p_key_syms
-__p_rcode_syms
-__p_type_syms
-__popcount_tab
-__progname
-__rand48_add
-__rand48_mult
-__rand48_seed
-__sF
-__sdidinit
-__sglue
-__stack_chk_guard
-__system_property_area__
-_ctype_
-_ns_flagdata
-_tolower_tab_
-_toupper_tab_
-daylight
-environ
-g_allocations_mutex
-g_hash_table
-g_malloc_debug_backlog
-g_malloc_debug_level
-h_errlist
-h_nerr
-optarg
-opterr
-optind
-optopt
-optreset
-sys_siglist
-sys_signame
-timezone
-tzname
diff --git a/ndk/platforms/android-20/arch-arm64/symbols/libm.so.functions.txt b/ndk/platforms/android-20/arch-arm64/symbols/libm.so.functions.txt
deleted file mode 100644
index 5e61a3d..0000000
--- a/ndk/platforms/android-20/arch-arm64/symbols/libm.so.functions.txt
+++ /dev/null
@@ -1,288 +0,0 @@
-__addtf3
-__divtf3
-__eqtf2
-__exp__D
-__extenddftf2
-__extendsftf2
-__fixtfdi
-__fixtfsi
-__floatsitf
-__getf2
-__gttf2
-__ieee754_rem_pio2
-__ieee754_rem_pio2f
-__kernel_cos
-__kernel_cosdf
-__kernel_cosl
-__kernel_rem_pio2
-__kernel_sin
-__kernel_sindf
-__kernel_sinl
-__kernel_tan
-__kernel_tandf
-__kernel_tanl
-__ldexp_cexp
-__ldexp_cexpf
-__ldexp_exp
-__ldexp_expf
-__letf2
-__log__D
-__lttf2
-__netf2
-__signbit
-__signbitf
-__signbitl
-__subtf3
-__trunctfdf2
-__trunctfsf2
-_scan_nan
-acos
-acosf
-acosh
-acoshf
-acoshl
-acosl
-asin
-asinf
-asinh
-asinhf
-asinhl
-asinl
-atan
-atan2
-atan2f
-atan2l
-atanf
-atanh
-atanhf
-atanhl
-atanl
-cabs
-cabsf
-carg
-cargf
-cbrt
-cbrtf
-cbrtl
-ccos
-ccosf
-ccosh
-ccoshf
-ceil
-ceilf
-ceill
-cexp
-cexpf
-cimag
-cimagf
-conj
-conjf
-copysign
-copysignf
-copysignl
-cos
-cosf
-cosh
-coshf
-coshl
-cosl
-cproj
-cprojf
-creal
-crealf
-csin
-csinf
-csinh
-csinhf
-csqrt
-csqrtf
-ctan
-ctanf
-ctanh
-ctanhf
-drem
-dremf
-erf
-erfc
-erfcf
-erfcl
-erff
-erfl
-exp
-exp2
-exp2f
-exp2l
-expf
-expl
-expm1
-expm1f
-expm1l
-fabs
-fabsf
-fabsl
-fdim
-fdimf
-fdiml
-feclearexcept
-fedisableexcept
-feenableexcept
-fegetenv
-fegetexcept
-fegetexceptflag
-fegetround
-feholdexcept
-feraiseexcept
-fesetenv
-fesetexceptflag
-fesetround
-fetestexcept
-feupdateenv
-finite
-finitef
-floor
-floorf
-floorl
-fma
-fmaf
-fmal
-fmax
-fmaxf
-fmaxl
-fmin
-fminf
-fminl
-fmod
-fmodf
-fmodl
-frexp
-frexpf
-frexpl
-gamma
-gamma_r
-gammaf
-gammaf_r
-hypot
-hypotf
-hypotl
-ilogb
-ilogbf
-ilogbl
-imprecise_coshl
-imprecise_erfcl
-imprecise_erfl
-imprecise_lgammal
-imprecise_powl
-imprecise_sinhl
-imprecise_tanhl
-imprecise_tgammal
-j0
-j0f
-j1
-j1f
-jn
-jnf
-ldexpf
-ldexpl
-lgamma
-lgamma_r
-lgammaf
-lgammaf_r
-lgammal
-llrint
-llrintf
-llrintl
-llround
-llroundf
-llroundl
-log
-log10
-log10f
-log10l
-log1p
-log1pf
-log1pl
-log2
-log2f
-log2l
-logb
-logbf
-logbl
-logf
-logl
-lrint
-lrintf
-lrintl
-lround
-lroundf
-lroundl
-modf
-modff
-modfl
-nan
-nanf
-nanl
-nearbyint
-nearbyintf
-nearbyintl
-nextafter
-nextafterf
-nextafterl
-nexttoward
-nexttowardf
-nexttowardl
-pow
-powf
-powl
-remainder
-remainderf
-remainderl
-remquo
-remquof
-remquol
-rint
-rintf
-rintl
-round
-roundf
-roundl
-scalb
-scalbf
-scalbln
-scalblnf
-scalblnl
-scalbn
-scalbnf
-scalbnl
-significand
-significandf
-significandl
-sin
-sincos
-sincosf
-sincosl
-sinf
-sinh
-sinhf
-sinhl
-sinl
-sqrt
-sqrtf
-sqrtl
-tan
-tanf
-tanh
-tanhf
-tanhl
-tanl
-tgamma
-tgammaf
-tgammal
-trunc
-truncf
-truncl
-y0
-y0f
-y1
-y1f
-yn
-ynf
diff --git a/ndk/platforms/android-20/arch-arm64/symbols/libm.so.variables.txt b/ndk/platforms/android-20/arch-arm64/symbols/libm.so.variables.txt
deleted file mode 100644
index 9d7f213..0000000
--- a/ndk/platforms/android-20/arch-arm64/symbols/libm.so.variables.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-_ItL_aT
-_ItL_atanhi
-_ItL_atanlo
-_ItL_pS0
-_ItL_pS1
-_ItL_pS2
-_ItL_pS3
-_ItL_pS4
-_ItL_pS5
-_ItL_pS6
-_ItL_pS7
-_ItL_pS8
-_ItL_pS9
-_ItL_pi_lo
-_ItL_qS1
-_ItL_qS2
-_ItL_qS3
-_ItL_qS4
-_ItL_qS5
-_ItL_qS6
-_ItL_qS7
-_ItL_qS8
-_ItL_qS9
-__fe_dfl_env
-signgam
diff --git a/ndk/platforms/android-20/arch-arm64/symbols/libstdc++.so.functions.txt b/ndk/platforms/android-20/arch-arm64/symbols/libstdc++.so.functions.txt
deleted file mode 100644
index 991ae87..0000000
--- a/ndk/platforms/android-20/arch-arm64/symbols/libstdc++.so.functions.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-_ZN9type_infoC1ERKS_
-_ZN9type_infoC1Ev
-_ZN9type_infoC2ERKS_
-_ZN9type_infoC2Ev
-_ZN9type_infoD0Ev
-_ZN9type_infoD1Ev
-_ZN9type_infoD2Ev
-_ZNK9type_info4nameEv
-_ZNK9type_info6beforeERKS_
-_ZNK9type_infoeqERKS_
-_ZNK9type_infoneERKS_
-_ZdaPv
-_ZdaPvRKSt9nothrow_t
-_ZdlPv
-_ZdlPvRKSt9nothrow_t
-_Znam
-_ZnamRKSt9nothrow_t
-_Znwm
-_ZnwmRKSt9nothrow_t
-__cxa_guard_abort
-__cxa_guard_acquire
-__cxa_guard_release
-__cxa_pure_virtual
diff --git a/ndk/platforms/android-20/arch-arm64/symbols/libstdc++.so.variables.txt b/ndk/platforms/android-20/arch-arm64/symbols/libstdc++.so.variables.txt
deleted file mode 100644
index d5aab66..0000000
--- a/ndk/platforms/android-20/arch-arm64/symbols/libstdc++.so.variables.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-_ZSt7nothrow
-_ZTV9type_info
diff --git a/ndk/platforms/android-20/arch-mips/include/machine/fenv.h b/ndk/platforms/android-20/arch-mips/include/machine/fenv.h
deleted file mode 100644
index 37f0f9c..0000000
--- a/ndk/platforms/android-20/arch-mips/include/machine/fenv.h
+++ /dev/null
@@ -1,105 +0,0 @@
-/*-
- * Copyright (c) 2004-2005 David Schultz <das@FreeBSD.ORG>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $FreeBSD: src/lib/msun/arm/fenv.h,v 1.5 2005/03/16 19:03:45 das Exp $
- */
-
-/*
-   Rewritten for Android.
-*/
-
-/* MIPS FPU floating point control register bits.
- *
- * 31-25  -> floating point conditions code bits set by FP compare
- *           instructions
- * 24     -> flush denormalized results to zero instead of
- *           causing unimplemented operation exception.
- * 23     -> Condition bit
- * 22     -> In conjunction with FS detects denormalized
- *           operands and replaces them internally with 0.
- * 21     -> In conjunction with FS forces denormalized operands
- *           to the closest normalized value.
- * 20-18  -> reserved (read as 0, write with 0)
- * 17     -> cause bit for unimplemented operation
- * 16     -> cause bit for invalid exception
- * 15     -> cause bit for division by zero exception
- * 14     -> cause bit for overflow exception
- * 13     -> cause bit for underflow exception
- * 12     -> cause bit for inexact exception
- * 11     -> enable exception for invalid exception
- * 10     -> enable exception for division by zero exception
- *  9     -> enable exception for overflow exception
- *  8     -> enable exception for underflow exception
- *  7     -> enable exception for inexact exception
- *  6     -> flag invalid exception
- *  5     -> flag division by zero exception
- *  4     -> flag overflow exception
- *  3     -> flag underflow exception
- *  2     -> flag inexact exception
- *  1-0   -> rounding control
- *
- *
- * Rounding Control:
- * 00 - rounding to nearest (RN)
- * 01 - rounding toward zero (RZ)
- * 10 - rounding (up) toward plus infinity (RP)
- * 11 - rounding (down)toward minus infinity (RM)
- */
-
-#ifndef _MIPS_FENV_H_
-#define _MIPS_FENV_H_
-
-#include <sys/types.h>
-
-__BEGIN_DECLS
-
-typedef __uint32_t fenv_t;
-typedef __uint32_t fexcept_t;
-
-/* Exception flags */
-#define FE_INVALID    0x40
-#define FE_DIVBYZERO  0x20
-#define FE_OVERFLOW   0x10
-#define FE_UNDERFLOW  0x08
-#define FE_INEXACT    0x04
-#define FE_ALL_EXCEPT (FE_DIVBYZERO | FE_INEXACT | \
-                       FE_INVALID | FE_OVERFLOW | FE_UNDERFLOW)
-
-#define _FCSR_CAUSE_SHIFT 10
-#define _ENABLE_SHIFT     5
-#define _FCSR_ENABLE_MASK (FE_ALL_EXCEPT << _ENABLE_SHIFT)
-
-/* Rounding modes */
-#define FE_TONEAREST  0x0000
-#define FE_TOWARDZERO 0x0001
-#define FE_UPWARD     0x0002
-#define FE_DOWNWARD   0x0003
-
-#define _FCSR_RMODE_SHIFT 0
-#define _FCSR_RMASK       0x3
-
-__END_DECLS
-
-#endif /* !_MIPS_FENV_H_ */
diff --git a/ndk/platforms/android-20/arch-mips/lib/libc.a b/ndk/platforms/android-20/arch-mips/lib/libc.a
deleted file mode 100644
index 2ac27e8..0000000
--- a/ndk/platforms/android-20/arch-mips/lib/libc.a
+++ /dev/null
Binary files differ
diff --git a/ndk/platforms/android-20/arch-mips/lib/libm.a b/ndk/platforms/android-20/arch-mips/lib/libm.a
deleted file mode 100644
index d7b72eb..0000000
--- a/ndk/platforms/android-20/arch-mips/lib/libm.a
+++ /dev/null
Binary files differ
diff --git a/ndk/platforms/android-20/arch-mips/lib/libstdc++.a b/ndk/platforms/android-20/arch-mips/lib/libstdc++.a
deleted file mode 100644
index 30eba74..0000000
--- a/ndk/platforms/android-20/arch-mips/lib/libstdc++.a
+++ /dev/null
Binary files differ
diff --git a/ndk/platforms/android-20/arch-mips/lib/libz.a b/ndk/platforms/android-20/arch-mips/lib/libz.a
deleted file mode 100644
index 7ef7336..0000000
--- a/ndk/platforms/android-20/arch-mips/lib/libz.a
+++ /dev/null
Binary files differ
diff --git a/ndk/platforms/android-20/arch-mips/symbols/libc.so.functions.txt b/ndk/platforms/android-20/arch-mips/symbols/libc.so.functions.txt
deleted file mode 100644
index 84a081f..0000000
--- a/ndk/platforms/android-20/arch-mips/symbols/libc.so.functions.txt
+++ /dev/null
@@ -1,1232 +0,0 @@
-MD5_Final
-MD5_Init
-MD5_Update
-SHA1Final
-SHA1Init
-SHA1Transform
-SHA1Update
-_Exit
-_Unwind_Backtrace
-_Unwind_DeleteException
-_Unwind_FindEnclosingFunction
-_Unwind_Find_FDE
-_Unwind_ForcedUnwind
-_Unwind_GetCFA
-_Unwind_GetDataRelBase
-_Unwind_GetGR
-_Unwind_GetIP
-_Unwind_GetIPInfo
-_Unwind_GetLanguageSpecificData
-_Unwind_GetRegionStart
-_Unwind_GetTextRelBase
-_Unwind_RaiseException
-_Unwind_Resume
-_Unwind_Resume_or_Rethrow
-_Unwind_SetGR
-_Unwind_SetIP
-__FD_CLR_chk
-__FD_ISSET_chk
-__FD_SET_chk
-__accept
-__android_set_abort_message
-__arc4_getbyte
-__assert
-__assert2
-__b64_ntop
-__b64_pton
-__bionic_name_mem
-__brk
-__connect
-__cxa_atexit
-__cxa_finalize
-__deregister_frame
-__deregister_frame_info
-__deregister_frame_info_bases
-__divdi3
-__dn_comp
-__dn_count_labels
-__dn_skipname
-__dorand48
-__epoll_pwait
-__errno
-__evAddTime
-__evCmpTime
-__evConsIovec
-__evConsTime
-__evNowTime
-__evSubTime
-__evTimeSpec
-__evTimeVal
-__evUTCTime
-__exit
-__fcntl64
-__fgets_chk
-__fgetwc_unlock
-__findenv
-__fp_nquery
-__fp_query
-__fpclassify
-__fpclassifyd
-__fpclassifyf
-__fpclassifyl
-__fputwc_unlock
-__frame_state_for
-__fstatfs64
-__futex_syscall3
-__futex_syscall4
-__futex_wait
-__futex_wait_ex
-__futex_wake
-__futex_wake_ex
-__get_h_errno
-__get_sp
-__get_tls
-__getcpu
-__getcwd
-__getpriority
-__hostalias
-__ioctl
-__isfinite
-__isfinitef
-__isfinitel
-__isinf
-__isinff
-__isinfl
-__isnan
-__isnanf
-__isnanl
-__isnormal
-__isnormalf
-__isnormall
-__libc_current_sigrtmax
-__libc_current_sigrtmin
-__libc_fini
-__libc_init
-__llseek
-__loc_aton
-__loc_ntoa
-__memcmp16
-__memcpy_chk
-__memmove_chk
-__memset_chk
-__mmap2
-__moddi3
-__ns_format_ttl
-__ns_get16
-__ns_get32
-__ns_initparse
-__ns_makecanon
-__ns_msg_getflag
-__ns_name_compress
-__ns_name_eq
-__ns_name_labels
-__ns_name_length
-__ns_name_map
-__ns_name_ntol
-__ns_name_ntop
-__ns_name_owned
-__ns_name_pack
-__ns_name_pton
-__ns_name_pton2
-__ns_name_rollback
-__ns_name_skip
-__ns_name_uncompress
-__ns_name_unpack
-__ns_name_unpack2
-__ns_parserr
-__ns_parserr2
-__ns_put16
-__ns_put32
-__ns_samename
-__ns_skiprr
-__ns_sprintrr
-__ns_sprintrrf
-__open
-__open_2
-__openat
-__openat_2
-__p_cdname
-__p_cdnname
-__p_class
-__p_fqname
-__p_fqnname
-__p_option
-__p_query
-__p_rcode
-__p_secstodate
-__p_section
-__p_sockun
-__p_time
-__p_type
-__popcountsi2
-__ppoll
-__pselect6
-__pthread_cleanup_pop
-__pthread_cleanup_push
-__pthread_gettid
-__ptrace
-__putlong
-__putshort
-__read_chk
-__reboot
-__recvfrom_chk
-__register_frame
-__register_frame_info
-__register_frame_info_bases
-__register_frame_info_table
-__register_frame_info_table_bases
-__register_frame_table
-__res_close
-__res_dnok
-__res_get_nibblesuffix
-__res_get_nibblesuffix2
-__res_get_state
-__res_get_static
-__res_getservers
-__res_hnok
-__res_hostalias
-__res_isourserver
-__res_mailok
-__res_nameinquery
-__res_nametoclass
-__res_nametotype
-__res_nclose
-__res_ndestroy
-__res_ninit
-__res_nmkquery
-__res_nopt
-__res_nquery
-__res_nquerydomain
-__res_nsearch
-__res_nsend
-__res_opt
-__res_ownok
-__res_pquery
-__res_put_state
-__res_queriesmatch
-__res_querydomain
-__res_randomid
-__res_send
-__res_send_setqhook
-__res_send_setrhook
-__res_setservers
-__res_vinit
-__rt_sigaction
-__rt_sigpending
-__rt_sigprocmask
-__rt_sigsuspend
-__rt_sigtimedwait
-__sched_cpualloc
-__sched_cpucount
-__sched_cpufree
-__sched_getaffinity
-__sclose
-__set_errno
-__set_tid_address
-__set_tls
-__sflags
-__sflush
-__sflush_locked
-__sfp
-__sfvwrite
-__sigaction
-__sinit
-__smakebuf
-__snprintf_chk
-__sprintf_chk
-__sread
-__srefill
-__srget
-__sseek
-__stack_chk_fail
-__statfs64
-__stpcpy_chk
-__stpncpy_chk
-__stpncpy_chk2
-__strcat_chk
-__strchr_chk
-__strcpy_chk
-__strlcat_chk
-__strlcpy_chk
-__strlen_chk
-__strncat_chk
-__strncpy_chk
-__strncpy_chk2
-__strrchr_chk
-__svfscanf
-__swbuf
-__swhatbuf
-__swrite
-__swsetup
-__sym_ntop
-__sym_ntos
-__sym_ston
-__syslog
-__system_properties_init
-__system_property_add
-__system_property_area_init
-__system_property_find
-__system_property_find_compat
-__system_property_find_nth
-__system_property_foreach
-__system_property_foreach_compat
-__system_property_get
-__system_property_read
-__system_property_read_compat
-__system_property_serial
-__system_property_set
-__system_property_set_filename
-__system_property_update
-__system_property_wait_any
-__timer_create
-__timer_delete
-__timer_getoverrun
-__timer_gettime
-__timer_settime
-__udivdi3
-__umask_chk
-__umoddi3
-__ungetwc
-__vfprintf
-__vfwprintf
-__vfwscanf
-__vsnprintf_chk
-__vsprintf_chk
-__wait4
-__waitid
-_cleanup
-_exit
-_exit_with_stack_teardown
-_flush_cache
-_fwalk
-_getlong
-_getshort
-_longjmp
-_memset16
-_memset32
-_resolv_flush_cache_for_net
-_resolv_set_nameservers_for_net
-_setjmp
-_thread_created_hook
-_tolower
-_toupper
-abort
-abs
-accept
-accept4
-access
-acct
-alarm
-alphasort
-alphasort64
-android_getaddrinfofornet
-android_gethostbyaddrfornet
-android_gethostbyaddrfornet_proxy
-android_gethostbyaddrfornet_real
-android_gethostbynamefornet
-android_getnameinfofornet
-arc4random
-arc4random_addrandom
-arc4random_buf
-arc4random_stir
-arc4random_uniform
-asctime
-asctime64
-asctime64_r
-asctime_r
-asprintf
-at_quick_exit
-atof
-atoi
-atol
-atoll
-basename
-basename_r
-bcopy
-bind
-bindresvport
-brk
-bsd_signal
-bsearch
-btowc
-bzero
-cacheflush
-calloc
-capget
-capset
-cfgetispeed
-cfgetospeed
-cfmakeraw
-cfsetispeed
-cfsetospeed
-cfsetspeed
-chdir
-chmod
-chown
-chroot
-clearenv
-clearerr
-clock
-clock_getres
-clock_gettime
-clock_nanosleep
-clock_settime
-clone
-close
-closedir
-closelog
-closelog_r
-cmsg_nxthdr
-connect
-creat
-creat64
-ctime
-ctime64
-ctime64_r
-ctime_r
-daemon
-delete_module
-difftime
-dirfd
-dirname
-dirname_r
-div
-dlbulk_free
-dlcalloc
-dlfree
-dlindependent_calloc
-dlindependent_comalloc
-dlmallinfo
-dlmalloc
-dlmalloc_footprint
-dlmalloc_footprint_limit
-dlmalloc_inspect_all
-dlmalloc_max_footprint
-dlmalloc_set_footprint_limit
-dlmalloc_stats
-dlmalloc_trim
-dlmalloc_usable_size
-dlmallopt
-dlmemalign
-dlposix_memalign
-dlpvalloc
-dlrealloc
-dlrealloc_in_place
-dlvalloc
-dn_expand
-drand48
-dup
-dup2
-dup3
-duplocale
-endmntent
-endpwent
-endservent
-endusershell
-endutent
-epoll_create
-epoll_create1
-epoll_ctl
-epoll_pwait
-epoll_wait
-erand48
-err
-errx
-ether_aton
-ether_aton_r
-ether_ntoa
-ether_ntoa_r
-eventfd
-eventfd_read
-eventfd_write
-execl
-execle
-execlp
-execv
-execve
-execvp
-execvpe
-exit
-faccessat
-fallocate
-fallocate64
-fchdir
-fchmod
-fchmodat
-fchown
-fchownat
-fclose
-fcntl
-fdatasync
-fdopen
-fdopendir
-fdprintf
-feof
-ferror
-fflush
-ffs
-fgetc
-fgetln
-fgetpos
-fgets
-fgetwc
-fgetws
-fgetxattr
-fileno
-flistxattr
-flock
-flockfile
-fnmatch
-fopen
-fork
-fpathconf
-fprintf
-fpurge
-fputc
-fputs
-fputwc
-fputws
-fread
-free
-freeaddrinfo
-freelocale
-fremovexattr
-freopen
-fscanf
-fseek
-fseeko
-fsetpos
-fsetxattr
-fstat
-fstat64
-fstatat
-fstatat64
-fstatfs
-fstatfs64
-fstatvfs
-fstatvfs64
-fsync
-ftell
-ftello
-ftime
-ftok
-ftruncate
-ftruncate64
-ftrylockfile
-fts_children
-fts_close
-fts_open
-fts_read
-fts_set
-ftw
-ftw64
-funlockfile
-funopen
-futex
-futimens
-fwide
-fwprintf
-fwrite
-fwscanf
-gai_strerror
-get_malloc_leak_info
-getaddrinfo
-getauxval
-getc
-getc_unlocked
-getchar
-getchar_unlocked
-getcwd
-getdelim
-getdents
-getdtablesize
-getegid
-getenv
-geteuid
-getgid
-getgrgid
-getgrnam
-getgrouplist
-getgroups
-gethostbyaddr
-gethostbyname
-gethostbyname2
-gethostbyname_r
-gethostent
-gethostname
-getitimer
-getline
-getlogin
-getmntent
-getmntent_r
-getnameinfo
-getnetbyaddr
-getnetbyname
-getopt
-getopt_long
-getopt_long_only
-getpagesize
-getpeername
-getpgid
-getpgrp
-getpid
-getppid
-getpriority
-getprogname
-getprotobyname
-getprotobynumber
-getpt
-getpwnam
-getpwnam_r
-getpwuid
-getpwuid_r
-getresgid
-getresuid
-getrlimit
-getrlimit64
-getrusage
-gets
-getservbyname
-getservbyport
-getservent
-getservent_r
-getsid
-getsockname
-getsockopt
-gettid
-gettimeofday
-getuid
-getusershell
-getutent
-getwc
-getwchar
-getxattr
-gmtime
-gmtime64
-gmtime64_r
-gmtime_r
-herror
-hstrerror
-htonl
-htons
-if_indextoname
-if_nametoindex
-imaxabs
-imaxdiv
-index
-inet_addr
-inet_aton
-inet_lnaof
-inet_makeaddr
-inet_netof
-inet_network
-inet_nsap_addr
-inet_nsap_ntoa
-inet_ntoa
-inet_ntop
-inet_pton
-init_module
-initgroups
-inotify_add_watch
-inotify_init
-inotify_init1
-inotify_rm_watch
-ioctl
-ioprio_get
-ioprio_set
-isalnum
-isalpha
-isascii
-isatty
-isblank
-iscntrl
-isdigit
-isfinite
-isfinitef
-isfinitel
-isgraph
-isinf
-isinff
-isinfl
-islower
-isnan
-isnanf
-isnanl
-isnormal
-isnormalf
-isnormall
-isprint
-ispunct
-issetugid
-isspace
-isupper
-iswalnum
-iswalpha
-iswblank
-iswcntrl
-iswctype
-iswdigit
-iswgraph
-iswlower
-iswprint
-iswpunct
-iswspace
-iswupper
-iswxdigit
-isxdigit
-jrand48
-kill
-killpg
-klogctl
-labs
-lchown
-ldexp
-ldiv
-lfind
-lgetxattr
-link
-linkat
-listen
-listxattr
-llabs
-lldiv
-llistxattr
-localeconv
-localtime
-localtime64
-localtime64_r
-localtime_r
-localtime_tz
-longjmp
-longjmperror
-lrand48
-lremovexattr
-lsearch
-lseek
-lseek64
-lsetxattr
-lstat
-lstat64
-madvise
-mallinfo
-malloc
-malloc_usable_size
-mbrlen
-mbrtowc
-mbsinit
-mbsnrtowcs
-mbsrtowcs
-mbstowcs
-mbtowc
-memalign
-memccpy
-memchr
-memcmp
-memcpy
-memmem
-memmove
-memrchr
-memset
-memswap
-mincore
-mkdir
-mkdirat
-mkdtemp
-mkfifo
-mknod
-mknodat
-mkstemp
-mkstemp64
-mkstemps
-mktemp
-mktime
-mktime64
-mktime_tz
-mlock
-mlockall
-mmap
-mmap64
-mount
-mprotect
-mrand48
-mremap
-msync
-munlock
-munlockall
-munmap
-nanosleep
-newlocale
-nftw
-nftw64
-nice
-nrand48
-nsdispatch
-ntohl
-ntohs
-open
-open64
-openat
-openat64
-opendir
-openlog
-openlog_r
-pathconf
-pause
-pclose
-perf_event_open
-perror
-personality
-pipe
-pipe2
-poll
-popen
-posix2time
-posix_fallocate
-posix_fallocate64
-posix_memalign
-ppoll
-prctl
-pread
-pread64
-printf
-prlimit64
-pselect
-psiginfo
-psignal
-pthread_atfork
-pthread_attr_destroy
-pthread_attr_getdetachstate
-pthread_attr_getguardsize
-pthread_attr_getschedparam
-pthread_attr_getschedpolicy
-pthread_attr_getscope
-pthread_attr_getstack
-pthread_attr_getstackaddr
-pthread_attr_getstacksize
-pthread_attr_init
-pthread_attr_setdetachstate
-pthread_attr_setguardsize
-pthread_attr_setschedparam
-pthread_attr_setschedpolicy
-pthread_attr_setscope
-pthread_attr_setstack
-pthread_attr_setstackaddr
-pthread_attr_setstacksize
-pthread_cond_broadcast
-pthread_cond_destroy
-pthread_cond_init
-pthread_cond_signal
-pthread_cond_timedwait
-pthread_cond_timedwait_monotonic
-pthread_cond_timedwait_monotonic_np
-pthread_cond_timedwait_relative_np
-pthread_cond_timeout_np
-pthread_cond_wait
-pthread_condattr_destroy
-pthread_condattr_getclock
-pthread_condattr_getpshared
-pthread_condattr_init
-pthread_condattr_setclock
-pthread_condattr_setpshared
-pthread_create
-pthread_detach
-pthread_equal
-pthread_exit
-pthread_getattr_np
-pthread_getcpuclockid
-pthread_getschedparam
-pthread_getspecific
-pthread_join
-pthread_key_create
-pthread_key_delete
-pthread_kill
-pthread_mutex_destroy
-pthread_mutex_init
-pthread_mutex_lock
-pthread_mutex_lock_timeout_np
-pthread_mutex_timedlock
-pthread_mutex_trylock
-pthread_mutex_unlock
-pthread_mutexattr_destroy
-pthread_mutexattr_getpshared
-pthread_mutexattr_gettype
-pthread_mutexattr_init
-pthread_mutexattr_setpshared
-pthread_mutexattr_settype
-pthread_once
-pthread_rwlock_destroy
-pthread_rwlock_init
-pthread_rwlock_rdlock
-pthread_rwlock_timedrdlock
-pthread_rwlock_timedwrlock
-pthread_rwlock_tryrdlock
-pthread_rwlock_trywrlock
-pthread_rwlock_unlock
-pthread_rwlock_wrlock
-pthread_rwlockattr_destroy
-pthread_rwlockattr_getpshared
-pthread_rwlockattr_init
-pthread_rwlockattr_setpshared
-pthread_self
-pthread_setname_np
-pthread_setschedparam
-pthread_setspecific
-pthread_sigmask
-ptrace
-ptsname
-ptsname_r
-putc
-putc_unlocked
-putchar
-putchar_unlocked
-putenv
-puts
-pututline
-putw
-putwc
-putwchar
-pvalloc
-pwrite
-pwrite64
-qsort
-quick_exit
-raise
-read
-readahead
-readdir
-readdir64
-readdir64_r
-readdir_r
-readlink
-readlinkat
-readv
-realloc
-realpath
-reboot
-recv
-recvfrom
-recvmmsg
-recvmsg
-regcomp
-regerror
-regexec
-regfree
-remove
-removexattr
-rename
-renameat
-res_init
-res_mkquery
-res_query
-res_search
-res_setmark
-res_setnetid
-rewind
-rewinddir
-rmdir
-sbrk
-scandir
-scandir64
-scanf
-sched_get_priority_max
-sched_get_priority_min
-sched_getaffinity
-sched_getcpu
-sched_getparam
-sched_getscheduler
-sched_rr_get_interval
-sched_setaffinity
-sched_setparam
-sched_setscheduler
-sched_yield
-seed48
-select
-sem_close
-sem_destroy
-sem_getvalue
-sem_init
-sem_open
-sem_post
-sem_timedwait
-sem_trywait
-sem_unlink
-sem_wait
-send
-sendfile
-sendfile64
-sendmmsg
-sendmsg
-sendto
-setbuf
-setbuffer
-setegid
-setenv
-seteuid
-setgid
-setgroups
-setitimer
-setjmp
-setlinebuf
-setlocale
-setlogmask
-setlogmask_r
-setmntent
-setns
-setpgid
-setpgrp
-setpriority
-setprogname
-setregid
-setresgid
-setresuid
-setreuid
-setrlimit
-setrlimit64
-setservent
-setsid
-setsockopt
-settimeofday
-setuid
-setusershell
-setutent
-setvbuf
-setxattr
-shutdown
-sigaction
-sigaddset
-sigaltstack
-sigblock
-sigdelset
-sigemptyset
-sigfillset
-siginterrupt
-sigismember
-siglongjmp
-signal
-signalfd
-signalfd4
-sigpending
-sigprocmask
-sigsetjmp
-sigsetmask
-sigsuspend
-sigwait
-sleep
-snprintf
-socket
-socketpair
-sprintf
-srand48
-sscanf
-stat
-stat64
-statfs
-statfs64
-statvfs
-statvfs64
-stpcpy
-stpncpy
-strcasecmp
-strcasestr
-strcat
-strchr
-strcmp
-strcoll
-strcpy
-strcspn
-strdup
-strerror
-strerror_r
-strftime
-strftime_tz
-strlcat
-strlcpy
-strlen
-strncasecmp
-strncat
-strncmp
-strncpy
-strndup
-strnlen
-strntoimax
-strntoumax
-strpbrk
-strptime
-strrchr
-strsep
-strsignal
-strspn
-strstr
-strtod
-strtof
-strtoimax
-strtok
-strtok_r
-strtol
-strtold
-strtoll
-strtoq
-strtotimeval
-strtoul
-strtoull
-strtoumax
-strtouq
-strxfrm
-swapoff
-swapon
-swprintf
-swscanf
-symlink
-symlinkat
-sync
-syscall
-sysconf
-sysinfo
-syslog
-syslog_r
-system
-sysv_signal
-tcdrain
-tcflow
-tcflush
-tcgetattr
-tcgetpgrp
-tcgetsid
-tcsendbreak
-tcsetattr
-tcsetpgrp
-tdelete
-tdestroy
-tempnam
-tfind
-tgkill
-time
-time2posix
-timegm
-timegm64
-timelocal
-timelocal64
-timer_create
-timer_delete
-timer_getoverrun
-timer_gettime
-timer_settime
-timerfd_create
-timerfd_gettime
-timerfd_settime
-times
-tkill
-tmpfile
-tmpnam
-toascii
-tolower
-toupper
-towlower
-towupper
-truncate
-truncate64
-tsearch
-ttyname
-ttyname_r
-tzset
-tzsetwall
-umask
-umount
-umount2
-uname
-ungetc
-ungetwc
-unlink
-unlinkat
-unlockpt
-unsetenv
-unshare
-uselocale
-usleep
-utime
-utimensat
-utimes
-utmpname
-valloc
-vasprintf
-verr
-verrx
-vfdprintf
-vfork
-vfprintf
-vfscanf
-vfwprintf
-vfwscanf
-vprintf
-vscanf
-vsnprintf
-vsprintf
-vsscanf
-vswprintf
-vswscanf
-vsyslog
-vsyslog_r
-vwarn
-vwarnx
-vwprintf
-vwscanf
-wait
-wait3
-wait4
-waitid
-waitpid
-warn
-warnx
-wcpcpy
-wcpncpy
-wcrtomb
-wcscasecmp
-wcscat
-wcschr
-wcscmp
-wcscoll
-wcscpy
-wcscspn
-wcsdup
-wcsftime
-wcslcat
-wcslcpy
-wcslen
-wcsncasecmp
-wcsncat
-wcsncmp
-wcsncpy
-wcsnlen
-wcsnrtombs
-wcspbrk
-wcsrchr
-wcsrtombs
-wcsspn
-wcsstr
-wcstod
-wcstof
-wcstoimax
-wcstok
-wcstol
-wcstold
-wcstoll
-wcstombs
-wcstoul
-wcstoull
-wcstoumax
-wcswcs
-wcswidth
-wcsxfrm
-wctob
-wctomb
-wctype
-wcwidth
-wmemchr
-wmemcmp
-wmemcpy
-wmemmove
-wmemset
-wprintf
-write
-writev
-wscanf
diff --git a/ndk/platforms/android-20/arch-mips/symbols/libc.so.variables.txt b/ndk/platforms/android-20/arch-mips/symbols/libc.so.variables.txt
deleted file mode 100644
index 2d0130c..0000000
--- a/ndk/platforms/android-20/arch-mips/symbols/libc.so.variables.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-_C_ctype_
-_C_tolower_
-_C_toupper_
-__atexit
-__atexit_invalid
-__bionic_brk
-__isthreaded
-__libc_malloc_default_dispatch
-__libc_malloc_dispatch
-__netdClientDispatch
-__p_cert_syms
-__p_class_syms
-__p_key_syms
-__p_rcode_syms
-__p_type_syms
-__page_shift
-__page_size
-__popcount_tab
-__progname
-__rand48_add
-__rand48_mult
-__rand48_seed
-__sF
-__sdidinit
-__sglue
-__stack_chk_guard
-__system_property_area__
-_ctype_
-_ns_flagdata
-_tolower_tab_
-_toupper_tab_
-daylight
-environ
-g_allocations_mutex
-g_hash_table
-g_malloc_debug_backlog
-g_malloc_debug_level
-h_errlist
-h_nerr
-optarg
-opterr
-optind
-optopt
-optreset
-sys_siglist
-sys_signame
-timezone
-tzname
diff --git a/ndk/platforms/android-20/arch-mips/symbols/libm.so.functions.txt b/ndk/platforms/android-20/arch-mips/symbols/libm.so.functions.txt
deleted file mode 100644
index e3559e5..0000000
--- a/ndk/platforms/android-20/arch-mips/symbols/libm.so.functions.txt
+++ /dev/null
@@ -1,276 +0,0 @@
-__exp__D
-__fixdfdi
-__fixsfdi
-__fixunsdfdi
-__fixunssfdi
-__ieee754_rem_pio2
-__ieee754_rem_pio2f
-__kernel_cos
-__kernel_cosdf
-__kernel_rem_pio2
-__kernel_sin
-__kernel_sindf
-__kernel_tan
-__kernel_tandf
-__ldexp_cexp
-__ldexp_cexpf
-__ldexp_exp
-__ldexp_expf
-__log__D
-__signbit
-__signbitf
-__signbitl
-_scan_nan
-acos
-acosf
-acosh
-acoshf
-acoshl
-acosl
-asin
-asinf
-asinh
-asinhf
-asinhl
-asinl
-atan
-atan2
-atan2f
-atan2l
-atanf
-atanh
-atanhf
-atanhl
-atanl
-cabs
-cabsf
-cabsl
-carg
-cargf
-cbrt
-cbrtf
-cbrtl
-ccos
-ccosf
-ccosh
-ccoshf
-ceil
-ceilf
-ceill
-cexp
-cexpf
-cimag
-cimagf
-conj
-conjf
-copysign
-copysignf
-copysignl
-cos
-cosf
-cosh
-coshf
-coshl
-cosl
-cproj
-cprojf
-cprojl
-creal
-crealf
-csin
-csinf
-csinh
-csinhf
-csqrt
-csqrtf
-csqrtl
-ctan
-ctanf
-ctanh
-ctanhf
-drem
-dremf
-erf
-erfc
-erfcf
-erfcl
-erff
-erfl
-exp
-exp2
-exp2f
-exp2l
-expf
-expl
-expm1
-expm1f
-expm1l
-fabs
-fabsf
-fabsl
-fdim
-fdimf
-fdiml
-feclearexcept
-fedisableexcept
-feenableexcept
-fegetenv
-fegetexcept
-fegetexceptflag
-fegetround
-feholdexcept
-feraiseexcept
-fesetenv
-fesetexceptflag
-fesetround
-fetestexcept
-feupdateenv
-finite
-finitef
-floor
-floorf
-floorl
-fma
-fmaf
-fmal
-fmax
-fmaxf
-fmaxl
-fmin
-fminf
-fminl
-fmod
-fmodf
-fmodl
-frexp
-frexpf
-frexpl
-gamma
-gamma_r
-gammaf
-gammaf_r
-hypot
-hypotf
-hypotl
-ilogb
-ilogbf
-ilogbl
-imprecise_coshl
-imprecise_erfcl
-imprecise_erfl
-imprecise_lgammal
-imprecise_powl
-imprecise_sinhl
-imprecise_tanhl
-imprecise_tgammal
-j0
-j0f
-j1
-j1f
-jn
-jnf
-ldexpf
-ldexpl
-lgamma
-lgamma_r
-lgammaf
-lgammaf_r
-lgammal
-llrint
-llrintf
-llrintl
-llround
-llroundf
-llroundl
-log
-log10
-log10f
-log10l
-log1p
-log1pf
-log1pl
-log2
-log2f
-log2l
-logb
-logbf
-logbl
-logf
-logl
-lrint
-lrintf
-lrintl
-lround
-lroundf
-lroundl
-modf
-modff
-modfl
-nan
-nanf
-nanl
-nearbyint
-nearbyintf
-nearbyintl
-nextafter
-nextafterf
-nextafterl
-nexttoward
-nexttowardf
-nexttowardl
-pow
-powf
-powl
-remainder
-remainderf
-remainderl
-remquo
-remquof
-remquol
-rint
-rintf
-rintl
-round
-roundf
-roundl
-scalb
-scalbf
-scalbln
-scalblnf
-scalblnl
-scalbn
-scalbnf
-scalbnl
-significand
-significandf
-significandl
-sin
-sincos
-sincosf
-sincosl
-sinf
-sinh
-sinhf
-sinhl
-sinl
-sqrt
-sqrtf
-sqrtl
-tan
-tanf
-tanh
-tanhf
-tanhl
-tanl
-tgamma
-tgammaf
-tgammal
-trunc
-truncf
-truncl
-y0
-y0f
-y1
-y1f
-yn
-ynf
diff --git a/ndk/platforms/android-20/arch-mips/symbols/libstdc++.so.functions.txt b/ndk/platforms/android-20/arch-mips/symbols/libstdc++.so.functions.txt
deleted file mode 100644
index 991ae87..0000000
--- a/ndk/platforms/android-20/arch-mips/symbols/libstdc++.so.functions.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-_ZN9type_infoC1ERKS_
-_ZN9type_infoC1Ev
-_ZN9type_infoC2ERKS_
-_ZN9type_infoC2Ev
-_ZN9type_infoD0Ev
-_ZN9type_infoD1Ev
-_ZN9type_infoD2Ev
-_ZNK9type_info4nameEv
-_ZNK9type_info6beforeERKS_
-_ZNK9type_infoeqERKS_
-_ZNK9type_infoneERKS_
-_ZdaPv
-_ZdaPvRKSt9nothrow_t
-_ZdlPv
-_ZdlPvRKSt9nothrow_t
-_Znam
-_ZnamRKSt9nothrow_t
-_Znwm
-_ZnwmRKSt9nothrow_t
-__cxa_guard_abort
-__cxa_guard_acquire
-__cxa_guard_release
-__cxa_pure_virtual
diff --git a/ndk/platforms/android-20/arch-mips/symbols/libstdc++.so.variables.txt b/ndk/platforms/android-20/arch-mips/symbols/libstdc++.so.variables.txt
deleted file mode 100644
index d5aab66..0000000
--- a/ndk/platforms/android-20/arch-mips/symbols/libstdc++.so.variables.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-_ZSt7nothrow
-_ZTV9type_info
diff --git a/ndk/platforms/android-20/arch-mips64/include/machine/fenv.h b/ndk/platforms/android-20/arch-mips64/include/machine/fenv.h
deleted file mode 100644
index 37f0f9c..0000000
--- a/ndk/platforms/android-20/arch-mips64/include/machine/fenv.h
+++ /dev/null
@@ -1,105 +0,0 @@
-/*-
- * Copyright (c) 2004-2005 David Schultz <das@FreeBSD.ORG>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $FreeBSD: src/lib/msun/arm/fenv.h,v 1.5 2005/03/16 19:03:45 das Exp $
- */
-
-/*
-   Rewritten for Android.
-*/
-
-/* MIPS FPU floating point control register bits.
- *
- * 31-25  -> floating point conditions code bits set by FP compare
- *           instructions
- * 24     -> flush denormalized results to zero instead of
- *           causing unimplemented operation exception.
- * 23     -> Condition bit
- * 22     -> In conjunction with FS detects denormalized
- *           operands and replaces them internally with 0.
- * 21     -> In conjunction with FS forces denormalized operands
- *           to the closest normalized value.
- * 20-18  -> reserved (read as 0, write with 0)
- * 17     -> cause bit for unimplemented operation
- * 16     -> cause bit for invalid exception
- * 15     -> cause bit for division by zero exception
- * 14     -> cause bit for overflow exception
- * 13     -> cause bit for underflow exception
- * 12     -> cause bit for inexact exception
- * 11     -> enable exception for invalid exception
- * 10     -> enable exception for division by zero exception
- *  9     -> enable exception for overflow exception
- *  8     -> enable exception for underflow exception
- *  7     -> enable exception for inexact exception
- *  6     -> flag invalid exception
- *  5     -> flag division by zero exception
- *  4     -> flag overflow exception
- *  3     -> flag underflow exception
- *  2     -> flag inexact exception
- *  1-0   -> rounding control
- *
- *
- * Rounding Control:
- * 00 - rounding to nearest (RN)
- * 01 - rounding toward zero (RZ)
- * 10 - rounding (up) toward plus infinity (RP)
- * 11 - rounding (down)toward minus infinity (RM)
- */
-
-#ifndef _MIPS_FENV_H_
-#define _MIPS_FENV_H_
-
-#include <sys/types.h>
-
-__BEGIN_DECLS
-
-typedef __uint32_t fenv_t;
-typedef __uint32_t fexcept_t;
-
-/* Exception flags */
-#define FE_INVALID    0x40
-#define FE_DIVBYZERO  0x20
-#define FE_OVERFLOW   0x10
-#define FE_UNDERFLOW  0x08
-#define FE_INEXACT    0x04
-#define FE_ALL_EXCEPT (FE_DIVBYZERO | FE_INEXACT | \
-                       FE_INVALID | FE_OVERFLOW | FE_UNDERFLOW)
-
-#define _FCSR_CAUSE_SHIFT 10
-#define _ENABLE_SHIFT     5
-#define _FCSR_ENABLE_MASK (FE_ALL_EXCEPT << _ENABLE_SHIFT)
-
-/* Rounding modes */
-#define FE_TONEAREST  0x0000
-#define FE_TOWARDZERO 0x0001
-#define FE_UPWARD     0x0002
-#define FE_DOWNWARD   0x0003
-
-#define _FCSR_RMODE_SHIFT 0
-#define _FCSR_RMASK       0x3
-
-__END_DECLS
-
-#endif /* !_MIPS_FENV_H_ */
diff --git a/ndk/platforms/android-20/arch-mips64/lib-bootstrap/crtbegin_dynamic.o b/ndk/platforms/android-20/arch-mips64/lib-bootstrap/crtbegin_dynamic.o
deleted file mode 100644
index 50fae0e..0000000
--- a/ndk/platforms/android-20/arch-mips64/lib-bootstrap/crtbegin_dynamic.o
+++ /dev/null
Binary files differ
diff --git a/ndk/platforms/android-20/arch-mips64/lib-bootstrap/crtend_android.o b/ndk/platforms/android-20/arch-mips64/lib-bootstrap/crtend_android.o
deleted file mode 100644
index b0f2ebe..0000000
--- a/ndk/platforms/android-20/arch-mips64/lib-bootstrap/crtend_android.o
+++ /dev/null
Binary files differ
diff --git a/ndk/platforms/android-20/arch-mips64/lib-bootstrap/libc.so b/ndk/platforms/android-20/arch-mips64/lib-bootstrap/libc.so
deleted file mode 100755
index a84fc91..0000000
--- a/ndk/platforms/android-20/arch-mips64/lib-bootstrap/libc.so
+++ /dev/null
Binary files differ
diff --git a/ndk/platforms/android-20/arch-mips64/lib-bootstrap/libdl.so b/ndk/platforms/android-20/arch-mips64/lib-bootstrap/libdl.so
deleted file mode 100755
index b364515..0000000
--- a/ndk/platforms/android-20/arch-mips64/lib-bootstrap/libdl.so
+++ /dev/null
Binary files differ
diff --git a/ndk/platforms/android-20/arch-mips64/lib/libc.a b/ndk/platforms/android-20/arch-mips64/lib/libc.a
deleted file mode 100644
index afb02c8..0000000
--- a/ndk/platforms/android-20/arch-mips64/lib/libc.a
+++ /dev/null
Binary files differ
diff --git a/ndk/platforms/android-20/arch-mips64/lib/libm.a b/ndk/platforms/android-20/arch-mips64/lib/libm.a
deleted file mode 100644
index 81baa14..0000000
--- a/ndk/platforms/android-20/arch-mips64/lib/libm.a
+++ /dev/null
Binary files differ
diff --git a/ndk/platforms/android-20/arch-mips64/lib/libstdc++.a b/ndk/platforms/android-20/arch-mips64/lib/libstdc++.a
deleted file mode 100644
index 09f242e..0000000
--- a/ndk/platforms/android-20/arch-mips64/lib/libstdc++.a
+++ /dev/null
Binary files differ
diff --git a/ndk/platforms/android-20/arch-mips64/lib/libz.a b/ndk/platforms/android-20/arch-mips64/lib/libz.a
deleted file mode 100644
index 7da18ce..0000000
--- a/ndk/platforms/android-20/arch-mips64/lib/libz.a
+++ /dev/null
Binary files differ
diff --git a/ndk/platforms/android-20/arch-mips64/symbols/libc.so.functions.txt b/ndk/platforms/android-20/arch-mips64/symbols/libc.so.functions.txt
deleted file mode 100644
index 953f808..0000000
--- a/ndk/platforms/android-20/arch-mips64/symbols/libc.so.functions.txt
+++ /dev/null
@@ -1,1171 +0,0 @@
-MD5_Final
-MD5_Init
-MD5_Update
-SHA1Final
-SHA1Init
-SHA1Transform
-SHA1Update
-_Exit
-_Unwind_Backtrace
-_Unwind_DeleteException
-_Unwind_FindEnclosingFunction
-_Unwind_Find_FDE
-_Unwind_ForcedUnwind
-_Unwind_GetCFA
-_Unwind_GetDataRelBase
-_Unwind_GetGR
-_Unwind_GetIP
-_Unwind_GetIPInfo
-_Unwind_GetLanguageSpecificData
-_Unwind_GetRegionStart
-_Unwind_GetTextRelBase
-_Unwind_RaiseException
-_Unwind_Resume
-_Unwind_Resume_or_Rethrow
-_Unwind_SetGR
-_Unwind_SetIP
-__FD_CLR_chk
-__FD_ISSET_chk
-__FD_SET_chk
-__android_set_abort_message
-__arc4_getbyte
-__ashlti3
-__assert
-__assert2
-__atexit_register_cleanup
-__b64_ntop
-__b64_pton
-__bionic_name_mem
-__cxa_atexit
-__cxa_finalize
-__deregister_frame
-__deregister_frame_info
-__deregister_frame_info_bases
-__dn_comp
-__dn_count_labels
-__dn_skipname
-__dorand48
-__errno
-__evAddTime
-__evCmpTime
-__evConsIovec
-__evConsTime
-__evNowTime
-__evSubTime
-__evTimeSpec
-__evTimeVal
-__evUTCTime
-__fgets_chk
-__fgetwc_unlock
-__findenv
-__fp_nquery
-__fp_query
-__fpclassify
-__fpclassifyd
-__fpclassifyf
-__fpclassifyl
-__fputwc_unlock
-__frame_state_for
-__futex_syscall3
-__futex_syscall4
-__futex_wait
-__futex_wait_ex
-__futex_wake
-__futex_wake_ex
-__get_h_errno
-__get_sp
-__hostalias
-__isfinite
-__isfinitef
-__isfinitel
-__isinf
-__isinff
-__isinfl
-__isnan
-__isnanf
-__isnanl
-__isnormal
-__isnormalf
-__isnormall
-__libc_current_sigrtmax
-__libc_current_sigrtmin
-__libc_fini
-__libc_init
-__loc_aton
-__loc_ntoa
-__lshrti3
-__memcmp16
-__memcpy_chk
-__memmove_chk
-__memset_chk
-__multf3
-__ns_format_ttl
-__ns_get16
-__ns_get32
-__ns_initparse
-__ns_makecanon
-__ns_msg_getflag
-__ns_name_compress
-__ns_name_eq
-__ns_name_labels
-__ns_name_length
-__ns_name_map
-__ns_name_ntol
-__ns_name_ntop
-__ns_name_owned
-__ns_name_pack
-__ns_name_pton
-__ns_name_pton2
-__ns_name_rollback
-__ns_name_skip
-__ns_name_uncompress
-__ns_name_unpack
-__ns_name_unpack2
-__ns_parserr
-__ns_parserr2
-__ns_put16
-__ns_put32
-__ns_samename
-__ns_skiprr
-__ns_sprintrr
-__ns_sprintrrf
-__open_2
-__openat_2
-__p_cdname
-__p_cdnname
-__p_class
-__p_fqname
-__p_fqnname
-__p_option
-__p_query
-__p_rcode
-__p_secstodate
-__p_section
-__p_sockun
-__p_time
-__p_type
-__pack_t
-__popcountdi2
-__pthread_cleanup_pop
-__pthread_cleanup_push
-__pthread_gettid
-__putlong
-__putshort
-__read_chk
-__recvfrom_chk
-__register_frame
-__register_frame_info
-__register_frame_info_bases
-__register_frame_info_table
-__register_frame_info_table_bases
-__register_frame_table
-__res_close
-__res_dnok
-__res_get_nibblesuffix
-__res_get_nibblesuffix2
-__res_get_state
-__res_get_static
-__res_getservers
-__res_hnok
-__res_hostalias
-__res_isourserver
-__res_mailok
-__res_nameinquery
-__res_nametoclass
-__res_nametotype
-__res_nclose
-__res_ndestroy
-__res_ninit
-__res_nmkquery
-__res_nopt
-__res_nquery
-__res_nquerydomain
-__res_nsearch
-__res_nsend
-__res_opt
-__res_ownok
-__res_pquery
-__res_put_state
-__res_queriesmatch
-__res_querydomain
-__res_randomid
-__res_send
-__res_send_setqhook
-__res_send_setrhook
-__res_setservers
-__res_vinit
-__sched_cpualloc
-__sched_cpucount
-__sched_cpufree
-__sclose
-__sflags
-__sflush
-__sflush_locked
-__sfp
-__sfvwrite
-__sinit
-__smakebuf
-__snprintf_chk
-__sprintf_chk
-__sread
-__srefill
-__srget
-__sseek
-__stack_chk_fail
-__stpcpy_chk
-__stpncpy_chk
-__stpncpy_chk2
-__strcat_chk
-__strchr_chk
-__strcpy_chk
-__strlcat_chk
-__strlcpy_chk
-__strlen_chk
-__strncat_chk
-__strncpy_chk
-__strncpy_chk2
-__strrchr_chk
-__svfscanf
-__swbuf
-__swhatbuf
-__swrite
-__swsetup
-__sym_ntop
-__sym_ntos
-__sym_ston
-__system_properties_init
-__system_property_add
-__system_property_area_init
-__system_property_find
-__system_property_find_compat
-__system_property_find_nth
-__system_property_foreach
-__system_property_foreach_compat
-__system_property_get
-__system_property_read
-__system_property_read_compat
-__system_property_serial
-__system_property_set
-__system_property_set_filename
-__system_property_update
-__system_property_wait_any
-__umask_chk
-__ungetwc
-__unpack_t
-__vfprintf
-__vfwprintf
-__vfwscanf
-__vsnprintf_chk
-__vsprintf_chk
-_cleanup
-_exit
-_exit_with_stack_teardown
-_flush_cache
-_fwalk
-_getlong
-_getshort
-_longjmp
-_resolv_flush_cache_for_net
-_resolv_set_nameservers_for_net
-_setjmp
-_thread_created_hook
-_tolower
-_toupper
-abort
-abs
-accept
-accept4
-access
-acct
-alarm
-alphasort
-alphasort64
-android_getaddrinfofornet
-android_gethostbyaddrfornet
-android_gethostbyaddrfornet_proxy
-android_gethostbyaddrfornet_real
-android_gethostbynamefornet
-android_getnameinfofornet
-arc4random
-arc4random_addrandom
-arc4random_buf
-arc4random_stir
-arc4random_uniform
-asctime
-asctime_r
-asprintf
-at_quick_exit
-atof
-atoi
-atol
-atoll
-basename
-basename_r
-bcopy
-bind
-bindresvport
-brk
-bsd_signal
-bsearch
-btowc
-bzero
-calloc
-capget
-capset
-cfgetispeed
-cfgetospeed
-cfmakeraw
-cfsetispeed
-cfsetospeed
-cfsetspeed
-chdir
-chmod
-chown
-chroot
-clearenv
-clearerr
-clock
-clock_getres
-clock_gettime
-clock_nanosleep
-clock_settime
-clone
-close
-closedir
-closelog
-closelog_r
-cmsg_nxthdr
-connect
-creat
-creat64
-ctime
-ctime_r
-daemon
-delete_module
-difftime
-dirfd
-dirname
-dirname_r
-div
-dlbulk_free
-dlcalloc
-dlfree
-dlindependent_calloc
-dlindependent_comalloc
-dlmallinfo
-dlmalloc
-dlmalloc_footprint
-dlmalloc_footprint_limit
-dlmalloc_inspect_all
-dlmalloc_max_footprint
-dlmalloc_set_footprint_limit
-dlmalloc_stats
-dlmalloc_trim
-dlmalloc_usable_size
-dlmallopt
-dlmemalign
-dlposix_memalign
-dlpvalloc
-dlrealloc
-dlrealloc_in_place
-dlvalloc
-dn_expand
-drand48
-dup
-dup2
-dup3
-duplocale
-endmntent
-endpwent
-endservent
-endusershell
-endutent
-epoll_create
-epoll_create1
-epoll_ctl
-epoll_pwait
-epoll_wait
-erand48
-err
-errx
-ether_aton
-ether_aton_r
-ether_ntoa
-ether_ntoa_r
-eventfd
-eventfd_read
-eventfd_write
-execl
-execle
-execlp
-execv
-execve
-execvp
-execvpe
-exit
-faccessat
-fallocate
-fallocate64
-fchdir
-fchmod
-fchmodat
-fchown
-fchownat
-fclose
-fcntl
-fdatasync
-fdopen
-fdopendir
-fdprintf
-feof
-ferror
-fflush
-ffs
-fgetc
-fgetln
-fgetpos
-fgets
-fgetwc
-fgetws
-fgetxattr
-fileno
-flistxattr
-flock
-flockfile
-fnmatch
-fopen
-fork
-fpathconf
-fprintf
-fpurge
-fputc
-fputs
-fputwc
-fputws
-fread
-free
-freeaddrinfo
-freelocale
-fremovexattr
-freopen
-fscanf
-fseek
-fseeko
-fsetpos
-fsetxattr
-fstat
-fstat64
-fstatat
-fstatat64
-fstatfs
-fstatfs64
-fstatvfs
-fstatvfs64
-fsync
-ftell
-ftello
-ftime
-ftok
-ftruncate
-ftruncate64
-ftrylockfile
-fts_children
-fts_close
-fts_open
-fts_read
-fts_set
-ftw
-ftw64
-funlockfile
-funopen
-futex
-futimens
-fwide
-fwprintf
-fwrite
-fwscanf
-gai_strerror
-get_malloc_leak_info
-getaddrinfo
-getauxval
-getc
-getc_unlocked
-getchar
-getchar_unlocked
-getcwd
-getdelim
-getdents
-getdtablesize
-getegid
-getenv
-geteuid
-getgid
-getgrgid
-getgrnam
-getgrouplist
-getgroups
-gethostbyaddr
-gethostbyname
-gethostbyname2
-gethostbyname_r
-gethostent
-gethostname
-getitimer
-getline
-getlogin
-getmntent
-getmntent_r
-getnameinfo
-getnetbyaddr
-getnetbyname
-getopt
-getopt_long
-getopt_long_only
-getpagesize
-getpeername
-getpgid
-getpgrp
-getpid
-getppid
-getpriority
-getprogname
-getprotobyname
-getprotobynumber
-getpt
-getpwnam
-getpwnam_r
-getpwuid
-getpwuid_r
-getresgid
-getresuid
-getrlimit
-getrlimit64
-getrusage
-gets
-getservbyname
-getservbyport
-getservent
-getservent_r
-getsid
-getsockname
-getsockopt
-gettid
-gettimeofday
-getuid
-getusershell
-getutent
-getwc
-getwchar
-getxattr
-gmtime
-gmtime_r
-herror
-hstrerror
-htonl
-htons
-if_indextoname
-if_nametoindex
-imaxabs
-imaxdiv
-index
-inet_addr
-inet_aton
-inet_lnaof
-inet_makeaddr
-inet_netof
-inet_network
-inet_nsap_addr
-inet_nsap_ntoa
-inet_ntoa
-inet_ntop
-inet_pton
-init_module
-initgroups
-inotify_add_watch
-inotify_init
-inotify_init1
-inotify_rm_watch
-ioctl
-ioprio_get
-ioprio_set
-isalnum
-isalpha
-isascii
-isatty
-isblank
-iscntrl
-isdigit
-isfinite
-isfinitef
-isfinitel
-isgraph
-isinf
-isinff
-isinfl
-islower
-isnan
-isnanf
-isnanl
-isnormal
-isnormalf
-isnormall
-isprint
-ispunct
-issetugid
-isspace
-isupper
-iswalnum
-iswalpha
-iswblank
-iswcntrl
-iswctype
-iswdigit
-iswgraph
-iswlower
-iswprint
-iswpunct
-iswspace
-iswupper
-iswxdigit
-isxdigit
-jrand48
-kill
-killpg
-klogctl
-labs
-lchown
-ldexp
-ldiv
-lfind
-lgetxattr
-link
-linkat
-listen
-listxattr
-llabs
-lldiv
-llistxattr
-localeconv
-localtime
-localtime_r
-localtime_tz
-longjmp
-longjmperror
-lrand48
-lremovexattr
-lsearch
-lseek
-lseek64
-lsetxattr
-lstat
-lstat64
-madvise
-mallinfo
-malloc
-malloc_usable_size
-mbrlen
-mbrtowc
-mbsinit
-mbsnrtowcs
-mbsrtowcs
-mbstowcs
-mbtowc
-memalign
-memccpy
-memchr
-memcmp
-memcpy
-memmem
-memmove
-memrchr
-memset
-mincore
-mkdir
-mkdirat
-mkdtemp
-mkfifo
-mknod
-mknodat
-mkstemp
-mkstemp64
-mkstemps
-mktemp
-mktime
-mktime_tz
-mlock
-mlockall
-mmap
-mmap64
-mount
-mprotect
-mrand48
-mremap
-msync
-munlock
-munlockall
-munmap
-nanosleep
-newlocale
-nftw
-nftw64
-nice
-nrand48
-nsdispatch
-ntohl
-ntohs
-open
-open64
-openat
-openat64
-opendir
-openlog
-openlog_r
-pathconf
-pause
-pclose
-perf_event_open
-perror
-personality
-pipe
-pipe2
-poll
-popen
-posix2time
-posix_fallocate
-posix_fallocate64
-posix_memalign
-ppoll
-prctl
-pread
-pread64
-printf
-prlimit
-prlimit64
-pselect
-psiginfo
-psignal
-pthread_atfork
-pthread_attr_destroy
-pthread_attr_getdetachstate
-pthread_attr_getguardsize
-pthread_attr_getschedparam
-pthread_attr_getschedpolicy
-pthread_attr_getscope
-pthread_attr_getstack
-pthread_attr_getstacksize
-pthread_attr_init
-pthread_attr_setdetachstate
-pthread_attr_setguardsize
-pthread_attr_setschedparam
-pthread_attr_setschedpolicy
-pthread_attr_setscope
-pthread_attr_setstack
-pthread_attr_setstacksize
-pthread_cond_broadcast
-pthread_cond_destroy
-pthread_cond_init
-pthread_cond_signal
-pthread_cond_timedwait
-pthread_cond_wait
-pthread_condattr_destroy
-pthread_condattr_getclock
-pthread_condattr_getpshared
-pthread_condattr_init
-pthread_condattr_setclock
-pthread_condattr_setpshared
-pthread_create
-pthread_detach
-pthread_equal
-pthread_exit
-pthread_getattr_np
-pthread_getcpuclockid
-pthread_getschedparam
-pthread_getspecific
-pthread_join
-pthread_key_create
-pthread_key_delete
-pthread_kill
-pthread_mutex_destroy
-pthread_mutex_init
-pthread_mutex_lock
-pthread_mutex_timedlock
-pthread_mutex_trylock
-pthread_mutex_unlock
-pthread_mutexattr_destroy
-pthread_mutexattr_getpshared
-pthread_mutexattr_gettype
-pthread_mutexattr_init
-pthread_mutexattr_setpshared
-pthread_mutexattr_settype
-pthread_once
-pthread_rwlock_destroy
-pthread_rwlock_init
-pthread_rwlock_rdlock
-pthread_rwlock_timedrdlock
-pthread_rwlock_timedwrlock
-pthread_rwlock_tryrdlock
-pthread_rwlock_trywrlock
-pthread_rwlock_unlock
-pthread_rwlock_wrlock
-pthread_rwlockattr_destroy
-pthread_rwlockattr_getpshared
-pthread_rwlockattr_init
-pthread_rwlockattr_setpshared
-pthread_self
-pthread_setname_np
-pthread_setschedparam
-pthread_setspecific
-pthread_sigmask
-ptrace
-ptsname
-ptsname_r
-putc
-putc_unlocked
-putchar
-putchar_unlocked
-putenv
-puts
-pututline
-putw
-putwc
-putwchar
-pvalloc
-pwrite
-pwrite64
-qsort
-quick_exit
-raise
-read
-readahead
-readdir
-readdir64
-readdir64_r
-readdir_r
-readlink
-readlinkat
-readv
-realloc
-realpath
-reboot
-recv
-recvfrom
-recvmmsg
-recvmsg
-regcomp
-regerror
-regexec
-regfree
-remove
-removexattr
-rename
-renameat
-res_init
-res_mkquery
-res_query
-res_search
-res_setmark
-res_setnetid
-rewind
-rewinddir
-rmdir
-sbrk
-scandir
-scandir64
-scanf
-sched_get_priority_max
-sched_get_priority_min
-sched_getaffinity
-sched_getcpu
-sched_getparam
-sched_getscheduler
-sched_rr_get_interval
-sched_setaffinity
-sched_setparam
-sched_setscheduler
-sched_yield
-seed48
-select
-sem_close
-sem_destroy
-sem_getvalue
-sem_init
-sem_open
-sem_post
-sem_timedwait
-sem_trywait
-sem_unlink
-sem_wait
-send
-sendfile
-sendfile64
-sendmmsg
-sendmsg
-sendto
-setbuf
-setbuffer
-setegid
-setenv
-seteuid
-setgid
-setgroups
-setitimer
-setjmp
-setlinebuf
-setlocale
-setlogmask
-setlogmask_r
-setmntent
-setns
-setpgid
-setpgrp
-setpriority
-setprogname
-setregid
-setresgid
-setresuid
-setreuid
-setrlimit
-setrlimit64
-setservent
-setsid
-setsockopt
-settimeofday
-setuid
-setusershell
-setutent
-setvbuf
-setxattr
-shutdown
-sigaction
-sigaddset
-sigaltstack
-sigblock
-sigdelset
-sigemptyset
-sigfillset
-siginterrupt
-sigismember
-siglongjmp
-signal
-signalfd
-signalfd4
-sigpending
-sigprocmask
-sigsetjmp
-sigsetmask
-sigsuspend
-sigwait
-sleep
-snprintf
-socket
-socketpair
-sprintf
-srand48
-sscanf
-stat
-stat64
-statfs
-statfs64
-statvfs
-statvfs64
-stpcpy
-stpncpy
-strcasecmp
-strcasestr
-strcat
-strchr
-strcmp
-strcoll
-strcpy
-strcspn
-strdup
-strerror
-strerror_r
-strftime
-strftime_tz
-strlcat
-strlcpy
-strlen
-strncasecmp
-strncat
-strncmp
-strncpy
-strndup
-strnlen
-strpbrk
-strptime
-strrchr
-strsep
-strsignal
-strspn
-strstr
-strtod
-strtof
-strtoimax
-strtok
-strtok_r
-strtol
-strtold
-strtoll
-strtoq
-strtoul
-strtoull
-strtoumax
-strtouq
-strxfrm
-swapoff
-swapon
-swprintf
-swscanf
-symlink
-symlinkat
-sync
-syscall
-sysconf
-sysinfo
-syslog
-syslog_r
-system
-sysv_signal
-tcdrain
-tcflow
-tcflush
-tcgetattr
-tcgetpgrp
-tcgetsid
-tcsendbreak
-tcsetattr
-tcsetpgrp
-tdelete
-tdestroy
-tempnam
-tfind
-tgkill
-time
-time2posix
-timegm
-timelocal
-timer_create
-timer_delete
-timer_getoverrun
-timer_gettime
-timer_settime
-timerfd_create
-timerfd_gettime
-timerfd_settime
-times
-tkill
-tmpfile
-tmpnam
-toascii
-tolower
-toupper
-towlower
-towupper
-truncate
-truncate64
-tsearch
-ttyname
-ttyname_r
-tzset
-tzsetwall
-umask
-umount
-umount2
-uname
-ungetc
-ungetwc
-unlink
-unlinkat
-unlockpt
-unsetenv
-unshare
-uselocale
-usleep
-utime
-utimensat
-utimes
-utmpname
-valloc
-vasprintf
-verr
-verrx
-vfdprintf
-vfork
-vfprintf
-vfscanf
-vfwprintf
-vfwscanf
-vprintf
-vscanf
-vsnprintf
-vsprintf
-vsscanf
-vswprintf
-vswscanf
-vsyslog
-vsyslog_r
-vwarn
-vwarnx
-vwprintf
-vwscanf
-wait
-wait3
-wait4
-waitid
-waitpid
-warn
-warnx
-wcpcpy
-wcpncpy
-wcrtomb
-wcscasecmp
-wcscat
-wcschr
-wcscmp
-wcscoll
-wcscpy
-wcscspn
-wcsdup
-wcsftime
-wcslcat
-wcslcpy
-wcslen
-wcsncasecmp
-wcsncat
-wcsncmp
-wcsncpy
-wcsnlen
-wcsnrtombs
-wcspbrk
-wcsrchr
-wcsrtombs
-wcsspn
-wcsstr
-wcstod
-wcstof
-wcstoimax
-wcstok
-wcstol
-wcstold
-wcstoll
-wcstombs
-wcstoul
-wcstoull
-wcstoumax
-wcswcs
-wcswidth
-wcsxfrm
-wctob
-wctomb
-wctype
-wcwidth
-wmemchr
-wmemcmp
-wmemcpy
-wmemmove
-wmemset
-wprintf
-write
-writev
-wscanf
diff --git a/ndk/platforms/android-20/arch-mips64/symbols/libc.so.variables.txt b/ndk/platforms/android-20/arch-mips64/symbols/libc.so.variables.txt
deleted file mode 100644
index e632995..0000000
--- a/ndk/platforms/android-20/arch-mips64/symbols/libc.so.variables.txt
+++ /dev/null
@@ -1,46 +0,0 @@
-_C_ctype_
-_C_tolower_
-_C_toupper_
-__atexit
-__atexit_invalid
-__isthreaded
-__libc_malloc_default_dispatch
-__libc_malloc_dispatch
-__netdClientDispatch
-__p_cert_syms
-__p_class_syms
-__p_key_syms
-__p_rcode_syms
-__p_type_syms
-__popcount_tab
-__progname
-__rand48_add
-__rand48_mult
-__rand48_seed
-__sF
-__sdidinit
-__sglue
-__stack_chk_guard
-__system_property_area__
-__thenan_tf
-_ctype_
-_ns_flagdata
-_tolower_tab_
-_toupper_tab_
-daylight
-environ
-g_allocations_mutex
-g_hash_table
-g_malloc_debug_backlog
-g_malloc_debug_level
-h_errlist
-h_nerr
-optarg
-opterr
-optind
-optopt
-optreset
-sys_siglist
-sys_signame
-timezone
-tzname
diff --git a/ndk/platforms/android-20/arch-mips64/symbols/libm.so.functions.txt b/ndk/platforms/android-20/arch-mips64/symbols/libm.so.functions.txt
deleted file mode 100644
index 89ff8a6..0000000
--- a/ndk/platforms/android-20/arch-mips64/symbols/libm.so.functions.txt
+++ /dev/null
@@ -1,305 +0,0 @@
-__addtf3
-__ashlti3
-__divtf3
-__eqtf2
-__exp__D
-__extenddftf2
-__extendsftf2
-__fixtfdi
-__fixtfsi
-__fixunstfdi
-__fixunstfsi
-__floatsitf
-__floatunditf
-__floatunsitf
-__fpcmp_parts_t
-__getf2
-__gttf2
-__ieee754_rem_pio2
-__ieee754_rem_pio2f
-__kernel_cos
-__kernel_cosdf
-__kernel_cosl
-__kernel_rem_pio2
-__kernel_sin
-__kernel_sindf
-__kernel_sinl
-__kernel_tan
-__kernel_tandf
-__kernel_tanl
-__ldexp_cexp
-__ldexp_cexpf
-__ldexp_exp
-__ldexp_expf
-__letf2
-__log__D
-__lshrti3
-__lttf2
-__make_dp
-__make_fp
-__make_tp
-__multf3
-__netf2
-__pack_d
-__pack_f
-__pack_t
-__signbit
-__signbitf
-__signbitl
-__subtf3
-__trunctfdf2
-__trunctfsf2
-__unpack_d
-__unpack_f
-__unpack_t
-_scan_nan
-acos
-acosf
-acosh
-acoshf
-acoshl
-acosl
-asin
-asinf
-asinh
-asinhf
-asinhl
-asinl
-atan
-atan2
-atan2f
-atan2l
-atanf
-atanh
-atanhf
-atanhl
-atanl
-cabs
-cabsf
-carg
-cargf
-cbrt
-cbrtf
-cbrtl
-ccos
-ccosf
-ccosh
-ccoshf
-ceil
-ceilf
-ceill
-cexp
-cexpf
-cimag
-cimagf
-conj
-conjf
-copysign
-copysignf
-copysignl
-cos
-cosf
-cosh
-coshf
-coshl
-cosl
-cproj
-cprojf
-creal
-crealf
-csin
-csinf
-csinh
-csinhf
-csqrt
-csqrtf
-ctan
-ctanf
-ctanh
-ctanhf
-drem
-dremf
-erf
-erfc
-erfcf
-erfcl
-erff
-erfl
-exp
-exp2
-exp2f
-exp2l
-expf
-expl
-expm1
-expm1f
-expm1l
-fabs
-fabsf
-fabsl
-fdim
-fdimf
-fdiml
-feclearexcept
-fedisableexcept
-feenableexcept
-fegetenv
-fegetexcept
-fegetexceptflag
-fegetround
-feholdexcept
-feraiseexcept
-fesetenv
-fesetexceptflag
-fesetround
-fetestexcept
-feupdateenv
-finite
-finitef
-floor
-floorf
-floorl
-fma
-fmaf
-fmal
-fmax
-fmaxf
-fmaxl
-fmin
-fminf
-fminl
-fmod
-fmodf
-fmodl
-frexp
-frexpf
-frexpl
-gamma
-gamma_r
-gammaf
-gammaf_r
-hypot
-hypotf
-hypotl
-ilogb
-ilogbf
-ilogbl
-imprecise_coshl
-imprecise_erfcl
-imprecise_erfl
-imprecise_lgammal
-imprecise_powl
-imprecise_sinhl
-imprecise_tanhl
-imprecise_tgammal
-j0
-j0f
-j1
-j1f
-jn
-jnf
-ldexpf
-ldexpl
-lgamma
-lgamma_r
-lgammaf
-lgammaf_r
-lgammal
-llrint
-llrintf
-llrintl
-llround
-llroundf
-llroundl
-log
-log10
-log10f
-log10l
-log1p
-log1pf
-log1pl
-log2
-log2f
-log2l
-logb
-logbf
-logbl
-logf
-logl
-lrint
-lrintf
-lrintl
-lround
-lroundf
-lroundl
-modf
-modff
-modfl
-nan
-nanf
-nanl
-nearbyint
-nearbyintf
-nearbyintl
-nextafter
-nextafterf
-nextafterl
-nexttoward
-nexttowardf
-nexttowardl
-pow
-powf
-powl
-remainder
-remainderf
-remainderl
-remquo
-remquof
-remquol
-rint
-rintf
-rintl
-round
-roundf
-roundl
-scalb
-scalbf
-scalbln
-scalblnf
-scalblnl
-scalbn
-scalbnf
-scalbnl
-significand
-significandf
-significandl
-sin
-sincos
-sincosf
-sincosl
-sinf
-sinh
-sinhf
-sinhl
-sinl
-sqrt
-sqrtf
-sqrtl
-tan
-tanf
-tanh
-tanhf
-tanhl
-tanl
-tgamma
-tgammaf
-tgammal
-trunc
-truncf
-truncl
-y0
-y0f
-y1
-y1f
-yn
-ynf
diff --git a/ndk/platforms/android-20/arch-mips64/symbols/libm.so.variables.txt b/ndk/platforms/android-20/arch-mips64/symbols/libm.so.variables.txt
deleted file mode 100644
index 870d16e..0000000
--- a/ndk/platforms/android-20/arch-mips64/symbols/libm.so.variables.txt
+++ /dev/null
@@ -1,26 +0,0 @@
-_ItL_aT
-_ItL_atanhi
-_ItL_atanlo
-_ItL_pS0
-_ItL_pS1
-_ItL_pS2
-_ItL_pS3
-_ItL_pS4
-_ItL_pS5
-_ItL_pS6
-_ItL_pS7
-_ItL_pS8
-_ItL_pS9
-_ItL_pi_lo
-_ItL_qS1
-_ItL_qS2
-_ItL_qS3
-_ItL_qS4
-_ItL_qS5
-_ItL_qS6
-_ItL_qS7
-_ItL_qS8
-_ItL_qS9
-__fe_dfl_env
-__thenan_tf
-signgam
diff --git a/ndk/platforms/android-20/arch-mips64/symbols/libstdc++.so.functions.txt b/ndk/platforms/android-20/arch-mips64/symbols/libstdc++.so.functions.txt
deleted file mode 100644
index 991ae87..0000000
--- a/ndk/platforms/android-20/arch-mips64/symbols/libstdc++.so.functions.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-_ZN9type_infoC1ERKS_
-_ZN9type_infoC1Ev
-_ZN9type_infoC2ERKS_
-_ZN9type_infoC2Ev
-_ZN9type_infoD0Ev
-_ZN9type_infoD1Ev
-_ZN9type_infoD2Ev
-_ZNK9type_info4nameEv
-_ZNK9type_info6beforeERKS_
-_ZNK9type_infoeqERKS_
-_ZNK9type_infoneERKS_
-_ZdaPv
-_ZdaPvRKSt9nothrow_t
-_ZdlPv
-_ZdlPvRKSt9nothrow_t
-_Znam
-_ZnamRKSt9nothrow_t
-_Znwm
-_ZnwmRKSt9nothrow_t
-__cxa_guard_abort
-__cxa_guard_acquire
-__cxa_guard_release
-__cxa_pure_virtual
diff --git a/ndk/platforms/android-20/arch-mips64/symbols/libstdc++.so.variables.txt b/ndk/platforms/android-20/arch-mips64/symbols/libstdc++.so.variables.txt
deleted file mode 100644
index d5aab66..0000000
--- a/ndk/platforms/android-20/arch-mips64/symbols/libstdc++.so.variables.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-_ZSt7nothrow
-_ZTV9type_info
diff --git a/ndk/platforms/android-20/arch-x86/include/machine/fenv.h b/ndk/platforms/android-20/arch-x86/include/machine/fenv.h
deleted file mode 100644
index f3fabb6..0000000
--- a/ndk/platforms/android-20/arch-x86/include/machine/fenv.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/*-
- * Copyright (c) 2004-2005 David Schultz <das@FreeBSD.ORG>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $FreeBSD: src/lib/msun/i387/fenv.h,v 1.4 2005/03/17 22:21:46 das Exp $
- */
-
-#ifndef _I387_FENV_H_
-#define _I387_FENV_H_
-
-#include <sys/types.h>
-
-__BEGIN_DECLS
-
-/*
- * To preserve binary compatibility with FreeBSD 5.3, we pack the
- * mxcsr into some reserved fields, rather than changing sizeof(fenv_t).
- */
-typedef struct {
-  __uint16_t __control;
-  __uint16_t __mxcsr_hi;
-  __uint16_t __status;
-  __uint16_t __mxcsr_lo;
-  __uint32_t __tag;
-  char       __other[16];
-} fenv_t;
-
-typedef __uint16_t fexcept_t;
-
-/* Exception flags */
-#define FE_INVALID    0x01
-#define FE_DENORMAL   0x02
-#define FE_DIVBYZERO  0x04
-#define FE_OVERFLOW   0x08
-#define FE_UNDERFLOW  0x10
-#define FE_INEXACT    0x20
-#define FE_ALL_EXCEPT (FE_DIVBYZERO | FE_DENORMAL | FE_INEXACT | \
-                       FE_INVALID | FE_OVERFLOW | FE_UNDERFLOW)
-
-/* Rounding modes */
-#define FE_TONEAREST  0x0000
-#define FE_DOWNWARD   0x0400
-#define FE_UPWARD     0x0800
-#define FE_TOWARDZERO 0x0c00
-#define _ROUND_MASK   (FE_TONEAREST | FE_DOWNWARD | \
-                       FE_UPWARD | FE_TOWARDZERO)
-
-__END_DECLS
-
-#endif /* !I387_FENV_H_ */
diff --git a/ndk/platforms/android-20/arch-x86/lib/libc.a b/ndk/platforms/android-20/arch-x86/lib/libc.a
deleted file mode 100644
index 414fa30..0000000
--- a/ndk/platforms/android-20/arch-x86/lib/libc.a
+++ /dev/null
Binary files differ
diff --git a/ndk/platforms/android-20/arch-x86/lib/libm.a b/ndk/platforms/android-20/arch-x86/lib/libm.a
deleted file mode 100644
index aa36ce4..0000000
--- a/ndk/platforms/android-20/arch-x86/lib/libm.a
+++ /dev/null
Binary files differ
diff --git a/ndk/platforms/android-20/arch-x86/lib/libstdc++.a b/ndk/platforms/android-20/arch-x86/lib/libstdc++.a
deleted file mode 100644
index bab8fa8..0000000
--- a/ndk/platforms/android-20/arch-x86/lib/libstdc++.a
+++ /dev/null
Binary files differ
diff --git a/ndk/platforms/android-20/arch-x86/lib/libz.a b/ndk/platforms/android-20/arch-x86/lib/libz.a
deleted file mode 100644
index c2c417e..0000000
--- a/ndk/platforms/android-20/arch-x86/lib/libz.a
+++ /dev/null
Binary files differ
diff --git a/ndk/platforms/android-20/arch-x86/symbols/libc.so.functions.txt b/ndk/platforms/android-20/arch-x86/symbols/libc.so.functions.txt
deleted file mode 100644
index 0f67218..0000000
--- a/ndk/platforms/android-20/arch-x86/symbols/libc.so.functions.txt
+++ /dev/null
@@ -1,1229 +0,0 @@
-MD5_Final
-MD5_Init
-MD5_Update
-SHA1Final
-SHA1Init
-SHA1Transform
-SHA1Update
-_Exit
-_Unwind_Backtrace
-_Unwind_DeleteException
-_Unwind_FindEnclosingFunction
-_Unwind_Find_FDE
-_Unwind_ForcedUnwind
-_Unwind_GetCFA
-_Unwind_GetDataRelBase
-_Unwind_GetGR
-_Unwind_GetIP
-_Unwind_GetIPInfo
-_Unwind_GetLanguageSpecificData
-_Unwind_GetRegionStart
-_Unwind_GetTextRelBase
-_Unwind_RaiseException
-_Unwind_Resume
-_Unwind_Resume_or_Rethrow
-_Unwind_SetGR
-_Unwind_SetIP
-__FD_CLR_chk
-__FD_ISSET_chk
-__FD_SET_chk
-__accept
-__android_set_abort_message
-__arc4_getbyte
-__assert
-__assert2
-__b64_ntop
-__b64_pton
-__bionic_name_mem
-__brk
-__connect
-__cxa_atexit
-__cxa_finalize
-__deregister_frame
-__deregister_frame_info
-__deregister_frame_info_bases
-__divdi3
-__dn_comp
-__dn_count_labels
-__dn_skipname
-__dorand48
-__epoll_pwait
-__errno
-__evAddTime
-__evCmpTime
-__evConsIovec
-__evConsTime
-__evNowTime
-__evSubTime
-__evTimeSpec
-__evTimeVal
-__evUTCTime
-__exit
-__fcntl64
-__fgets_chk
-__fgetwc_unlock
-__findenv
-__fp_nquery
-__fp_query
-__fpclassify
-__fpclassifyd
-__fpclassifyf
-__fpclassifyl
-__fputwc_unlock
-__frame_state_for
-__fstatfs64
-__futex_syscall3
-__futex_syscall4
-__futex_wait
-__futex_wait_ex
-__futex_wake
-__futex_wake_ex
-__get_h_errno
-__get_sp
-__get_tls
-__getcpu
-__getcwd
-__getpriority
-__hostalias
-__ioctl
-__isfinite
-__isfinitef
-__isfinitel
-__isinf
-__isinff
-__isinfl
-__isnan
-__isnanf
-__isnanl
-__isnormal
-__isnormalf
-__isnormall
-__libc_current_sigrtmax
-__libc_current_sigrtmin
-__libc_fini
-__libc_init
-__llseek
-__loc_aton
-__loc_ntoa
-__memcmp16
-__memcpy_chk
-__memmove_chk
-__memset_chk
-__mmap2
-__moddi3
-__ns_format_ttl
-__ns_get16
-__ns_get32
-__ns_initparse
-__ns_makecanon
-__ns_msg_getflag
-__ns_name_compress
-__ns_name_eq
-__ns_name_labels
-__ns_name_length
-__ns_name_map
-__ns_name_ntol
-__ns_name_ntop
-__ns_name_owned
-__ns_name_pack
-__ns_name_pton
-__ns_name_pton2
-__ns_name_rollback
-__ns_name_skip
-__ns_name_uncompress
-__ns_name_unpack
-__ns_name_unpack2
-__ns_parserr
-__ns_parserr2
-__ns_put16
-__ns_put32
-__ns_samename
-__ns_skiprr
-__ns_sprintrr
-__ns_sprintrrf
-__open
-__open_2
-__openat
-__openat_2
-__p_cdname
-__p_cdnname
-__p_class
-__p_fqname
-__p_fqnname
-__p_option
-__p_query
-__p_rcode
-__p_secstodate
-__p_section
-__p_sockun
-__p_time
-__p_type
-__popcountsi2
-__ppoll
-__pselect6
-__pthread_cleanup_pop
-__pthread_cleanup_push
-__pthread_gettid
-__ptrace
-__putlong
-__putshort
-__read_chk
-__reboot
-__recvfrom_chk
-__register_frame
-__register_frame_info
-__register_frame_info_bases
-__register_frame_info_table
-__register_frame_info_table_bases
-__register_frame_table
-__res_close
-__res_dnok
-__res_get_nibblesuffix
-__res_get_nibblesuffix2
-__res_get_state
-__res_get_static
-__res_getservers
-__res_hnok
-__res_hostalias
-__res_isourserver
-__res_mailok
-__res_nameinquery
-__res_nametoclass
-__res_nametotype
-__res_nclose
-__res_ndestroy
-__res_ninit
-__res_nmkquery
-__res_nopt
-__res_nquery
-__res_nquerydomain
-__res_nsearch
-__res_nsend
-__res_opt
-__res_ownok
-__res_pquery
-__res_put_state
-__res_queriesmatch
-__res_querydomain
-__res_randomid
-__res_send
-__res_send_setqhook
-__res_send_setrhook
-__res_setservers
-__res_vinit
-__rt_sigaction
-__rt_sigpending
-__rt_sigprocmask
-__rt_sigsuspend
-__rt_sigtimedwait
-__sched_cpualloc
-__sched_cpucount
-__sched_cpufree
-__sched_getaffinity
-__sclose
-__set_errno
-__set_thread_area
-__set_tid_address
-__set_tls
-__sflags
-__sflush
-__sflush_locked
-__sfp
-__sfvwrite
-__sigaction
-__sinit
-__smakebuf
-__snprintf_chk
-__sprintf_chk
-__sread
-__srefill
-__srget
-__sseek
-__stack_chk_fail
-__statfs64
-__stpcpy_chk
-__stpncpy_chk
-__stpncpy_chk2
-__strcat_chk
-__strchr_chk
-__strcpy_chk
-__strlcat_chk
-__strlcpy_chk
-__strlen_chk
-__strncat_chk
-__strncpy_chk
-__strncpy_chk2
-__strrchr_chk
-__svfscanf
-__swbuf
-__swhatbuf
-__swrite
-__swsetup
-__sym_ntop
-__sym_ntos
-__sym_ston
-__syslog
-__system_properties_init
-__system_property_add
-__system_property_area_init
-__system_property_find
-__system_property_find_compat
-__system_property_find_nth
-__system_property_foreach
-__system_property_foreach_compat
-__system_property_get
-__system_property_read
-__system_property_read_compat
-__system_property_serial
-__system_property_set
-__system_property_set_filename
-__system_property_update
-__system_property_wait_any
-__timer_create
-__timer_delete
-__timer_getoverrun
-__timer_gettime
-__timer_settime
-__udivdi3
-__umask_chk
-__umoddi3
-__ungetwc
-__vfprintf
-__vfwprintf
-__vfwscanf
-__vsnprintf_chk
-__vsprintf_chk
-__wait4
-__waitid
-_cleanup
-_exit
-_exit_with_stack_teardown
-_fwalk
-_getlong
-_getshort
-_longjmp
-_resolv_flush_cache_for_net
-_resolv_set_nameservers_for_net
-_setjmp
-_thread_created_hook
-_tolower
-_toupper
-abort
-abs
-accept
-accept4
-access
-acct
-alarm
-alphasort
-alphasort64
-android_getaddrinfofornet
-android_gethostbyaddrfornet
-android_gethostbyaddrfornet_proxy
-android_gethostbyaddrfornet_real
-android_gethostbynamefornet
-android_getnameinfofornet
-arc4random
-arc4random_addrandom
-arc4random_buf
-arc4random_stir
-arc4random_uniform
-asctime
-asctime64
-asctime64_r
-asctime_r
-asprintf
-at_quick_exit
-atof
-atoi
-atol
-atoll
-basename
-basename_r
-bcopy
-bind
-bindresvport
-brk
-bsd_signal
-bsearch
-btowc
-bzero
-calloc
-capget
-capset
-cfgetispeed
-cfgetospeed
-cfmakeraw
-cfsetispeed
-cfsetospeed
-cfsetspeed
-chdir
-chmod
-chown
-chroot
-clearenv
-clearerr
-clock
-clock_getres
-clock_gettime
-clock_nanosleep
-clock_settime
-clone
-close
-closedir
-closelog
-closelog_r
-cmsg_nxthdr
-connect
-creat
-creat64
-ctime
-ctime64
-ctime64_r
-ctime_r
-daemon
-delete_module
-difftime
-dirfd
-dirname
-dirname_r
-div
-dlbulk_free
-dlcalloc
-dlfree
-dlindependent_calloc
-dlindependent_comalloc
-dlmallinfo
-dlmalloc
-dlmalloc_footprint
-dlmalloc_footprint_limit
-dlmalloc_inspect_all
-dlmalloc_max_footprint
-dlmalloc_set_footprint_limit
-dlmalloc_stats
-dlmalloc_trim
-dlmalloc_usable_size
-dlmallopt
-dlmemalign
-dlposix_memalign
-dlpvalloc
-dlrealloc
-dlrealloc_in_place
-dlvalloc
-dn_expand
-drand48
-dup
-dup2
-dup3
-duplocale
-endmntent
-endpwent
-endservent
-endusershell
-endutent
-epoll_create
-epoll_create1
-epoll_ctl
-epoll_pwait
-epoll_wait
-erand48
-err
-errx
-ether_aton
-ether_aton_r
-ether_ntoa
-ether_ntoa_r
-eventfd
-eventfd_read
-eventfd_write
-execl
-execle
-execlp
-execv
-execve
-execvp
-execvpe
-exit
-faccessat
-fallocate
-fallocate64
-fchdir
-fchmod
-fchmodat
-fchown
-fchownat
-fclose
-fcntl
-fdatasync
-fdopen
-fdopendir
-fdprintf
-feof
-ferror
-fflush
-ffs
-fgetc
-fgetln
-fgetpos
-fgets
-fgetwc
-fgetws
-fgetxattr
-fileno
-flistxattr
-flock
-flockfile
-fnmatch
-fopen
-fork
-fpathconf
-fprintf
-fpurge
-fputc
-fputs
-fputwc
-fputws
-fread
-free
-freeaddrinfo
-freelocale
-fremovexattr
-freopen
-fscanf
-fseek
-fseeko
-fsetpos
-fsetxattr
-fstat
-fstat64
-fstatat
-fstatat64
-fstatfs
-fstatfs64
-fstatvfs
-fstatvfs64
-fsync
-ftell
-ftello
-ftime
-ftok
-ftruncate
-ftruncate64
-ftrylockfile
-fts_children
-fts_close
-fts_open
-fts_read
-fts_set
-ftw
-ftw64
-funlockfile
-funopen
-futex
-futimens
-fwide
-fwprintf
-fwrite
-fwscanf
-gai_strerror
-get_malloc_leak_info
-getaddrinfo
-getauxval
-getc
-getc_unlocked
-getchar
-getchar_unlocked
-getcwd
-getdelim
-getdents
-getdtablesize
-getegid
-getenv
-geteuid
-getgid
-getgrgid
-getgrnam
-getgrouplist
-getgroups
-gethostbyaddr
-gethostbyname
-gethostbyname2
-gethostbyname_r
-gethostent
-gethostname
-getitimer
-getline
-getlogin
-getmntent
-getmntent_r
-getnameinfo
-getnetbyaddr
-getnetbyname
-getopt
-getopt_long
-getopt_long_only
-getpagesize
-getpeername
-getpgid
-getpgrp
-getpid
-getppid
-getpriority
-getprogname
-getprotobyname
-getprotobynumber
-getpt
-getpwnam
-getpwnam_r
-getpwuid
-getpwuid_r
-getresgid
-getresuid
-getrlimit
-getrlimit64
-getrusage
-gets
-getservbyname
-getservbyport
-getservent
-getservent_r
-getsid
-getsockname
-getsockopt
-gettid
-gettimeofday
-getuid
-getusershell
-getutent
-getwc
-getwchar
-getxattr
-gmtime
-gmtime64
-gmtime64_r
-gmtime_r
-herror
-hstrerror
-htonl
-htons
-if_indextoname
-if_nametoindex
-imaxabs
-imaxdiv
-index
-inet_addr
-inet_aton
-inet_lnaof
-inet_makeaddr
-inet_netof
-inet_network
-inet_nsap_addr
-inet_nsap_ntoa
-inet_ntoa
-inet_ntop
-inet_pton
-init_module
-initgroups
-inotify_add_watch
-inotify_init
-inotify_init1
-inotify_rm_watch
-ioctl
-ioprio_get
-ioprio_set
-isalnum
-isalpha
-isascii
-isatty
-isblank
-iscntrl
-isdigit
-isfinite
-isfinitef
-isfinitel
-isgraph
-isinf
-isinff
-isinfl
-islower
-isnan
-isnanf
-isnanl
-isnormal
-isnormalf
-isnormall
-isprint
-ispunct
-issetugid
-isspace
-isupper
-iswalnum
-iswalpha
-iswblank
-iswcntrl
-iswctype
-iswdigit
-iswgraph
-iswlower
-iswprint
-iswpunct
-iswspace
-iswupper
-iswxdigit
-isxdigit
-jrand48
-kill
-killpg
-klogctl
-labs
-lchown
-ldexp
-ldiv
-lfind
-lgetxattr
-link
-linkat
-listen
-listxattr
-llabs
-lldiv
-llistxattr
-localeconv
-localtime
-localtime64
-localtime64_r
-localtime_r
-localtime_tz
-longjmp
-longjmperror
-lrand48
-lremovexattr
-lsearch
-lseek
-lseek64
-lsetxattr
-lstat
-lstat64
-madvise
-mallinfo
-malloc
-malloc_usable_size
-mbrlen
-mbrtowc
-mbsinit
-mbsnrtowcs
-mbsrtowcs
-mbstowcs
-mbtowc
-memalign
-memccpy
-memchr
-memcmp
-memcpy
-memmem
-memmove
-memrchr
-memset
-memswap
-mincore
-mkdir
-mkdirat
-mkdtemp
-mkfifo
-mknod
-mknodat
-mkstemp
-mkstemp64
-mkstemps
-mktemp
-mktime
-mktime64
-mktime_tz
-mlock
-mlockall
-mmap
-mmap64
-mount
-mprotect
-mrand48
-mremap
-msync
-munlock
-munlockall
-munmap
-nanosleep
-newlocale
-nftw
-nftw64
-nice
-nrand48
-nsdispatch
-ntohl
-ntohs
-open
-open64
-openat
-openat64
-opendir
-openlog
-openlog_r
-pathconf
-pause
-pclose
-perf_event_open
-perror
-personality
-pipe
-pipe2
-poll
-popen
-posix2time
-posix_fallocate
-posix_fallocate64
-posix_memalign
-ppoll
-prctl
-pread
-pread64
-printf
-prlimit64
-pselect
-psiginfo
-psignal
-pthread_atfork
-pthread_attr_destroy
-pthread_attr_getdetachstate
-pthread_attr_getguardsize
-pthread_attr_getschedparam
-pthread_attr_getschedpolicy
-pthread_attr_getscope
-pthread_attr_getstack
-pthread_attr_getstackaddr
-pthread_attr_getstacksize
-pthread_attr_init
-pthread_attr_setdetachstate
-pthread_attr_setguardsize
-pthread_attr_setschedparam
-pthread_attr_setschedpolicy
-pthread_attr_setscope
-pthread_attr_setstack
-pthread_attr_setstackaddr
-pthread_attr_setstacksize
-pthread_cond_broadcast
-pthread_cond_destroy
-pthread_cond_init
-pthread_cond_signal
-pthread_cond_timedwait
-pthread_cond_timedwait_monotonic
-pthread_cond_timedwait_monotonic_np
-pthread_cond_timedwait_relative_np
-pthread_cond_timeout_np
-pthread_cond_wait
-pthread_condattr_destroy
-pthread_condattr_getclock
-pthread_condattr_getpshared
-pthread_condattr_init
-pthread_condattr_setclock
-pthread_condattr_setpshared
-pthread_create
-pthread_detach
-pthread_equal
-pthread_exit
-pthread_getattr_np
-pthread_getcpuclockid
-pthread_getschedparam
-pthread_getspecific
-pthread_join
-pthread_key_create
-pthread_key_delete
-pthread_kill
-pthread_mutex_destroy
-pthread_mutex_init
-pthread_mutex_lock
-pthread_mutex_lock_timeout_np
-pthread_mutex_timedlock
-pthread_mutex_trylock
-pthread_mutex_unlock
-pthread_mutexattr_destroy
-pthread_mutexattr_getpshared
-pthread_mutexattr_gettype
-pthread_mutexattr_init
-pthread_mutexattr_setpshared
-pthread_mutexattr_settype
-pthread_once
-pthread_rwlock_destroy
-pthread_rwlock_init
-pthread_rwlock_rdlock
-pthread_rwlock_timedrdlock
-pthread_rwlock_timedwrlock
-pthread_rwlock_tryrdlock
-pthread_rwlock_trywrlock
-pthread_rwlock_unlock
-pthread_rwlock_wrlock
-pthread_rwlockattr_destroy
-pthread_rwlockattr_getpshared
-pthread_rwlockattr_init
-pthread_rwlockattr_setpshared
-pthread_self
-pthread_setname_np
-pthread_setschedparam
-pthread_setspecific
-pthread_sigmask
-ptrace
-ptsname
-ptsname_r
-putc
-putc_unlocked
-putchar
-putchar_unlocked
-putenv
-puts
-pututline
-putw
-putwc
-putwchar
-pvalloc
-pwrite
-pwrite64
-qsort
-quick_exit
-raise
-read
-readahead
-readdir
-readdir64
-readdir64_r
-readdir_r
-readlink
-readlinkat
-readv
-realloc
-realpath
-reboot
-recv
-recvfrom
-recvmmsg
-recvmsg
-regcomp
-regerror
-regexec
-regfree
-remove
-removexattr
-rename
-renameat
-res_init
-res_mkquery
-res_query
-res_search
-res_setmark
-res_setnetid
-rewind
-rewinddir
-rmdir
-sbrk
-scandir
-scandir64
-scanf
-sched_get_priority_max
-sched_get_priority_min
-sched_getaffinity
-sched_getcpu
-sched_getparam
-sched_getscheduler
-sched_rr_get_interval
-sched_setaffinity
-sched_setparam
-sched_setscheduler
-sched_yield
-seed48
-select
-sem_close
-sem_destroy
-sem_getvalue
-sem_init
-sem_open
-sem_post
-sem_timedwait
-sem_trywait
-sem_unlink
-sem_wait
-send
-sendfile
-sendfile64
-sendmmsg
-sendmsg
-sendto
-setbuf
-setbuffer
-setegid
-setenv
-seteuid
-setgid
-setgroups
-setitimer
-setjmp
-setlinebuf
-setlocale
-setlogmask
-setlogmask_r
-setmntent
-setns
-setpgid
-setpgrp
-setpriority
-setprogname
-setregid
-setresgid
-setresuid
-setreuid
-setrlimit
-setrlimit64
-setservent
-setsid
-setsockopt
-settimeofday
-setuid
-setusershell
-setutent
-setvbuf
-setxattr
-shutdown
-sigaction
-sigaddset
-sigaltstack
-sigblock
-sigdelset
-sigemptyset
-sigfillset
-siginterrupt
-sigismember
-siglongjmp
-signal
-signalfd
-signalfd4
-sigpending
-sigprocmask
-sigsetjmp
-sigsetmask
-sigsuspend
-sigwait
-sleep
-snprintf
-socket
-socketpair
-sprintf
-srand48
-sscanf
-stat
-stat64
-statfs
-statfs64
-statvfs
-statvfs64
-stpcpy
-stpncpy
-strcasecmp
-strcasestr
-strcat
-strchr
-strcmp
-strcoll
-strcpy
-strcspn
-strdup
-strerror
-strerror_r
-strftime
-strftime_tz
-strlcat
-strlcpy
-strlen
-strncasecmp
-strncat
-strncmp
-strncpy
-strndup
-strnlen
-strntoimax
-strntoumax
-strpbrk
-strptime
-strrchr
-strsep
-strsignal
-strspn
-strstr
-strtod
-strtof
-strtoimax
-strtok
-strtok_r
-strtol
-strtold
-strtoll
-strtoq
-strtotimeval
-strtoul
-strtoull
-strtoumax
-strtouq
-strxfrm
-swapoff
-swapon
-swprintf
-swscanf
-symlink
-symlinkat
-sync
-syscall
-sysconf
-sysinfo
-syslog
-syslog_r
-system
-sysv_signal
-tcdrain
-tcflow
-tcflush
-tcgetattr
-tcgetpgrp
-tcgetsid
-tcsendbreak
-tcsetattr
-tcsetpgrp
-tdelete
-tdestroy
-tempnam
-tfind
-tgkill
-time
-time2posix
-timegm
-timegm64
-timelocal
-timelocal64
-timer_create
-timer_delete
-timer_getoverrun
-timer_gettime
-timer_settime
-timerfd_create
-timerfd_gettime
-timerfd_settime
-times
-tkill
-tmpfile
-tmpnam
-toascii
-tolower
-toupper
-towlower
-towupper
-truncate
-truncate64
-tsearch
-ttyname
-ttyname_r
-tzset
-tzsetwall
-umask
-umount
-umount2
-uname
-ungetc
-ungetwc
-unlink
-unlinkat
-unlockpt
-unsetenv
-unshare
-uselocale
-usleep
-utime
-utimensat
-utimes
-utmpname
-valloc
-vasprintf
-verr
-verrx
-vfdprintf
-vfork
-vfprintf
-vfscanf
-vfwprintf
-vfwscanf
-vprintf
-vscanf
-vsnprintf
-vsprintf
-vsscanf
-vswprintf
-vswscanf
-vsyslog
-vsyslog_r
-vwarn
-vwarnx
-vwprintf
-vwscanf
-wait
-wait3
-wait4
-waitid
-waitpid
-warn
-warnx
-wcpcpy
-wcpncpy
-wcrtomb
-wcscasecmp
-wcscat
-wcschr
-wcscmp
-wcscoll
-wcscpy
-wcscspn
-wcsdup
-wcsftime
-wcslcat
-wcslcpy
-wcslen
-wcsncasecmp
-wcsncat
-wcsncmp
-wcsncpy
-wcsnlen
-wcsnrtombs
-wcspbrk
-wcsrchr
-wcsrtombs
-wcsspn
-wcsstr
-wcstod
-wcstof
-wcstoimax
-wcstok
-wcstol
-wcstold
-wcstoll
-wcstombs
-wcstoul
-wcstoull
-wcstoumax
-wcswcs
-wcswidth
-wcsxfrm
-wctob
-wctomb
-wctype
-wcwidth
-wmemchr
-wmemcmp
-wmemcpy
-wmemmove
-wmemset
-wprintf
-write
-writev
-wscanf
diff --git a/ndk/platforms/android-20/arch-x86/symbols/libc.so.variables.txt b/ndk/platforms/android-20/arch-x86/symbols/libc.so.variables.txt
deleted file mode 100644
index 2d0130c..0000000
--- a/ndk/platforms/android-20/arch-x86/symbols/libc.so.variables.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-_C_ctype_
-_C_tolower_
-_C_toupper_
-__atexit
-__atexit_invalid
-__bionic_brk
-__isthreaded
-__libc_malloc_default_dispatch
-__libc_malloc_dispatch
-__netdClientDispatch
-__p_cert_syms
-__p_class_syms
-__p_key_syms
-__p_rcode_syms
-__p_type_syms
-__page_shift
-__page_size
-__popcount_tab
-__progname
-__rand48_add
-__rand48_mult
-__rand48_seed
-__sF
-__sdidinit
-__sglue
-__stack_chk_guard
-__system_property_area__
-_ctype_
-_ns_flagdata
-_tolower_tab_
-_toupper_tab_
-daylight
-environ
-g_allocations_mutex
-g_hash_table
-g_malloc_debug_backlog
-g_malloc_debug_level
-h_errlist
-h_nerr
-optarg
-opterr
-optind
-optopt
-optreset
-sys_siglist
-sys_signame
-timezone
-tzname
diff --git a/ndk/platforms/android-20/arch-x86/symbols/libm.so.functions.txt b/ndk/platforms/android-20/arch-x86/symbols/libm.so.functions.txt
deleted file mode 100644
index b84a259..0000000
--- a/ndk/platforms/android-20/arch-x86/symbols/libm.so.functions.txt
+++ /dev/null
@@ -1,272 +0,0 @@
-__exp__D
-__ieee754_rem_pio2
-__ieee754_rem_pio2f
-__kernel_cos
-__kernel_cosdf
-__kernel_rem_pio2
-__kernel_sin
-__kernel_sindf
-__kernel_tan
-__kernel_tandf
-__ldexp_cexp
-__ldexp_cexpf
-__ldexp_exp
-__ldexp_expf
-__log__D
-__signbit
-__signbitf
-__signbitl
-_scan_nan
-acos
-acosf
-acosh
-acoshf
-acoshl
-acosl
-asin
-asinf
-asinh
-asinhf
-asinhl
-asinl
-atan
-atan2
-atan2f
-atan2l
-atanf
-atanh
-atanhf
-atanhl
-atanl
-cabs
-cabsf
-cabsl
-carg
-cargf
-cbrt
-cbrtf
-cbrtl
-ccos
-ccosf
-ccosh
-ccoshf
-ceil
-ceilf
-ceill
-cexp
-cexpf
-cimag
-cimagf
-conj
-conjf
-copysign
-copysignf
-copysignl
-cos
-cosf
-cosh
-coshf
-coshl
-cosl
-cproj
-cprojf
-cprojl
-creal
-crealf
-csin
-csinf
-csinh
-csinhf
-csqrt
-csqrtf
-csqrtl
-ctan
-ctanf
-ctanh
-ctanhf
-drem
-dremf
-erf
-erfc
-erfcf
-erfcl
-erff
-erfl
-exp
-exp2
-exp2f
-exp2l
-expf
-expl
-expm1
-expm1f
-expm1l
-fabs
-fabsf
-fabsl
-fdim
-fdimf
-fdiml
-feclearexcept
-fedisableexcept
-feenableexcept
-fegetenv
-fegetexcept
-fegetexceptflag
-fegetround
-feholdexcept
-feraiseexcept
-fesetenv
-fesetexceptflag
-fesetround
-fetestexcept
-feupdateenv
-finite
-finitef
-floor
-floorf
-floorl
-fma
-fmaf
-fmal
-fmax
-fmaxf
-fmaxl
-fmin
-fminf
-fminl
-fmod
-fmodf
-fmodl
-frexp
-frexpf
-frexpl
-gamma
-gamma_r
-gammaf
-gammaf_r
-hypot
-hypotf
-hypotl
-ilogb
-ilogbf
-ilogbl
-imprecise_coshl
-imprecise_erfcl
-imprecise_erfl
-imprecise_lgammal
-imprecise_powl
-imprecise_sinhl
-imprecise_tanhl
-imprecise_tgammal
-j0
-j0f
-j1
-j1f
-jn
-jnf
-ldexpf
-ldexpl
-lgamma
-lgamma_r
-lgammaf
-lgammaf_r
-lgammal
-llrint
-llrintf
-llrintl
-llround
-llroundf
-llroundl
-log
-log10
-log10f
-log10l
-log1p
-log1pf
-log1pl
-log2
-log2f
-log2l
-logb
-logbf
-logbl
-logf
-logl
-lrint
-lrintf
-lrintl
-lround
-lroundf
-lroundl
-modf
-modff
-modfl
-nan
-nanf
-nanl
-nearbyint
-nearbyintf
-nearbyintl
-nextafter
-nextafterf
-nextafterl
-nexttoward
-nexttowardf
-nexttowardl
-pow
-powf
-powl
-remainder
-remainderf
-remainderl
-remquo
-remquof
-remquol
-rint
-rintf
-rintl
-round
-roundf
-roundl
-scalb
-scalbf
-scalbln
-scalblnf
-scalblnl
-scalbn
-scalbnf
-scalbnl
-significand
-significandf
-significandl
-sin
-sincos
-sincosf
-sincosl
-sinf
-sinh
-sinhf
-sinhl
-sinl
-sqrt
-sqrtf
-sqrtl
-tan
-tanf
-tanh
-tanhf
-tanhl
-tanl
-tgamma
-tgammaf
-tgammal
-trunc
-truncf
-truncl
-y0
-y0f
-y1
-y1f
-yn
-ynf
diff --git a/ndk/platforms/android-20/arch-x86/symbols/libm.so.variables.txt b/ndk/platforms/android-20/arch-x86/symbols/libm.so.variables.txt
deleted file mode 100644
index 6e5cdee..0000000
--- a/ndk/platforms/android-20/arch-x86/symbols/libm.so.variables.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-__fe_dfl_env
-__has_sse
-signgam
diff --git a/ndk/platforms/android-20/arch-x86/symbols/libstdc++.so.functions.txt b/ndk/platforms/android-20/arch-x86/symbols/libstdc++.so.functions.txt
deleted file mode 100644
index 991ae87..0000000
--- a/ndk/platforms/android-20/arch-x86/symbols/libstdc++.so.functions.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-_ZN9type_infoC1ERKS_
-_ZN9type_infoC1Ev
-_ZN9type_infoC2ERKS_
-_ZN9type_infoC2Ev
-_ZN9type_infoD0Ev
-_ZN9type_infoD1Ev
-_ZN9type_infoD2Ev
-_ZNK9type_info4nameEv
-_ZNK9type_info6beforeERKS_
-_ZNK9type_infoeqERKS_
-_ZNK9type_infoneERKS_
-_ZdaPv
-_ZdaPvRKSt9nothrow_t
-_ZdlPv
-_ZdlPvRKSt9nothrow_t
-_Znam
-_ZnamRKSt9nothrow_t
-_Znwm
-_ZnwmRKSt9nothrow_t
-__cxa_guard_abort
-__cxa_guard_acquire
-__cxa_guard_release
-__cxa_pure_virtual
diff --git a/ndk/platforms/android-20/arch-x86/symbols/libstdc++.so.variables.txt b/ndk/platforms/android-20/arch-x86/symbols/libstdc++.so.variables.txt
deleted file mode 100644
index d5aab66..0000000
--- a/ndk/platforms/android-20/arch-x86/symbols/libstdc++.so.variables.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-_ZSt7nothrow
-_ZTV9type_info
diff --git a/ndk/platforms/android-20/arch-x86_64/include/machine/fenv.h b/ndk/platforms/android-20/arch-x86_64/include/machine/fenv.h
deleted file mode 100644
index 79a4120..0000000
--- a/ndk/platforms/android-20/arch-x86_64/include/machine/fenv.h
+++ /dev/null
@@ -1,104 +0,0 @@
-/*-
- * Copyright (c) 2004-2005 David Schultz <das (at) FreeBSD.ORG>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef _AMD64_FENV_H_
-#define _AMD64_FENV_H_
-
-#include <sys/types.h>
-
-__BEGIN_DECLS
-
-/*
- * Each symbol representing a floating point exception expands to an integer
- * constant expression with values, such that bitwise-inclusive ORs of _all
- * combinations_ of the constants result in distinct values.
- *
- * We use such values that allow direct bitwise operations on FPU/SSE registers.
- */
-#define FE_INVALID    0x01
-#define FE_DENORMAL   0x02
-#define FE_DIVBYZERO  0x04
-#define FE_OVERFLOW   0x08
-#define FE_UNDERFLOW  0x10
-#define FE_INEXACT    0x20
-
-/*
- * The following symbol is simply the bitwise-inclusive OR of all floating-point
- * exception constants defined above.
- */
-#define FE_ALL_EXCEPT   (FE_INVALID | FE_DENORMAL | FE_DIVBYZERO | \
-                         FE_OVERFLOW | FE_UNDERFLOW | FE_INEXACT)
-#define _SSE_MASK_SHIFT 7
-
-/*
- * Each symbol representing the rounding direction, expands to an integer
- * constant expression whose value is distinct non-negative value.
- *
- * We use such values that allow direct bitwise operations on FPU/SSE registers.
- */
-#define FE_TONEAREST  0x000
-#define FE_DOWNWARD   0x400
-#define FE_UPWARD     0x800
-#define FE_TOWARDZERO 0xc00
-
-/*
- * The following symbol is simply the bitwise-inclusive OR of all floating-point
- * rounding direction constants defined above.
- */
-#define _X87_ROUND_MASK  (FE_TONEAREST | FE_DOWNWARD | FE_UPWARD | \
-                          FE_TOWARDZERO)
-#define _SSE_ROUND_SHIFT 3
-
-/*
- * fenv_t represents the entire floating-point environment.
- */
-typedef struct {
-  struct {
-    __uint32_t __control;   /* Control word register */
-    __uint32_t __status;    /* Status word register */
-    __uint32_t __tag;       /* Tag word register */
-    __uint32_t __others[4]; /* EIP, Pointer Selector, etc */
-  } __x87;
-  __uint32_t __mxcsr;       /* Control, status register */
-} fenv_t;
-
-/*
- * fexcept_t represents the floating-point status flags collectively, including
- * any status the implementation associates with the flags.
- *
- * A floating-point status flag is a system variable whose value is set (but
- * never cleared) when a floating-point exception is raised, which occurs as a
- * side effect of exceptional floating-point arithmetic to provide auxiliary
- * information.
- *
- * A floating-point control mode is a system variable whose value may be set by
- * the user to affect the subsequent behavior of floating-point arithmetic.
- */
-typedef __uint32_t fexcept_t;
-
-__END_DECLS
-
-#endif /* !_AMD64_FENV_H_ */
diff --git a/ndk/platforms/android-20/arch-x86_64/lib64/libc.a b/ndk/platforms/android-20/arch-x86_64/lib64/libc.a
deleted file mode 100644
index bd52a5f..0000000
--- a/ndk/platforms/android-20/arch-x86_64/lib64/libc.a
+++ /dev/null
Binary files differ
diff --git a/ndk/platforms/android-20/arch-x86_64/lib64/libm.a b/ndk/platforms/android-20/arch-x86_64/lib64/libm.a
deleted file mode 100644
index f719483..0000000
--- a/ndk/platforms/android-20/arch-x86_64/lib64/libm.a
+++ /dev/null
Binary files differ
diff --git a/ndk/platforms/android-20/arch-x86_64/lib64/libstdc++.a b/ndk/platforms/android-20/arch-x86_64/lib64/libstdc++.a
deleted file mode 100644
index fdc3580..0000000
--- a/ndk/platforms/android-20/arch-x86_64/lib64/libstdc++.a
+++ /dev/null
Binary files differ
diff --git a/ndk/platforms/android-20/arch-x86_64/lib64/libz.a b/ndk/platforms/android-20/arch-x86_64/lib64/libz.a
deleted file mode 100644
index 3b2c4f2..0000000
--- a/ndk/platforms/android-20/arch-x86_64/lib64/libz.a
+++ /dev/null
Binary files differ
diff --git a/ndk/platforms/android-20/arch-x86_64/symbols/libc.so.functions.txt b/ndk/platforms/android-20/arch-x86_64/symbols/libc.so.functions.txt
deleted file mode 100644
index b6b8c9f..0000000
--- a/ndk/platforms/android-20/arch-x86_64/symbols/libc.so.functions.txt
+++ /dev/null
@@ -1,1167 +0,0 @@
-MD5_Final
-MD5_Init
-MD5_Update
-SHA1Final
-SHA1Init
-SHA1Transform
-SHA1Update
-_Exit
-_Unwind_Backtrace
-_Unwind_DeleteException
-_Unwind_FindEnclosingFunction
-_Unwind_Find_FDE
-_Unwind_ForcedUnwind
-_Unwind_GetCFA
-_Unwind_GetDataRelBase
-_Unwind_GetGR
-_Unwind_GetIP
-_Unwind_GetIPInfo
-_Unwind_GetLanguageSpecificData
-_Unwind_GetRegionStart
-_Unwind_GetTextRelBase
-_Unwind_RaiseException
-_Unwind_Resume
-_Unwind_Resume_or_Rethrow
-_Unwind_SetGR
-_Unwind_SetIP
-__FD_CLR_chk
-__FD_ISSET_chk
-__FD_SET_chk
-__android_set_abort_message
-__arc4_getbyte
-__assert
-__assert2
-__b64_ntop
-__b64_pton
-__bionic_name_mem
-__cxa_atexit
-__cxa_finalize
-__deregister_frame
-__deregister_frame_info
-__deregister_frame_info_bases
-__dn_comp
-__dn_count_labels
-__dn_skipname
-__dorand48
-__errno
-__evAddTime
-__evCmpTime
-__evConsIovec
-__evConsTime
-__evNowTime
-__evSubTime
-__evTimeSpec
-__evTimeVal
-__evUTCTime
-__fgets_chk
-__fgetwc_unlock
-__findenv
-__fp_nquery
-__fp_query
-__fpclassify
-__fpclassifyd
-__fpclassifyf
-__fpclassifyl
-__fputwc_unlock
-__frame_state_for
-__futex_syscall3
-__futex_syscall4
-__futex_wait
-__futex_wait_ex
-__futex_wake
-__futex_wake_ex
-__get_h_errno
-__get_sp
-__hostalias
-__isfinite
-__isfinitef
-__isfinitel
-__isinf
-__isinff
-__isinfl
-__isnan
-__isnanf
-__isnanl
-__isnormal
-__isnormalf
-__isnormall
-__libc_current_sigrtmax
-__libc_current_sigrtmin
-__libc_fini
-__libc_init
-__loc_aton
-__loc_ntoa
-__memcmp16
-__memcpy_chk
-__memmove_chk
-__memset_chk
-__multf3
-__ns_format_ttl
-__ns_get16
-__ns_get32
-__ns_initparse
-__ns_makecanon
-__ns_msg_getflag
-__ns_name_compress
-__ns_name_eq
-__ns_name_labels
-__ns_name_length
-__ns_name_map
-__ns_name_ntol
-__ns_name_ntop
-__ns_name_owned
-__ns_name_pack
-__ns_name_pton
-__ns_name_pton2
-__ns_name_rollback
-__ns_name_skip
-__ns_name_uncompress
-__ns_name_unpack
-__ns_name_unpack2
-__ns_parserr
-__ns_parserr2
-__ns_put16
-__ns_put32
-__ns_samename
-__ns_skiprr
-__ns_sprintrr
-__ns_sprintrrf
-__open_2
-__openat_2
-__p_cdname
-__p_cdnname
-__p_class
-__p_fqname
-__p_fqnname
-__p_option
-__p_query
-__p_rcode
-__p_secstodate
-__p_section
-__p_sockun
-__p_time
-__p_type
-__popcountdi2
-__pthread_cleanup_pop
-__pthread_cleanup_push
-__pthread_gettid
-__putlong
-__putshort
-__read_chk
-__recvfrom_chk
-__register_frame
-__register_frame_info
-__register_frame_info_bases
-__register_frame_info_table
-__register_frame_info_table_bases
-__register_frame_table
-__res_close
-__res_dnok
-__res_get_nibblesuffix
-__res_get_nibblesuffix2
-__res_get_state
-__res_get_static
-__res_getservers
-__res_hnok
-__res_hostalias
-__res_isourserver
-__res_mailok
-__res_nameinquery
-__res_nametoclass
-__res_nametotype
-__res_nclose
-__res_ndestroy
-__res_ninit
-__res_nmkquery
-__res_nopt
-__res_nquery
-__res_nquerydomain
-__res_nsearch
-__res_nsend
-__res_opt
-__res_ownok
-__res_pquery
-__res_put_state
-__res_queriesmatch
-__res_querydomain
-__res_randomid
-__res_send
-__res_send_setqhook
-__res_send_setrhook
-__res_setservers
-__res_vinit
-__sched_cpualloc
-__sched_cpucount
-__sched_cpufree
-__sclose
-__set_tls
-__sflags
-__sflush
-__sflush_locked
-__sfp
-__sfp_handle_exceptions
-__sfvwrite
-__sinit
-__smakebuf
-__snprintf_chk
-__sprintf_chk
-__sread
-__srefill
-__srget
-__sseek
-__stack_chk_fail
-__stpcpy_chk
-__stpncpy_chk
-__stpncpy_chk2
-__strcat_chk
-__strchr_chk
-__strcpy_chk
-__strlcat_chk
-__strlcpy_chk
-__strlen_chk
-__strncat_chk
-__strncpy_chk
-__strncpy_chk2
-__strrchr_chk
-__svfscanf
-__swbuf
-__swhatbuf
-__swrite
-__swsetup
-__sym_ntop
-__sym_ntos
-__sym_ston
-__system_properties_init
-__system_property_add
-__system_property_area_init
-__system_property_find
-__system_property_find_compat
-__system_property_find_nth
-__system_property_foreach
-__system_property_foreach_compat
-__system_property_get
-__system_property_read
-__system_property_read_compat
-__system_property_serial
-__system_property_set
-__system_property_set_filename
-__system_property_update
-__system_property_wait_any
-__umask_chk
-__ungetwc
-__vfprintf
-__vfwprintf
-__vfwscanf
-__vsnprintf_chk
-__vsprintf_chk
-_cleanup
-_exit
-_exit_with_stack_teardown
-_fwalk
-_getlong
-_getshort
-_longjmp
-_resolv_flush_cache_for_net
-_resolv_set_nameservers_for_net
-_setjmp
-_thread_created_hook
-_tolower
-_toupper
-abort
-abs
-accept
-accept4
-access
-acct
-alarm
-alphasort
-alphasort64
-android_getaddrinfofornet
-android_gethostbyaddrfornet
-android_gethostbyaddrfornet_proxy
-android_gethostbyaddrfornet_real
-android_gethostbynamefornet
-android_getnameinfofornet
-arc4random
-arc4random_addrandom
-arc4random_buf
-arc4random_stir
-arc4random_uniform
-asctime
-asctime_r
-asprintf
-at_quick_exit
-atof
-atoi
-atol
-atoll
-basename
-basename_r
-bcopy
-bind
-bindresvport
-brk
-bsd_signal
-bsearch
-btowc
-bzero
-calloc
-capget
-capset
-cfgetispeed
-cfgetospeed
-cfmakeraw
-cfsetispeed
-cfsetospeed
-cfsetspeed
-chdir
-chmod
-chown
-chroot
-clearenv
-clearerr
-clock
-clock_getres
-clock_gettime
-clock_nanosleep
-clock_settime
-clone
-close
-closedir
-closelog
-closelog_r
-cmsg_nxthdr
-connect
-creat
-creat64
-ctime
-ctime_r
-daemon
-delete_module
-difftime
-dirfd
-dirname
-dirname_r
-div
-dlbulk_free
-dlcalloc
-dlfree
-dlindependent_calloc
-dlindependent_comalloc
-dlmallinfo
-dlmalloc
-dlmalloc_footprint
-dlmalloc_footprint_limit
-dlmalloc_inspect_all
-dlmalloc_max_footprint
-dlmalloc_set_footprint_limit
-dlmalloc_stats
-dlmalloc_trim
-dlmalloc_usable_size
-dlmallopt
-dlmemalign
-dlposix_memalign
-dlpvalloc
-dlrealloc
-dlrealloc_in_place
-dlvalloc
-dn_expand
-drand48
-dup
-dup2
-dup3
-duplocale
-endmntent
-endpwent
-endservent
-endusershell
-endutent
-epoll_create
-epoll_create1
-epoll_ctl
-epoll_pwait
-epoll_wait
-erand48
-err
-errx
-ether_aton
-ether_aton_r
-ether_ntoa
-ether_ntoa_r
-eventfd
-eventfd_read
-eventfd_write
-execl
-execle
-execlp
-execv
-execve
-execvp
-execvpe
-exit
-faccessat
-fallocate
-fallocate64
-fchdir
-fchmod
-fchmodat
-fchown
-fchownat
-fclose
-fcntl
-fdatasync
-fdopen
-fdopendir
-fdprintf
-feof
-ferror
-fflush
-ffs
-fgetc
-fgetln
-fgetpos
-fgets
-fgetwc
-fgetws
-fgetxattr
-fileno
-flistxattr
-flock
-flockfile
-fnmatch
-fopen
-fork
-fpathconf
-fprintf
-fpurge
-fputc
-fputs
-fputwc
-fputws
-fread
-free
-freeaddrinfo
-freelocale
-fremovexattr
-freopen
-fscanf
-fseek
-fseeko
-fsetpos
-fsetxattr
-fstat
-fstat64
-fstatat
-fstatat64
-fstatfs
-fstatfs64
-fstatvfs
-fstatvfs64
-fsync
-ftell
-ftello
-ftime
-ftok
-ftruncate
-ftruncate64
-ftrylockfile
-fts_children
-fts_close
-fts_open
-fts_read
-fts_set
-ftw
-ftw64
-funlockfile
-funopen
-futex
-futimens
-fwide
-fwprintf
-fwrite
-fwscanf
-gai_strerror
-get_malloc_leak_info
-getaddrinfo
-getauxval
-getc
-getc_unlocked
-getchar
-getchar_unlocked
-getcwd
-getdelim
-getdents
-getdtablesize
-getegid
-getenv
-geteuid
-getgid
-getgrgid
-getgrnam
-getgrouplist
-getgroups
-gethostbyaddr
-gethostbyname
-gethostbyname2
-gethostbyname_r
-gethostent
-gethostname
-getitimer
-getline
-getlogin
-getmntent
-getmntent_r
-getnameinfo
-getnetbyaddr
-getnetbyname
-getopt
-getopt_long
-getopt_long_only
-getpagesize
-getpeername
-getpgid
-getpgrp
-getpid
-getppid
-getpriority
-getprogname
-getprotobyname
-getprotobynumber
-getpt
-getpwnam
-getpwnam_r
-getpwuid
-getpwuid_r
-getresgid
-getresuid
-getrlimit
-getrlimit64
-getrusage
-gets
-getservbyname
-getservbyport
-getservent
-getservent_r
-getsid
-getsockname
-getsockopt
-gettid
-gettimeofday
-getuid
-getusershell
-getutent
-getwc
-getwchar
-getxattr
-gmtime
-gmtime_r
-herror
-hstrerror
-htonl
-htons
-if_indextoname
-if_nametoindex
-imaxabs
-imaxdiv
-index
-inet_addr
-inet_aton
-inet_lnaof
-inet_makeaddr
-inet_netof
-inet_network
-inet_nsap_addr
-inet_nsap_ntoa
-inet_ntoa
-inet_ntop
-inet_pton
-init_module
-initgroups
-inotify_add_watch
-inotify_init
-inotify_init1
-inotify_rm_watch
-ioctl
-ioprio_get
-ioprio_set
-isalnum
-isalpha
-isascii
-isatty
-isblank
-iscntrl
-isdigit
-isfinite
-isfinitef
-isfinitel
-isgraph
-isinf
-isinff
-isinfl
-islower
-isnan
-isnanf
-isnanl
-isnormal
-isnormalf
-isnormall
-isprint
-ispunct
-issetugid
-isspace
-isupper
-iswalnum
-iswalpha
-iswblank
-iswcntrl
-iswctype
-iswdigit
-iswgraph
-iswlower
-iswprint
-iswpunct
-iswspace
-iswupper
-iswxdigit
-isxdigit
-jrand48
-kill
-killpg
-klogctl
-labs
-lchown
-ldexp
-ldiv
-lfind
-lgetxattr
-link
-linkat
-listen
-listxattr
-llabs
-lldiv
-llistxattr
-localeconv
-localtime
-localtime_r
-localtime_tz
-longjmp
-longjmperror
-lrand48
-lremovexattr
-lsearch
-lseek
-lseek64
-lsetxattr
-lstat
-lstat64
-madvise
-mallinfo
-malloc
-malloc_usable_size
-mbrlen
-mbrtowc
-mbsinit
-mbsnrtowcs
-mbsrtowcs
-mbstowcs
-mbtowc
-memalign
-memccpy
-memchr
-memcmp
-memcpy
-memmem
-memmove
-memrchr
-memset
-mincore
-mkdir
-mkdirat
-mkdtemp
-mkfifo
-mknod
-mknodat
-mkstemp
-mkstemp64
-mkstemps
-mktemp
-mktime
-mktime_tz
-mlock
-mlockall
-mmap
-mmap64
-mount
-mprotect
-mrand48
-mremap
-msync
-munlock
-munlockall
-munmap
-nanosleep
-newlocale
-nftw
-nftw64
-nice
-nrand48
-nsdispatch
-ntohl
-ntohs
-open
-open64
-openat
-openat64
-opendir
-openlog
-openlog_r
-pathconf
-pause
-pclose
-perf_event_open
-perror
-personality
-pipe
-pipe2
-poll
-popen
-posix2time
-posix_fallocate
-posix_fallocate64
-posix_memalign
-ppoll
-prctl
-pread
-pread64
-printf
-prlimit
-prlimit64
-pselect
-psiginfo
-psignal
-pthread_atfork
-pthread_attr_destroy
-pthread_attr_getdetachstate
-pthread_attr_getguardsize
-pthread_attr_getschedparam
-pthread_attr_getschedpolicy
-pthread_attr_getscope
-pthread_attr_getstack
-pthread_attr_getstacksize
-pthread_attr_init
-pthread_attr_setdetachstate
-pthread_attr_setguardsize
-pthread_attr_setschedparam
-pthread_attr_setschedpolicy
-pthread_attr_setscope
-pthread_attr_setstack
-pthread_attr_setstacksize
-pthread_cond_broadcast
-pthread_cond_destroy
-pthread_cond_init
-pthread_cond_signal
-pthread_cond_timedwait
-pthread_cond_wait
-pthread_condattr_destroy
-pthread_condattr_getclock
-pthread_condattr_getpshared
-pthread_condattr_init
-pthread_condattr_setclock
-pthread_condattr_setpshared
-pthread_create
-pthread_detach
-pthread_equal
-pthread_exit
-pthread_getattr_np
-pthread_getcpuclockid
-pthread_getschedparam
-pthread_getspecific
-pthread_join
-pthread_key_create
-pthread_key_delete
-pthread_kill
-pthread_mutex_destroy
-pthread_mutex_init
-pthread_mutex_lock
-pthread_mutex_timedlock
-pthread_mutex_trylock
-pthread_mutex_unlock
-pthread_mutexattr_destroy
-pthread_mutexattr_getpshared
-pthread_mutexattr_gettype
-pthread_mutexattr_init
-pthread_mutexattr_setpshared
-pthread_mutexattr_settype
-pthread_once
-pthread_rwlock_destroy
-pthread_rwlock_init
-pthread_rwlock_rdlock
-pthread_rwlock_timedrdlock
-pthread_rwlock_timedwrlock
-pthread_rwlock_tryrdlock
-pthread_rwlock_trywrlock
-pthread_rwlock_unlock
-pthread_rwlock_wrlock
-pthread_rwlockattr_destroy
-pthread_rwlockattr_getpshared
-pthread_rwlockattr_init
-pthread_rwlockattr_setpshared
-pthread_self
-pthread_setname_np
-pthread_setschedparam
-pthread_setspecific
-pthread_sigmask
-ptrace
-ptsname
-ptsname_r
-putc
-putc_unlocked
-putchar
-putchar_unlocked
-putenv
-puts
-pututline
-putw
-putwc
-putwchar
-pvalloc
-pwrite
-pwrite64
-qsort
-quick_exit
-raise
-read
-readahead
-readdir
-readdir64
-readdir64_r
-readdir_r
-readlink
-readlinkat
-readv
-realloc
-realpath
-reboot
-recv
-recvfrom
-recvmmsg
-recvmsg
-regcomp
-regerror
-regexec
-regfree
-remove
-removexattr
-rename
-renameat
-res_init
-res_mkquery
-res_query
-res_search
-res_setmark
-res_setnetid
-rewind
-rewinddir
-rmdir
-sbrk
-scandir
-scandir64
-scanf
-sched_get_priority_max
-sched_get_priority_min
-sched_getaffinity
-sched_getcpu
-sched_getparam
-sched_getscheduler
-sched_rr_get_interval
-sched_setaffinity
-sched_setparam
-sched_setscheduler
-sched_yield
-seed48
-select
-sem_close
-sem_destroy
-sem_getvalue
-sem_init
-sem_open
-sem_post
-sem_timedwait
-sem_trywait
-sem_unlink
-sem_wait
-send
-sendfile
-sendfile64
-sendmmsg
-sendmsg
-sendto
-setbuf
-setbuffer
-setegid
-setenv
-seteuid
-setgid
-setgroups
-setitimer
-setjmp
-setlinebuf
-setlocale
-setlogmask
-setlogmask_r
-setmntent
-setns
-setpgid
-setpgrp
-setpriority
-setprogname
-setregid
-setresgid
-setresuid
-setreuid
-setrlimit
-setrlimit64
-setservent
-setsid
-setsockopt
-settimeofday
-setuid
-setusershell
-setutent
-setvbuf
-setxattr
-shutdown
-sigaction
-sigaddset
-sigaltstack
-sigblock
-sigdelset
-sigemptyset
-sigfillset
-siginterrupt
-sigismember
-siglongjmp
-signal
-signalfd
-signalfd4
-sigpending
-sigprocmask
-sigsetjmp
-sigsetmask
-sigsuspend
-sigwait
-sleep
-snprintf
-socket
-socketpair
-sprintf
-srand48
-sscanf
-stat
-stat64
-statfs
-statfs64
-statvfs
-statvfs64
-stpcpy
-stpncpy
-strcasecmp
-strcasestr
-strcat
-strchr
-strcmp
-strcoll
-strcpy
-strcspn
-strdup
-strerror
-strerror_r
-strftime
-strftime_tz
-strlcat
-strlcpy
-strlen
-strncasecmp
-strncat
-strncmp
-strncpy
-strndup
-strnlen
-strpbrk
-strptime
-strrchr
-strsep
-strsignal
-strspn
-strstr
-strtod
-strtof
-strtoimax
-strtok
-strtok_r
-strtol
-strtold
-strtoll
-strtoq
-strtoul
-strtoull
-strtoumax
-strtouq
-strxfrm
-swapoff
-swapon
-swprintf
-swscanf
-symlink
-symlinkat
-sync
-syscall
-sysconf
-sysinfo
-syslog
-syslog_r
-system
-sysv_signal
-tcdrain
-tcflow
-tcflush
-tcgetattr
-tcgetpgrp
-tcgetsid
-tcsendbreak
-tcsetattr
-tcsetpgrp
-tdelete
-tdestroy
-tempnam
-tfind
-tgkill
-time
-time2posix
-timegm
-timelocal
-timer_create
-timer_delete
-timer_getoverrun
-timer_gettime
-timer_settime
-timerfd_create
-timerfd_gettime
-timerfd_settime
-times
-tkill
-tmpfile
-tmpnam
-toascii
-tolower
-toupper
-towlower
-towupper
-truncate
-truncate64
-tsearch
-ttyname
-ttyname_r
-tzset
-tzsetwall
-umask
-umount
-umount2
-uname
-ungetc
-ungetwc
-unlink
-unlinkat
-unlockpt
-unsetenv
-unshare
-uselocale
-usleep
-utime
-utimensat
-utimes
-utmpname
-valloc
-vasprintf
-verr
-verrx
-vfdprintf
-vfork
-vfprintf
-vfscanf
-vfwprintf
-vfwscanf
-vprintf
-vscanf
-vsnprintf
-vsprintf
-vsscanf
-vswprintf
-vswscanf
-vsyslog
-vsyslog_r
-vwarn
-vwarnx
-vwprintf
-vwscanf
-wait
-wait3
-wait4
-waitid
-waitpid
-warn
-warnx
-wcpcpy
-wcpncpy
-wcrtomb
-wcscasecmp
-wcscat
-wcschr
-wcscmp
-wcscoll
-wcscpy
-wcscspn
-wcsdup
-wcsftime
-wcslcat
-wcslcpy
-wcslen
-wcsncasecmp
-wcsncat
-wcsncmp
-wcsncpy
-wcsnlen
-wcsnrtombs
-wcspbrk
-wcsrchr
-wcsrtombs
-wcsspn
-wcsstr
-wcstod
-wcstof
-wcstoimax
-wcstok
-wcstol
-wcstold
-wcstoll
-wcstombs
-wcstoul
-wcstoull
-wcstoumax
-wcswcs
-wcswidth
-wcsxfrm
-wctob
-wctomb
-wctype
-wcwidth
-wmemchr
-wmemcmp
-wmemcpy
-wmemmove
-wmemset
-wprintf
-write
-writev
-wscanf
diff --git a/ndk/platforms/android-20/arch-x86_64/symbols/libc.so.variables.txt b/ndk/platforms/android-20/arch-x86_64/symbols/libc.so.variables.txt
deleted file mode 100644
index fc7f9d8..0000000
--- a/ndk/platforms/android-20/arch-x86_64/symbols/libc.so.variables.txt
+++ /dev/null
@@ -1,45 +0,0 @@
-_C_ctype_
-_C_tolower_
-_C_toupper_
-__atexit
-__atexit_invalid
-__isthreaded
-__libc_malloc_default_dispatch
-__libc_malloc_dispatch
-__netdClientDispatch
-__p_cert_syms
-__p_class_syms
-__p_key_syms
-__p_rcode_syms
-__p_type_syms
-__popcount_tab
-__progname
-__rand48_add
-__rand48_mult
-__rand48_seed
-__sF
-__sdidinit
-__sglue
-__stack_chk_guard
-__system_property_area__
-_ctype_
-_ns_flagdata
-_tolower_tab_
-_toupper_tab_
-daylight
-environ
-g_allocations_mutex
-g_hash_table
-g_malloc_debug_backlog
-g_malloc_debug_level
-h_errlist
-h_nerr
-optarg
-opterr
-optind
-optopt
-optreset
-sys_siglist
-sys_signame
-timezone
-tzname
diff --git a/ndk/platforms/android-20/arch-x86_64/symbols/libm.so.functions.txt b/ndk/platforms/android-20/arch-x86_64/symbols/libm.so.functions.txt
deleted file mode 100644
index 9a5ee58..0000000
--- a/ndk/platforms/android-20/arch-x86_64/symbols/libm.so.functions.txt
+++ /dev/null
@@ -1,290 +0,0 @@
-__addtf3
-__divtf3
-__eqtf2
-__exp__D
-__extenddftf2
-__extendsftf2
-__fixtfdi
-__fixtfsi
-__floatsitf
-__getf2
-__gttf2
-__ieee754_rem_pio2
-__ieee754_rem_pio2f
-__kernel_cos
-__kernel_cosdf
-__kernel_cosl
-__kernel_rem_pio2
-__kernel_sin
-__kernel_sindf
-__kernel_sinl
-__kernel_tan
-__kernel_tandf
-__kernel_tanl
-__ldexp_cexp
-__ldexp_cexpf
-__ldexp_exp
-__ldexp_expf
-__letf2
-__log__D
-__lttf2
-__multf3
-__netf2
-__sfp_handle_exceptions
-__signbit
-__signbitf
-__signbitl
-__subtf3
-__trunctfdf2
-__trunctfsf2
-_scan_nan
-acos
-acosf
-acosh
-acoshf
-acoshl
-acosl
-asin
-asinf
-asinh
-asinhf
-asinhl
-asinl
-atan
-atan2
-atan2f
-atan2l
-atanf
-atanh
-atanhf
-atanhl
-atanl
-cabs
-cabsf
-carg
-cargf
-cbrt
-cbrtf
-cbrtl
-ccos
-ccosf
-ccosh
-ccoshf
-ceil
-ceilf
-ceill
-cexp
-cexpf
-cimag
-cimagf
-conj
-conjf
-copysign
-copysignf
-copysignl
-cos
-cosf
-cosh
-coshf
-coshl
-cosl
-cproj
-cprojf
-creal
-crealf
-csin
-csinf
-csinh
-csinhf
-csqrt
-csqrtf
-ctan
-ctanf
-ctanh
-ctanhf
-drem
-dremf
-erf
-erfc
-erfcf
-erfcl
-erff
-erfl
-exp
-exp2
-exp2f
-exp2l
-expf
-expl
-expm1
-expm1f
-expm1l
-fabs
-fabsf
-fabsl
-fdim
-fdimf
-fdiml
-feclearexcept
-fedisableexcept
-feenableexcept
-fegetenv
-fegetexcept
-fegetexceptflag
-fegetround
-feholdexcept
-feraiseexcept
-fesetenv
-fesetexceptflag
-fesetround
-fetestexcept
-feupdateenv
-finite
-finitef
-floor
-floorf
-floorl
-fma
-fmaf
-fmal
-fmax
-fmaxf
-fmaxl
-fmin
-fminf
-fminl
-fmod
-fmodf
-fmodl
-frexp
-frexpf
-frexpl
-gamma
-gamma_r
-gammaf
-gammaf_r
-hypot
-hypotf
-hypotl
-ilogb
-ilogbf
-ilogbl
-imprecise_coshl
-imprecise_erfcl
-imprecise_erfl
-imprecise_lgammal
-imprecise_powl
-imprecise_sinhl
-imprecise_tanhl
-imprecise_tgammal
-j0
-j0f
-j1
-j1f
-jn
-jnf
-ldexpf
-ldexpl
-lgamma
-lgamma_r
-lgammaf
-lgammaf_r
-lgammal
-llrint
-llrintf
-llrintl
-llround
-llroundf
-llroundl
-log
-log10
-log10f
-log10l
-log1p
-log1pf
-log1pl
-log2
-log2f
-log2l
-logb
-logbf
-logbl
-logf
-logl
-lrint
-lrintf
-lrintl
-lround
-lroundf
-lroundl
-modf
-modff
-modfl
-nan
-nanf
-nanl
-nearbyint
-nearbyintf
-nearbyintl
-nextafter
-nextafterf
-nextafterl
-nexttoward
-nexttowardf
-nexttowardl
-pow
-powf
-powl
-remainder
-remainderf
-remainderl
-remquo
-remquof
-remquol
-rint
-rintf
-rintl
-round
-roundf
-roundl
-scalb
-scalbf
-scalbln
-scalblnf
-scalblnl
-scalbn
-scalbnf
-scalbnl
-significand
-significandf
-significandl
-sin
-sincos
-sincosf
-sincosl
-sinf
-sinh
-sinhf
-sinhl
-sinl
-sqrt
-sqrtf
-sqrtl
-tan
-tanf
-tanh
-tanhf
-tanhl
-tanl
-tgamma
-tgammaf
-tgammal
-trunc
-truncf
-truncl
-y0
-y0f
-y1
-y1f
-yn
-ynf
diff --git a/ndk/platforms/android-20/arch-x86_64/symbols/libm.so.variables.txt b/ndk/platforms/android-20/arch-x86_64/symbols/libm.so.variables.txt
deleted file mode 100644
index 9d7f213..0000000
--- a/ndk/platforms/android-20/arch-x86_64/symbols/libm.so.variables.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-_ItL_aT
-_ItL_atanhi
-_ItL_atanlo
-_ItL_pS0
-_ItL_pS1
-_ItL_pS2
-_ItL_pS3
-_ItL_pS4
-_ItL_pS5
-_ItL_pS6
-_ItL_pS7
-_ItL_pS8
-_ItL_pS9
-_ItL_pi_lo
-_ItL_qS1
-_ItL_qS2
-_ItL_qS3
-_ItL_qS4
-_ItL_qS5
-_ItL_qS6
-_ItL_qS7
-_ItL_qS8
-_ItL_qS9
-__fe_dfl_env
-signgam
diff --git a/ndk/platforms/android-20/arch-x86_64/symbols/libstdc++.so.functions.txt b/ndk/platforms/android-20/arch-x86_64/symbols/libstdc++.so.functions.txt
deleted file mode 100644
index 991ae87..0000000
--- a/ndk/platforms/android-20/arch-x86_64/symbols/libstdc++.so.functions.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-_ZN9type_infoC1ERKS_
-_ZN9type_infoC1Ev
-_ZN9type_infoC2ERKS_
-_ZN9type_infoC2Ev
-_ZN9type_infoD0Ev
-_ZN9type_infoD1Ev
-_ZN9type_infoD2Ev
-_ZNK9type_info4nameEv
-_ZNK9type_info6beforeERKS_
-_ZNK9type_infoeqERKS_
-_ZNK9type_infoneERKS_
-_ZdaPv
-_ZdaPvRKSt9nothrow_t
-_ZdlPv
-_ZdlPvRKSt9nothrow_t
-_Znam
-_ZnamRKSt9nothrow_t
-_Znwm
-_ZnwmRKSt9nothrow_t
-__cxa_guard_abort
-__cxa_guard_acquire
-__cxa_guard_release
-__cxa_pure_virtual
diff --git a/ndk/platforms/android-20/arch-x86_64/symbols/libstdc++.so.variables.txt b/ndk/platforms/android-20/arch-x86_64/symbols/libstdc++.so.variables.txt
deleted file mode 100644
index d5aab66..0000000
--- a/ndk/platforms/android-20/arch-x86_64/symbols/libstdc++.so.variables.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-_ZSt7nothrow
-_ZTV9type_info
diff --git a/ndk/platforms/android-20/include/SLES/OpenSLES.h b/ndk/platforms/android-20/include/SLES/OpenSLES.h
new file mode 100644
index 0000000..8686997
--- /dev/null
+++ b/ndk/platforms/android-20/include/SLES/OpenSLES.h
@@ -0,0 +1,2774 @@
+/*
+ * Copyright (c) 2007-2009 The Khronos Group Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of
+ * this software and /or associated documentation files (the "Materials "), to
+ * deal in the Materials without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Materials, and to permit persons to whom the Materials are
+ * furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Materials.
+ *
+ * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS IN THE
+ * MATERIALS.
+ *
+ * OpenSLES.h - OpenSL ES version 1.0.1
+ *
+ */
+
+/****************************************************************************/
+/* NOTE: This file is a standard OpenSL ES header file and should not be    */
+/* modified in any way.                                                     */
+/****************************************************************************/
+
+#ifndef OPENSL_ES_H_
+#define OPENSL_ES_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "OpenSLES_Platform.h"
+
+
+/*****************************************************************************/
+/* Common types, structures, and defines                                */
+/*****************************************************************************/
+
+#ifndef _KHRONOS_KEYS_
+#define _KHRONOS_KEYS_
+
+#define KHRONOS_TITLE "KhronosTitle"
+#define KHRONOS_ALBUM "KhronosAlbum"
+#define KHRONOS_TRACK_NUMBER "KhronosTrackNumber"
+#define KHRONOS_ARTIST "KhronosArtist"
+#define KHRONOS_GENRE "KhronosGenre"
+#define KHRONOS_YEAR "KhronosYear"
+#define KHRONOS_COMMENT "KhronosComment"
+#define KHRONOS_ARTIST_URL "KhronosArtistURL"
+#define KHRONOS_CONTENT_URL "KhronosContentURL"
+#define KHRONOS_RATING "KhronosRating"
+#define KHRONOS_ALBUM_ART "KhronosAlbumArt"
+#define KHRONOS_COPYRIGHT "KhronosCopyright"
+
+#endif
+
+
+/* remap common types to SL types for clarity */
+typedef sl_int8_t              SLint8;          /* 8 bit signed integer  */
+typedef sl_uint8_t             SLuint8;         /* 8 bit unsigned integer */
+typedef sl_int16_t             SLint16;         /* 16 bit signed integer */
+typedef sl_uint16_t            SLuint16;        /* 16 bit unsigned integer */
+typedef sl_int32_t             SLint32;           /* 32 bit signed integer */
+typedef sl_uint32_t            SLuint32;          /* 32 bit unsigned integer */
+
+typedef SLuint32                    SLboolean;
+#define SL_BOOLEAN_FALSE            ((SLboolean) 0x00000000)
+#define SL_BOOLEAN_TRUE             ((SLboolean) 0x00000001)
+
+typedef SLuint8						SLchar;			/* UTF-8 is to be used */
+typedef SLint16						SLmillibel;
+typedef SLuint32					SLmillisecond;
+typedef SLuint32					SLmilliHertz;
+typedef SLint32						SLmillimeter;
+typedef SLint32						SLmillidegree;
+typedef SLint16						SLpermille;
+typedef SLuint32					SLmicrosecond;
+typedef SLuint32					SLresult;
+
+#define SL_MILLIBEL_MAX 	((SLmillibel) 0x7FFF)
+#define SL_MILLIBEL_MIN 	((SLmillibel) (-SL_MILLIBEL_MAX-1))
+
+#define SL_MILLIHERTZ_MAX	((SLmilliHertz) 0xFFFFFFFF)
+#define SL_MILLIMETER_MAX	((SLmillimeter) 0x7FFFFFFF)
+
+/** Interface ID defined as a UUID */
+typedef const struct SLInterfaceID_ {
+    SLuint32 time_low;
+    SLuint16 time_mid;
+    SLuint16 time_hi_and_version;
+    SLuint16 clock_seq;
+    SLuint8  node[6];
+} * SLInterfaceID;
+
+/* Forward declaration for the object interface */
+struct SLObjectItf_;
+
+typedef const struct SLObjectItf_ * const * SLObjectItf;
+
+/* Objects ID's */
+
+#define SL_OBJECTID_ENGINE			((SLuint32) 0x00001001)
+#define SL_OBJECTID_LEDDEVICE		((SLuint32) 0x00001002)
+#define SL_OBJECTID_VIBRADEVICE		((SLuint32) 0x00001003)
+#define SL_OBJECTID_AUDIOPLAYER		((SLuint32) 0x00001004)
+#define SL_OBJECTID_AUDIORECORDER	((SLuint32) 0x00001005)
+#define SL_OBJECTID_MIDIPLAYER		((SLuint32) 0x00001006)
+#define SL_OBJECTID_LISTENER		((SLuint32) 0x00001007)
+#define SL_OBJECTID_3DGROUP			((SLuint32) 0x00001008)
+#define SL_OBJECTID_OUTPUTMIX		((SLuint32) 0x00001009)
+#define SL_OBJECTID_METADATAEXTRACTOR	((SLuint32) 0x0000100A)
+
+
+/* SL Profiles */
+
+#define SL_PROFILES_PHONE	((SLuint16) 0x0001)
+#define SL_PROFILES_MUSIC	((SLuint16) 0x0002)
+#define SL_PROFILES_GAME	((SLuint16) 0x0004)
+
+/* Types of voices supported by the system */
+
+#define SL_VOICETYPE_2D_AUDIO		((SLuint16) 0x0001)
+#define SL_VOICETYPE_MIDI			((SLuint16) 0x0002)
+#define SL_VOICETYPE_3D_AUDIO 		((SLuint16) 0x0004)
+#define SL_VOICETYPE_3D_MIDIOUTPUT 	((SLuint16) 0x0008)
+
+/* Convenient macros representing various different priority levels, for use with the SetPriority method */
+
+#define SL_PRIORITY_LOWEST		((SLint32) (-0x7FFFFFFF-1))
+#define SL_PRIORITY_VERYLOW		((SLint32) -0x60000000)
+#define SL_PRIORITY_LOW			((SLint32) -0x40000000)
+#define SL_PRIORITY_BELOWNORMAL	((SLint32) -0x20000000)
+#define SL_PRIORITY_NORMAL		((SLint32) 0x00000000)
+#define SL_PRIORITY_ABOVENORMAL	((SLint32) 0x20000000)
+#define SL_PRIORITY_HIGH		((SLint32) 0x40000000)
+#define SL_PRIORITY_VERYHIGH	((SLint32) 0x60000000)
+#define SL_PRIORITY_HIGHEST	((SLint32) 0x7FFFFFFF)
+
+
+/** These macros list the various sample formats that are possible on audio input and output devices. */
+
+#define SL_PCMSAMPLEFORMAT_FIXED_8	((SLuint16) 0x0008)
+#define SL_PCMSAMPLEFORMAT_FIXED_16	((SLuint16) 0x0010)
+#define SL_PCMSAMPLEFORMAT_FIXED_20 	((SLuint16) 0x0014)
+#define SL_PCMSAMPLEFORMAT_FIXED_24	((SLuint16) 0x0018)
+#define SL_PCMSAMPLEFORMAT_FIXED_28 	((SLuint16) 0x001C)
+#define SL_PCMSAMPLEFORMAT_FIXED_32	((SLuint16) 0x0020)
+
+
+/** These macros specify the commonly used sampling rates (in milliHertz) supported by most audio I/O devices. */
+
+#define SL_SAMPLINGRATE_8		((SLuint32) 8000000)
+#define SL_SAMPLINGRATE_11_025	((SLuint32) 11025000)
+#define SL_SAMPLINGRATE_12		((SLuint32) 12000000)
+#define SL_SAMPLINGRATE_16		((SLuint32) 16000000)
+#define SL_SAMPLINGRATE_22_05	((SLuint32) 22050000)
+#define SL_SAMPLINGRATE_24		((SLuint32) 24000000)
+#define SL_SAMPLINGRATE_32		((SLuint32) 32000000)
+#define SL_SAMPLINGRATE_44_1	((SLuint32) 44100000)
+#define SL_SAMPLINGRATE_48		((SLuint32) 48000000)
+#define SL_SAMPLINGRATE_64		((SLuint32) 64000000)
+#define SL_SAMPLINGRATE_88_2	((SLuint32) 88200000)
+#define SL_SAMPLINGRATE_96		((SLuint32) 96000000)
+#define SL_SAMPLINGRATE_192	((SLuint32) 192000000)
+
+#define SL_SPEAKER_FRONT_LEFT			((SLuint32) 0x00000001)
+#define SL_SPEAKER_FRONT_RIGHT			((SLuint32) 0x00000002)
+#define SL_SPEAKER_FRONT_CENTER			((SLuint32) 0x00000004)
+#define SL_SPEAKER_LOW_FREQUENCY			((SLuint32) 0x00000008)
+#define SL_SPEAKER_BACK_LEFT			((SLuint32) 0x00000010)
+#define SL_SPEAKER_BACK_RIGHT			((SLuint32) 0x00000020)
+#define SL_SPEAKER_FRONT_LEFT_OF_CENTER	((SLuint32) 0x00000040)
+#define SL_SPEAKER_FRONT_RIGHT_OF_CENTER	((SLuint32) 0x00000080)
+#define SL_SPEAKER_BACK_CENTER			((SLuint32) 0x00000100)
+#define SL_SPEAKER_SIDE_LEFT			((SLuint32) 0x00000200)
+#define SL_SPEAKER_SIDE_RIGHT			((SLuint32) 0x00000400)
+#define SL_SPEAKER_TOP_CENTER			((SLuint32) 0x00000800)
+#define SL_SPEAKER_TOP_FRONT_LEFT		((SLuint32) 0x00001000)
+#define SL_SPEAKER_TOP_FRONT_CENTER		((SLuint32) 0x00002000)
+#define SL_SPEAKER_TOP_FRONT_RIGHT		((SLuint32) 0x00004000)
+#define SL_SPEAKER_TOP_BACK_LEFT			((SLuint32) 0x00008000)
+#define SL_SPEAKER_TOP_BACK_CENTER		((SLuint32) 0x00010000)
+#define SL_SPEAKER_TOP_BACK_RIGHT		((SLuint32) 0x00020000)
+
+
+/*****************************************************************************/
+/* Errors                                                                    */
+/*                                                                           */
+/*****************************************************************************/
+
+#define SL_RESULT_SUCCESS				((SLuint32) 0x00000000)
+#define SL_RESULT_PRECONDITIONS_VIOLATED	((SLuint32) 0x00000001)
+#define SL_RESULT_PARAMETER_INVALID		((SLuint32) 0x00000002)
+#define SL_RESULT_MEMORY_FAILURE			((SLuint32) 0x00000003)
+#define SL_RESULT_RESOURCE_ERROR			((SLuint32) 0x00000004)
+#define SL_RESULT_RESOURCE_LOST			((SLuint32) 0x00000005)
+#define SL_RESULT_IO_ERROR				((SLuint32) 0x00000006)
+#define SL_RESULT_BUFFER_INSUFFICIENT		((SLuint32) 0x00000007)
+#define SL_RESULT_CONTENT_CORRUPTED		((SLuint32) 0x00000008)
+#define SL_RESULT_CONTENT_UNSUPPORTED		((SLuint32) 0x00000009)
+#define SL_RESULT_CONTENT_NOT_FOUND		((SLuint32) 0x0000000A)
+#define SL_RESULT_PERMISSION_DENIED		((SLuint32) 0x0000000B)
+#define SL_RESULT_FEATURE_UNSUPPORTED		((SLuint32) 0x0000000C)
+#define SL_RESULT_INTERNAL_ERROR			((SLuint32) 0x0000000D)
+#define SL_RESULT_UNKNOWN_ERROR			((SLuint32) 0x0000000E)
+#define SL_RESULT_OPERATION_ABORTED		((SLuint32) 0x0000000F)
+#define SL_RESULT_CONTROL_LOST			((SLuint32) 0x00000010)
+
+
+/* Object state definitions */
+
+#define SL_OBJECT_STATE_UNREALIZED	((SLuint32) 0x00000001)
+#define SL_OBJECT_STATE_REALIZED		((SLuint32) 0x00000002)
+#define SL_OBJECT_STATE_SUSPENDED	((SLuint32) 0x00000003)
+
+/* Object event definitions */
+
+#define SL_OBJECT_EVENT_RUNTIME_ERROR			((SLuint32) 0x00000001)
+#define SL_OBJECT_EVENT_ASYNC_TERMINATION		((SLuint32) 0x00000002)
+#define SL_OBJECT_EVENT_RESOURCES_LOST			((SLuint32) 0x00000003)
+#define SL_OBJECT_EVENT_RESOURCES_AVAILABLE		((SLuint32) 0x00000004)
+#define SL_OBJECT_EVENT_ITF_CONTROL_TAKEN		((SLuint32) 0x00000005)
+#define SL_OBJECT_EVENT_ITF_CONTROL_RETURNED		((SLuint32) 0x00000006)
+#define SL_OBJECT_EVENT_ITF_PARAMETERS_CHANGED	((SLuint32) 0x00000007)
+
+
+/*****************************************************************************/
+/* Interface definitions                                                     */
+/*****************************************************************************/
+
+/** NULL Interface */
+
+extern SL_API const SLInterfaceID SL_IID_NULL;
+
+/*---------------------------------------------------------------------------*/
+/* Data Source and Data Sink Structures                                      */
+/*---------------------------------------------------------------------------*/
+
+/** Data locator macros  */
+#define SL_DATALOCATOR_URI			((SLuint32) 0x00000001)
+#define SL_DATALOCATOR_ADDRESS		((SLuint32) 0x00000002)
+#define SL_DATALOCATOR_IODEVICE		((SLuint32) 0x00000003)
+#define SL_DATALOCATOR_OUTPUTMIX		((SLuint32) 0x00000004)
+#define SL_DATALOCATOR_RESERVED5		((SLuint32) 0x00000005)
+#define SL_DATALOCATOR_BUFFERQUEUE	((SLuint32) 0x00000006)
+#define SL_DATALOCATOR_MIDIBUFFERQUEUE	((SLuint32) 0x00000007)
+#define SL_DATALOCATOR_RESERVED8		((SLuint32) 0x00000008)
+
+
+
+/** URI-based data locator definition where locatorType must be SL_DATALOCATOR_URI*/
+typedef struct SLDataLocator_URI_ {
+	SLuint32 		locatorType;
+	SLchar *		URI;
+} SLDataLocator_URI;
+
+/** Address-based data locator definition where locatorType must be SL_DATALOCATOR_ADDRESS*/
+typedef struct SLDataLocator_Address_ {
+	SLuint32 	locatorType;
+	void 		*pAddress;
+	SLuint32	length;
+} SLDataLocator_Address;
+
+/** IODevice-types */
+#define SL_IODEVICE_AUDIOINPUT	((SLuint32) 0x00000001)
+#define SL_IODEVICE_LEDARRAY	((SLuint32) 0x00000002)
+#define SL_IODEVICE_VIBRA		((SLuint32) 0x00000003)
+#define SL_IODEVICE_RESERVED4	((SLuint32) 0x00000004)
+#define SL_IODEVICE_RESERVED5	((SLuint32) 0x00000005)
+
+/** IODevice-based data locator definition where locatorType must be SL_DATALOCATOR_IODEVICE*/
+typedef struct SLDataLocator_IODevice_ {
+	SLuint32	locatorType;
+	SLuint32	deviceType;
+	SLuint32	deviceID;
+	SLObjectItf	device;
+} SLDataLocator_IODevice;
+
+/** OutputMix-based data locator definition where locatorType must be SL_DATALOCATOR_OUTPUTMIX*/
+typedef struct SLDataLocator_OutputMix {
+	SLuint32 		locatorType;
+	SLObjectItf		outputMix;
+} SLDataLocator_OutputMix;
+
+
+/** BufferQueue-based data locator definition where locatorType must be SL_DATALOCATOR_BUFFERQUEUE*/
+typedef struct SLDataLocator_BufferQueue {
+	SLuint32	locatorType;
+	SLuint32	numBuffers;
+} SLDataLocator_BufferQueue;
+
+/** MidiBufferQueue-based data locator definition where locatorType must be SL_DATALOCATOR_MIDIBUFFERQUEUE*/
+typedef struct SLDataLocator_MIDIBufferQueue {
+	SLuint32	locatorType;
+	SLuint32	tpqn;
+	SLuint32	numBuffers;
+} SLDataLocator_MIDIBufferQueue;
+
+/** Data format defines */
+#define SL_DATAFORMAT_MIME		((SLuint32) 0x00000001)
+#define SL_DATAFORMAT_PCM		((SLuint32) 0x00000002)
+#define SL_DATAFORMAT_RESERVED3	((SLuint32) 0x00000003)
+
+
+/** MIME-type-based data format definition where formatType must be SL_DATAFORMAT_MIME*/
+typedef struct SLDataFormat_MIME_ {
+	SLuint32 		formatType;
+	SLchar * 		mimeType;
+	SLuint32		containerType;
+} SLDataFormat_MIME;
+
+/* Byte order of a block of 16- or 32-bit data */
+#define SL_BYTEORDER_BIGENDIAN				((SLuint32) 0x00000001)
+#define SL_BYTEORDER_LITTLEENDIAN			((SLuint32) 0x00000002)
+
+/* Container type */
+#define SL_CONTAINERTYPE_UNSPECIFIED	((SLuint32) 0x00000001)
+#define SL_CONTAINERTYPE_RAW		((SLuint32) 0x00000002)
+#define SL_CONTAINERTYPE_ASF		((SLuint32) 0x00000003)
+#define SL_CONTAINERTYPE_AVI		((SLuint32) 0x00000004)
+#define SL_CONTAINERTYPE_BMP		((SLuint32) 0x00000005)
+#define SL_CONTAINERTYPE_JPG		((SLuint32) 0x00000006)
+#define SL_CONTAINERTYPE_JPG2000		((SLuint32) 0x00000007)
+#define SL_CONTAINERTYPE_M4A		((SLuint32) 0x00000008)
+#define SL_CONTAINERTYPE_MP3		((SLuint32) 0x00000009)
+#define SL_CONTAINERTYPE_MP4		((SLuint32) 0x0000000A)
+#define SL_CONTAINERTYPE_MPEG_ES		((SLuint32) 0x0000000B)
+#define SL_CONTAINERTYPE_MPEG_PS		((SLuint32) 0x0000000C)
+#define SL_CONTAINERTYPE_MPEG_TS		((SLuint32) 0x0000000D)
+#define SL_CONTAINERTYPE_QT		((SLuint32) 0x0000000E)
+#define SL_CONTAINERTYPE_WAV		((SLuint32) 0x0000000F)
+#define SL_CONTAINERTYPE_XMF_0		((SLuint32) 0x00000010)
+#define SL_CONTAINERTYPE_XMF_1		((SLuint32) 0x00000011)
+#define SL_CONTAINERTYPE_XMF_2		((SLuint32) 0x00000012)
+#define SL_CONTAINERTYPE_XMF_3		((SLuint32) 0x00000013)
+#define SL_CONTAINERTYPE_XMF_GENERIC	((SLuint32) 0x00000014)
+#define SL_CONTAINERTYPE_AMR  		((SLuint32) 0x00000015)
+#define SL_CONTAINERTYPE_AAC		((SLuint32) 0x00000016)
+#define SL_CONTAINERTYPE_3GPP		((SLuint32) 0x00000017)
+#define SL_CONTAINERTYPE_3GA		((SLuint32) 0x00000018)
+#define SL_CONTAINERTYPE_RM		((SLuint32) 0x00000019)
+#define SL_CONTAINERTYPE_DMF		((SLuint32) 0x0000001A)
+#define SL_CONTAINERTYPE_SMF		((SLuint32) 0x0000001B)
+#define SL_CONTAINERTYPE_MOBILE_DLS	((SLuint32) 0x0000001C)
+#define SL_CONTAINERTYPE_OGG	((SLuint32) 0x0000001D)
+
+
+/** PCM-type-based data format definition where formatType must be SL_DATAFORMAT_PCM*/
+typedef struct SLDataFormat_PCM_ {
+	SLuint32 		formatType;
+	SLuint32 		numChannels;
+	SLuint32 		samplesPerSec;
+	SLuint32 		bitsPerSample;
+	SLuint32 		containerSize;
+	SLuint32 		channelMask;
+	SLuint32		endianness;
+} SLDataFormat_PCM;
+
+typedef struct SLDataSource_ {
+	void *pLocator;
+	void *pFormat;
+} SLDataSource;
+
+
+typedef struct SLDataSink_ {
+	void *pLocator;
+	void *pFormat;
+} SLDataSink;
+
+
+
+
+
+
+/*---------------------------------------------------------------------------*/
+/* Standard Object Interface                                                 */
+/*---------------------------------------------------------------------------*/
+
+extern SL_API const SLInterfaceID SL_IID_OBJECT;
+
+/** Object callback */
+
+
+typedef void (SLAPIENTRY *slObjectCallback) (
+	SLObjectItf caller,
+	const void * pContext,
+	SLuint32 event,
+	SLresult result,
+    SLuint32 param,
+    void *pInterface
+);
+
+
+struct SLObjectItf_ {
+	SLresult (*Realize) (
+		SLObjectItf self,
+		SLboolean async
+	);
+	SLresult (*Resume) (
+		SLObjectItf self,
+		SLboolean async
+	);
+	SLresult (*GetState) (
+		SLObjectItf self,
+		SLuint32 * pState
+	);
+	SLresult (*GetInterface) (
+		SLObjectItf self,
+		const SLInterfaceID iid,
+		void * pInterface
+	);
+	SLresult (*RegisterCallback) (
+		SLObjectItf self,
+		slObjectCallback callback,
+		void * pContext
+	);
+	void (*AbortAsyncOperation) (
+		SLObjectItf self
+	);
+	void (*Destroy) (
+		SLObjectItf self
+	);
+	SLresult (*SetPriority) (
+		SLObjectItf self,
+		SLint32 priority,
+		SLboolean preemptable
+	);
+	SLresult (*GetPriority) (
+		SLObjectItf self,
+		SLint32 *pPriority,
+		SLboolean *pPreemptable
+	);
+	SLresult (*SetLossOfControlInterfaces) (
+		SLObjectItf self,
+		SLint16 numInterfaces,
+		SLInterfaceID * pInterfaceIDs,
+		SLboolean enabled
+	);
+};
+
+
+/*---------------------------------------------------------------------------*/
+/* Audio IO Device capabilities interface                                    */
+/*---------------------------------------------------------------------------*/
+
+#define SL_DEFAULTDEVICEID_AUDIOINPUT 	((SLuint32) 0xFFFFFFFF)
+#define SL_DEFAULTDEVICEID_AUDIOOUTPUT 	((SLuint32) 0xFFFFFFFE)
+#define SL_DEFAULTDEVICEID_LED          ((SLuint32) 0xFFFFFFFD)
+#define SL_DEFAULTDEVICEID_VIBRA        ((SLuint32) 0xFFFFFFFC)
+#define SL_DEFAULTDEVICEID_RESERVED1    ((SLuint32) 0xFFFFFFFB)
+
+
+#define SL_DEVCONNECTION_INTEGRATED         ((SLint16) 0x0001)
+#define SL_DEVCONNECTION_ATTACHED_WIRED     ((SLint16) 0x0100)
+#define SL_DEVCONNECTION_ATTACHED_WIRELESS  ((SLint16) 0x0200)
+#define SL_DEVCONNECTION_NETWORK 		    ((SLint16) 0x0400)
+
+
+#define SL_DEVLOCATION_HANDSET 	((SLuint16) 0x0001)
+#define SL_DEVLOCATION_HEADSET 	((SLuint16) 0x0002)
+#define SL_DEVLOCATION_CARKIT 	((SLuint16) 0x0003)
+#define SL_DEVLOCATION_DOCK 	((SLuint16) 0x0004)
+#define SL_DEVLOCATION_REMOTE 	((SLuint16) 0x0005)
+/* Note: SL_DEVLOCATION_RESLTE is deprecated, use SL_DEVLOCATION_REMOTE instead. */
+#define SL_DEVLOCATION_RESLTE 	((SLuint16) 0x0005)
+
+
+#define SL_DEVSCOPE_UNKNOWN     ((SLuint16) 0x0001)
+#define SL_DEVSCOPE_ENVIRONMENT ((SLuint16) 0x0002)
+#define SL_DEVSCOPE_USER        ((SLuint16) 0x0003)
+
+
+typedef struct SLAudioInputDescriptor_ {
+	SLchar *deviceName;
+	SLint16 deviceConnection;
+	SLint16 deviceScope;
+	SLint16 deviceLocation;
+	SLboolean isForTelephony;
+	SLmilliHertz minSampleRate;
+	SLmilliHertz maxSampleRate;
+	SLboolean isFreqRangeContinuous;
+	SLmilliHertz *samplingRatesSupported;
+	SLint16 numOfSamplingRatesSupported;
+	SLint16 maxChannels;
+} SLAudioInputDescriptor;
+
+
+typedef struct SLAudioOutputDescriptor_ {
+	SLchar *pDeviceName;
+	SLint16 deviceConnection;
+	SLint16 deviceScope;
+	SLint16 deviceLocation;
+	SLboolean isForTelephony;
+	SLmilliHertz minSampleRate;
+	SLmilliHertz maxSampleRate;
+	SLboolean isFreqRangeContinuous;
+	SLmilliHertz *samplingRatesSupported;
+	SLint16 numOfSamplingRatesSupported;
+	SLint16 maxChannels;
+} SLAudioOutputDescriptor;
+
+
+
+extern SL_API const SLInterfaceID SL_IID_AUDIOIODEVICECAPABILITIES;
+
+struct SLAudioIODeviceCapabilitiesItf_;
+typedef const struct SLAudioIODeviceCapabilitiesItf_ * const * SLAudioIODeviceCapabilitiesItf;
+
+
+typedef void (SLAPIENTRY *slAvailableAudioInputsChangedCallback) (
+	SLAudioIODeviceCapabilitiesItf caller,
+	void *pContext,
+	SLuint32 deviceID,
+	SLint32 numInputs,
+	SLboolean isNew
+);
+
+
+typedef void (SLAPIENTRY *slAvailableAudioOutputsChangedCallback) (
+	SLAudioIODeviceCapabilitiesItf caller,
+	void *pContext,
+	SLuint32 deviceID,
+	SLint32 numOutputs,
+	SLboolean isNew
+);
+
+typedef void (SLAPIENTRY *slDefaultDeviceIDMapChangedCallback) (
+	SLAudioIODeviceCapabilitiesItf caller,
+	void *pContext,
+	SLboolean isOutput,
+	SLint32 numDevices
+);
+
+
+struct SLAudioIODeviceCapabilitiesItf_ {
+	SLresult (*GetAvailableAudioInputs)(
+		SLAudioIODeviceCapabilitiesItf self,
+		SLint32  *pNumInputs,
+		SLuint32 *pInputDeviceIDs
+	);
+	SLresult (*QueryAudioInputCapabilities)(
+		SLAudioIODeviceCapabilitiesItf self,
+		SLuint32 deviceId,
+		SLAudioInputDescriptor *pDescriptor
+	);
+	SLresult (*RegisterAvailableAudioInputsChangedCallback) (
+		SLAudioIODeviceCapabilitiesItf self,
+		slAvailableAudioInputsChangedCallback callback,
+		void *pContext
+	);
+	SLresult (*GetAvailableAudioOutputs)(
+		SLAudioIODeviceCapabilitiesItf self,
+		SLint32 *pNumOutputs,
+		SLuint32 *pOutputDeviceIDs
+	);
+	SLresult (*QueryAudioOutputCapabilities)(
+		SLAudioIODeviceCapabilitiesItf self,
+		SLuint32 deviceId,
+		SLAudioOutputDescriptor *pDescriptor
+	);
+	SLresult (*RegisterAvailableAudioOutputsChangedCallback) (
+		SLAudioIODeviceCapabilitiesItf self,
+		slAvailableAudioOutputsChangedCallback callback,
+		void *pContext
+	);
+	SLresult (*RegisterDefaultDeviceIDMapChangedCallback) (
+		SLAudioIODeviceCapabilitiesItf self,
+		slDefaultDeviceIDMapChangedCallback callback,
+		void *pContext
+	);
+	SLresult (*GetAssociatedAudioInputs) (
+		SLAudioIODeviceCapabilitiesItf self,
+		SLuint32 deviceId,
+		SLint32 *pNumAudioInputs,
+		SLuint32 *pAudioInputDeviceIDs
+	);
+	SLresult (*GetAssociatedAudioOutputs) (
+		SLAudioIODeviceCapabilitiesItf self,
+		SLuint32 deviceId,
+		SLint32 *pNumAudioOutputs,
+		SLuint32 *pAudioOutputDeviceIDs
+	);
+	SLresult (*GetDefaultAudioDevices) (
+		SLAudioIODeviceCapabilitiesItf self,
+		SLuint32 defaultDeviceID,
+		SLint32 *pNumAudioDevices,
+		SLuint32 *pAudioDeviceIDs
+	);
+	SLresult (*QuerySampleFormatsSupported)(
+		SLAudioIODeviceCapabilitiesItf self,
+		SLuint32 deviceId,
+		SLmilliHertz samplingRate,
+		SLint32 *pSampleFormats,
+		SLint32 *pNumOfSampleFormats
+	);
+};
+
+
+
+/*---------------------------------------------------------------------------*/
+/* Capabilities of the LED array IODevice                                    */
+/*---------------------------------------------------------------------------*/
+
+typedef struct SLLEDDescriptor_ {
+	SLuint8   ledCount;
+	SLuint8   primaryLED;
+	SLuint32  colorMask;
+} SLLEDDescriptor;
+
+
+/*---------------------------------------------------------------------------*/
+/* LED Array interface                                                       */
+/*---------------------------------------------------------------------------*/
+
+typedef struct SLHSL_ {
+    SLmillidegree  hue;
+    SLpermille     saturation;
+    SLpermille     lightness;
+} SLHSL;
+
+
+extern SL_API const SLInterfaceID SL_IID_LED;
+
+struct SLLEDArrayItf_;
+typedef const struct SLLEDArrayItf_ * const * SLLEDArrayItf;
+
+struct SLLEDArrayItf_ {
+	SLresult (*ActivateLEDArray) (
+		SLLEDArrayItf self,
+		SLuint32 lightMask
+	);
+	SLresult (*IsLEDArrayActivated) (
+		SLLEDArrayItf self,
+		SLuint32 *lightMask
+	);
+	SLresult (*SetColor) (
+		SLLEDArrayItf self,
+		SLuint8 index,
+		const SLHSL *color
+	);
+	SLresult (*GetColor) (
+		SLLEDArrayItf self,
+		SLuint8 index,
+		SLHSL *color
+	);
+};
+
+/*---------------------------------------------------------------------------*/
+/* Capabilities of the Vibra IODevice                                        */
+/*---------------------------------------------------------------------------*/
+
+typedef struct SLVibraDescriptor_ {
+	SLboolean supportsFrequency;
+	SLboolean supportsIntensity;
+	SLmilliHertz  minFrequency;
+	SLmilliHertz  maxFrequency;
+} SLVibraDescriptor;
+
+
+
+/*---------------------------------------------------------------------------*/
+/* Vibra interface                                                           */
+/*---------------------------------------------------------------------------*/
+
+
+extern SL_API const SLInterfaceID SL_IID_VIBRA;
+
+
+struct SLVibraItf_;
+typedef const struct SLVibraItf_ * const * SLVibraItf;
+
+struct SLVibraItf_ {
+	SLresult (*Vibrate) (
+		SLVibraItf self,
+		SLboolean vibrate
+	);
+	SLresult (*IsVibrating) (
+		SLVibraItf self,
+		SLboolean *pVibrating
+	);
+	SLresult (*SetFrequency) (
+		SLVibraItf self,
+		SLmilliHertz frequency
+	);
+	SLresult (*GetFrequency) (
+		SLVibraItf self,
+		SLmilliHertz *pFrequency
+	);
+	SLresult (*SetIntensity) (
+		SLVibraItf self,
+		SLpermille intensity
+	);
+	SLresult (*GetIntensity) (
+		SLVibraItf self,
+		SLpermille *pIntensity
+	);
+};
+
+
+/*---------------------------------------------------------------------------*/
+/* Meta data extraction related types and interface                          */
+/*---------------------------------------------------------------------------*/
+
+#define SL_CHARACTERENCODING_UNKNOWN			((SLuint32) 0x00000000)
+#define SL_CHARACTERENCODING_BINARY       ((SLuint32) 0x00000001)
+#define SL_CHARACTERENCODING_ASCII        ((SLuint32) 0x00000002)
+#define SL_CHARACTERENCODING_BIG5         ((SLuint32) 0x00000003)
+#define SL_CHARACTERENCODING_CODEPAGE1252		((SLuint32) 0x00000004)
+#define SL_CHARACTERENCODING_GB2312			((SLuint32) 0x00000005)
+#define SL_CHARACTERENCODING_HZGB2312			((SLuint32) 0x00000006)
+#define SL_CHARACTERENCODING_GB12345			((SLuint32) 0x00000007)
+#define SL_CHARACTERENCODING_GB18030			((SLuint32) 0x00000008)
+#define SL_CHARACTERENCODING_GBK				((SLuint32) 0x00000009)
+#define SL_CHARACTERENCODING_IMAPUTF7			((SLuint32) 0x0000000A)
+#define SL_CHARACTERENCODING_ISO2022JP			((SLuint32) 0x0000000B)
+#define SL_CHARACTERENCODING_ISO2022JP1		((SLuint32) 0x0000000B)
+#define SL_CHARACTERENCODING_ISO88591			((SLuint32) 0x0000000C)
+#define SL_CHARACTERENCODING_ISO885910			((SLuint32) 0x0000000D)
+#define SL_CHARACTERENCODING_ISO885913			((SLuint32) 0x0000000E)
+#define SL_CHARACTERENCODING_ISO885914			((SLuint32) 0x0000000F)
+#define SL_CHARACTERENCODING_ISO885915			((SLuint32) 0x00000010)
+#define SL_CHARACTERENCODING_ISO88592			((SLuint32) 0x00000011)
+#define SL_CHARACTERENCODING_ISO88593			((SLuint32) 0x00000012)
+#define SL_CHARACTERENCODING_ISO88594			((SLuint32) 0x00000013)
+#define SL_CHARACTERENCODING_ISO88595			((SLuint32) 0x00000014)
+#define SL_CHARACTERENCODING_ISO88596			((SLuint32) 0x00000015)
+#define SL_CHARACTERENCODING_ISO88597			((SLuint32) 0x00000016)
+#define SL_CHARACTERENCODING_ISO88598			((SLuint32) 0x00000017)
+#define SL_CHARACTERENCODING_ISO88599			((SLuint32) 0x00000018)
+#define SL_CHARACTERENCODING_ISOEUCJP			((SLuint32) 0x00000019)
+#define SL_CHARACTERENCODING_SHIFTJIS			((SLuint32) 0x0000001A)
+#define SL_CHARACTERENCODING_SMS7BIT			((SLuint32) 0x0000001B)
+#define SL_CHARACTERENCODING_UTF7			((SLuint32) 0x0000001C)
+#define SL_CHARACTERENCODING_UTF8			((SLuint32) 0x0000001D)
+#define SL_CHARACTERENCODING_JAVACONFORMANTUTF8	((SLuint32) 0x0000001E)
+#define SL_CHARACTERENCODING_UTF16BE			((SLuint32) 0x0000001F)
+#define SL_CHARACTERENCODING_UTF16LE			((SLuint32) 0x00000020)
+
+
+#define SL_METADATA_FILTER_KEY		((SLuint8) 0x01)
+#define SL_METADATA_FILTER_LANG		((SLuint8) 0x02)
+#define SL_METADATA_FILTER_ENCODING	((SLuint8) 0x04)
+
+
+typedef struct SLMetadataInfo_ {
+    SLuint32     size;
+    SLuint32     encoding;
+    SLchar       langCountry[16];
+    SLuint8      data[1];
+} SLMetadataInfo;
+
+extern SL_API const SLInterfaceID SL_IID_METADATAEXTRACTION;
+
+struct SLMetadataExtractionItf_;
+typedef const struct SLMetadataExtractionItf_ * const * SLMetadataExtractionItf;
+
+
+struct SLMetadataExtractionItf_ {
+	SLresult (*GetItemCount) (
+		SLMetadataExtractionItf self,
+		SLuint32 *pItemCount
+	);
+	SLresult (*GetKeySize) (
+		SLMetadataExtractionItf self,
+		SLuint32 index,
+		SLuint32 *pKeySize
+	);
+	SLresult (*GetKey) (
+		SLMetadataExtractionItf self,
+		SLuint32 index,
+		SLuint32 keySize,
+		SLMetadataInfo *pKey
+	);
+	SLresult (*GetValueSize) (
+		SLMetadataExtractionItf self,
+		SLuint32 index,
+		SLuint32 *pValueSize
+	);
+	SLresult (*GetValue) (
+		SLMetadataExtractionItf self,
+		SLuint32 index,
+		SLuint32 valueSize,
+		SLMetadataInfo *pValue
+	);
+	SLresult (*AddKeyFilter) (
+		SLMetadataExtractionItf self,
+		SLuint32 keySize,
+		const void *pKey,
+		SLuint32 keyEncoding,
+		const SLchar *pValueLangCountry,
+		SLuint32 valueEncoding,
+		SLuint8 filterMask
+	);
+	SLresult (*ClearKeyFilter) (
+		SLMetadataExtractionItf self
+	);
+};
+
+
+/*---------------------------------------------------------------------------*/
+/* Meta data traversal related types and interface                          */
+/*---------------------------------------------------------------------------*/
+
+#define SL_METADATATRAVERSALMODE_ALL	((SLuint32) 0x00000001)
+#define SL_METADATATRAVERSALMODE_NODE	((SLuint32) 0x00000002)
+
+
+#define SL_NODETYPE_UNSPECIFIED	((SLuint32) 0x00000001)
+#define SL_NODETYPE_AUDIO		((SLuint32) 0x00000002)
+#define SL_NODETYPE_VIDEO		((SLuint32) 0x00000003)
+#define SL_NODETYPE_IMAGE		((SLuint32) 0x00000004)
+
+#define SL_NODE_PARENT 0xFFFFFFFF
+
+extern SL_API const SLInterfaceID SL_IID_METADATATRAVERSAL;
+
+struct SLMetadataTraversalItf_;
+typedef const struct SLMetadataTraversalItf_ * const * SLMetadataTraversalItf;
+
+struct SLMetadataTraversalItf_ {
+	SLresult (*SetMode) (
+		SLMetadataTraversalItf self,
+		SLuint32 mode
+	);
+	SLresult (*GetChildCount) (
+		SLMetadataTraversalItf self,
+		SLuint32 *pCount
+	);
+	SLresult (*GetChildMIMETypeSize) (
+		SLMetadataTraversalItf self,
+		SLuint32 index,
+		SLuint32 *pSize
+	);
+	SLresult (*GetChildInfo) (
+		SLMetadataTraversalItf self,
+		SLuint32 index,
+		SLint32 *pNodeID,
+		SLuint32 *pType,
+		SLuint32 size,
+		SLchar *pMimeType
+	);
+	SLresult (*SetActiveNode) (
+		SLMetadataTraversalItf self,
+		SLuint32 index
+	);
+};
+
+/*---------------------------------------------------------------------------*/
+/* Dynamic Source types and interface                                        */
+/*---------------------------------------------------------------------------*/
+
+extern SL_API const SLInterfaceID SL_IID_DYNAMICSOURCE;
+
+struct SLDynamicSourceItf_;
+typedef const struct SLDynamicSourceItf_ * const * SLDynamicSourceItf;
+
+struct SLDynamicSourceItf_ {
+	SLresult (*SetSource) (
+		SLDynamicSourceItf self,
+		SLDataSource *pDataSource
+	);
+};
+
+/*---------------------------------------------------------------------------*/
+/* Output Mix interface                                                      */
+/*---------------------------------------------------------------------------*/
+
+extern SL_API const SLInterfaceID SL_IID_OUTPUTMIX;
+
+struct SLOutputMixItf_;
+typedef const struct SLOutputMixItf_ * const * SLOutputMixItf;
+
+typedef void (SLAPIENTRY *slMixDeviceChangeCallback) (
+	SLOutputMixItf caller,
+    void *pContext
+);
+
+
+struct SLOutputMixItf_ {
+	SLresult (*GetDestinationOutputDeviceIDs) (
+		SLOutputMixItf self,
+		SLint32 *pNumDevices,
+		SLuint32 *pDeviceIDs
+	);
+	SLresult (*RegisterDeviceChangeCallback) (
+		SLOutputMixItf self,
+		slMixDeviceChangeCallback callback,
+		void *pContext
+    );
+    SLresult (*ReRoute)(
+        SLOutputMixItf self,
+        SLint32 numOutputDevices,
+        SLuint32 *pOutputDeviceIDs
+    );
+};
+
+
+/*---------------------------------------------------------------------------*/
+/* Playback interface                                                        */
+/*---------------------------------------------------------------------------*/
+
+/** Playback states */
+#define SL_PLAYSTATE_STOPPED	((SLuint32) 0x00000001)
+#define SL_PLAYSTATE_PAUSED	((SLuint32) 0x00000002)
+#define SL_PLAYSTATE_PLAYING	((SLuint32) 0x00000003)
+
+/** Play events **/
+#define SL_PLAYEVENT_HEADATEND		((SLuint32) 0x00000001)
+#define SL_PLAYEVENT_HEADATMARKER	((SLuint32) 0x00000002)
+#define SL_PLAYEVENT_HEADATNEWPOS	((SLuint32) 0x00000004)
+#define SL_PLAYEVENT_HEADMOVING		((SLuint32) 0x00000008)
+#define SL_PLAYEVENT_HEADSTALLED	((SLuint32) 0x00000010)
+
+#define SL_TIME_UNKNOWN	((SLuint32) 0xFFFFFFFF)
+
+
+extern SL_API const SLInterfaceID SL_IID_PLAY;
+
+/** Playback interface methods */
+
+struct SLPlayItf_;
+typedef const struct SLPlayItf_ * const * SLPlayItf;
+
+typedef void (SLAPIENTRY *slPlayCallback) (
+	SLPlayItf caller,
+	void *pContext,
+	SLuint32 event
+);
+
+struct SLPlayItf_ {
+	SLresult (*SetPlayState) (
+		SLPlayItf self,
+		SLuint32 state
+	);
+	SLresult (*GetPlayState) (
+		SLPlayItf self,
+		SLuint32 *pState
+	);
+	SLresult (*GetDuration) (
+		SLPlayItf self,
+		SLmillisecond *pMsec
+	);
+	SLresult (*GetPosition) (
+		SLPlayItf self,
+		SLmillisecond *pMsec
+	);
+	SLresult (*RegisterCallback) (
+		SLPlayItf self,
+		slPlayCallback callback,
+		void *pContext
+	);
+	SLresult (*SetCallbackEventsMask) (
+		SLPlayItf self,
+		SLuint32 eventFlags
+	);
+	SLresult (*GetCallbackEventsMask) (
+		SLPlayItf self,
+		SLuint32 *pEventFlags
+	);
+	SLresult (*SetMarkerPosition) (
+		SLPlayItf self,
+		SLmillisecond mSec
+	);
+	SLresult (*ClearMarkerPosition) (
+		SLPlayItf self
+	);
+	SLresult (*GetMarkerPosition) (
+		SLPlayItf self,
+		SLmillisecond *pMsec
+	);
+	SLresult (*SetPositionUpdatePeriod) (
+		SLPlayItf self,
+		SLmillisecond mSec
+	);
+	SLresult (*GetPositionUpdatePeriod) (
+		SLPlayItf self,
+		SLmillisecond *pMsec
+	);
+};
+
+/*---------------------------------------------------------------------------*/
+/* Prefetch status interface                                                 */
+/*---------------------------------------------------------------------------*/
+
+#define SL_PREFETCHEVENT_STATUSCHANGE		((SLuint32) 0x00000001)
+#define SL_PREFETCHEVENT_FILLLEVELCHANGE	((SLuint32) 0x00000002)
+
+#define SL_PREFETCHSTATUS_UNDERFLOW		((SLuint32) 0x00000001)
+#define SL_PREFETCHSTATUS_SUFFICIENTDATA	((SLuint32) 0x00000002)
+#define SL_PREFETCHSTATUS_OVERFLOW		((SLuint32) 0x00000003)
+
+
+extern SL_API const SLInterfaceID SL_IID_PREFETCHSTATUS;
+
+
+/** Prefetch status interface methods */
+
+struct SLPrefetchStatusItf_;
+typedef const struct SLPrefetchStatusItf_ * const * SLPrefetchStatusItf;
+
+typedef void (SLAPIENTRY *slPrefetchCallback) (
+	SLPrefetchStatusItf caller,
+	void *pContext,
+	SLuint32 event
+);
+
+struct SLPrefetchStatusItf_ {
+	SLresult (*GetPrefetchStatus) (
+		SLPrefetchStatusItf self,
+		SLuint32 *pStatus
+	);
+	SLresult (*GetFillLevel) (
+		SLPrefetchStatusItf self,
+		SLpermille *pLevel
+	);
+	SLresult (*RegisterCallback) (
+		SLPrefetchStatusItf self,
+		slPrefetchCallback callback,
+		void *pContext
+	);
+	SLresult (*SetCallbackEventsMask) (
+		SLPrefetchStatusItf self,
+		SLuint32 eventFlags
+	);
+	SLresult (*GetCallbackEventsMask) (
+		SLPrefetchStatusItf self,
+		SLuint32 *pEventFlags
+	);
+	SLresult (*SetFillUpdatePeriod) (
+		SLPrefetchStatusItf self,
+		SLpermille period
+	);
+	SLresult (*GetFillUpdatePeriod) (
+		SLPrefetchStatusItf self,
+		SLpermille *pPeriod
+	);
+};
+
+/*---------------------------------------------------------------------------*/
+/* Playback Rate interface                                                   */
+/*---------------------------------------------------------------------------*/
+
+#define SL_RATEPROP_RESERVED1		  		((SLuint32) 0x00000001)
+#define SL_RATEPROP_RESERVED2		  		((SLuint32) 0x00000002)
+#define SL_RATEPROP_SILENTAUDIO				((SLuint32) 0x00000100)
+#define SL_RATEPROP_STAGGEREDAUDIO	((SLuint32) 0x00000200)
+#define SL_RATEPROP_NOPITCHCORAUDIO	((SLuint32) 0x00000400)
+#define SL_RATEPROP_PITCHCORAUDIO	((SLuint32) 0x00000800)
+
+
+extern SL_API const SLInterfaceID SL_IID_PLAYBACKRATE;
+
+struct SLPlaybackRateItf_;
+typedef const struct SLPlaybackRateItf_ * const * SLPlaybackRateItf;
+
+struct SLPlaybackRateItf_ {
+	SLresult (*SetRate)(
+		SLPlaybackRateItf self,
+		SLpermille rate
+	);
+	SLresult (*GetRate)(
+		SLPlaybackRateItf self,
+		SLpermille *pRate
+	);
+	SLresult (*SetPropertyConstraints)(
+		SLPlaybackRateItf self,
+		SLuint32 constraints
+	);
+	SLresult (*GetProperties)(
+		SLPlaybackRateItf self,
+		SLuint32 *pProperties
+	);
+	SLresult (*GetCapabilitiesOfRate)(
+		SLPlaybackRateItf self,
+		SLpermille rate,
+		SLuint32 *pCapabilities
+	);
+	SLresult (*GetRateRange) (
+		SLPlaybackRateItf self,
+		SLuint8 index,
+		SLpermille *pMinRate,
+		SLpermille *pMaxRate,
+		SLpermille *pStepSize,
+		SLuint32 *pCapabilities
+	);
+};
+
+/*---------------------------------------------------------------------------*/
+/* Seek Interface                                                            */
+/*---------------------------------------------------------------------------*/
+
+#define SL_SEEKMODE_FAST		((SLuint32) 0x0001)
+#define SL_SEEKMODE_ACCURATE	((SLuint32) 0x0002)
+
+extern SL_API const SLInterfaceID SL_IID_SEEK;
+
+struct SLSeekItf_;
+typedef const struct SLSeekItf_ * const * SLSeekItf;
+
+struct SLSeekItf_ {
+	SLresult (*SetPosition)(
+		SLSeekItf self,
+		SLmillisecond pos,
+		SLuint32 seekMode
+	);
+	SLresult (*SetLoop)(
+		SLSeekItf self,
+		SLboolean loopEnable,
+		SLmillisecond startPos,
+		SLmillisecond endPos
+	);
+	SLresult (*GetLoop)(
+		SLSeekItf self,
+		SLboolean *pLoopEnabled,
+		SLmillisecond *pStartPos,
+		SLmillisecond *pEndPos
+	);
+};
+
+/*---------------------------------------------------------------------------*/
+/* Standard Recording Interface                                              */
+/*---------------------------------------------------------------------------*/
+
+/** Recording states */
+#define SL_RECORDSTATE_STOPPED 	((SLuint32) 0x00000001)
+#define SL_RECORDSTATE_PAUSED	((SLuint32) 0x00000002)
+#define SL_RECORDSTATE_RECORDING	((SLuint32) 0x00000003)
+
+
+/** Record event **/
+#define SL_RECORDEVENT_HEADATLIMIT	((SLuint32) 0x00000001)
+#define SL_RECORDEVENT_HEADATMARKER	((SLuint32) 0x00000002)
+#define SL_RECORDEVENT_HEADATNEWPOS	((SLuint32) 0x00000004)
+#define SL_RECORDEVENT_HEADMOVING	((SLuint32) 0x00000008)
+#define SL_RECORDEVENT_HEADSTALLED 	((SLuint32) 0x00000010)
+/* Note: SL_RECORDEVENT_BUFFER_INSUFFICIENT is deprecated, use SL_RECORDEVENT_BUFFER_FULL instead. */
+#define SL_RECORDEVENT_BUFFER_INSUFFICIENT      ((SLuint32) 0x00000020)
+#define SL_RECORDEVENT_BUFFER_FULL	((SLuint32) 0x00000020)
+
+
+extern SL_API const SLInterfaceID SL_IID_RECORD;
+
+struct SLRecordItf_;
+typedef const struct SLRecordItf_ * const * SLRecordItf;
+
+typedef void (SLAPIENTRY *slRecordCallback) (
+	SLRecordItf caller,
+	void *pContext,
+	SLuint32 event
+);
+
+/** Recording interface methods */
+struct SLRecordItf_ {
+	SLresult (*SetRecordState) (
+		SLRecordItf self,
+		SLuint32 state
+	);
+	SLresult (*GetRecordState) (
+		SLRecordItf self,
+		SLuint32 *pState
+	);
+	SLresult (*SetDurationLimit) (
+		SLRecordItf self,
+		SLmillisecond msec
+	);
+	SLresult (*GetPosition) (
+		SLRecordItf self,
+		SLmillisecond *pMsec
+	);
+	SLresult (*RegisterCallback) (
+		SLRecordItf self,
+		slRecordCallback callback,
+		void *pContext
+	);
+	SLresult (*SetCallbackEventsMask) (
+		SLRecordItf self,
+		SLuint32 eventFlags
+	);
+	SLresult (*GetCallbackEventsMask) (
+		SLRecordItf self,
+		SLuint32 *pEventFlags
+	);
+	SLresult (*SetMarkerPosition) (
+		SLRecordItf self,
+		SLmillisecond mSec
+	);
+	SLresult (*ClearMarkerPosition) (
+		SLRecordItf self
+	);
+	SLresult (*GetMarkerPosition) (
+		SLRecordItf self,
+		SLmillisecond *pMsec
+	);
+	SLresult (*SetPositionUpdatePeriod) (
+		SLRecordItf self,
+		SLmillisecond mSec
+	);
+	SLresult (*GetPositionUpdatePeriod) (
+		SLRecordItf self,
+		SLmillisecond *pMsec
+	);
+};
+
+/*---------------------------------------------------------------------------*/
+/* Equalizer interface                                                       */
+/*---------------------------------------------------------------------------*/
+
+#define SL_EQUALIZER_UNDEFINED				((SLuint16) 0xFFFF)
+
+extern SL_API const SLInterfaceID SL_IID_EQUALIZER;
+
+struct SLEqualizerItf_;
+typedef const struct SLEqualizerItf_ * const * SLEqualizerItf;
+
+struct SLEqualizerItf_ {
+	SLresult (*SetEnabled)(
+		SLEqualizerItf self,
+		SLboolean enabled
+	);
+	SLresult (*IsEnabled)(
+		SLEqualizerItf self,
+		SLboolean *pEnabled
+	);
+	SLresult (*GetNumberOfBands)(
+		SLEqualizerItf self,
+		SLuint16 *pAmount
+	);
+	SLresult (*GetBandLevelRange)(
+		SLEqualizerItf self,
+		SLmillibel *pMin,
+		SLmillibel *pMax
+	);
+	SLresult (*SetBandLevel)(
+		SLEqualizerItf self,
+		SLuint16 band,
+		SLmillibel level
+	);
+	SLresult (*GetBandLevel)(
+		SLEqualizerItf self,
+		SLuint16 band,
+		SLmillibel *pLevel
+	);
+	SLresult (*GetCenterFreq)(
+		SLEqualizerItf self,
+		SLuint16 band,
+		SLmilliHertz *pCenter
+	);
+	SLresult (*GetBandFreqRange)(
+		SLEqualizerItf self,
+		SLuint16 band,
+		SLmilliHertz *pMin,
+		SLmilliHertz *pMax
+	);
+	SLresult (*GetBand)(
+		SLEqualizerItf self,
+		SLmilliHertz frequency,
+		SLuint16 *pBand
+	);
+	SLresult (*GetCurrentPreset)(
+		SLEqualizerItf self,
+		SLuint16 *pPreset
+	);
+	SLresult (*UsePreset)(
+		SLEqualizerItf self,
+		SLuint16 index
+	);
+	SLresult (*GetNumberOfPresets)(
+		SLEqualizerItf self,
+		SLuint16 *pNumPresets
+	);
+	SLresult (*GetPresetName)(
+		SLEqualizerItf self,
+		SLuint16 index,
+		const SLchar ** ppName
+	);
+};
+
+/*---------------------------------------------------------------------------*/
+/* Volume Interface                                                           */
+/* --------------------------------------------------------------------------*/
+
+extern SL_API const SLInterfaceID SL_IID_VOLUME;
+
+struct SLVolumeItf_;
+typedef const struct SLVolumeItf_ * const * SLVolumeItf;
+
+struct SLVolumeItf_ {
+	SLresult (*SetVolumeLevel) (
+		SLVolumeItf self,
+		SLmillibel level
+	);
+	SLresult (*GetVolumeLevel) (
+		SLVolumeItf self,
+		SLmillibel *pLevel
+	);
+	SLresult (*GetMaxVolumeLevel) (
+		SLVolumeItf  self,
+		SLmillibel *pMaxLevel
+	);
+	SLresult (*SetMute) (
+		SLVolumeItf self,
+		SLboolean mute
+	);
+	SLresult (*GetMute) (
+		SLVolumeItf self,
+		SLboolean *pMute
+	);
+	SLresult (*EnableStereoPosition) (
+		SLVolumeItf self,
+		SLboolean enable
+	);
+	SLresult (*IsEnabledStereoPosition) (
+		SLVolumeItf self,
+		SLboolean *pEnable
+	);
+	SLresult (*SetStereoPosition) (
+		SLVolumeItf self,
+		SLpermille stereoPosition
+	);
+	SLresult (*GetStereoPosition) (
+		SLVolumeItf self,
+		SLpermille *pStereoPosition
+	);
+};
+
+
+/*---------------------------------------------------------------------------*/
+/* Device Volume Interface                                                   */
+/* --------------------------------------------------------------------------*/
+
+extern SL_API const SLInterfaceID SL_IID_DEVICEVOLUME;
+
+struct SLDeviceVolumeItf_;
+typedef const struct SLDeviceVolumeItf_ * const * SLDeviceVolumeItf;
+
+struct SLDeviceVolumeItf_ {
+	SLresult (*GetVolumeScale) (
+		SLDeviceVolumeItf self,
+		SLuint32 deviceID,
+		SLint32 *pMinValue,
+		SLint32 *pMaxValue,
+		SLboolean *pIsMillibelScale
+	);
+	SLresult (*SetVolume) (
+		SLDeviceVolumeItf self,
+		SLuint32 deviceID,
+		SLint32 volume
+	);
+	SLresult (*GetVolume) (
+		SLDeviceVolumeItf self,
+		SLuint32 deviceID,
+		SLint32 *pVolume
+	);
+};
+
+
+/*---------------------------------------------------------------------------*/
+/* Buffer Queue Interface                                                    */
+/*---------------------------------------------------------------------------*/
+
+extern SL_API const SLInterfaceID SL_IID_BUFFERQUEUE;
+
+struct SLBufferQueueItf_;
+typedef const struct SLBufferQueueItf_ * const * SLBufferQueueItf;
+
+typedef void (SLAPIENTRY *slBufferQueueCallback)(
+	SLBufferQueueItf caller,
+	void *pContext
+);
+
+/** Buffer queue state **/
+
+typedef struct SLBufferQueueState_ {
+	SLuint32	count;
+	SLuint32	playIndex;
+} SLBufferQueueState;
+
+
+struct SLBufferQueueItf_ {
+	SLresult (*Enqueue) (
+		SLBufferQueueItf self,
+		const void *pBuffer,
+		SLuint32 size
+	);
+	SLresult (*Clear) (
+		SLBufferQueueItf self
+	);
+	SLresult (*GetState) (
+		SLBufferQueueItf self,
+		SLBufferQueueState *pState
+	);
+	SLresult (*RegisterCallback) (
+		SLBufferQueueItf self,
+		slBufferQueueCallback callback,
+		void* pContext
+	);
+};
+
+
+/*---------------------------------------------------------------------------*/
+/* PresetReverb                                                              */
+/*---------------------------------------------------------------------------*/
+
+#define SL_REVERBPRESET_NONE		((SLuint16) 0x0000)
+#define SL_REVERBPRESET_SMALLROOM	((SLuint16) 0x0001)
+#define SL_REVERBPRESET_MEDIUMROOM	((SLuint16) 0x0002)
+#define SL_REVERBPRESET_LARGEROOM	((SLuint16) 0x0003)
+#define SL_REVERBPRESET_MEDIUMHALL	((SLuint16) 0x0004)
+#define SL_REVERBPRESET_LARGEHALL	((SLuint16) 0x0005)
+#define SL_REVERBPRESET_PLATE 		((SLuint16) 0x0006)
+
+
+extern SL_API const SLInterfaceID SL_IID_PRESETREVERB;
+
+struct SLPresetReverbItf_;
+typedef const struct SLPresetReverbItf_ * const * SLPresetReverbItf;
+
+struct SLPresetReverbItf_ {
+	SLresult (*SetPreset) (
+		SLPresetReverbItf self,
+		SLuint16 preset
+	);
+	SLresult (*GetPreset) (
+		SLPresetReverbItf self,
+		SLuint16 *pPreset
+	);
+};
+
+
+/*---------------------------------------------------------------------------*/
+/* EnvironmentalReverb                                                       */
+/*---------------------------------------------------------------------------*/
+
+#define SL_I3DL2_ENVIRONMENT_PRESET_DEFAULT \
+	{ SL_MILLIBEL_MIN,    0,  1000,   500, SL_MILLIBEL_MIN,  20, SL_MILLIBEL_MIN,  40, 1000,1000 }
+#define SL_I3DL2_ENVIRONMENT_PRESET_GENERIC \
+	{ -1000, -100, 1490,  830, -2602,   7,   200,  11, 1000,1000 }
+#define SL_I3DL2_ENVIRONMENT_PRESET_PADDEDCELL \
+	{ -1000,-6000,  170,  100, -1204,   1,   207,   2, 1000,1000 }
+#define SL_I3DL2_ENVIRONMENT_PRESET_ROOM \
+	{ -1000, -454,  400,  830, -1646,   2,    53,   3, 1000,1000 }
+#define SL_I3DL2_ENVIRONMENT_PRESET_BATHROOM \
+	{ -1000,-1200, 1490,  540,  -370,   7,  1030,  11, 1000, 600 }
+#define SL_I3DL2_ENVIRONMENT_PRESET_LIVINGROOM \
+	{ -1000,-6000,  500,  100, -1376,   3, -1104,   4, 1000,1000 }
+#define SL_I3DL2_ENVIRONMENT_PRESET_STONEROOM \
+	{ -1000, -300, 2310,  640,  -711,  12,    83,  17, 1000,1000 }
+#define SL_I3DL2_ENVIRONMENT_PRESET_AUDITORIUM \
+	{ -1000, -476, 4320,  590,  -789,  20,  -289,  30, 1000,1000 }
+#define SL_I3DL2_ENVIRONMENT_PRESET_CONCERTHALL \
+	{ -1000, -500, 3920,  700, -1230,  20,    -2,  29, 1000,1000 }
+#define SL_I3DL2_ENVIRONMENT_PRESET_CAVE \
+	{ -1000,    0, 2910, 1300,  -602,  15,  -302,  22, 1000,1000 }
+#define SL_I3DL2_ENVIRONMENT_PRESET_ARENA \
+	{ -1000, -698, 7240,  330, -1166,  20,    16,  30, 1000,1000 }
+#define SL_I3DL2_ENVIRONMENT_PRESET_HANGAR \
+	{ -1000,-1000, 10050,  230,  -602,  20,   198,  30, 1000,1000 }
+#define SL_I3DL2_ENVIRONMENT_PRESET_CARPETEDHALLWAY \
+	{ -1000,-4000,  300,  100, -1831,   2, -1630,  30, 1000,1000 }
+#define SL_I3DL2_ENVIRONMENT_PRESET_HALLWAY \
+	{ -1000, -300, 1490,  590, -1219,   7,   441,  11, 1000,1000 }
+#define SL_I3DL2_ENVIRONMENT_PRESET_STONECORRIDOR \
+	{ -1000, -237, 2700,  790, -1214,  13,   395,  20, 1000,1000 }
+#define SL_I3DL2_ENVIRONMENT_PRESET_ALLEY \
+	{ -1000, -270, 1490,  860, -1204,   7,    -4,  11, 1000,1000 }
+#define SL_I3DL2_ENVIRONMENT_PRESET_FOREST \
+	{ -1000,-3300, 1490,  540, -2560, 162,  -613,  88,  790,1000 }
+#define SL_I3DL2_ENVIRONMENT_PRESET_CITY \
+	{ -1000, -800, 1490,  670, -2273,   7, -2217,  11,  500,1000 }
+#define SL_I3DL2_ENVIRONMENT_PRESET_MOUNTAINS \
+	{ -1000,-2500, 1490,  210, -2780, 300, -2014, 100,  270,1000 }
+#define SL_I3DL2_ENVIRONMENT_PRESET_QUARRY \
+	{ -1000,-1000, 1490,  830, SL_MILLIBEL_MIN,  61,   500,  25, 1000,1000 }
+#define SL_I3DL2_ENVIRONMENT_PRESET_PLAIN \
+	{ -1000,-2000, 1490,  500, -2466, 179, -2514, 100,  210,1000 }
+#define SL_I3DL2_ENVIRONMENT_PRESET_PARKINGLOT \
+	{ -1000,    0, 1650, 1500, -1363,   8, -1153,  12, 1000,1000 }
+#define SL_I3DL2_ENVIRONMENT_PRESET_SEWERPIPE \
+	{ -1000,-1000, 2810,  140,   429,  14,   648,  21,  800, 600 }
+#define SL_I3DL2_ENVIRONMENT_PRESET_UNDERWATER \
+	{ -1000,-4000, 1490,  100,  -449,   7,  1700,  11, 1000,1000 }
+#define SL_I3DL2_ENVIRONMENT_PRESET_SMALLROOM \
+	{ -1000,-600, 1100, 830, -400, 5, 500, 10, 1000, 1000 }
+#define SL_I3DL2_ENVIRONMENT_PRESET_MEDIUMROOM \
+	{ -1000,-600, 1300, 830, -1000, 20, -200, 20, 1000, 1000 }
+#define SL_I3DL2_ENVIRONMENT_PRESET_LARGEROOM \
+	{ -1000,-600, 1500, 830, -1600, 5, -1000, 40, 1000, 1000 }
+#define SL_I3DL2_ENVIRONMENT_PRESET_MEDIUMHALL \
+	{ -1000,-600, 1800, 700, -1300, 15, -800, 30, 1000, 1000 }
+#define SL_I3DL2_ENVIRONMENT_PRESET_LARGEHALL \
+	{ -1000,-600, 1800, 700, -2000, 30, -1400, 60, 1000, 1000 }
+#define SL_I3DL2_ENVIRONMENT_PRESET_PLATE \
+	{ -1000,-200, 1300, 900, 0, 2, 0, 10, 1000, 750 }
+
+
+typedef struct SLEnvironmentalReverbSettings_ {
+	SLmillibel    roomLevel;
+	SLmillibel    roomHFLevel;
+	SLmillisecond decayTime;
+	SLpermille    decayHFRatio;
+	SLmillibel    reflectionsLevel;
+	SLmillisecond reflectionsDelay;
+	SLmillibel    reverbLevel;
+	SLmillisecond reverbDelay;
+	SLpermille    diffusion;
+	SLpermille    density;
+} SLEnvironmentalReverbSettings;
+
+
+
+
+extern SL_API const SLInterfaceID SL_IID_ENVIRONMENTALREVERB;
+
+
+struct SLEnvironmentalReverbItf_;
+typedef const struct SLEnvironmentalReverbItf_ * const * SLEnvironmentalReverbItf;
+
+struct SLEnvironmentalReverbItf_ {
+	SLresult (*SetRoomLevel) (
+		SLEnvironmentalReverbItf self,
+		SLmillibel room
+	);
+	SLresult (*GetRoomLevel) (
+		SLEnvironmentalReverbItf self,
+		SLmillibel *pRoom
+	);
+	SLresult (*SetRoomHFLevel) (
+		SLEnvironmentalReverbItf self,
+		SLmillibel roomHF
+	);
+	SLresult (*GetRoomHFLevel) (
+		SLEnvironmentalReverbItf self,
+		SLmillibel *pRoomHF
+	);
+	SLresult (*SetDecayTime) (
+		SLEnvironmentalReverbItf self,
+		SLmillisecond decayTime
+	);
+	SLresult (*GetDecayTime) (
+		SLEnvironmentalReverbItf self,
+		SLmillisecond *pDecayTime
+	);
+	SLresult (*SetDecayHFRatio) (
+		SLEnvironmentalReverbItf self,
+		SLpermille decayHFRatio
+	);
+	SLresult (*GetDecayHFRatio) (
+		SLEnvironmentalReverbItf self,
+		SLpermille *pDecayHFRatio
+	);
+	SLresult (*SetReflectionsLevel) (
+		SLEnvironmentalReverbItf self,
+		SLmillibel reflectionsLevel
+	);
+	SLresult (*GetReflectionsLevel) (
+		SLEnvironmentalReverbItf self,
+		SLmillibel *pReflectionsLevel
+	);
+	SLresult (*SetReflectionsDelay) (
+		SLEnvironmentalReverbItf self,
+		SLmillisecond reflectionsDelay
+	);
+	SLresult (*GetReflectionsDelay) (
+		SLEnvironmentalReverbItf self,
+		SLmillisecond *pReflectionsDelay
+	);
+	SLresult (*SetReverbLevel) (
+		SLEnvironmentalReverbItf self,
+		SLmillibel reverbLevel
+	);
+	SLresult (*GetReverbLevel) (
+		SLEnvironmentalReverbItf self,
+		SLmillibel *pReverbLevel
+	);
+	SLresult (*SetReverbDelay) (
+		SLEnvironmentalReverbItf self,
+		SLmillisecond reverbDelay
+	);
+	SLresult (*GetReverbDelay) (
+		SLEnvironmentalReverbItf self,
+		SLmillisecond *pReverbDelay
+	);
+	SLresult (*SetDiffusion) (
+		SLEnvironmentalReverbItf self,
+		SLpermille diffusion
+	);
+	SLresult (*GetDiffusion) (
+		SLEnvironmentalReverbItf self,
+		SLpermille *pDiffusion
+	);
+	SLresult (*SetDensity) (
+		SLEnvironmentalReverbItf self,
+		SLpermille density
+	);
+	SLresult (*GetDensity) (
+		SLEnvironmentalReverbItf self,
+		SLpermille *pDensity
+	);
+	SLresult (*SetEnvironmentalReverbProperties) (
+		SLEnvironmentalReverbItf self,
+		const SLEnvironmentalReverbSettings *pProperties
+	);
+	SLresult (*GetEnvironmentalReverbProperties) (
+		SLEnvironmentalReverbItf self,
+		SLEnvironmentalReverbSettings *pProperties
+	);
+};
+
+/*---------------------------------------------------------------------------*/
+/* Effects Send Interface                                                    */
+/*---------------------------------------------------------------------------*/
+
+
+extern SL_API const SLInterfaceID SL_IID_EFFECTSEND;
+
+struct SLEffectSendItf_;
+typedef const struct SLEffectSendItf_ * const * SLEffectSendItf;
+
+struct SLEffectSendItf_ {
+	SLresult (*EnableEffectSend) (
+		SLEffectSendItf self,
+		const void *pAuxEffect,
+		SLboolean enable,
+		SLmillibel initialLevel
+	);
+	SLresult (*IsEnabled) (
+		SLEffectSendItf self,
+		const void * pAuxEffect,
+		SLboolean *pEnable
+	);
+	SLresult (*SetDirectLevel) (
+		SLEffectSendItf self,
+		SLmillibel directLevel
+	);
+	SLresult (*GetDirectLevel) (
+		SLEffectSendItf self,
+		SLmillibel *pDirectLevel
+	);
+	SLresult (*SetSendLevel) (
+		SLEffectSendItf self,
+		const void *pAuxEffect,
+		SLmillibel sendLevel
+	);
+	SLresult (*GetSendLevel)(
+		SLEffectSendItf self,
+		const void *pAuxEffect,
+		SLmillibel *pSendLevel
+	);
+};
+
+
+/*---------------------------------------------------------------------------*/
+/* 3D Grouping Interface                                                     */
+/*---------------------------------------------------------------------------*/
+
+
+extern SL_API const SLInterfaceID SL_IID_3DGROUPING;
+
+
+struct SL3DGroupingItf_ ;
+typedef const struct SL3DGroupingItf_ * const * SL3DGroupingItf;
+
+struct SL3DGroupingItf_ {
+	SLresult (*Set3DGroup) (
+		SL3DGroupingItf self,
+		SLObjectItf group
+	);
+	SLresult (*Get3DGroup) (
+		SL3DGroupingItf self,
+		SLObjectItf *pGroup
+	);
+};
+
+
+/*---------------------------------------------------------------------------*/
+/* 3D Commit Interface                                                       */
+/*---------------------------------------------------------------------------*/
+
+
+extern SL_API const SLInterfaceID SL_IID_3DCOMMIT;
+
+struct SL3DCommitItf_;
+typedef const struct SL3DCommitItf_* const * SL3DCommitItf;
+
+struct SL3DCommitItf_ {
+	SLresult (*Commit) (
+		SL3DCommitItf self
+	);
+	SLresult (*SetDeferred) (
+		SL3DCommitItf self,
+		SLboolean deferred
+	);
+};
+
+
+/*---------------------------------------------------------------------------*/
+/* 3D Location Interface                                                     */
+/*---------------------------------------------------------------------------*/
+
+typedef struct SLVec3D_ {
+	SLint32	x;
+	SLint32	y;
+	SLint32	z;
+} SLVec3D;
+
+extern SL_API const SLInterfaceID SL_IID_3DLOCATION;
+
+struct SL3DLocationItf_;
+typedef const struct SL3DLocationItf_ * const * SL3DLocationItf;
+
+struct SL3DLocationItf_ {
+	SLresult (*SetLocationCartesian) (
+		SL3DLocationItf self,
+		const SLVec3D *pLocation
+	);
+	SLresult (*SetLocationSpherical) (
+		SL3DLocationItf self,
+		SLmillidegree azimuth,
+		SLmillidegree elevation,
+		SLmillimeter distance
+	);
+	SLresult (*Move) (
+		SL3DLocationItf self,
+		const SLVec3D *pMovement
+	);
+	SLresult (*GetLocationCartesian) (
+		SL3DLocationItf self,
+		SLVec3D *pLocation
+	);
+	SLresult (*SetOrientationVectors) (
+		SL3DLocationItf self,
+		const SLVec3D *pFront,
+		const SLVec3D *pAbove
+	);
+	SLresult (*SetOrientationAngles) (
+		SL3DLocationItf self,
+		SLmillidegree heading,
+		SLmillidegree pitch,
+		SLmillidegree roll
+	);
+	SLresult (*Rotate) (
+		SL3DLocationItf self,
+		SLmillidegree theta,
+		const SLVec3D *pAxis
+	);
+	SLresult (*GetOrientationVectors) (
+		SL3DLocationItf self,
+		SLVec3D *pFront,
+		SLVec3D *pUp
+	);
+};
+
+
+/*---------------------------------------------------------------------------*/
+/* 3D Doppler Interface                                                      */
+/*---------------------------------------------------------------------------*/
+
+
+extern SL_API const SLInterfaceID SL_IID_3DDOPPLER;
+
+struct SL3DDopplerItf_;
+typedef const struct SL3DDopplerItf_ * const * SL3DDopplerItf;
+
+struct SL3DDopplerItf_ {
+	SLresult (*SetVelocityCartesian) (
+		SL3DDopplerItf self,
+		const SLVec3D *pVelocity
+	);
+	SLresult (*SetVelocitySpherical) (
+		SL3DDopplerItf self,
+		SLmillidegree azimuth,
+		SLmillidegree elevation,
+		SLmillimeter speed
+	);
+	SLresult (*GetVelocityCartesian) (
+		SL3DDopplerItf self,
+		SLVec3D *pVelocity
+	);
+	SLresult (*SetDopplerFactor) (
+		SL3DDopplerItf self,
+		SLpermille dopplerFactor
+	);
+	SLresult (*GetDopplerFactor) (
+		SL3DDopplerItf self,
+		SLpermille *pDopplerFactor
+	);
+};
+
+/*---------------------------------------------------------------------------*/
+/* 3D Source Interface and associated defines                                */
+/* --------------------------------------------------------------------------*/
+
+#define SL_ROLLOFFMODEL_EXPONENTIAL	((SLuint32) 0x00000000)
+#define SL_ROLLOFFMODEL_LINEAR		((SLuint32) 0x00000001)
+
+
+extern SL_API const SLInterfaceID SL_IID_3DSOURCE;
+
+struct SL3DSourceItf_;
+typedef const struct SL3DSourceItf_ * const * SL3DSourceItf;
+
+struct SL3DSourceItf_ {
+	SLresult (*SetHeadRelative) (
+		SL3DSourceItf self,
+		SLboolean headRelative
+	);
+	SLresult (*GetHeadRelative) (
+		SL3DSourceItf self,
+		SLboolean *pHeadRelative
+	);
+	SLresult (*SetRolloffDistances) (
+		SL3DSourceItf self,
+		SLmillimeter minDistance,
+		SLmillimeter maxDistance
+	);
+	SLresult (*GetRolloffDistances) (
+		SL3DSourceItf self,
+		SLmillimeter *pMinDistance,
+		SLmillimeter *pMaxDistance
+	);
+	SLresult (*SetRolloffMaxDistanceMute) (
+		SL3DSourceItf self,
+		SLboolean mute
+	);
+	SLresult (*GetRolloffMaxDistanceMute) (
+		SL3DSourceItf self,
+		SLboolean *pMute
+	);
+	SLresult (*SetRolloffFactor) (
+		SL3DSourceItf self,
+		SLpermille rolloffFactor
+	);
+	SLresult (*GetRolloffFactor) (
+		SL3DSourceItf self,
+		SLpermille *pRolloffFactor
+	);
+	SLresult (*SetRoomRolloffFactor) (
+		SL3DSourceItf self,
+		SLpermille roomRolloffFactor
+	);
+	SLresult (*GetRoomRolloffFactor) (
+		SL3DSourceItf self,
+		SLpermille *pRoomRolloffFactor
+	);
+	SLresult (*SetRolloffModel) (
+		SL3DSourceItf self,
+		SLuint8 model
+	);
+	SLresult (*GetRolloffModel) (
+		SL3DSourceItf self,
+		SLuint8 *pModel
+	);
+	SLresult (*SetCone) (
+		SL3DSourceItf self,
+		SLmillidegree innerAngle,
+		SLmillidegree outerAngle,
+		SLmillibel outerLevel
+	);
+	SLresult (*GetCone) (
+		SL3DSourceItf self,
+		SLmillidegree *pInnerAngle,
+		SLmillidegree *pOuterAngle,
+		SLmillibel *pOuterLevel
+	);
+};
+
+/*---------------------------------------------------------------------------*/
+/* 3D Macroscopic Interface                                                  */
+/* --------------------------------------------------------------------------*/
+
+extern SL_API const SLInterfaceID SL_IID_3DMACROSCOPIC;
+
+struct SL3DMacroscopicItf_;
+typedef const struct SL3DMacroscopicItf_ * const * SL3DMacroscopicItf;
+
+struct SL3DMacroscopicItf_ {
+	SLresult (*SetSize) (
+		SL3DMacroscopicItf self,
+		SLmillimeter width,
+		SLmillimeter height,
+		SLmillimeter depth
+	);
+	SLresult (*GetSize) (
+		SL3DMacroscopicItf self,
+		SLmillimeter *pWidth,
+		SLmillimeter *pHeight,
+		SLmillimeter *pDepth
+	);
+	SLresult (*SetOrientationAngles) (
+		SL3DMacroscopicItf self,
+		SLmillidegree heading,
+		SLmillidegree pitch,
+		SLmillidegree roll
+	);
+	SLresult (*SetOrientationVectors) (
+		SL3DMacroscopicItf self,
+		const SLVec3D *pFront,
+		const SLVec3D *pAbove
+	);
+	SLresult (*Rotate) (
+		SL3DMacroscopicItf self,
+		SLmillidegree theta,
+		const SLVec3D *pAxis
+	);
+	SLresult (*GetOrientationVectors) (
+		SL3DMacroscopicItf self,
+		SLVec3D *pFront,
+		SLVec3D *pUp
+	);
+};
+
+/*---------------------------------------------------------------------------*/
+/* Mute Solo Interface                                                       */
+/* --------------------------------------------------------------------------*/
+
+
+extern SL_API const SLInterfaceID SL_IID_MUTESOLO;
+
+struct SLMuteSoloItf_;
+typedef const struct SLMuteSoloItf_ * const * SLMuteSoloItf;
+
+struct SLMuteSoloItf_ {
+	SLresult (*SetChannelMute) (
+		SLMuteSoloItf self,
+		SLuint8 chan,
+		SLboolean mute
+	);
+	SLresult (*GetChannelMute) (
+		SLMuteSoloItf self,
+		SLuint8 chan,
+		SLboolean *pMute
+	);
+	SLresult (*SetChannelSolo) (
+		SLMuteSoloItf self,
+		SLuint8 chan,
+		SLboolean solo
+	);
+	SLresult (*GetChannelSolo) (
+		SLMuteSoloItf self,
+		SLuint8 chan,
+		SLboolean *pSolo
+	);
+	SLresult (*GetNumChannels) (
+		SLMuteSoloItf self,
+		SLuint8 *pNumChannels
+	);
+};
+
+
+/*---------------------------------------------------------------------------*/
+/* Dynamic Interface Management Interface and associated types and macros    */
+/* --------------------------------------------------------------------------*/
+
+#define SL_DYNAMIC_ITF_EVENT_RUNTIME_ERROR			((SLuint32) 0x00000001)
+#define SL_DYNAMIC_ITF_EVENT_ASYNC_TERMINATION		((SLuint32) 0x00000002)
+#define SL_DYNAMIC_ITF_EVENT_RESOURCES_LOST			((SLuint32) 0x00000003)
+#define SL_DYNAMIC_ITF_EVENT_RESOURCES_LOST_PERMANENTLY	((SLuint32) 0x00000004)
+#define SL_DYNAMIC_ITF_EVENT_RESOURCES_AVAILABLE		((SLuint32) 0x00000005)
+
+
+
+
+extern SL_API const SLInterfaceID SL_IID_DYNAMICINTERFACEMANAGEMENT;
+
+struct SLDynamicInterfaceManagementItf_;
+typedef const struct SLDynamicInterfaceManagementItf_ * const * SLDynamicInterfaceManagementItf;
+
+typedef void (SLAPIENTRY *slDynamicInterfaceManagementCallback) (
+	SLDynamicInterfaceManagementItf caller,
+	void * pContext,
+	SLuint32 event,
+	SLresult result,
+    const SLInterfaceID iid
+);
+
+
+struct SLDynamicInterfaceManagementItf_ {
+	SLresult (*AddInterface) (
+		SLDynamicInterfaceManagementItf self,
+		const SLInterfaceID iid,
+		SLboolean async
+	);
+	SLresult (*RemoveInterface) (
+		SLDynamicInterfaceManagementItf self,
+		const SLInterfaceID iid
+	);
+	SLresult (*ResumeInterface) (
+		SLDynamicInterfaceManagementItf self,
+		const SLInterfaceID iid,
+		SLboolean async
+	);
+	SLresult (*RegisterCallback) (
+		SLDynamicInterfaceManagementItf self,
+		slDynamicInterfaceManagementCallback callback,
+		void * pContext
+	);
+};
+
+/*---------------------------------------------------------------------------*/
+/* Midi Message Interface and associated types                               */
+/* --------------------------------------------------------------------------*/
+
+#define SL_MIDIMESSAGETYPE_NOTE_ON_OFF		((SLuint32) 0x00000001)
+#define SL_MIDIMESSAGETYPE_POLY_PRESSURE	((SLuint32) 0x00000002)
+#define SL_MIDIMESSAGETYPE_CONTROL_CHANGE	((SLuint32) 0x00000003)
+#define SL_MIDIMESSAGETYPE_PROGRAM_CHANGE	((SLuint32) 0x00000004)
+#define SL_MIDIMESSAGETYPE_CHANNEL_PRESSURE	((SLuint32) 0x00000005)
+#define SL_MIDIMESSAGETYPE_PITCH_BEND		((SLuint32) 0x00000006)
+#define SL_MIDIMESSAGETYPE_SYSTEM_MESSAGE	((SLuint32) 0x00000007)
+
+
+extern SL_API const SLInterfaceID SL_IID_MIDIMESSAGE;
+
+struct SLMIDIMessageItf_;
+typedef const struct SLMIDIMessageItf_ * const * SLMIDIMessageItf;
+
+typedef void (SLAPIENTRY *slMetaEventCallback) (
+	SLMIDIMessageItf caller,
+	void *pContext,
+	SLuint8 type,
+    SLuint32 length,
+	const SLuint8 *pData,
+	SLuint32 tick,
+	SLuint16 track
+);
+
+typedef void (SLAPIENTRY *slMIDIMessageCallback) (
+	SLMIDIMessageItf caller,
+	void *pContext,
+	SLuint8 statusByte,
+	SLuint32 length,
+	const SLuint8 *pData,
+	SLuint32 tick,
+	SLuint16 track
+);
+
+struct SLMIDIMessageItf_ {
+	SLresult (*SendMessage) (
+		SLMIDIMessageItf self,
+		const SLuint8 *data,
+		SLuint32 length
+	);
+	SLresult (*RegisterMetaEventCallback) (
+		SLMIDIMessageItf self,
+		slMetaEventCallback callback,
+		void *pContext
+	);
+	SLresult (*RegisterMIDIMessageCallback) (
+		SLMIDIMessageItf self,
+		slMIDIMessageCallback callback,
+		void *pContext
+	);
+	SLresult (*AddMIDIMessageCallbackFilter) (
+		SLMIDIMessageItf self,
+		SLuint32 messageType
+	);
+	SLresult (*ClearMIDIMessageCallbackFilter) (
+		SLMIDIMessageItf self
+	);
+};
+
+
+/*---------------------------------------------------------------------------*/
+/* Midi Mute Solo interface                                                  */
+/* --------------------------------------------------------------------------*/
+
+
+extern SL_API const SLInterfaceID SL_IID_MIDIMUTESOLO;
+
+struct SLMIDIMuteSoloItf_;
+typedef const struct SLMIDIMuteSoloItf_ * const * SLMIDIMuteSoloItf;
+
+struct SLMIDIMuteSoloItf_ {
+	SLresult (*SetChannelMute) (
+		SLMIDIMuteSoloItf self,
+		SLuint8 channel,
+		SLboolean mute
+	);
+	SLresult (*GetChannelMute) (
+		SLMIDIMuteSoloItf self,
+		SLuint8 channel,
+		SLboolean *pMute
+	);
+	SLresult (*SetChannelSolo) (
+		SLMIDIMuteSoloItf self,
+		SLuint8 channel,
+		SLboolean solo
+	);
+	SLresult (*GetChannelSolo) (
+		SLMIDIMuteSoloItf self,
+		SLuint8 channel,
+		SLboolean *pSolo
+	);
+	SLresult (*GetTrackCount) (
+		SLMIDIMuteSoloItf self,
+		SLuint16 *pCount
+	);
+	SLresult (*SetTrackMute) (
+		SLMIDIMuteSoloItf self,
+		SLuint16 track,
+		SLboolean mute
+	);
+	SLresult (*GetTrackMute) (
+		SLMIDIMuteSoloItf self,
+		SLuint16 track,
+		SLboolean *pMute
+	);
+	SLresult (*SetTrackSolo) (
+		SLMIDIMuteSoloItf self,
+		SLuint16 track,
+		SLboolean solo
+	);
+	SLresult (*GetTrackSolo) (
+		SLMIDIMuteSoloItf self,
+		SLuint16 track,
+		SLboolean *pSolo
+	);
+};
+
+
+/*---------------------------------------------------------------------------*/
+/* Midi Tempo interface                                                      */
+/* --------------------------------------------------------------------------*/
+
+
+extern SL_API const SLInterfaceID SL_IID_MIDITEMPO;
+
+struct SLMIDITempoItf_;
+typedef const struct SLMIDITempoItf_ * const * SLMIDITempoItf;
+
+struct SLMIDITempoItf_ {
+	SLresult (*SetTicksPerQuarterNote) (
+		SLMIDITempoItf self,
+		SLuint32 tpqn
+	);
+	SLresult (*GetTicksPerQuarterNote) (
+		SLMIDITempoItf self,
+		SLuint32 *pTpqn
+	);
+	SLresult (*SetMicrosecondsPerQuarterNote) (
+		SLMIDITempoItf self,
+		SLmicrosecond uspqn
+	);
+	SLresult (*GetMicrosecondsPerQuarterNote) (
+		SLMIDITempoItf self,
+		SLmicrosecond *uspqn
+	);
+};
+
+
+/*---------------------------------------------------------------------------*/
+/* Midi Time interface                                                       */
+/* --------------------------------------------------------------------------*/
+
+
+extern SL_API const SLInterfaceID SL_IID_MIDITIME;
+
+struct SLMIDITimeItf_;
+typedef const struct SLMIDITimeItf_ * const * SLMIDITimeItf;
+
+struct SLMIDITimeItf_ {
+	SLresult (*GetDuration) (
+		SLMIDITimeItf self,
+		SLuint32 *pDuration
+	);
+	SLresult (*SetPosition) (
+		SLMIDITimeItf self,
+		SLuint32 position
+	);
+	SLresult (*GetPosition) (
+		SLMIDITimeItf self,
+		SLuint32 *pPosition
+	);
+	SLresult (*SetLoopPoints) (
+		SLMIDITimeItf self,
+		SLuint32 startTick,
+		SLuint32 numTicks
+	);
+	SLresult (*GetLoopPoints) (
+		SLMIDITimeItf self,
+		SLuint32 *pStartTick,
+		SLuint32 *pNumTicks
+	);
+};
+
+
+/*---------------------------------------------------------------------------*/
+/* Audio Decoder Capabilities Interface                                      */
+/* --------------------------------------------------------------------------*/
+
+/*Audio Codec related defines*/
+
+#define SL_RATECONTROLMODE_CONSTANTBITRATE	((SLuint32) 0x00000001)
+#define SL_RATECONTROLMODE_VARIABLEBITRATE	((SLuint32) 0x00000002)
+
+#define SL_AUDIOCODEC_PCM         ((SLuint32) 0x00000001)
+#define SL_AUDIOCODEC_MP3         ((SLuint32) 0x00000002)
+#define SL_AUDIOCODEC_AMR         ((SLuint32) 0x00000003)
+#define SL_AUDIOCODEC_AMRWB       ((SLuint32) 0x00000004)
+#define SL_AUDIOCODEC_AMRWBPLUS   ((SLuint32) 0x00000005)
+#define SL_AUDIOCODEC_AAC         ((SLuint32) 0x00000006)
+#define SL_AUDIOCODEC_WMA         ((SLuint32) 0x00000007)
+#define SL_AUDIOCODEC_REAL        ((SLuint32) 0x00000008)
+
+#define SL_AUDIOPROFILE_PCM                   ((SLuint32) 0x00000001)
+
+#define SL_AUDIOPROFILE_MPEG1_L3              ((SLuint32) 0x00000001)
+#define SL_AUDIOPROFILE_MPEG2_L3              ((SLuint32) 0x00000002)
+#define SL_AUDIOPROFILE_MPEG25_L3             ((SLuint32) 0x00000003)
+
+#define SL_AUDIOCHANMODE_MP3_MONO             ((SLuint32) 0x00000001)
+#define SL_AUDIOCHANMODE_MP3_STEREO           ((SLuint32) 0x00000002)
+#define SL_AUDIOCHANMODE_MP3_JOINTSTEREO      ((SLuint32) 0x00000003)
+#define SL_AUDIOCHANMODE_MP3_DUAL             ((SLuint32) 0x00000004)
+
+#define SL_AUDIOPROFILE_AMR			((SLuint32) 0x00000001)
+
+#define SL_AUDIOSTREAMFORMAT_CONFORMANCE	((SLuint32) 0x00000001)
+#define SL_AUDIOSTREAMFORMAT_IF1			((SLuint32) 0x00000002)
+#define SL_AUDIOSTREAMFORMAT_IF2			((SLuint32) 0x00000003)
+#define SL_AUDIOSTREAMFORMAT_FSF			((SLuint32) 0x00000004)
+#define SL_AUDIOSTREAMFORMAT_RTPPAYLOAD	((SLuint32) 0x00000005)
+#define SL_AUDIOSTREAMFORMAT_ITU			((SLuint32) 0x00000006)
+
+#define SL_AUDIOPROFILE_AMRWB			((SLuint32) 0x00000001)
+
+#define SL_AUDIOPROFILE_AMRWBPLUS		((SLuint32) 0x00000001)
+
+#define SL_AUDIOPROFILE_AAC_AAC			((SLuint32) 0x00000001)
+
+#define SL_AUDIOMODE_AAC_MAIN			((SLuint32) 0x00000001)
+#define SL_AUDIOMODE_AAC_LC			((SLuint32) 0x00000002)
+#define SL_AUDIOMODE_AAC_SSR			((SLuint32) 0x00000003)
+#define SL_AUDIOMODE_AAC_LTP			((SLuint32) 0x00000004)
+#define SL_AUDIOMODE_AAC_HE			((SLuint32) 0x00000005)
+#define SL_AUDIOMODE_AAC_SCALABLE		((SLuint32) 0x00000006)
+#define SL_AUDIOMODE_AAC_ERLC			((SLuint32) 0x00000007)
+#define SL_AUDIOMODE_AAC_LD			((SLuint32) 0x00000008)
+#define SL_AUDIOMODE_AAC_HE_PS			((SLuint32) 0x00000009)
+#define SL_AUDIOMODE_AAC_HE_MPS			((SLuint32) 0x0000000A)
+
+#define SL_AUDIOSTREAMFORMAT_MP2ADTS		((SLuint32) 0x00000001)
+#define SL_AUDIOSTREAMFORMAT_MP4ADTS		((SLuint32) 0x00000002)
+#define SL_AUDIOSTREAMFORMAT_MP4LOAS		((SLuint32) 0x00000003)
+#define SL_AUDIOSTREAMFORMAT_MP4LATM		((SLuint32) 0x00000004)
+#define SL_AUDIOSTREAMFORMAT_ADIF		((SLuint32) 0x00000005)
+#define SL_AUDIOSTREAMFORMAT_MP4FF		((SLuint32) 0x00000006)
+#define SL_AUDIOSTREAMFORMAT_RAW			((SLuint32) 0x00000007)
+
+#define SL_AUDIOPROFILE_WMA7		((SLuint32) 0x00000001)
+#define SL_AUDIOPROFILE_WMA8		((SLuint32) 0x00000002)
+#define SL_AUDIOPROFILE_WMA9		((SLuint32) 0x00000003)
+#define SL_AUDIOPROFILE_WMA10		((SLuint32) 0x00000004)
+
+#define SL_AUDIOMODE_WMA_LEVEL1		((SLuint32) 0x00000001)
+#define SL_AUDIOMODE_WMA_LEVEL2		((SLuint32) 0x00000002)
+#define SL_AUDIOMODE_WMA_LEVEL3		((SLuint32) 0x00000003)
+#define SL_AUDIOMODE_WMA_LEVEL4		((SLuint32) 0x00000004)
+#define SL_AUDIOMODE_WMAPRO_LEVELM0	((SLuint32) 0x00000005)
+#define SL_AUDIOMODE_WMAPRO_LEVELM1	((SLuint32) 0x00000006)
+#define SL_AUDIOMODE_WMAPRO_LEVELM2	((SLuint32) 0x00000007)
+#define SL_AUDIOMODE_WMAPRO_LEVELM3	((SLuint32) 0x00000008)
+
+#define SL_AUDIOPROFILE_REALAUDIO		((SLuint32) 0x00000001)
+
+#define SL_AUDIOMODE_REALAUDIO_G2		((SLuint32) 0x00000001)
+#define SL_AUDIOMODE_REALAUDIO_8			((SLuint32) 0x00000002)
+#define SL_AUDIOMODE_REALAUDIO_10		((SLuint32) 0x00000003)
+#define SL_AUDIOMODE_REALAUDIO_SURROUND	((SLuint32) 0x00000004)
+
+typedef struct SLAudioCodecDescriptor_ {
+    SLuint32      maxChannels;
+    SLuint32      minBitsPerSample;
+    SLuint32      maxBitsPerSample;
+    SLmilliHertz  minSampleRate;
+    SLmilliHertz  maxSampleRate;
+    SLboolean     isFreqRangeContinuous;
+    SLmilliHertz *pSampleRatesSupported;
+    SLuint32      numSampleRatesSupported;
+    SLuint32      minBitRate;
+    SLuint32      maxBitRate;
+    SLboolean     isBitrateRangeContinuous;
+    SLuint32     *pBitratesSupported;
+    SLuint32      numBitratesSupported;
+    SLuint32	  profileSetting;
+    SLuint32      modeSetting;
+} SLAudioCodecDescriptor;
+
+/*Structure used to retrieve the profile and level settings supported by an audio encoder */
+
+typedef struct SLAudioCodecProfileMode_ {
+    SLuint32 profileSetting;
+    SLuint32 modeSetting;
+} SLAudioCodecProfileMode;
+
+extern SL_API const SLInterfaceID SL_IID_AUDIODECODERCAPABILITIES;
+
+struct SLAudioDecoderCapabilitiesItf_;
+typedef const struct SLAudioDecoderCapabilitiesItf_ * const * SLAudioDecoderCapabilitiesItf;
+
+struct SLAudioDecoderCapabilitiesItf_ {
+    SLresult (*GetAudioDecoders) (
+        SLAudioDecoderCapabilitiesItf self,
+        SLuint32 * pNumDecoders ,
+        SLuint32 *pDecoderIds
+    );
+    SLresult (*GetAudioDecoderCapabilities) (
+        SLAudioDecoderCapabilitiesItf self,
+        SLuint32 decoderId,
+        SLuint32 *pIndex,
+        SLAudioCodecDescriptor *pDescriptor
+    );
+};
+
+
+
+
+/*---------------------------------------------------------------------------*/
+/* Audio Encoder Capabilities Interface                                      */
+/* --------------------------------------------------------------------------*/
+
+/* Structure used when setting audio encoding parameters */
+
+typedef struct SLAudioEncoderSettings_ {
+    SLuint32 encoderId;
+    SLuint32 channelsIn;
+    SLuint32 channelsOut;
+    SLmilliHertz sampleRate;
+    SLuint32 bitRate;
+    SLuint32 bitsPerSample;
+    SLuint32 rateControl;
+    SLuint32 profileSetting;
+    SLuint32 levelSetting;
+    SLuint32 channelMode;
+    SLuint32 streamFormat;
+    SLuint32 encodeOptions;
+    SLuint32 blockAlignment;
+} SLAudioEncoderSettings;
+
+extern SL_API const SLInterfaceID SL_IID_AUDIOENCODERCAPABILITIES;
+
+struct SLAudioEncoderCapabilitiesItf_;
+typedef const struct SLAudioEncoderCapabilitiesItf_ * const * SLAudioEncoderCapabilitiesItf;
+
+struct SLAudioEncoderCapabilitiesItf_ {
+    SLresult (*GetAudioEncoders) (
+        SLAudioEncoderCapabilitiesItf self,
+        SLuint32 *pNumEncoders ,
+        SLuint32 *pEncoderIds
+    );
+    SLresult (*GetAudioEncoderCapabilities) (
+        SLAudioEncoderCapabilitiesItf self,
+        SLuint32 encoderId,
+        SLuint32 *pIndex,
+        SLAudioCodecDescriptor * pDescriptor
+    );
+};
+
+
+/*---------------------------------------------------------------------------*/
+/* Audio Encoder Interface                                                   */
+/* --------------------------------------------------------------------------*/
+
+
+extern SL_API const SLInterfaceID SL_IID_AUDIOENCODER;
+
+struct SLAudioEncoderItf_;
+typedef const struct SLAudioEncoderItf_ * const * SLAudioEncoderItf;
+
+struct SLAudioEncoderItf_ {
+    SLresult (*SetEncoderSettings) (
+        SLAudioEncoderItf		self,
+        SLAudioEncoderSettings 	*pSettings
+    );
+    SLresult (*GetEncoderSettings) (
+        SLAudioEncoderItf		self,
+        SLAudioEncoderSettings	*pSettings
+    );
+};
+
+
+/*---------------------------------------------------------------------------*/
+/* Bass Boost Interface                                                      */
+/* --------------------------------------------------------------------------*/
+
+
+extern SL_API const SLInterfaceID SL_IID_BASSBOOST;
+
+struct SLBassBoostItf_;
+typedef const struct SLBassBoostItf_ * const * SLBassBoostItf;
+
+struct SLBassBoostItf_ {
+	SLresult (*SetEnabled)(
+		SLBassBoostItf self,
+		SLboolean enabled
+	);
+	SLresult (*IsEnabled)(
+		SLBassBoostItf self,
+		SLboolean *pEnabled
+	);
+	SLresult (*SetStrength)(
+		SLBassBoostItf self,
+		SLpermille strength
+	);
+	SLresult (*GetRoundedStrength)(
+		SLBassBoostItf self,
+		SLpermille *pStrength
+	);
+	SLresult (*IsStrengthSupported)(
+		SLBassBoostItf self,
+		SLboolean *pSupported
+	);
+};
+
+/*---------------------------------------------------------------------------*/
+/* Pitch Interface                                                           */
+/* --------------------------------------------------------------------------*/
+
+
+extern SL_API const SLInterfaceID SL_IID_PITCH;
+
+struct SLPitchItf_;
+typedef const struct SLPitchItf_ * const * SLPitchItf;
+
+struct SLPitchItf_ {
+	SLresult (*SetPitch) (
+		SLPitchItf self,
+		SLpermille pitch
+	);
+	SLresult (*GetPitch) (
+		SLPitchItf self,
+		SLpermille *pPitch
+	);
+	SLresult (*GetPitchCapabilities) (
+		SLPitchItf self,
+		SLpermille *pMinPitch,
+		SLpermille *pMaxPitch
+	);
+};
+
+
+/*---------------------------------------------------------------------------*/
+/* Rate Pitch Interface                                                      */
+/* RatePitchItf is an interface for controlling the rate a sound is played   */
+/* back. A change in rate will cause a change in pitch.                      */
+/* --------------------------------------------------------------------------*/
+
+
+extern SL_API const SLInterfaceID SL_IID_RATEPITCH;
+
+struct SLRatePitchItf_;
+typedef const struct SLRatePitchItf_ * const * SLRatePitchItf;
+
+struct SLRatePitchItf_ {
+	SLresult (*SetRate) (
+		SLRatePitchItf self,
+		SLpermille rate
+	);
+	SLresult (*GetRate) (
+		SLRatePitchItf self,
+		SLpermille *pRate
+	);
+	SLresult (*GetRatePitchCapabilities) (
+		SLRatePitchItf self,
+		SLpermille *pMinRate,
+		SLpermille *pMaxRate
+	);
+};
+
+
+/*---------------------------------------------------------------------------*/
+/* Virtualizer Interface                                                      */
+/* --------------------------------------------------------------------------*/
+
+
+extern SL_API const SLInterfaceID SL_IID_VIRTUALIZER;
+
+struct SLVirtualizerItf_;
+typedef const struct SLVirtualizerItf_ * const * SLVirtualizerItf;
+
+struct SLVirtualizerItf_ {
+	SLresult (*SetEnabled)(
+		SLVirtualizerItf self,
+		SLboolean enabled
+	);
+	SLresult (*IsEnabled)(
+		SLVirtualizerItf self,
+		SLboolean *pEnabled
+	);
+	SLresult (*SetStrength)(
+		SLVirtualizerItf self,
+		SLpermille strength
+	);
+	SLresult (*GetRoundedStrength)(
+		SLVirtualizerItf self,
+		SLpermille *pStrength
+	);
+	SLresult (*IsStrengthSupported)(
+		SLVirtualizerItf self,
+		SLboolean *pSupported
+	);
+};
+
+/*---------------------------------------------------------------------------*/
+/* Visualization Interface                                                   */
+/* --------------------------------------------------------------------------*/
+
+
+extern SL_API const SLInterfaceID SL_IID_VISUALIZATION;
+
+struct SLVisualizationItf_;
+typedef const struct SLVisualizationItf_ * const * SLVisualizationItf;
+
+typedef void (SLAPIENTRY *slVisualizationCallback) (
+	void *pContext,
+	const SLuint8 waveform[],
+	const SLuint8 fft[],
+	SLmilliHertz samplerate
+);
+
+struct SLVisualizationItf_{
+	SLresult (*RegisterVisualizationCallback)(
+		SLVisualizationItf self,
+		slVisualizationCallback callback,
+		void *pContext,
+		SLmilliHertz rate
+	);
+	SLresult (*GetMaxRate)(
+		SLVisualizationItf self,
+		SLmilliHertz* pRate
+	);
+};
+
+
+/*---------------------------------------------------------------------------*/
+/* Engine Interface                                                          */
+/* --------------------------------------------------------------------------*/
+
+
+extern SL_API const SLInterfaceID SL_IID_ENGINE;
+
+struct SLEngineItf_;
+typedef const struct SLEngineItf_ * const * SLEngineItf;
+
+
+struct SLEngineItf_ {
+
+	SLresult (*CreateLEDDevice) (
+		SLEngineItf self,
+		SLObjectItf * pDevice,
+		SLuint32 deviceID,
+		SLuint32 numInterfaces,
+		const SLInterfaceID * pInterfaceIds,
+		const SLboolean * pInterfaceRequired
+	);
+	SLresult (*CreateVibraDevice) (
+		SLEngineItf self,
+		SLObjectItf * pDevice,
+		SLuint32 deviceID,
+		SLuint32 numInterfaces,
+		const SLInterfaceID * pInterfaceIds,
+		const SLboolean * pInterfaceRequired
+	);
+	SLresult (*CreateAudioPlayer) (
+		SLEngineItf self,
+		SLObjectItf * pPlayer,
+		SLDataSource *pAudioSrc,
+		SLDataSink *pAudioSnk,
+		SLuint32 numInterfaces,
+		const SLInterfaceID * pInterfaceIds,
+		const SLboolean * pInterfaceRequired
+	);
+	SLresult (*CreateAudioRecorder) (
+		SLEngineItf self,
+		SLObjectItf * pRecorder,
+		SLDataSource *pAudioSrc,
+		SLDataSink *pAudioSnk,
+		SLuint32 numInterfaces,
+		const SLInterfaceID * pInterfaceIds,
+		const SLboolean * pInterfaceRequired
+	);
+	SLresult (*CreateMidiPlayer) (
+		SLEngineItf self,
+		SLObjectItf * pPlayer,
+		SLDataSource *pMIDISrc,
+		SLDataSource *pBankSrc,
+		SLDataSink *pAudioOutput,
+		SLDataSink *pVibra,
+		SLDataSink *pLEDArray,
+		SLuint32 numInterfaces,
+		const SLInterfaceID * pInterfaceIds,
+		const SLboolean * pInterfaceRequired
+	);
+	SLresult (*CreateListener) (
+		SLEngineItf self,
+		SLObjectItf * pListener,
+		SLuint32 numInterfaces,
+		const SLInterfaceID * pInterfaceIds,
+		const SLboolean * pInterfaceRequired
+	);
+	SLresult (*Create3DGroup) (
+		SLEngineItf self,
+		SLObjectItf * pGroup,
+		SLuint32 numInterfaces,
+		const SLInterfaceID * pInterfaceIds,
+		const SLboolean * pInterfaceRequired
+	);
+	SLresult (*CreateOutputMix) (
+		SLEngineItf self,
+		SLObjectItf * pMix,
+		SLuint32 numInterfaces,
+		const SLInterfaceID * pInterfaceIds,
+		const SLboolean * pInterfaceRequired
+	);
+	SLresult (*CreateMetadataExtractor) (
+		SLEngineItf self,
+		SLObjectItf * pMetadataExtractor,
+		SLDataSource * pDataSource,
+		SLuint32 numInterfaces,
+		const SLInterfaceID * pInterfaceIds,
+		const SLboolean * pInterfaceRequired
+	);
+    SLresult (*CreateExtensionObject) (
+        SLEngineItf self,
+        SLObjectItf * pObject,
+        void * pParameters,
+        SLuint32 objectID,
+        SLuint32 numInterfaces,
+        const SLInterfaceID * pInterfaceIds,
+        const SLboolean * pInterfaceRequired
+    );
+	SLresult (*QueryNumSupportedInterfaces) (
+		SLEngineItf self,
+		SLuint32 objectID,
+		SLuint32 * pNumSupportedInterfaces
+	);
+	SLresult (*QuerySupportedInterfaces) (
+		SLEngineItf self,
+		SLuint32 objectID,
+		SLuint32 index,
+		SLInterfaceID * pInterfaceId
+	);
+    SLresult (*QueryNumSupportedExtensions) (
+        SLEngineItf self,
+        SLuint32 * pNumExtensions
+    );
+    SLresult (*QuerySupportedExtension) (
+        SLEngineItf self,
+        SLuint32 index,
+        SLchar * pExtensionName,
+        SLint16 * pNameLength
+    );
+    SLresult (*IsExtensionSupported) (
+        SLEngineItf self,
+        const SLchar * pExtensionName,
+        SLboolean * pSupported
+    );
+};
+
+
+/*---------------------------------------------------------------------------*/
+/* Engine Capabilities Interface                                             */
+/* --------------------------------------------------------------------------*/
+
+
+extern SL_API const SLInterfaceID SL_IID_ENGINECAPABILITIES;
+
+struct SLEngineCapabilitiesItf_;
+typedef const struct SLEngineCapabilitiesItf_ * const * SLEngineCapabilitiesItf;
+
+struct SLEngineCapabilitiesItf_ {
+	SLresult (*QuerySupportedProfiles) (
+		SLEngineCapabilitiesItf self,
+		SLuint16 *pProfilesSupported
+	);
+	SLresult (*QueryAvailableVoices) (
+		SLEngineCapabilitiesItf self,
+		SLuint16 voiceType,
+		SLint16 *pNumMaxVoices,
+		SLboolean *pIsAbsoluteMax,
+		SLint16 *pNumFreeVoices
+	);
+	SLresult (*QueryNumberOfMIDISynthesizers) (
+		SLEngineCapabilitiesItf self,
+		SLint16 *pNumMIDIsynthesizers
+	);
+	SLresult (*QueryAPIVersion) (
+		SLEngineCapabilitiesItf self,
+		SLint16 *pMajor,
+		SLint16 *pMinor,
+		SLint16 *pStep
+	);
+	SLresult (*QueryLEDCapabilities) (
+		SLEngineCapabilitiesItf self,
+        SLuint32 *pIndex,
+		SLuint32 *pLEDDeviceID,
+		SLLEDDescriptor *pDescriptor
+	);
+	SLresult (*QueryVibraCapabilities) (
+		SLEngineCapabilitiesItf self,
+        SLuint32 *pIndex,
+		SLuint32 *pVibraDeviceID,
+		SLVibraDescriptor *pDescriptor
+	);
+	SLresult (*IsThreadSafe) (
+		SLEngineCapabilitiesItf self,
+		SLboolean *pIsThreadSafe
+	);
+};
+
+/*---------------------------------------------------------------------------*/
+/* Thread Sync Interface                                                     */
+/* --------------------------------------------------------------------------*/
+
+
+extern SL_API const SLInterfaceID SL_IID_THREADSYNC;
+
+struct SLThreadSyncItf_;
+typedef const struct SLThreadSyncItf_ * const * SLThreadSyncItf;
+
+
+struct SLThreadSyncItf_ {
+	SLresult (*EnterCriticalSection) (
+		SLThreadSyncItf self
+	);
+	SLresult (*ExitCriticalSection) (
+		SLThreadSyncItf self
+	);
+};
+
+
+/*****************************************************************************/
+/* SL engine constructor                                                     */
+/*****************************************************************************/
+
+#define SL_ENGINEOPTION_THREADSAFE	((SLuint32) 0x00000001)
+#define SL_ENGINEOPTION_LOSSOFCONTROL	((SLuint32) 0x00000002)
+
+typedef struct SLEngineOption_ {
+	SLuint32 feature;
+	SLuint32 data;
+} SLEngineOption;
+
+
+SL_API SLresult SLAPIENTRY slCreateEngine(
+	SLObjectItf             *pEngine,
+	SLuint32                numOptions,
+	const SLEngineOption    *pEngineOptions,
+	SLuint32                numInterfaces,
+	const SLInterfaceID     *pInterfaceIds,
+	const SLboolean         * pInterfaceRequired
+);
+
+SL_API SLresult SLAPIENTRY slQueryNumSupportedEngineInterfaces(
+	SLuint32 * pNumSupportedInterfaces
+);
+
+SL_API SLresult SLAPIENTRY slQuerySupportedEngineInterfaces(
+	SLuint32 index,
+	SLInterfaceID * pInterfaceId
+);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* OPENSL_ES_H_ */
diff --git a/ndk/platforms/android-20/include/SLES/OpenSLES_Android.h b/ndk/platforms/android-20/include/SLES/OpenSLES_Android.h
new file mode 100644
index 0000000..dcf3432
--- /dev/null
+++ b/ndk/platforms/android-20/include/SLES/OpenSLES_Android.h
@@ -0,0 +1,373 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * 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.
+ */
+
+#ifndef OPENSL_ES_ANDROID_H_
+#define OPENSL_ES_ANDROID_H_
+
+#include "OpenSLES_AndroidConfiguration.h"
+#include "OpenSLES_AndroidMetadata.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "OpenSLES.h"
+
+/*---------------------------------------------------------------------------*/
+/* Android common types                                                      */
+/*---------------------------------------------------------------------------*/
+
+typedef sl_int64_t             SLAint64;          /* 64 bit signed integer   */
+
+typedef sl_uint64_t            SLAuint64;         /* 64 bit unsigned integer */
+
+/*---------------------------------------------------------------------------*/
+/* Android PCM Data Format                                                   */
+/*---------------------------------------------------------------------------*/
+
+/* The following pcm representations and data formats map to those in OpenSLES 1.1 */
+#define SL_ANDROID_PCM_REPRESENTATION_SIGNED_INT       ((SLuint32) 0x00000001)
+#define SL_ANDROID_PCM_REPRESENTATION_UNSIGNED_INT     ((SLuint32) 0x00000002)
+#define SL_ANDROID_PCM_REPRESENTATION_FLOAT            ((SLuint32) 0x00000003)
+
+#define SL_ANDROID_DATAFORMAT_PCM_EX    ((SLuint32) 0x00000004)
+
+typedef struct SLAndroidDataFormat_PCM_EX_ {
+    SLuint32         formatType;
+    SLuint32         numChannels;
+    SLuint32         sampleRate;
+    SLuint32         bitsPerSample;
+    SLuint32         containerSize;
+    SLuint32         channelMask;
+    SLuint32         endianness;
+    SLuint32         representation;
+} SLAndroidDataFormat_PCM_EX;
+
+/*---------------------------------------------------------------------------*/
+/* Android Effect interface                                                  */
+/*---------------------------------------------------------------------------*/
+
+extern SL_API const SLInterfaceID SL_IID_ANDROIDEFFECT;
+
+/** Android Effect interface methods */
+
+struct SLAndroidEffectItf_;
+typedef const struct SLAndroidEffectItf_ * const * SLAndroidEffectItf;
+
+struct SLAndroidEffectItf_ {
+
+    SLresult (*CreateEffect) (SLAndroidEffectItf self,
+            SLInterfaceID effectImplementationId);
+
+    SLresult (*ReleaseEffect) (SLAndroidEffectItf self,
+            SLInterfaceID effectImplementationId);
+
+    SLresult (*SetEnabled) (SLAndroidEffectItf self,
+            SLInterfaceID effectImplementationId,
+            SLboolean enabled);
+
+    SLresult (*IsEnabled) (SLAndroidEffectItf self,
+            SLInterfaceID effectImplementationId,
+            SLboolean *pEnabled);
+
+    SLresult (*SendCommand) (SLAndroidEffectItf self,
+            SLInterfaceID effectImplementationId,
+            SLuint32 command,
+            SLuint32 commandSize,
+            void *pCommandData,
+            SLuint32 *replySize,
+            void *pReplyData);
+};
+
+
+/*---------------------------------------------------------------------------*/
+/* Android Effect Send interface                                             */
+/*---------------------------------------------------------------------------*/
+
+extern SL_API const SLInterfaceID SL_IID_ANDROIDEFFECTSEND;
+
+/** Android Effect Send interface methods */
+
+struct SLAndroidEffectSendItf_;
+typedef const struct SLAndroidEffectSendItf_ * const * SLAndroidEffectSendItf;
+
+struct SLAndroidEffectSendItf_ {
+    SLresult (*EnableEffectSend) (
+        SLAndroidEffectSendItf self,
+        SLInterfaceID effectImplementationId,
+        SLboolean enable,
+        SLmillibel initialLevel
+    );
+    SLresult (*IsEnabled) (
+        SLAndroidEffectSendItf self,
+        SLInterfaceID effectImplementationId,
+        SLboolean *pEnable
+    );
+    SLresult (*SetDirectLevel) (
+        SLAndroidEffectSendItf self,
+        SLmillibel directLevel
+    );
+    SLresult (*GetDirectLevel) (
+        SLAndroidEffectSendItf self,
+        SLmillibel *pDirectLevel
+    );
+    SLresult (*SetSendLevel) (
+        SLAndroidEffectSendItf self,
+        SLInterfaceID effectImplementationId,
+        SLmillibel sendLevel
+    );
+    SLresult (*GetSendLevel)(
+        SLAndroidEffectSendItf self,
+        SLInterfaceID effectImplementationId,
+        SLmillibel *pSendLevel
+    );
+};
+
+
+/*---------------------------------------------------------------------------*/
+/* Android Effect Capabilities interface                                     */
+/*---------------------------------------------------------------------------*/
+
+extern SL_API const SLInterfaceID SL_IID_ANDROIDEFFECTCAPABILITIES;
+
+/** Android Effect Capabilities interface methods */
+
+struct SLAndroidEffectCapabilitiesItf_;
+typedef const struct SLAndroidEffectCapabilitiesItf_ * const * SLAndroidEffectCapabilitiesItf;
+
+struct SLAndroidEffectCapabilitiesItf_ {
+
+    SLresult (*QueryNumEffects) (SLAndroidEffectCapabilitiesItf self,
+            SLuint32 *pNumSupportedEffects);
+
+
+    SLresult (*QueryEffect) (SLAndroidEffectCapabilitiesItf self,
+            SLuint32 index,
+            SLInterfaceID *pEffectType,
+            SLInterfaceID *pEffectImplementation,
+            SLchar *pName,
+            SLuint16 *pNameSize);
+};
+
+
+/*---------------------------------------------------------------------------*/
+/* Android Configuration interface                                           */
+/*---------------------------------------------------------------------------*/
+extern SL_API const SLInterfaceID SL_IID_ANDROIDCONFIGURATION;
+
+/** Android Configuration interface methods */
+
+struct SLAndroidConfigurationItf_;
+typedef const struct SLAndroidConfigurationItf_ * const * SLAndroidConfigurationItf;
+
+struct SLAndroidConfigurationItf_ {
+
+    SLresult (*SetConfiguration) (SLAndroidConfigurationItf self,
+            const SLchar *configKey,
+            const void *pConfigValue,
+            SLuint32 valueSize);
+
+    SLresult (*GetConfiguration) (SLAndroidConfigurationItf self,
+           const SLchar *configKey,
+           SLuint32 *pValueSize,
+           void *pConfigValue
+       );
+};
+
+
+/*---------------------------------------------------------------------------*/
+/* Android Simple Buffer Queue Interface                                     */
+/*---------------------------------------------------------------------------*/
+
+extern SL_API const SLInterfaceID SL_IID_ANDROIDSIMPLEBUFFERQUEUE;
+
+struct SLAndroidSimpleBufferQueueItf_;
+typedef const struct SLAndroidSimpleBufferQueueItf_ * const * SLAndroidSimpleBufferQueueItf;
+
+typedef void (SLAPIENTRY *slAndroidSimpleBufferQueueCallback)(
+	SLAndroidSimpleBufferQueueItf caller,
+	void *pContext
+);
+
+/** Android simple buffer queue state **/
+
+typedef struct SLAndroidSimpleBufferQueueState_ {
+	SLuint32	count;
+	SLuint32	index;
+} SLAndroidSimpleBufferQueueState;
+
+
+struct SLAndroidSimpleBufferQueueItf_ {
+	SLresult (*Enqueue) (
+		SLAndroidSimpleBufferQueueItf self,
+		const void *pBuffer,
+		SLuint32 size
+	);
+	SLresult (*Clear) (
+		SLAndroidSimpleBufferQueueItf self
+	);
+	SLresult (*GetState) (
+		SLAndroidSimpleBufferQueueItf self,
+		SLAndroidSimpleBufferQueueState *pState
+	);
+	SLresult (*RegisterCallback) (
+		SLAndroidSimpleBufferQueueItf self,
+		slAndroidSimpleBufferQueueCallback callback,
+		void* pContext
+	);
+};
+
+
+/*---------------------------------------------------------------------------*/
+/* Android Buffer Queue Interface                                            */
+/*---------------------------------------------------------------------------*/
+
+extern SL_API const SLInterfaceID SL_IID_ANDROIDBUFFERQUEUESOURCE;
+
+struct SLAndroidBufferQueueItf_;
+typedef const struct SLAndroidBufferQueueItf_ * const * SLAndroidBufferQueueItf;
+
+#define SL_ANDROID_ITEMKEY_NONE             ((SLuint32) 0x00000000)
+#define SL_ANDROID_ITEMKEY_EOS              ((SLuint32) 0x00000001)
+#define SL_ANDROID_ITEMKEY_DISCONTINUITY    ((SLuint32) 0x00000002)
+#define SL_ANDROID_ITEMKEY_BUFFERQUEUEEVENT ((SLuint32) 0x00000003)
+#define SL_ANDROID_ITEMKEY_FORMAT_CHANGE    ((SLuint32) 0x00000004)
+
+#define SL_ANDROIDBUFFERQUEUEEVENT_NONE        ((SLuint32) 0x00000000)
+#define SL_ANDROIDBUFFERQUEUEEVENT_PROCESSED   ((SLuint32) 0x00000001)
+#if 0   // reserved for future use
+#define SL_ANDROIDBUFFERQUEUEEVENT_UNREALIZED  ((SLuint32) 0x00000002)
+#define SL_ANDROIDBUFFERQUEUEEVENT_CLEARED     ((SLuint32) 0x00000004)
+#define SL_ANDROIDBUFFERQUEUEEVENT_STOPPED     ((SLuint32) 0x00000008)
+#define SL_ANDROIDBUFFERQUEUEEVENT_ERROR       ((SLuint32) 0x00000010)
+#define SL_ANDROIDBUFFERQUEUEEVENT_CONTENT_END ((SLuint32) 0x00000020)
+#endif
+
+typedef struct SLAndroidBufferItem_ {
+    SLuint32 itemKey;  // identifies the item
+    SLuint32 itemSize;
+    SLuint8  itemData[0];
+} SLAndroidBufferItem;
+
+typedef SLresult (SLAPIENTRY *slAndroidBufferQueueCallback)(
+    SLAndroidBufferQueueItf caller,/* input */
+    void *pCallbackContext,        /* input */
+    void *pBufferContext,          /* input */
+    void *pBufferData,             /* input */
+    SLuint32 dataSize,             /* input */
+    SLuint32 dataUsed,             /* input */
+    const SLAndroidBufferItem *pItems,/* input */
+    SLuint32 itemsLength           /* input */
+);
+
+typedef struct SLAndroidBufferQueueState_ {
+    SLuint32    count;
+    SLuint32    index;
+} SLAndroidBufferQueueState;
+
+struct SLAndroidBufferQueueItf_ {
+    SLresult (*RegisterCallback) (
+        SLAndroidBufferQueueItf self,
+        slAndroidBufferQueueCallback callback,
+        void* pCallbackContext
+    );
+
+    SLresult (*Clear) (
+        SLAndroidBufferQueueItf self
+    );
+
+    SLresult (*Enqueue) (
+        SLAndroidBufferQueueItf self,
+        void *pBufferContext,
+        void *pData,
+        SLuint32 dataLength,
+        const SLAndroidBufferItem *pItems,
+        SLuint32 itemsLength
+    );
+
+    SLresult (*GetState) (
+        SLAndroidBufferQueueItf self,
+        SLAndroidBufferQueueState *pState
+    );
+
+    SLresult (*SetCallbackEventsMask) (
+            SLAndroidBufferQueueItf self,
+            SLuint32 eventFlags
+    );
+
+    SLresult (*GetCallbackEventsMask) (
+            SLAndroidBufferQueueItf self,
+            SLuint32 *pEventFlags
+    );
+};
+
+
+/*---------------------------------------------------------------------------*/
+/* Android File Descriptor Data Locator                                      */
+/*---------------------------------------------------------------------------*/
+
+/** Addendum to Data locator macros  */
+#define SL_DATALOCATOR_ANDROIDFD                ((SLuint32) 0x800007BC)
+
+#define SL_DATALOCATOR_ANDROIDFD_USE_FILE_SIZE ((SLAint64) 0xFFFFFFFFFFFFFFFFll)
+
+/** File Descriptor-based data locator definition, locatorType must be SL_DATALOCATOR_ANDROIDFD */
+typedef struct SLDataLocator_AndroidFD_ {
+    SLuint32        locatorType;
+    SLint32         fd;
+    SLAint64        offset;
+    SLAint64        length;
+} SLDataLocator_AndroidFD;
+
+
+/*---------------------------------------------------------------------------*/
+/* Android Android Simple Buffer Queue Data Locator                          */
+/*---------------------------------------------------------------------------*/
+
+/** Addendum to Data locator macros  */
+#define SL_DATALOCATOR_ANDROIDSIMPLEBUFFERQUEUE ((SLuint32) 0x800007BD)
+
+/** BufferQueue-based data locator definition where locatorType must be SL_DATALOCATOR_ANDROIDSIMPLEBUFFERQUEUE*/
+typedef struct SLDataLocator_AndroidSimpleBufferQueue {
+	SLuint32	locatorType;
+	SLuint32	numBuffers;
+} SLDataLocator_AndroidSimpleBufferQueue;
+
+
+/*---------------------------------------------------------------------------*/
+/* Android Buffer Queue Data Locator                                         */
+/*---------------------------------------------------------------------------*/
+
+/** Addendum to Data locator macros  */
+#define SL_DATALOCATOR_ANDROIDBUFFERQUEUE       ((SLuint32) 0x800007BE)
+
+/** Android Buffer Queue-based data locator definition,
+ *  locatorType must be SL_DATALOCATOR_ANDROIDBUFFERQUEUE */
+typedef struct SLDataLocator_AndroidBufferQueue_ {
+    SLuint32    locatorType;
+    SLuint32    numBuffers;
+} SLDataLocator_AndroidBufferQueue;
+
+/**
+ * MIME types required for data in Android Buffer Queues
+ */
+#define SL_ANDROID_MIME_AACADTS            ((SLchar *) "audio/vnd.android.aac-adts")
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* OPENSL_ES_ANDROID_H_ */
diff --git a/ndk/platforms/android-20/include/SLES/OpenSLES_AndroidConfiguration.h b/ndk/platforms/android-20/include/SLES/OpenSLES_AndroidConfiguration.h
new file mode 100644
index 0000000..01f460d
--- /dev/null
+++ b/ndk/platforms/android-20/include/SLES/OpenSLES_AndroidConfiguration.h
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * 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.
+ */
+
+#ifndef OPENSL_ES_ANDROIDCONFIGURATION_H_
+#define OPENSL_ES_ANDROIDCONFIGURATION_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*---------------------------------------------------------------------------*/
+/* Android AudioRecorder configuration                                       */
+/*---------------------------------------------------------------------------*/
+
+/** Audio recording preset */
+/** Audio recording preset key */
+#define SL_ANDROID_KEY_RECORDING_PRESET ((const SLchar*) "androidRecordingPreset")
+/** Audio recording preset values */
+/**   preset "none" cannot be set, it is used to indicate the current settings
+ *     do not match any of the presets. */
+#define SL_ANDROID_RECORDING_PRESET_NONE                ((SLuint32) 0x00000000)
+/**   generic recording configuration on the platform */
+#define SL_ANDROID_RECORDING_PRESET_GENERIC             ((SLuint32) 0x00000001)
+/**   uses the microphone audio source with the same orientation as the camera
+ *     if available, the main device microphone otherwise */
+#define SL_ANDROID_RECORDING_PRESET_CAMCORDER           ((SLuint32) 0x00000002)
+/**   uses the main microphone tuned for voice recognition */
+#define SL_ANDROID_RECORDING_PRESET_VOICE_RECOGNITION   ((SLuint32) 0x00000003)
+/**   uses the main microphone tuned for audio communications */
+#define SL_ANDROID_RECORDING_PRESET_VOICE_COMMUNICATION ((SLuint32) 0x00000004)
+
+/*---------------------------------------------------------------------------*/
+/* Android AudioPlayer configuration                                         */
+/*---------------------------------------------------------------------------*/
+
+/** Audio playback stream type */
+/** Audio playback stream type key */
+#define SL_ANDROID_KEY_STREAM_TYPE ((const SLchar*) "androidPlaybackStreamType")
+
+/** Audio playback stream type  values */
+/*      same as android.media.AudioManager.STREAM_VOICE_CALL */
+#define SL_ANDROID_STREAM_VOICE        ((SLint32) 0x00000000)
+/*      same as android.media.AudioManager.STREAM_SYSTEM */
+#define SL_ANDROID_STREAM_SYSTEM       ((SLint32) 0x00000001)
+/*      same as android.media.AudioManager.STREAM_RING */
+#define SL_ANDROID_STREAM_RING         ((SLint32) 0x00000002)
+/*      same as android.media.AudioManager.STREAM_MUSIC */
+#define SL_ANDROID_STREAM_MEDIA        ((SLint32) 0x00000003)
+/*      same as android.media.AudioManager.STREAM_ALARM */
+#define SL_ANDROID_STREAM_ALARM        ((SLint32) 0x00000004)
+/*      same as android.media.AudioManager.STREAM_NOTIFICATION */
+#define SL_ANDROID_STREAM_NOTIFICATION ((SLint32) 0x00000005)
+
+
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* OPENSL_ES_ANDROIDCONFIGURATION_H_ */
diff --git a/ndk/platforms/android-20/include/SLES/OpenSLES_AndroidMetadata.h b/ndk/platforms/android-20/include/SLES/OpenSLES_AndroidMetadata.h
new file mode 100644
index 0000000..01e33b8
--- /dev/null
+++ b/ndk/platforms/android-20/include/SLES/OpenSLES_AndroidMetadata.h
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+#ifndef OPENSL_ES_ANDROIDMETADATA_H_
+#define OPENSL_ES_ANDROIDMETADATA_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*---------------------------------------------------------------------------*/
+/* Android metadata keys                                                     */
+/*---------------------------------------------------------------------------*/
+
+/**
+ * Additional metadata keys to be used in SLMetadataExtractionItf:
+ *   the ANDROID_KEY_PCMFORMAT_* keys follow the fields of the SLDataFormat_PCM struct, and as such
+ *   all values corresponding to these keys are of SLuint32 type, and are defined as the fields
+ *   of the same name in SLDataFormat_PCM.  The exception is that sample rate is expressed here
+ *   in Hz units, rather than in milliHz units.
+ */
+#define ANDROID_KEY_PCMFORMAT_NUMCHANNELS   "AndroidPcmFormatNumChannels"
+#define ANDROID_KEY_PCMFORMAT_SAMPLERATE    "AndroidPcmFormatSampleRate"
+#define ANDROID_KEY_PCMFORMAT_BITSPERSAMPLE "AndroidPcmFormatBitsPerSample"
+#define ANDROID_KEY_PCMFORMAT_CONTAINERSIZE "AndroidPcmFormatContainerSize"
+#define ANDROID_KEY_PCMFORMAT_CHANNELMASK   "AndroidPcmFormatChannelMask"
+#define ANDROID_KEY_PCMFORMAT_ENDIANNESS    "AndroidPcmFormatEndianness"
+
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* OPENSL_ES_ANDROIDMETADATA_H_ */
diff --git a/ndk/platforms/android-20/include/SLES/OpenSLES_Platform.h b/ndk/platforms/android-20/include/SLES/OpenSLES_Platform.h
new file mode 100644
index 0000000..527693d
--- /dev/null
+++ b/ndk/platforms/android-20/include/SLES/OpenSLES_Platform.h
@@ -0,0 +1,57 @@
+/*
+ * Copyright (c) 2007-2009 The Khronos Group Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of
+ * this software and /or associated documentation files (the "Materials "), to
+ * deal in the Materials without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Materials, and to permit persons to whom the Materials are
+ * furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Materials.
+ *
+ * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS IN THE
+ * MATERIALS.
+ *
+ * OpenSLES_Platform.h - OpenSL ES version 1.0
+ *
+ */
+
+/****************************************************************************/
+/* NOTE: This file contains definitions for the base types and the          */
+/* SLAPIENTRY macro. This file **WILL NEED TO BE EDITED** to provide        */
+/* the correct definitions specific to the platform being used.             */
+/****************************************************************************/
+
+#ifndef _OPENSLES_PLATFORM_H_
+#define _OPENSLES_PLATFORM_H_
+
+typedef unsigned char               sl_uint8_t;
+typedef signed char                 sl_int8_t;
+typedef unsigned short              sl_uint16_t;
+typedef signed short                sl_int16_t;
+typedef unsigned int /*long*/       sl_uint32_t;
+typedef signed int /*long*/         sl_int32_t;
+typedef long long                   sl_int64_t;
+typedef unsigned long long          sl_uint64_t;
+
+#ifndef SL_API
+#ifdef __GNUC__
+#define SL_API                 /* override per-platform */
+#else
+#define SL_API __declspec(dllimport)
+#endif
+#endif
+
+#ifndef SLAPIENTRY
+#define SLAPIENTRY
+#endif
+
+#endif /* _OPENSLES_PLATFORM_H_ */
diff --git a/ndk/platforms/android-20/include/dirent.h b/ndk/platforms/android-20/include/dirent.h
deleted file mode 100644
index 71eb2e7..0000000
--- a/ndk/platforms/android-20/include/dirent.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *  * Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  * Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef _DIRENT_H_
-#define _DIRENT_H_
-
-#include <stdint.h>
-#include <sys/cdefs.h>
-
-__BEGIN_DECLS
-
-#ifndef DT_UNKNOWN
-#define DT_UNKNOWN 0
-#define DT_FIFO 1
-#define DT_CHR 2
-#define DT_DIR 4
-#define DT_BLK 6
-#define DT_REG 8
-#define DT_LNK 10
-#define DT_SOCK 12
-#define DT_WHT 14
-#endif
-
-#define __DIRENT64_BODY \
-    uint64_t         d_ino; \
-    int64_t          d_off; \
-    unsigned short   d_reclen; \
-    unsigned char    d_type; \
-    char             d_name[256]; \
-
-struct dirent { __DIRENT64_BODY };
-struct dirent64 { __DIRENT64_BODY };
-
-#undef __DIRENT64_BODY
-
-#define d_fileno d_ino
-
-typedef struct DIR DIR;
-
-extern DIR* opendir(const char*);
-extern DIR* fdopendir(int);
-extern struct dirent* readdir(DIR*);
-extern struct dirent64* readdir64(DIR*);
-extern int readdir_r(DIR*, struct dirent*, struct dirent**);
-extern int readdir64_r(DIR*, struct dirent64*, struct dirent64**);
-extern int closedir(DIR*);
-extern void rewinddir(DIR*);
-extern int dirfd(DIR*);
-extern int alphasort(const struct dirent**, const struct dirent**);
-extern int alphasort64(const struct dirent64**, const struct dirent64**);
-extern int scandir(const char*, struct dirent***, int (*)(const struct dirent*), int (*)(const struct dirent**, const struct dirent**));
-extern int scandir64(const char*, struct dirent64***, int (*)(const struct dirent64*), int (*)(const struct dirent64**, const struct dirent64**));
-extern int getdents(unsigned int, struct dirent*, unsigned int);
-
-__END_DECLS
-
-#endif /* _DIRENT_H_ */
diff --git a/ndk/platforms/android-20/include/dlfcn.h b/ndk/platforms/android-20/include/dlfcn.h
deleted file mode 100644
index 7daa8f7..0000000
--- a/ndk/platforms/android-20/include/dlfcn.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *  * Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  * Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-#ifndef __DLFCN_H__
-#define __DLFCN_H__
-
-#include <sys/cdefs.h>
-
-__BEGIN_DECLS
-
-typedef struct {
-    const char *dli_fname;  /* Pathname of shared object that
-                               contains address */
-    void       *dli_fbase;  /* Address at which shared object
-                               is loaded */
-    const char *dli_sname;  /* Name of nearest symbol with address
-                               lower than addr */
-    void       *dli_saddr;  /* Exact address of symbol named
-                               in dli_sname */
-} Dl_info;
-
-extern void*        dlopen(const char*  filename, int flag);
-extern int          dlclose(void*  handle);
-extern const char*  dlerror(void);
-extern void*        dlsym(void*  handle, const char*  symbol);
-extern int          dladdr(const void* addr, Dl_info *info);
-
-enum {
-  RTLD_NOW  = 0,
-  RTLD_LAZY = 1,
-
-  RTLD_LOCAL  = 0,
-  RTLD_GLOBAL = 2,
-};
-
-#define RTLD_DEFAULT  ((void*) 0xffffffff)
-#define RTLD_NEXT     ((void*) 0xfffffffe)
-
-__END_DECLS
-
-#endif /* __DLFCN_H */
-
-
diff --git a/ndk/platforms/android-20/include/errno.h b/ndk/platforms/android-20/include/errno.h
deleted file mode 100644
index 2e5ce5f..0000000
--- a/ndk/platforms/android-20/include/errno.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *  * Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  * Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-#ifndef _ERRNO_H
-#define _ERRNO_H
-
-#include <sys/cdefs.h>
-#include <linux/errno.h>
-
-__BEGIN_DECLS
-
-/* on Linux, ENOTSUP and EOPNOTSUPP are defined as the same error code
- * even if 1000.3 states that they should be different
- */
-#ifndef  ENOTSUP
-#define  ENOTSUP  EOPNOTSUPP
-#endif
-
-/* internal function returning the address of the thread-specific errno */
-extern volatile int*   __errno(void);
-
-/* a macro expanding to the errno l-value */
-#define  errno   (*__errno())
-
-__END_DECLS
-
-#endif /* _ERRNO_H */
diff --git a/ndk/platforms/android-20/include/fenv.h b/ndk/platforms/android-20/include/fenv.h
deleted file mode 100644
index 6966e0d..0000000
--- a/ndk/platforms/android-20/include/fenv.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/*  $OpenBSD: fenv.h,v 1.2 2011/05/25 21:46:49 martynas Exp $ */
-/*  $NetBSD: fenv.h,v 1.2.4.1 2011/02/08 16:18:55 bouyer Exp $  */
-
-/*
- * Copyright (c) 2010 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef _FENV_H_
-#define _FENV_H_
-
-#include <sys/cdefs.h>
-#include <machine/fenv.h>
-
-__BEGIN_DECLS
-
-int feclearexcept(int);
-int fegetexceptflag(fexcept_t *, int);
-int feraiseexcept(int);
-int fesetexceptflag(const fexcept_t *, int);
-int fetestexcept(int);
-
-int fegetround(void);
-int fesetround(int);
-
-int fegetenv(fenv_t *);
-int feholdexcept(fenv_t *);
-int fesetenv(const fenv_t *);
-int feupdateenv(const fenv_t *);
-
-int feenableexcept(int);
-int fedisableexcept(int);
-int fegetexcept(void);
-
-/*
- * The following constant represents the default floating-point environment
- * (that is, the one installed at program startup) and has type pointer to
- * const-qualified fenv_t.
- *
- * It can be used as an argument to the functions that manage the floating-point
- * environment, namely fesetenv() and feupdateenv().
- */
-extern const fenv_t __fe_dfl_env;
-#define FE_DFL_ENV  (&__fe_dfl_env)
-
-__END_DECLS
-
-#endif  /* ! _FENV_H_ */
diff --git a/ndk/platforms/android-20/include/limits.h b/ndk/platforms/android-20/include/limits.h
deleted file mode 100644
index dc45902..0000000
--- a/ndk/platforms/android-20/include/limits.h
+++ /dev/null
@@ -1,128 +0,0 @@
-/*	$OpenBSD: limits.h,v 1.13 2005/12/31 19:29:38 millert Exp $	*/
-/*	$NetBSD: limits.h,v 1.7 1994/10/26 00:56:00 cgd Exp $	*/
-
-/*
- * Copyright (c) 1988 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *	@(#)limits.h	5.9 (Berkeley) 4/3/91
- */
-
-#ifndef _LIMITS_H_
-#define	_LIMITS_H_
-
-#include <sys/cdefs.h>
-
-#if __POSIX_VISIBLE
-#define	_POSIX_ARG_MAX		4096
-#define	_POSIX_CHILD_MAX	25
-#define	_POSIX_LINK_MAX		8
-#define	_POSIX_MAX_CANON	255
-#define	_POSIX_MAX_INPUT	255
-#define	_POSIX_NAME_MAX		14
-#define	_POSIX_NGROUPS_MAX	0
-#define	_POSIX_OPEN_MAX		16
-#define	_POSIX_PATH_MAX		256
-#define _POSIX_PIPE_BUF		512
-#define	_POSIX_RE_DUP_MAX	255
-#define _POSIX_SSIZE_MAX	32767
-#define _POSIX_STREAM_MAX	8
-#define _POSIX_SYMLINK_MAX	255
-#define _POSIX_SYMLOOP_MAX	8
-#define _POSIX_TZNAME_MAX	3
-
-#define	_POSIX2_BC_BASE_MAX	99
-#define	_POSIX2_BC_DIM_MAX	2048
-#define	_POSIX2_BC_SCALE_MAX	99
-#define	_POSIX2_BC_STRING_MAX	1000
-#define	_POSIX2_COLL_WEIGHTS_MAX	2
-#define	_POSIX2_EXPR_NEST_MAX	32
-#define	_POSIX2_LINE_MAX	2048
-#define	_POSIX2_RE_DUP_MAX	_POSIX_RE_DUP_MAX
-
-#if __POSIX_VISIBLE >= 200112
-#define _POSIX_TTY_NAME_MAX	9	/* includes trailing NUL */
-#define _POSIX_LOGIN_NAME_MAX	9	/* includes trailing NUL */
-#endif /* __POSIX_VISIBLE >= 200112 */
-#endif /* __POSIX_VISIBLE */
-
-#if __XPG_VISIBLE
-#define PASS_MAX		128	/* _PASSWORD_LEN from <pwd.h> */
-
-#define NL_ARGMAX		9
-#define NL_LANGMAX		14
-#define NL_MSGMAX		32767
-#define NL_NMAX			1
-#define NL_SETMAX		255
-#define NL_TEXTMAX		255
-
-#define TMP_MAX                 308915776
-#endif /* __XPG_VISIBLE */
-
-#include <sys/limits.h>
-
-#if __POSIX_VISIBLE
-#include <sys/syslimits.h>
-#endif
-
-/* GLibc compatibility definitions.
-   Note that these are defined by GCC's <limits.h>
-   only when __GNU_LIBRARY__ is defined, i.e. when
-   targetting GLibc. */
-#ifndef LONG_LONG_MIN
-#define LONG_LONG_MIN  LLONG_MIN
-#endif
-
-#ifndef LONG_LONG_MAX
-#define LONG_LONG_MAX  LLONG_MAX
-#endif
-
-#ifndef ULONG_LONG_MAX
-#define ULONG_LONG_MAX  ULLONG_MAX
-#endif
-
-/* BSD compatibility definitions. */
-#if __BSD_VISIBLE
-#define SIZE_T_MAX ULONG_MAX
-#endif /* __BSD_VISIBLE */
-
-#define SSIZE_MAX LONG_MAX
-
-#define MB_LEN_MAX 6
-
-/* New code should use sysconf(_SC_PAGE_SIZE) instead. */
-#ifndef PAGE_SIZE
-#define PAGE_SIZE 4096
-#endif
-#ifndef PAGESIZE
-#define  PAGESIZE  PAGE_SIZE
-#endif
-
-/* glibc's PAGE_MASK is the bitwise negation of BSD's! TODO: remove? */
-#define PAGE_MASK (~(PAGE_SIZE - 1))
-
-#endif /* !_LIMITS_H_ */
diff --git a/ndk/platforms/android-20/include/malloc.h b/ndk/platforms/android-20/include/malloc.h
deleted file mode 100644
index 9a4e324..0000000
--- a/ndk/platforms/android-20/include/malloc.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * 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.
- */
-
-#ifndef LIBC_INCLUDE_MALLOC_H_
-#define LIBC_INCLUDE_MALLOC_H_
-
-/*
- * Declaration of malloc routines. Bionic uses dlmalloc (see
- * upstream-dlmalloc) but doesn't directly include it here to keep the
- * defined malloc.h interface small.
- */
-#include <sys/cdefs.h>
-#include <stddef.h>
-
-__BEGIN_DECLS
-
-extern void* malloc(size_t byte_count) __mallocfunc __wur __attribute__((alloc_size(1)));
-extern void* calloc(size_t item_count, size_t item_size) __mallocfunc __wur __attribute__((alloc_size(1,2)));
-extern void* realloc(void* p, size_t byte_count) __wur __attribute__((alloc_size(2)));
-extern void free(void* p);
-
-extern void* memalign(size_t alignment, size_t byte_count) __mallocfunc __wur __attribute__((alloc_size(2)));
-extern size_t malloc_usable_size(const void* p);
-
-extern void* valloc(size_t byte_count) __mallocfunc __wur __attribute__((alloc_size(1)));
-extern void* pvalloc(size_t byte_count) __mallocfunc __wur __attribute__((alloc_size(1)));
-
-#ifndef STRUCT_MALLINFO_DECLARED
-#define STRUCT_MALLINFO_DECLARED 1
-struct mallinfo {
-  size_t arena;    /* Total number of non-mmapped bytes currently allocated from OS. */
-  size_t ordblks;  /* Number of free chunks. */
-  size_t smblks;   /* (Unused.) */
-  size_t hblks;    /* (Unused.) */
-  size_t hblkhd;   /* Total number of bytes in mmapped regions. */
-  size_t usmblks;  /* Maximum total allocated space; greater than total if trimming has occurred. */
-  size_t fsmblks;  /* (Unused.) */
-  size_t uordblks; /* Total allocated space (normal or mmapped.) */
-  size_t fordblks; /* Total free space. */
-  size_t keepcost; /* Upper bound on number of bytes releasable by malloc_trim. */
-};
-#endif  /* STRUCT_MALLINFO_DECLARED */
-
-extern struct mallinfo mallinfo(void);
-
-__END_DECLS
-
-#endif  /* LIBC_INCLUDE_MALLOC_H_ */
diff --git a/ndk/platforms/android-20/include/math.h b/ndk/platforms/android-20/include/math.h
deleted file mode 100644
index c264583..0000000
--- a/ndk/platforms/android-20/include/math.h
+++ /dev/null
@@ -1,469 +0,0 @@
-/*
- * ====================================================
- * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
- *
- * Developed at SunPro, a Sun Microsystems, Inc. business.
- * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
- * is preserved.
- * ====================================================
- */
-
-/*
- * from: @(#)fdlibm.h 5.1 93/09/24
- * $FreeBSD$
- */
-
-#ifndef _MATH_H_
-#define	_MATH_H_
-
-#include <sys/cdefs.h>
-#include <limits.h>
-
-/*
- * ANSI/POSIX
- */
-extern const union __infinity_un {
-	unsigned char	__uc[8];
-	double		__ud;
-} __infinity;
-
-extern const union __nan_un {
-	unsigned char	__uc[sizeof(float)];
-	float		__uf;
-} __nan;
-
-#if __GNUC_PREREQ__(3, 3) || (defined(__INTEL_COMPILER) && __INTEL_COMPILER >= 800)
-#define	__MATH_BUILTIN_CONSTANTS
-#endif
-
-#if __GNUC_PREREQ__(3, 0) && !defined(__INTEL_COMPILER)
-#define	__MATH_BUILTIN_RELOPS
-#endif
-
-#ifdef __MATH_BUILTIN_CONSTANTS
-#define	HUGE_VAL	__builtin_huge_val()
-#else
-#define	HUGE_VAL	(__infinity.__ud)
-#endif
-
-#if __ISO_C_VISIBLE >= 1999
-#define	FP_ILOGB0	(-INT_MAX) /* Android-changed */
-#define	FP_ILOGBNAN	INT_MAX /* Android-changed */
-
-#ifdef __MATH_BUILTIN_CONSTANTS
-#define	HUGE_VALF	__builtin_huge_valf()
-#define	HUGE_VALL	__builtin_huge_vall()
-#define	INFINITY	__builtin_inff()
-#define	NAN		__builtin_nanf("")
-#else
-#define	HUGE_VALF	(float)HUGE_VAL
-#define	HUGE_VALL	(long double)HUGE_VAL
-#define	INFINITY	HUGE_VALF
-#define	NAN		(__nan.__uf)
-#endif /* __MATH_BUILTIN_CONSTANTS */
-
-#define	MATH_ERRNO	1
-#define	MATH_ERREXCEPT	2
-#define	math_errhandling	MATH_ERREXCEPT
-
-#define	FP_FAST_FMAF	1
-#ifdef __ia64__
-#define	FP_FAST_FMA	1
-#define	FP_FAST_FMAL	1
-#endif
-
-/* Symbolic constants to classify floating point numbers. */
-#define	FP_INFINITE	0x01
-#define	FP_NAN		0x02
-#define	FP_NORMAL	0x04
-#define	FP_SUBNORMAL	0x08
-#define	FP_ZERO		0x10
-#define	fpclassify(x) \
-    ((sizeof (x) == sizeof (float)) ? __fpclassifyf(x) \
-    : (sizeof (x) == sizeof (double)) ? __fpclassifyd(x) \
-    : __fpclassifyl(x))
-
-#define	isfinite(x)					\
-    ((sizeof (x) == sizeof (float)) ? __isfinitef(x)	\
-    : (sizeof (x) == sizeof (double)) ? __isfinite(x)	\
-    : __isfinitel(x))
-#define	isinf(x)					\
-    ((sizeof (x) == sizeof (float)) ? __isinff(x)	\
-    : (sizeof (x) == sizeof (double)) ? isinf(x)	\
-    : __isinfl(x))
-#define	isnan(x)					\
-    ((sizeof (x) == sizeof (float)) ? __isnanf(x)	\
-    : (sizeof (x) == sizeof (double)) ? isnan(x)	\
-    : __isnanl(x))
-#define	isnormal(x)					\
-    ((sizeof (x) == sizeof (float)) ? __isnormalf(x)	\
-    : (sizeof (x) == sizeof (double)) ? __isnormal(x)	\
-    : __isnormall(x))
-
-#ifdef __MATH_BUILTIN_RELOPS
-#define	isgreater(x, y)		__builtin_isgreater((x), (y))
-#define	isgreaterequal(x, y)	__builtin_isgreaterequal((x), (y))
-#define	isless(x, y)		__builtin_isless((x), (y))
-#define	islessequal(x, y)	__builtin_islessequal((x), (y))
-#define	islessgreater(x, y)	__builtin_islessgreater((x), (y))
-#define	isunordered(x, y)	__builtin_isunordered((x), (y))
-#else
-#define	isgreater(x, y)		(!isunordered((x), (y)) && (x) > (y))
-#define	isgreaterequal(x, y)	(!isunordered((x), (y)) && (x) >= (y))
-#define	isless(x, y)		(!isunordered((x), (y)) && (x) < (y))
-#define	islessequal(x, y)	(!isunordered((x), (y)) && (x) <= (y))
-#define	islessgreater(x, y)	(!isunordered((x), (y)) && \
-					((x) > (y) || (y) > (x)))
-#define	isunordered(x, y)	(isnan(x) || isnan(y))
-#endif /* __MATH_BUILTIN_RELOPS */
-
-#define	signbit(x)					\
-    ((sizeof (x) == sizeof (float)) ? __signbitf(x)	\
-    : (sizeof (x) == sizeof (double)) ? __signbit(x)	\
-    : __signbitl(x))
-
-typedef double __double_t;
-typedef __double_t double_t;
-typedef float __float_t;
-typedef __float_t float_t;
-#endif /* __ISO_C_VISIBLE >= 1999 */
-
-/*
- * XOPEN/SVID
- */
-#if __BSD_VISIBLE || __XSI_VISIBLE
-#define	M_E		2.7182818284590452354	/* e */
-#define	M_LOG2E		1.4426950408889634074	/* log 2e */
-#define	M_LOG10E	0.43429448190325182765	/* log 10e */
-#define	M_LN2		0.69314718055994530942	/* log e2 */
-#define	M_LN10		2.30258509299404568402	/* log e10 */
-#define	M_PI		3.14159265358979323846	/* pi */
-#define	M_PI_2		1.57079632679489661923	/* pi/2 */
-#define	M_PI_4		0.78539816339744830962	/* pi/4 */
-#define	M_1_PI		0.31830988618379067154	/* 1/pi */
-#define	M_2_PI		0.63661977236758134308	/* 2/pi */
-#define	M_2_SQRTPI	1.12837916709551257390	/* 2/sqrt(pi) */
-#define	M_SQRT2		1.41421356237309504880	/* sqrt(2) */
-#define	M_SQRT1_2	0.70710678118654752440	/* 1/sqrt(2) */
-
-#define	MAXFLOAT	((float)3.40282346638528860e+38)
-extern int signgam;
-#endif /* __BSD_VISIBLE || __XSI_VISIBLE */
-
-#if __BSD_VISIBLE
-#if 0
-/* Old value from 4.4BSD-Lite math.h; this is probably better. */
-#define	HUGE		HUGE_VAL
-#else
-#define	HUGE		MAXFLOAT
-#endif
-#endif /* __BSD_VISIBLE */
-
-/*
- * Most of these functions depend on the rounding mode and have the side
- * effect of raising floating-point exceptions, so they are not declared
- * as __pure2.  In C99, FENV_ACCESS affects the purity of these functions.
- */
-__BEGIN_DECLS
-/*
- * ANSI/POSIX
- */
-int	__fpclassifyd(double) __pure2;
-int	__fpclassifyf(float) __pure2;
-int	__fpclassifyl(long double) __pure2;
-int	__isfinitef(float) __pure2;
-int	__isfinite(double) __pure2;
-int	__isfinitel(long double) __pure2;
-int	__isinff(float) __pure2;
-int	__isinfl(long double) __pure2;
-int	__isnanf(float) __pure2;
-int	__isnanl(long double) __pure2;
-int	__isnormalf(float) __pure2;
-int	__isnormal(double) __pure2;
-int	__isnormall(long double) __pure2;
-int	__signbit(double) __pure2;
-int	__signbitf(float) __pure2;
-int	__signbitl(long double) __pure2;
-
-double	acos(double);
-double	asin(double);
-double	atan(double);
-double	atan2(double, double);
-double	cos(double);
-double	sin(double);
-double	tan(double);
-
-double	cosh(double);
-double	sinh(double);
-double	tanh(double);
-
-double	exp(double);
-double	frexp(double, int *);	/* fundamentally !__pure2 */
-double	ldexp(double, int);
-double	log(double);
-double	log10(double);
-double	modf(double, double *);	/* fundamentally !__pure2 */
-
-double	pow(double, double);
-double	sqrt(double);
-
-double	ceil(double);
-double	fabs(double) __pure2;
-double	floor(double);
-double	fmod(double, double);
-
-/*
- * These functions are not in C90.
- */
-#if __BSD_VISIBLE || __ISO_C_VISIBLE >= 1999 || __XSI_VISIBLE
-double	acosh(double);
-double	asinh(double);
-double	atanh(double);
-double	cbrt(double);
-double	erf(double);
-double	erfc(double);
-double	exp2(double);
-double	expm1(double);
-double	fma(double, double, double);
-double	hypot(double, double);
-int	ilogb(double) __pure2;
-int	(isinf)(double) __pure2;
-int	(isnan)(double) __pure2;
-double	lgamma(double);
-long long llrint(double);
-long long llround(double);
-double	log1p(double);
-double	log2(double);
-double	logb(double);
-long	lrint(double);
-long	lround(double);
-double	nan(const char *) __pure2;
-double	nextafter(double, double);
-double	remainder(double, double);
-double	remquo(double, double, int *);
-double	rint(double);
-#endif /* __BSD_VISIBLE || __ISO_C_VISIBLE >= 1999 || __XSI_VISIBLE */
-
-#if __BSD_VISIBLE || __XSI_VISIBLE
-double	j0(double);
-double	j1(double);
-double	jn(int, double);
-double	y0(double);
-double	y1(double);
-double	yn(int, double);
-
-#if __XSI_VISIBLE <= 500 || __BSD_VISIBLE
-double	gamma(double);
-#endif
-
-#if __XSI_VISIBLE <= 600 || __BSD_VISIBLE
-double	scalb(double, double);
-#endif
-#endif /* __BSD_VISIBLE || __XSI_VISIBLE */
-
-#if __BSD_VISIBLE || __ISO_C_VISIBLE >= 1999
-double	copysign(double, double) __pure2;
-double	fdim(double, double);
-double	fmax(double, double) __pure2;
-double	fmin(double, double) __pure2;
-double	nearbyint(double);
-double	round(double);
-double	scalbln(double, long);
-double	scalbn(double, int);
-double	tgamma(double);
-double	trunc(double);
-#endif
-
-/*
- * BSD math library entry points
- */
-#if __BSD_VISIBLE
-double	drem(double, double);
-int	finite(double) __pure2;
-int	isnanf(float) __pure2;
-
-/*
- * Reentrant version of gamma & lgamma; passes signgam back by reference
- * as the second argument; user must allocate space for signgam.
- */
-double	gamma_r(double, int *);
-double	lgamma_r(double, int *);
-
-/*
- * IEEE Test Vector
- */
-double	significand(double);
-#endif /* __BSD_VISIBLE */
-
-/* float versions of ANSI/POSIX functions */
-#if __ISO_C_VISIBLE >= 1999
-float	acosf(float);
-float	asinf(float);
-float	atanf(float);
-float	atan2f(float, float);
-float	cosf(float);
-float	sinf(float);
-float	tanf(float);
-
-float	coshf(float);
-float	sinhf(float);
-float	tanhf(float);
-
-float	exp2f(float);
-float	expf(float);
-float	expm1f(float);
-float	frexpf(float, int *);	/* fundamentally !__pure2 */
-int	ilogbf(float) __pure2;
-float	ldexpf(float, int);
-float	log10f(float);
-float	log1pf(float);
-float	log2f(float);
-float	logf(float);
-float	modff(float, float *);	/* fundamentally !__pure2 */
-
-float	powf(float, float);
-float	sqrtf(float);
-
-float	ceilf(float);
-float	fabsf(float) __pure2;
-float	floorf(float);
-float	fmodf(float, float);
-float	roundf(float);
-
-float	erff(float);
-float	erfcf(float);
-float	hypotf(float, float);
-float	lgammaf(float);
-float	tgammaf(float);
-
-float	acoshf(float);
-float	asinhf(float);
-float	atanhf(float);
-float	cbrtf(float);
-float	logbf(float);
-float	copysignf(float, float) __pure2;
-long long llrintf(float);
-long long llroundf(float);
-long	lrintf(float);
-long	lroundf(float);
-float	nanf(const char *) __pure2;
-float	nearbyintf(float);
-float	nextafterf(float, float);
-float	remainderf(float, float);
-float	remquof(float, float, int *);
-float	rintf(float);
-float	scalblnf(float, long);
-float	scalbnf(float, int);
-float	truncf(float);
-
-float	fdimf(float, float);
-float	fmaf(float, float, float);
-float	fmaxf(float, float) __pure2;
-float	fminf(float, float) __pure2;
-#endif
-
-/*
- * float versions of BSD math library entry points
- */
-#if __BSD_VISIBLE
-float	dremf(float, float);
-int	finitef(float) __pure2;
-float	gammaf(float);
-float	j0f(float);
-float	j1f(float);
-float	jnf(int, float);
-float	scalbf(float, float);
-float	y0f(float);
-float	y1f(float);
-float	ynf(int, float);
-
-/*
- * Float versions of reentrant version of gamma & lgamma; passes
- * signgam back by reference as the second argument; user must
- * allocate space for signgam.
- */
-float	gammaf_r(float, int *);
-float	lgammaf_r(float, int *);
-
-/*
- * float version of IEEE Test Vector
- */
-float	significandf(float);
-#endif	/* __BSD_VISIBLE */
-
-/*
- * long double versions of ISO/POSIX math functions
- */
-#if __ISO_C_VISIBLE >= 1999
-long double	acoshl(long double);
-long double	acosl(long double);
-long double	asinhl(long double);
-long double	asinl(long double);
-long double	atan2l(long double, long double);
-long double	atanhl(long double);
-long double	atanl(long double);
-long double	cbrtl(long double);
-long double	ceill(long double);
-long double	copysignl(long double, long double) __pure2;
-long double	coshl(long double);
-long double	cosl(long double);
-long double	erfcl(long double);
-long double	erfl(long double);
-long double	exp2l(long double);
-long double	expl(long double);
-long double	expm1l(long double);
-long double	fabsl(long double) __pure2;
-long double	fdiml(long double, long double);
-long double	floorl(long double);
-long double	fmal(long double, long double, long double);
-long double	fmaxl(long double, long double) __pure2;
-long double	fminl(long double, long double) __pure2;
-long double	fmodl(long double, long double);
-long double	frexpl(long double value, int *); /* fundamentally !__pure2 */
-long double	hypotl(long double, long double);
-int		ilogbl(long double) __pure2;
-long double	ldexpl(long double, int);
-long double	lgammal(long double);
-long long	llrintl(long double);
-long long	llroundl(long double);
-long double	log10l(long double);
-long double	log1pl(long double);
-long double	log2l(long double);
-long double	logbl(long double);
-long double	logl(long double);
-long		lrintl(long double);
-long		lroundl(long double);
-long double	modfl(long double, long double *); /* fundamentally !__pure2 */
-long double	nanl(const char *) __pure2;
-long double	nearbyintl(long double);
-long double	nextafterl(long double, long double);
-double		nexttoward(double, long double);
-float		nexttowardf(float, long double);
-long double	nexttowardl(long double, long double);
-long double	powl(long double, long double);
-long double	remainderl(long double, long double);
-long double	remquol(long double, long double, int *);
-long double	rintl(long double);
-long double	roundl(long double);
-long double	scalblnl(long double, long);
-long double	scalbnl(long double, int);
-long double	sinhl(long double);
-long double	sinl(long double);
-long double	sqrtl(long double);
-long double	tanhl(long double);
-long double	tanl(long double);
-long double	tgammal(long double);
-long double	truncl(long double);
-
-#endif /* __ISO_C_VISIBLE >= 1999 */
-
-#if defined(_GNU_SOURCE)
-void sincos(double, double*, double*);
-void sincosf(float, float*, float*);
-void sincosl(long double, long double*, long double*);
-#endif /* _GNU_SOURCE */
-
-__END_DECLS
-
-#endif /* !_MATH_H_ */
diff --git a/ndk/platforms/android-20/include/netdb.h b/ndk/platforms/android-20/include/netdb.h
deleted file mode 100644
index ead5954..0000000
--- a/ndk/platforms/android-20/include/netdb.h
+++ /dev/null
@@ -1,250 +0,0 @@
-/*-
- * Copyright (c) 1980, 1983, 1988, 1993
- *	The Regents of the University of California.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *	This product includes software developed by the University of
- *	California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * -
- * Portions Copyright (c) 1993 by Digital Equipment Corporation.
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies, and that
- * the name of Digital Equipment Corporation not be used in advertising or
- * publicity pertaining to distribution of the document or software without
- * specific, written prior permission.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL
- * WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS.   IN NO EVENT SHALL DIGITAL EQUIPMENT
- * CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
- * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
- * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
- * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- * -
- * --Copyright--
- */
-
-/*
- *      @(#)netdb.h	8.1 (Berkeley) 6/2/93
- *      From: Id: netdb.h,v 8.9 1996/11/19 08:39:29 vixie Exp $
- * $FreeBSD: /repoman/r/ncvs/src/include/netdb.h,v 1.41 2006/04/15 16:20:26 ume Exp $
- */
-
-#ifndef _NETDB_H_
-#define _NETDB_H_
-
-#include <sys/cdefs.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-
-#ifndef _PATH_HEQUIV
-# define	_PATH_HEQUIV	"/system/etc/hosts.equiv"
-#endif
-#define	_PATH_HOSTS	"/system/etc/hosts"
-#define	_PATH_NETWORKS	"/system/etc/networks"
-#define	_PATH_PROTOCOLS	"/system/etc/protocols"
-#define	_PATH_SERVICES	"/system/etc/services"
-
-#define  MAXHOSTNAMELEN  256
-
-
-/*
- * Structures returned by network data base library.  All addresses are
- * supplied in host order, and returned in network order (suitable for
- * use in system calls).
- */
-struct hostent {
-	char	*h_name;	/* official name of host */
-	char	**h_aliases;	/* alias list */
-	int	h_addrtype;	/* host address type */
-	int	h_length;	/* length of address */
-	char	**h_addr_list;	/* list of addresses from name server */
-#define	h_addr	h_addr_list[0]	/* address, for backward compatibility */
-};
-
-struct netent {
-	char		*n_name;	/* official name of net */
-	char		**n_aliases;	/* alias list */
-	int		n_addrtype;	/* net address type */
-	uint32_t	n_net;		/* network # */
-};
-
-struct servent {
-	char	*s_name;	/* official service name */
-	char	**s_aliases;	/* alias list */
-	int	s_port;		/* port # */
-	char	*s_proto;	/* protocol to use */
-};
-
-struct protoent {
-	char	*p_name;	/* official protocol name */
-	char	**p_aliases;	/* alias list */
-	int	p_proto;	/* protocol # */
-};
-
-struct addrinfo {
-	int	ai_flags;	/* AI_PASSIVE, AI_CANONNAME, AI_NUMERICHOST */
-	int	ai_family;	/* PF_xxx */
-	int	ai_socktype;	/* SOCK_xxx */
-	int	ai_protocol;	/* 0 or IPPROTO_xxx for IPv4 and IPv6 */
-	socklen_t ai_addrlen;	/* length of ai_addr */
-	char	*ai_canonname;	/* canonical name for hostname */
-	struct	sockaddr *ai_addr;	/* binary address */
-	struct	addrinfo *ai_next;	/* next structure in linked list */
-};
-
-/*
- * Error return codes from gethostbyname() and gethostbyaddr()
- * (left in h_errno).
- */
-
-#define	NETDB_INTERNAL	-1	/* see errno */
-#define	NETDB_SUCCESS	0	/* no problem */
-#define	HOST_NOT_FOUND	1 /* Authoritative Answer Host not found */
-#define	TRY_AGAIN	2 /* Non-Authoritative Host not found, or SERVERFAIL */
-#define	NO_RECOVERY	3 /* Non recoverable errors, FORMERR, REFUSED, NOTIMP */
-#define	NO_DATA		4 /* Valid name, no data record of requested type */
-#define	NO_ADDRESS	NO_DATA		/* no address, look for MX record */
-
-/*
- * Error return codes from getaddrinfo()
- */
-#define	EAI_ADDRFAMILY	 1	/* address family for hostname not supported */
-#define	EAI_AGAIN	 2	/* temporary failure in name resolution */
-#define	EAI_BADFLAGS	 3	/* invalid value for ai_flags */
-#define	EAI_FAIL	 4	/* non-recoverable failure in name resolution */
-#define	EAI_FAMILY	 5	/* ai_family not supported */
-#define	EAI_MEMORY	 6	/* memory allocation failure */
-#define	EAI_NODATA	 7	/* no address associated with hostname */
-#define	EAI_NONAME	 8	/* hostname nor servname provided, or not known */
-#define	EAI_SERVICE	 9	/* servname not supported for ai_socktype */
-#define	EAI_SOCKTYPE	10	/* ai_socktype not supported */
-#define	EAI_SYSTEM	11	/* system error returned in errno */
-#define	EAI_BADHINTS	12	/* invalid value for hints */
-#define	EAI_PROTOCOL	13	/* resolved protocol is unknown */
-#define	EAI_OVERFLOW	14	/* argument buffer overflow */
-#define	EAI_MAX		15
-
-/*
- * Flag values for getaddrinfo()
- */
-#define	AI_PASSIVE	0x00000001 /* get address to use bind() */
-#define	AI_CANONNAME	0x00000002 /* fill ai_canonname */
-#define	AI_NUMERICHOST	0x00000004 /* prevent host name resolution */
-#define	AI_NUMERICSERV	0x00000008 /* prevent service name resolution */
-/* valid flags for addrinfo (not a standard def, apps should not use it) */
-#define AI_MASK \
-    (AI_PASSIVE | AI_CANONNAME | AI_NUMERICHOST | AI_NUMERICSERV | \
-    AI_ADDRCONFIG)
-
-#define	AI_ALL		0x00000100 /* IPv6 and IPv4-mapped (with AI_V4MAPPED) */
-#define	AI_V4MAPPED_CFG	0x00000200 /* accept IPv4-mapped if kernel supports */
-#define	AI_ADDRCONFIG	0x00000400 /* only if any address is assigned */
-#define	AI_V4MAPPED	0x00000800 /* accept IPv4-mapped IPv6 address */
-/* special recommended flags for getipnodebyname */
-#define	AI_DEFAULT	(AI_V4MAPPED_CFG | AI_ADDRCONFIG)
-
-/*
- * Constants for getnameinfo()
- */
-#define	NI_MAXHOST	1025
-#define	NI_MAXSERV	32
-
-/*
- * Flag values for getnameinfo()
- */
-#define	NI_NOFQDN	0x00000001
-#define	NI_NUMERICHOST	0x00000002
-#define	NI_NAMEREQD	0x00000004
-#define	NI_NUMERICSERV	0x00000008
-#define	NI_DGRAM	0x00000010
-#if 0 /* obsolete */
-#define NI_WITHSCOPEID	0x00000020
-#endif
-
-/*
- * Scope delimit character
- */
-#define	SCOPE_DELIMITER	'%'
-
-__BEGIN_DECLS
-/* BIONIC-BEGIN */
-#define  h_errno   (*__get_h_errno())
-int*  __get_h_errno(void);
-/* BIONIC-END */
-void endhostent(void);
-void endnetent(void);
-void endnetgrent(void);
-void endprotoent(void);
-void endservent(void);
-void freehostent(struct hostent *);
-struct hostent	*gethostbyaddr(const void *, socklen_t, int);
-int gethostbyaddr_r(const void *, int, int, struct hostent *, char *, size_t, struct hostent **, int *);
-struct hostent	*gethostbyname(const char *);
-int gethostbyname_r(const char *, struct hostent *, char *, size_t, struct hostent **, int *);
-struct hostent	*gethostbyname2(const char *, int);
-int gethostbyname2_r(const char *, int, struct hostent *, char *, size_t, struct hostent **, int *);
-struct hostent	*gethostent(void);
-int gethostent_r(struct hostent *, char *, size_t, struct hostent **, int *);
-struct hostent	*getipnodebyaddr(const void *, size_t, int, int *);
-struct hostent	*getipnodebyname(const char *, int, int, int *);
-struct netent	*getnetbyaddr(uint32_t, int);
-int getnetbyaddr_r(uint32_t, int, struct netent *, char *, size_t, struct netent**, int *);
-struct netent	*getnetbyname(const char *);
-int getnetbyname_r(const char *, struct netent *, char *, size_t, struct netent **, int *);
-struct netent	*getnetent(void);
-int getnetent_r(struct netent *, char *, size_t, struct netent **, int *);
-int getnetgrent(char **, char **, char **);
-struct protoent	*getprotobyname(const char *);
-int getprotobyname_r(const char *, struct protoent *, char *, size_t, struct protoent **);
-struct protoent	*getprotobynumber(int);
-int getprotobynumber_r(int, struct protoent *, char *, size_t, struct protoent **);
-struct protoent	*getprotoent(void);
-int getprotoent_r(struct protoent *, char *, size_t, struct protoent **);
-struct servent	*getservbyname(const char *, const char *);
-struct servent	*getservbyport(int, const char *);
-struct servent	*getservent(void);
-void herror(const char *);
-const char	*hstrerror(int);
-int innetgr(const char *, const char *, const char *, const char *);
-void sethostent(int);
-void setnetent(int);
-void setprotoent(int);
-int getaddrinfo(const char *, const char *, const struct addrinfo *, struct addrinfo **);
-int getnameinfo(const struct sockaddr *, socklen_t, char *, size_t, char *, size_t, int);
-void freeaddrinfo(struct addrinfo *);
-const char	*gai_strerror(int);
-void setnetgrent(const char *);
-void setservent(int);
-
-__END_DECLS
-
-#endif /* !_NETDB_H_ */
diff --git a/ndk/platforms/android-20/include/pthread.h b/ndk/platforms/android-20/include/pthread.h
deleted file mode 100644
index 49f943a..0000000
--- a/ndk/platforms/android-20/include/pthread.h
+++ /dev/null
@@ -1,272 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *  * Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  * Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef _PTHREAD_H_
-#define _PTHREAD_H_
-
-#include <time.h>
-#include <signal.h>
-#include <sched.h>
-#include <limits.h>
-#include <sys/types.h>
-
-#if defined(__LP64__)
-  #define __RESERVED_INITIALIZER , {0}
-#else
-  #define __RESERVED_INITIALIZER
-#endif
-
-typedef struct {
-  int volatile value;
-#ifdef __LP64__
-  char __reserved[36];
-#endif
-} pthread_mutex_t;
-
-#define  __PTHREAD_MUTEX_INIT_VALUE            0
-#define  __PTHREAD_RECURSIVE_MUTEX_INIT_VALUE  0x4000
-#define  __PTHREAD_ERRORCHECK_MUTEX_INIT_VALUE 0x8000
-
-#define  PTHREAD_MUTEX_INITIALIZER             {__PTHREAD_MUTEX_INIT_VALUE __RESERVED_INITIALIZER}
-#define  PTHREAD_RECURSIVE_MUTEX_INITIALIZER   {__PTHREAD_RECURSIVE_MUTEX_INIT_VALUE __RESERVED_INITIALIZER}
-#define  PTHREAD_ERRORCHECK_MUTEX_INITIALIZER  {__PTHREAD_ERRORCHECK_MUTEX_INIT_VALUE __RESERVED_INITIALIZER}
-
-enum {
-    PTHREAD_MUTEX_NORMAL = 0,
-    PTHREAD_MUTEX_RECURSIVE = 1,
-    PTHREAD_MUTEX_ERRORCHECK = 2,
-
-    PTHREAD_MUTEX_ERRORCHECK_NP = PTHREAD_MUTEX_ERRORCHECK,
-    PTHREAD_MUTEX_RECURSIVE_NP  = PTHREAD_MUTEX_RECURSIVE,
-
-    PTHREAD_MUTEX_DEFAULT = PTHREAD_MUTEX_NORMAL
-};
-
-typedef struct {
-  int volatile value;
-#ifdef __LP64__
-  char __reserved[44];
-#endif
-} pthread_cond_t;
-
-#define PTHREAD_COND_INITIALIZER  {0 __RESERVED_INITIALIZER}
-
-typedef struct {
-  uint32_t flags;
-  void* stack_base;
-  size_t stack_size;
-  size_t guard_size;
-  int32_t sched_policy;
-  int32_t sched_priority;
-#ifdef __LP64__
-  char __reserved[16];
-#endif
-} pthread_attr_t;
-
-typedef long pthread_mutexattr_t;
-typedef long pthread_condattr_t;
-
-typedef long pthread_rwlockattr_t;
-
-typedef struct {
-  pthread_mutex_t lock;
-  pthread_cond_t cond;
-  int numLocks;
-  int writerThreadId;
-  int pendingReaders;
-  int pendingWriters;
-  void* __reserved[4];
-} pthread_rwlock_t;
-
-#define PTHREAD_RWLOCK_INITIALIZER  { PTHREAD_MUTEX_INITIALIZER, PTHREAD_COND_INITIALIZER, 0, 0, 0, 0, { NULL, NULL, NULL, NULL } }
-
-typedef int pthread_key_t;
-typedef long pthread_t;
-
-typedef volatile int pthread_once_t;
-
-#define PTHREAD_ONCE_INIT 0
-
-#if defined(__LP64__)
-#define PTHREAD_STACK_MIN (4 * PAGE_SIZE)
-#else
-#define PTHREAD_STACK_MIN (2 * PAGE_SIZE)
-#endif
-
-#define PTHREAD_CREATE_DETACHED  0x00000001
-#define PTHREAD_CREATE_JOINABLE  0x00000000
-
-#define PTHREAD_PROCESS_PRIVATE  0
-#define PTHREAD_PROCESS_SHARED   1
-
-#define PTHREAD_SCOPE_SYSTEM     0
-#define PTHREAD_SCOPE_PROCESS    1
-
-__BEGIN_DECLS
-
-int pthread_atfork(void (*)(void), void (*)(void), void(*)(void));
-
-int pthread_attr_destroy(pthread_attr_t*) __nonnull((1));
-int pthread_attr_getdetachstate(const pthread_attr_t*, int*) __nonnull((1, 2));
-int pthread_attr_getguardsize(const pthread_attr_t*, size_t*) __nonnull((1, 2));
-int pthread_attr_getschedparam(const pthread_attr_t*, struct sched_param*) __nonnull((1, 2));
-int pthread_attr_getschedpolicy(const pthread_attr_t*, int*) __nonnull((1, 2));
-int pthread_attr_getscope(const pthread_attr_t*, int*) __nonnull((1, 2));
-int pthread_attr_getstack(const pthread_attr_t*, void**, size_t*) __nonnull((1, 2, 3));
-int pthread_attr_getstacksize(const pthread_attr_t*, size_t*) __nonnull((1, 2));
-int pthread_attr_init(pthread_attr_t*) __nonnull((1));
-int pthread_attr_setdetachstate(pthread_attr_t*, int) __nonnull((1));
-int pthread_attr_setguardsize(pthread_attr_t*, size_t) __nonnull((1));
-int pthread_attr_setschedparam(pthread_attr_t*, const struct sched_param*) __nonnull((1, 2));
-int pthread_attr_setschedpolicy(pthread_attr_t*, int) __nonnull((1));
-int pthread_attr_setscope(pthread_attr_t*, int) __nonnull((1));
-int pthread_attr_setstack(pthread_attr_t*, void*, size_t) __nonnull((1));
-int pthread_attr_setstacksize(pthread_attr_t*, size_t stack_size) __nonnull((1));
-
-int pthread_condattr_destroy(pthread_condattr_t*) __nonnull((1));
-int pthread_condattr_getclock(const pthread_condattr_t*, clockid_t*) __nonnull((1, 2));
-int pthread_condattr_getpshared(const pthread_condattr_t*, int*) __nonnull((1, 2));
-int pthread_condattr_init(pthread_condattr_t*) __nonnull((1));
-int pthread_condattr_setclock(pthread_condattr_t*, clockid_t) __nonnull((1));
-int pthread_condattr_setpshared(pthread_condattr_t*, int) __nonnull((1));
-
-int pthread_cond_broadcast(pthread_cond_t*) __nonnull((1));
-int pthread_cond_destroy(pthread_cond_t*) __nonnull((1));
-int pthread_cond_init(pthread_cond_t*, const pthread_condattr_t*) __nonnull((1));
-int pthread_cond_signal(pthread_cond_t*) __nonnull((1));
-int pthread_cond_timedwait(pthread_cond_t*, pthread_mutex_t*, const struct timespec*) __nonnull((1, 2, 3));
-int pthread_cond_wait(pthread_cond_t*, pthread_mutex_t*) __nonnull((1, 2));
-
-int pthread_create(pthread_t*, pthread_attr_t const*, void *(*)(void*), void*) __nonnull((1, 3));
-int pthread_detach(pthread_t);
-void pthread_exit(void*) __noreturn;
-
-int pthread_equal(pthread_t, pthread_t);
-
-int pthread_getattr_np(pthread_t, pthread_attr_t*) __nonnull((2));
-
-int pthread_getcpuclockid(pthread_t, clockid_t*) __nonnull((2));
-
-int pthread_getschedparam(pthread_t, int*, struct sched_param*) __nonnull((2, 3));
-
-void* pthread_getspecific(pthread_key_t);
-
-int pthread_join(pthread_t, void**);
-
-int pthread_key_create(pthread_key_t*, void (*)(void*)) __nonnull((1));
-int pthread_key_delete(pthread_key_t);
-
-int pthread_kill(pthread_t, int);
-
-int pthread_mutexattr_destroy(pthread_mutexattr_t*) __nonnull((1));
-int pthread_mutexattr_getpshared(const pthread_mutexattr_t*, int*) __nonnull((1, 2));
-int pthread_mutexattr_gettype(const pthread_mutexattr_t*, int*) __nonnull((1, 2));
-int pthread_mutexattr_init(pthread_mutexattr_t*) __nonnull((1));
-int pthread_mutexattr_setpshared(pthread_mutexattr_t*, int) __nonnull((1));
-int pthread_mutexattr_settype(pthread_mutexattr_t*, int) __nonnull((1));
-
-int pthread_mutex_destroy(pthread_mutex_t*) __nonnull((1));
-int pthread_mutex_init(pthread_mutex_t*, const pthread_mutexattr_t*) __nonnull((1));
-int pthread_mutex_lock(pthread_mutex_t*) __nonnull((1));
-int pthread_mutex_timedlock(pthread_mutex_t*, const struct timespec*) __nonnull((1, 2));
-int pthread_mutex_trylock(pthread_mutex_t*) __nonnull((1));
-int pthread_mutex_unlock(pthread_mutex_t*) __nonnull((1));
-
-int pthread_once(pthread_once_t*, void (*)(void)) __nonnull((1, 2));
-
-int pthread_rwlockattr_destroy(pthread_rwlockattr_t*) __nonnull((1));
-int pthread_rwlockattr_getpshared(const pthread_rwlockattr_t*, int*) __nonnull((1, 2));
-int pthread_rwlockattr_init(pthread_rwlockattr_t*) __nonnull((1));
-int pthread_rwlockattr_setpshared(pthread_rwlockattr_t*, int) __nonnull((1));
-
-int pthread_rwlock_destroy(pthread_rwlock_t*) __nonnull((1));
-int pthread_rwlock_init(pthread_rwlock_t*, const pthread_rwlockattr_t*) __nonnull((1));
-int pthread_rwlock_rdlock(pthread_rwlock_t*) __nonnull((1));
-int pthread_rwlock_timedrdlock(pthread_rwlock_t*, const struct timespec*) __nonnull((1, 2));
-int pthread_rwlock_timedwrlock(pthread_rwlock_t*, const struct timespec*) __nonnull((1, 2));
-int pthread_rwlock_tryrdlock(pthread_rwlock_t*) __nonnull((1));
-int pthread_rwlock_trywrlock(pthread_rwlock_t*) __nonnull((1));
-int pthread_rwlock_unlock(pthread_rwlock_t *rwlock) __nonnull((1));
-int pthread_rwlock_wrlock(pthread_rwlock_t*) __nonnull((1));
-
-pthread_t pthread_self(void);
-
-int pthread_setname_np(pthread_t, const char*) __nonnull((2));
-
-int pthread_setschedparam(pthread_t, int, const struct sched_param*) __nonnull((3));
-
-int pthread_setspecific(pthread_key_t, const void*);
-
-int pthread_sigmask(int, const sigset_t*, sigset_t*);
-
-typedef void (*__pthread_cleanup_func_t)(void*);
-
-typedef struct __pthread_cleanup_t {
-  struct __pthread_cleanup_t*   __cleanup_prev;
-  __pthread_cleanup_func_t      __cleanup_routine;
-  void*                         __cleanup_arg;
-} __pthread_cleanup_t;
-
-extern void __pthread_cleanup_push(__pthread_cleanup_t* c, __pthread_cleanup_func_t, void*);
-extern void __pthread_cleanup_pop(__pthread_cleanup_t*, int);
-
-/* Believe or not, the definitions of pthread_cleanup_push and
- * pthread_cleanup_pop below are correct. Posix states that these
- * can be implemented as macros that might introduce opening and
- * closing braces, and that using setjmp/longjmp/return/break/continue
- * between them results in undefined behavior.
- */
-#define  pthread_cleanup_push(routine, arg)                      \
-    do {                                                         \
-        __pthread_cleanup_t  __cleanup;                          \
-        __pthread_cleanup_push( &__cleanup, (routine), (arg) );  \
-
-#define  pthread_cleanup_pop(execute)                  \
-        __pthread_cleanup_pop( &__cleanup, (execute)); \
-    } while (0);                                       \
-
-
-#if !defined(__LP64__)
-
-// Bionic additions that are deprecated even in the 32-bit ABI.
-//
-// TODO: Remove them once chromium_org / NFC have switched over.
-int pthread_cond_timedwait_monotonic_np(pthread_cond_t*, pthread_mutex_t*, const struct timespec*);
-int pthread_cond_timedwait_monotonic(pthread_cond_t*, pthread_mutex_t*, const struct timespec*);
-
-int pthread_cond_timedwait_relative_np(pthread_cond_t*, pthread_mutex_t*, const struct timespec*) /* TODO: __attribute__((deprecated("use pthread_cond_timedwait instead")))*/;
-#define HAVE_PTHREAD_COND_TIMEDWAIT_RELATIVE 1 /* TODO: stop defining this to push LP32 off this API sooner. */
-int pthread_cond_timeout_np(pthread_cond_t*, pthread_mutex_t*, unsigned) /* TODO: __attribute__((deprecated("use pthread_cond_timedwait instead")))*/;
-
-int pthread_mutex_lock_timeout_np(pthread_mutex_t*, unsigned) __attribute__((deprecated("use pthread_mutex_timedlock instead")));
-
-#endif /* !defined(__LP64__) */
-
-__END_DECLS
-
-#endif /* _PTHREAD_H_ */
diff --git a/ndk/platforms/android-20/include/resolv.h b/ndk/platforms/android-20/include/resolv.h
deleted file mode 100644
index 36b93ee..0000000
--- a/ndk/platforms/android-20/include/resolv.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *  * Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  * Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-#ifndef _RESOLV_H_
-#define _RESOLV_H_
-
-#include <sys/param.h>
-#include <sys/types.h>
-#include <sys/cdefs.h>
-#include <sys/socket.h>
-#include <stdio.h>
-#include <arpa/nameser.h>
-#include <netinet/in.h>
-
-__BEGIN_DECLS
-
-struct res_state;
-
-extern struct __res_state *__res_state(void);
-#define _res (*__res_state())
-
-#define b64_ntop __b64_ntop
-#define b64_pton __b64_pton
-extern int b64_ntop(u_char const*, size_t, char*, size_t);
-extern int b64_pton(char const*, u_char*, size_t);
-
-#define dn_comp __dn_comp
-extern int dn_comp(const char*, u_char*, int, u_char**, u_char**);
-extern int dn_expand(const u_char*, const u_char*, const u_char*, char*, int);
-
-__END_DECLS
-
-#endif /* _RESOLV_H_ */
diff --git a/ndk/platforms/android-20/include/setjmp.h b/ndk/platforms/android-20/include/setjmp.h
deleted file mode 100644
index 68fdcef..0000000
--- a/ndk/platforms/android-20/include/setjmp.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/*	$OpenBSD: setjmp.h,v 1.5 2005/12/13 00:35:22 millert Exp $	*/
-/*	$NetBSD: setjmp.h,v 1.11 1994/12/20 10:35:44 cgd Exp $	*/
-
-/*-
- * Copyright (c) 1990, 1993
- *	The Regents of the University of California.  All rights reserved.
- * (c) UNIX System Laboratories, Inc.
- * All or some portions of this file are derived from material licensed
- * to the University of California by American Telephone and Telegraph
- * Co. or Unix System Laboratories, Inc. and are reproduced herein with
- * the permission of UNIX System Laboratories, Inc.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *	@(#)setjmp.h	8.2 (Berkeley) 1/21/94
- */
-
-#ifndef _SETJMP_H_
-#define _SETJMP_H_
-
-#include <sys/cdefs.h>
-#include <machine/setjmp.h>
-
-typedef long sigjmp_buf[_JBLEN + 1];
-typedef long jmp_buf[_JBLEN];
-
-__BEGIN_DECLS
-
-int     _setjmp(jmp_buf);
-void    _longjmp(jmp_buf, int);
-void    longjmperror(void);
-
-int     setjmp(jmp_buf);
-void    longjmp(jmp_buf, int);
-
-int     sigsetjmp(sigjmp_buf, int);
-void    siglongjmp(sigjmp_buf, int);
-
-__END_DECLS
-
-#endif /* !_SETJMP_H_ */
diff --git a/ndk/platforms/android-20/include/signal.h b/ndk/platforms/android-20/include/signal.h
deleted file mode 100644
index 45c1cda..0000000
--- a/ndk/platforms/android-20/include/signal.h
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *  * Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  * Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef _SIGNAL_H_
-#define _SIGNAL_H_
-
-#include <errno.h>
-#include <sys/cdefs.h>
-#include <limits.h>		/* For LONG_BIT */
-#include <string.h>		/* For memset() */
-#include <sys/types.h>
-
-#if defined(__LP64__) || defined(__mips__)
-/* For 64-bit (and mips), the kernel's struct sigaction doesn't match the POSIX one,
- * so we need to expose our own and translate behind the scenes. */
-#  define sigaction __kernel_sigaction
-#  include <linux/signal.h>
-#  undef sigaction
-#else
-/* For 32-bit, we're stuck with the definitions we already shipped,
- * even though they contain a sigset_t that's too small. */
-#  include <linux/signal.h>
-#endif
-
-__BEGIN_DECLS
-
-typedef int sig_atomic_t;
-
-/* The arm and x86 kernel header files don't define _NSIG. */
-#ifndef _KERNEL__NSIG
-#define _KERNEL__NSIG 64
-#endif
-
-/* Userspace's NSIG is the kernel's _NSIG + 1. */
-#define _NSIG (_KERNEL__NSIG + 1)
-#define NSIG _NSIG
-
-/* We take a few real-time signals for ourselves. May as well use the same names as glibc. */
-#define SIGRTMIN (__libc_current_sigrtmin())
-#define SIGRTMAX (__libc_current_sigrtmax())
-extern int __libc_current_sigrtmin(void);
-extern int __libc_current_sigrtmax(void);
-
-extern const char* const sys_siglist[];
-extern const char* const sys_signame[]; /* BSD compatibility. */
-
-typedef __sighandler_t sig_t; /* BSD compatibility. */
-typedef __sighandler_t sighandler_t; /* glibc compatibility. */
-
-#define si_timerid si_tid /* glibc compatibility. */
-
-#if defined(__LP64__)
-
-struct sigaction {
-  unsigned int sa_flags;
-  union {
-    sighandler_t sa_handler;
-    void (*sa_sigaction)(int, struct siginfo*, void*);
-  };
-  sigset_t sa_mask;
-  void (*sa_restorer)(void);
-};
-
-#elif defined(__mips__)
-
-struct sigaction {
-  unsigned int sa_flags;
-  union {
-    sighandler_t sa_handler;
-    void (*sa_sigaction) (int, struct siginfo*, void*);
-  };
-  sigset_t sa_mask;
-};
-
-#endif
-
-extern int sigaction(int, const struct sigaction*, struct sigaction*);
-
-extern sighandler_t signal(int, sighandler_t);
-extern sighandler_t bsd_signal(int, sighandler_t);
-extern sighandler_t sysv_signal(int, sighandler_t);
-
-extern int siginterrupt(int, int);
-
-extern int sigaddset(sigset_t*, int);
-extern int sigdelset(sigset_t*, int);
-extern int sigemptyset(sigset_t*);
-extern int sigfillset(sigset_t*);
-extern int sigismember(const sigset_t*, int);
-
-extern int sigpending(sigset_t*) __nonnull((1));
-extern int sigprocmask(int, const sigset_t*, sigset_t*);
-extern int sigsuspend(const sigset_t*) __nonnull((1));
-extern int sigwait(const sigset_t*, int*) __nonnull((1, 2));
-
-extern int raise(int);
-extern int kill(pid_t, int);
-extern int killpg(int, int);
-
-extern int sigaltstack(const stack_t*, stack_t*);
-
-extern void psiginfo(const siginfo_t*, const char*);
-extern void psignal(int, const char*);
-
-__END_DECLS
-
-#endif /* _SIGNAL_H_ */
diff --git a/ndk/platforms/android-20/include/stdint.h b/ndk/platforms/android-20/include/stdint.h
deleted file mode 100644
index f34843c..0000000
--- a/ndk/platforms/android-20/include/stdint.h
+++ /dev/null
@@ -1,228 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *  * Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  * Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef _STDINT_H
-#define _STDINT_H
-
-#include <stddef.h>
-#include <machine/wchar_limits.h>
-
-typedef __signed char __int8_t;
-typedef unsigned char __uint8_t;
-typedef short __int16_t;
-typedef unsigned short __uint16_t;
-typedef int __int32_t;
-typedef unsigned int __uint32_t;
-#if __LP64__
-typedef long __int64_t;
-typedef unsigned long __uint64_t;
-#else
-typedef long long __int64_t;
-typedef unsigned long long __uint64_t;
-#endif
-
-#if __LP64__
-typedef long __intptr_t;
-typedef unsigned long __uintptr_t;
-#else
-typedef int __intptr_t;
-typedef unsigned int __uintptr_t;
-#endif
-
-typedef __int8_t      int8_t;
-typedef __uint8_t     uint8_t;
-
-typedef __int16_t     int16_t;
-typedef __uint16_t    uint16_t;
-
-typedef __int32_t     int32_t;
-typedef __uint32_t    uint32_t;
-
-typedef __int64_t     int64_t;
-typedef __uint64_t    uint64_t;
-
-typedef __intptr_t    intptr_t;
-typedef __uintptr_t   uintptr_t;
-
-typedef int8_t        int_least8_t;
-typedef uint8_t       uint_least8_t;
-
-typedef int16_t       int_least16_t;
-typedef uint16_t      uint_least16_t;
-
-typedef int32_t       int_least32_t;
-typedef uint32_t      uint_least32_t;
-
-typedef int64_t       int_least64_t;
-typedef uint64_t      uint_least64_t;
-
-typedef int8_t        int_fast8_t;
-typedef uint8_t       uint_fast8_t;
-
-typedef int64_t       int_fast64_t;
-typedef uint64_t      uint_fast64_t;
-
-#if defined(__LP64__)
-typedef int64_t       int_fast16_t;
-typedef uint64_t      uint_fast16_t;
-typedef int64_t       int_fast32_t;
-typedef uint64_t      uint_fast32_t;
-#else
-typedef int32_t       int_fast16_t;
-typedef uint32_t      uint_fast16_t;
-typedef int32_t       int_fast32_t;
-typedef uint32_t      uint_fast32_t;
-#endif
-
-typedef uint64_t      uintmax_t;
-typedef int64_t       intmax_t;
-
-/* Keep the kernel from trying to define these types... */
-#define __BIT_TYPES_DEFINED__
-
-#define INT8_C(c)         c
-#define INT_LEAST8_C(c)   INT8_C(c)
-#define INT_FAST8_C(c)    INT8_C(c)
-
-#define UINT8_C(c)        c
-#define UINT_LEAST8_C(c)  UINT8_C(c)
-#define UINT_FAST8_C(c)   UINT8_C(c)
-
-#define INT16_C(c)        c
-#define INT_LEAST16_C(c)  INT16_C(c)
-#define INT_FAST16_C(c)   INT32_C(c)
-
-#define UINT16_C(c)       c
-#define UINT_LEAST16_C(c) UINT16_C(c)
-#define UINT_FAST16_C(c)  UINT32_C(c)
-#define INT32_C(c)        c
-#define INT_LEAST32_C(c)  INT32_C(c)
-#define INT_FAST32_C(c)   INT32_C(c)
-
-#define UINT32_C(c)       c ## U
-#define UINT_LEAST32_C(c) UINT32_C(c)
-#define UINT_FAST32_C(c)  UINT32_C(c)
-#define INT_LEAST64_C(c)  INT64_C(c)
-#define INT_FAST64_C(c)   INT64_C(c)
-
-#define UINT_LEAST64_C(c) UINT64_C(c)
-#define UINT_FAST64_C(c)  UINT64_C(c)
-
-#define INTMAX_C(c)       INT64_C(c)
-#define UINTMAX_C(c)      UINT64_C(c)
-
-#if defined(__LP64__)
-#  define INT64_C(c)      c ## L
-#  define UINT64_C(c)     c ## UL
-#  define INTPTR_C(c)     INT64_C(c)
-#  define UINTPTR_C(c)    UINT64_C(c)
-#  define PTRDIFF_C(c)    INT64_C(c)
-#else
-#  define INT64_C(c)      c ## LL
-#  define UINT64_C(c)     c ## ULL
-#  define INTPTR_C(c)     INT32_C(c)
-#  define UINTPTR_C(c)    UINT32_C(c)
-#  define PTRDIFF_C(c)    INT32_C(c)
-#endif
-
-#define INT8_MIN         (-128)
-#define INT8_MAX         (127)
-#define INT_LEAST8_MIN   INT8_MIN
-#define INT_LEAST8_MAX   INT8_MAX
-#define INT_FAST8_MIN    INT8_MIN
-#define INT_FAST8_MAX    INT8_MAX
-
-#define UINT8_MAX        (255)
-#define UINT_LEAST8_MAX  UINT8_MAX
-#define UINT_FAST8_MAX   UINT8_MAX
-
-#define INT16_MIN        (-32768)
-#define INT16_MAX        (32767)
-#define INT_LEAST16_MIN  INT16_MIN
-#define INT_LEAST16_MAX  INT16_MAX
-#define INT_FAST16_MIN   INT32_MIN
-#define INT_FAST16_MAX   INT32_MAX
-
-#define UINT16_MAX       (65535)
-#define UINT_LEAST16_MAX UINT16_MAX
-#define UINT_FAST16_MAX  UINT32_MAX
-
-#define INT32_MIN        (-2147483647-1)
-#define INT32_MAX        (2147483647)
-#define INT_LEAST32_MIN  INT32_MIN
-#define INT_LEAST32_MAX  INT32_MAX
-#define INT_FAST32_MIN   INT32_MIN
-#define INT_FAST32_MAX   INT32_MAX
-
-#define UINT32_MAX       (4294967295U)
-#define UINT_LEAST32_MAX UINT32_MAX
-#define UINT_FAST32_MAX  UINT32_MAX
-
-#define INT64_MIN        (INT64_C(-9223372036854775807)-1)
-#define INT64_MAX        (INT64_C(9223372036854775807))
-#define INT_LEAST64_MIN  INT64_MIN
-#define INT_LEAST64_MAX  INT64_MAX
-#define INT_FAST64_MIN   INT64_MIN
-#define INT_FAST64_MAX   INT64_MAX
-#define UINT64_MAX       (UINT64_C(18446744073709551615))
-
-#define UINT_LEAST64_MAX UINT64_MAX
-#define UINT_FAST64_MAX  UINT64_MAX
-
-#define INTMAX_MIN       INT64_MIN
-#define INTMAX_MAX       INT64_MAX
-#define UINTMAX_MAX      UINT64_MAX
-
-#define SIG_ATOMIC_MAX   INT32_MAX
-#define SIG_ATOMIC_MIN   INT32_MIN
-
-#if defined(__WINT_UNSIGNED__)
-#  define WINT_MAX       UINT32_MAX
-#  define WINT_MIN       UINT32_MIN
-#else
-#  define WINT_MAX       INT32_MAX
-#  define WINT_MIN       INT32_MIN
-#endif
-
-#if defined(__LP64__)
-#  define INTPTR_MIN     INT64_MIN
-#  define INTPTR_MAX     INT64_MAX
-#  define UINTPTR_MAX    UINT64_MAX
-#  define PTRDIFF_MIN    INT64_MIN
-#  define PTRDIFF_MAX    INT64_MAX
-#  define SIZE_MAX       UINT64_MAX
-#else
-#  define INTPTR_MIN     INT32_MIN
-#  define INTPTR_MAX     INT32_MAX
-#  define UINTPTR_MAX    UINT32_MAX
-#  define PTRDIFF_MIN    INT32_MIN
-#  define PTRDIFF_MAX    INT32_MAX
-#  define SIZE_MAX       UINT32_MAX
-#endif
-
-#endif /* _STDINT_H */
diff --git a/ndk/platforms/android-20/include/stdio.h b/ndk/platforms/android-20/include/stdio.h
deleted file mode 100644
index 1d89b9b..0000000
--- a/ndk/platforms/android-20/include/stdio.h
+++ /dev/null
@@ -1,468 +0,0 @@
-/*	$OpenBSD: stdio.h,v 1.35 2006/01/13 18:10:09 miod Exp $	*/
-/*	$NetBSD: stdio.h,v 1.18 1996/04/25 18:29:21 jtc Exp $	*/
-
-/*-
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Chris Torek.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *	@(#)stdio.h	5.17 (Berkeley) 6/3/91
- */
-
-#ifndef	_STDIO_H_
-#define	_STDIO_H_
-
-#include <sys/cdefs.h>
-#include <sys/types.h>
-
-#include <stdarg.h>
-#include <stddef.h>
-
-#define __need_NULL
-#include <stddef.h>
-
-#define	_FSTDIO			/* Define for new stdio with functions. */
-
-typedef off_t fpos_t;		/* stdio file position type */
-
-/*
- * NB: to fit things in six character monocase externals, the stdio
- * code uses the prefix `__s' for stdio objects, typically followed
- * by a three-character attempt at a mnemonic.
- */
-
-/* stdio buffers */
-struct __sbuf {
-	unsigned char *_base;
-	int	_size;
-};
-
-/*
- * stdio state variables.
- *
- * The following always hold:
- *
- *	if (_flags&(__SLBF|__SWR)) == (__SLBF|__SWR),
- *		_lbfsize is -_bf._size, else _lbfsize is 0
- *	if _flags&__SRD, _w is 0
- *	if _flags&__SWR, _r is 0
- *
- * This ensures that the getc and putc macros (or inline functions) never
- * try to write or read from a file that is in `read' or `write' mode.
- * (Moreover, they can, and do, automatically switch from read mode to
- * write mode, and back, on "r+" and "w+" files.)
- *
- * _lbfsize is used only to make the inline line-buffered output stream
- * code as compact as possible.
- *
- * _ub, _up, and _ur are used when ungetc() pushes back more characters
- * than fit in the current _bf, or when ungetc() pushes back a character
- * that does not match the previous one in _bf.  When this happens,
- * _ub._base becomes non-nil (i.e., a stream has ungetc() data iff
- * _ub._base!=NULL) and _up and _ur save the current values of _p and _r.
- *
- * NOTE: if you change this structure, you also need to update the
- * std() initializer in findfp.c.
- */
-typedef	struct __sFILE {
-	unsigned char *_p;	/* current position in (some) buffer */
-	int	_r;		/* read space left for getc() */
-	int	_w;		/* write space left for putc() */
-	short	_flags;		/* flags, below; this FILE is free if 0 */
-	short	_file;		/* fileno, if Unix descriptor, else -1 */
-	struct	__sbuf _bf;	/* the buffer (at least 1 byte, if !NULL) */
-	int	_lbfsize;	/* 0 or -_bf._size, for inline putc */
-
-	/* operations */
-	void	*_cookie;	/* cookie passed to io functions */
-	int	(*_close)(void *);
-	int	(*_read)(void *, char *, int);
-	fpos_t	(*_seek)(void *, fpos_t, int);
-	int	(*_write)(void *, const char *, int);
-
-	/* extension data, to avoid further ABI breakage */
-	struct	__sbuf _ext;
-	/* data for long sequences of ungetc() */
-	unsigned char *_up;	/* saved _p when _p is doing ungetc data */
-	int	_ur;		/* saved _r when _r is counting ungetc data */
-
-	/* tricks to meet minimum requirements even when malloc() fails */
-	unsigned char _ubuf[3];	/* guarantee an ungetc() buffer */
-	unsigned char _nbuf[1];	/* guarantee a getc() buffer */
-
-	/* separate buffer for fgetln() when line crosses buffer boundary */
-	struct	__sbuf _lb;	/* buffer for fgetln() */
-
-	/* Unix stdio files get aligned to block boundaries on fseek() */
-	int	_blksize;	/* stat.st_blksize (may be != _bf._size) */
-	fpos_t	_offset;	/* current lseek offset */
-} FILE;
-
-__BEGIN_DECLS
-extern FILE __sF[];
-__END_DECLS
-
-#define	__SLBF	0x0001		/* line buffered */
-#define	__SNBF	0x0002		/* unbuffered */
-#define	__SRD	0x0004		/* OK to read */
-#define	__SWR	0x0008		/* OK to write */
-	/* RD and WR are never simultaneously asserted */
-#define	__SRW	0x0010		/* open for reading & writing */
-#define	__SEOF	0x0020		/* found EOF */
-#define	__SERR	0x0040		/* found error */
-#define	__SMBF	0x0080		/* _buf is from malloc */
-#define	__SAPP	0x0100		/* fdopen()ed in append mode */
-#define	__SSTR	0x0200		/* this is an sprintf/snprintf string */
-#define	__SOPT	0x0400		/* do fseek() optimization */
-#define	__SNPT	0x0800		/* do not do fseek() optimization */
-#define	__SOFF	0x1000		/* set iff _offset is in fact correct */
-#define	__SMOD	0x2000		/* true => fgetln modified _p text */
-#define	__SALC	0x4000		/* allocate string space dynamically */
-#define	__SIGN	0x8000		/* ignore this file in _fwalk */
-
-/*
- * The following three definitions are for ANSI C, which took them
- * from System V, which brilliantly took internal interface macros and
- * made them official arguments to setvbuf(), without renaming them.
- * Hence, these ugly _IOxxx names are *supposed* to appear in user code.
- *
- * Although numbered as their counterparts above, the implementation
- * does not rely on this.
- */
-#define	_IOFBF	0		/* setvbuf should set fully buffered */
-#define	_IOLBF	1		/* setvbuf should set line buffered */
-#define	_IONBF	2		/* setvbuf should set unbuffered */
-
-#define	BUFSIZ	1024		/* size of buffer used by setbuf */
-#define	EOF	(-1)
-
-/*
- * FOPEN_MAX is a minimum maximum, and is the number of streams that
- * stdio can provide without attempting to allocate further resources
- * (which could fail).  Do not use this for anything.
- */
-
-#define	FOPEN_MAX	20	/* must be <= OPEN_MAX <sys/syslimits.h> */
-#define	FILENAME_MAX	1024	/* must be <= PATH_MAX <sys/syslimits.h> */
-
-/* System V/ANSI C; this is the wrong way to do this, do *not* use these. */
-#if __BSD_VISIBLE || __XPG_VISIBLE
-#define	P_tmpdir	"/tmp/"
-#endif
-#define	L_tmpnam	1024	/* XXX must be == PATH_MAX */
-#define	TMP_MAX		308915776
-
-/* Always ensure that these are consistent with <fcntl.h> and <unistd.h>! */
-#ifndef SEEK_SET
-#define	SEEK_SET	0	/* set file offset to offset */
-#endif
-#ifndef SEEK_CUR
-#define	SEEK_CUR	1	/* set file offset to current plus offset */
-#endif
-#ifndef SEEK_END
-#define	SEEK_END	2	/* set file offset to EOF plus offset */
-#endif
-
-#define	stdin	(&__sF[0])
-#define	stdout	(&__sF[1])
-#define	stderr	(&__sF[2])
-
-/*
- * Functions defined in ANSI C standard.
- */
-__BEGIN_DECLS
-void	 clearerr(FILE *);
-int	 fclose(FILE *);
-int	 feof(FILE *);
-int	 ferror(FILE *);
-int	 fflush(FILE *);
-int	 fgetc(FILE *);
-char	*fgets(char * __restrict, int, FILE * __restrict);
-FILE	*fopen(const char * __restrict , const char * __restrict);
-int	 fprintf(FILE * __restrict , const char * __restrict, ...)
-		__printflike(2, 3);
-int	 fputc(int, FILE *);
-int	 fputs(const char * __restrict, FILE * __restrict);
-size_t	 fread(void * __restrict, size_t, size_t, FILE * __restrict);
-FILE	*freopen(const char * __restrict, const char * __restrict,
-	    FILE * __restrict);
-int	 fscanf(FILE * __restrict, const char * __restrict, ...)
-		__scanflike(2, 3);
-int	 fseek(FILE *, long, int);
-long	 ftell(FILE *);
-size_t	 fwrite(const void * __restrict, size_t, size_t, FILE * __restrict);
-int	 getc(FILE *);
-int	 getchar(void);
-ssize_t	 getdelim(char ** __restrict, size_t * __restrict, int,
-	    FILE * __restrict);
-ssize_t	 getline(char ** __restrict, size_t * __restrict, FILE * __restrict);
-
-#if __BSD_VISIBLE && !defined(__SYS_ERRLIST)
-#define __SYS_ERRLIST
-extern int sys_nerr;			/* perror(3) external variables */
-extern char *sys_errlist[];
-#endif
-
-void	 perror(const char *);
-int	 printf(const char * __restrict, ...)
-		__printflike(1, 2);
-int	 putc(int, FILE *);
-int	 putchar(int);
-int	 puts(const char *);
-int	 remove(const char *);
-void	 rewind(FILE *);
-int	 scanf(const char * __restrict, ...)
-		__scanflike(1, 2);
-void	 setbuf(FILE * __restrict, char * __restrict);
-int	 setvbuf(FILE * __restrict, char * __restrict, int, size_t);
-int	 sscanf(const char * __restrict, const char * __restrict, ...)
-		__scanflike(2, 3);
-FILE	*tmpfile(void);
-int	 ungetc(int, FILE *);
-int	 vfprintf(FILE * __restrict, const char * __restrict, __va_list)
-		__printflike(2, 0);
-int	 vprintf(const char * __restrict, __va_list)
-		__printflike(1, 0);
-
-#ifndef __AUDIT__
-char* gets(char*) __warnattr("gets is very unsafe; consider using fgets");
-int sprintf(char* __restrict, const char* __restrict, ...)
-    __printflike(2, 3); //__warnattr("sprintf is often misused; please use snprintf");
-char* tmpnam(char*) __warnattr("tmpnam possibly used unsafely; consider using mkstemp");
-int vsprintf(char* __restrict, const char* __restrict, __va_list)
-    __printflike(2, 0); //__warnattr("vsprintf is often misused; please use vsnprintf");
-#if __XPG_VISIBLE
-char* tempnam(const char*, const char*)
-    __warnattr("tempnam possibly used unsafely; consider using mkstemp");
-#endif
-#endif
-
-extern int rename(const char*, const char*);
-extern int renameat(int, const char*, int, const char*);
-
-int	 fgetpos(FILE * __restrict, fpos_t * __restrict);
-int	 fsetpos(FILE *, const fpos_t *);
-
-int	 fseeko(FILE *, off_t, int);
-off_t	 ftello(FILE *);
-
-#if __ISO_C_VISIBLE >= 1999 || __BSD_VISIBLE
-int	 snprintf(char * __restrict, size_t, const char * __restrict, ...)
-		__printflike(3, 4);
-int	 vfscanf(FILE * __restrict, const char * __restrict, __va_list)
-		__scanflike(2, 0);
-int	 vscanf(const char *, __va_list)
-		__scanflike(1, 0);
-int	 vsnprintf(char * __restrict, size_t, const char * __restrict, __va_list)
-		__printflike(3, 0);
-int	 vsscanf(const char * __restrict, const char * __restrict, __va_list)
-		__scanflike(2, 0);
-#endif /* __ISO_C_VISIBLE >= 1999 || __BSD_VISIBLE */
-
-__END_DECLS
-
-
-/*
- * Functions defined in POSIX 1003.1.
- */
-#if __BSD_VISIBLE || __POSIX_VISIBLE || __XPG_VISIBLE
-#define	L_ctermid	1024	/* size for ctermid(); PATH_MAX */
-#define L_cuserid	9	/* size for cuserid(); UT_NAMESIZE + 1 */
-
-__BEGIN_DECLS
-#if 0 /* MISSING FROM BIONIC */
-char	*ctermid(char *);
-char	*cuserid(char *);
-#endif /* MISSING */
-FILE	*fdopen(int, const char *);
-int	 fileno(FILE *);
-
-#if (__POSIX_VISIBLE >= 199209)
-int	 pclose(FILE *);
-FILE	*popen(const char *, const char *);
-#endif
-
-#if __POSIX_VISIBLE >= 199506
-void	 flockfile(FILE *);
-int	 ftrylockfile(FILE *);
-void	 funlockfile(FILE *);
-
-/*
- * These are normally used through macros as defined below, but POSIX
- * requires functions as well.
- */
-int	 getc_unlocked(FILE *);
-int	 getchar_unlocked(void);
-int	 putc_unlocked(int, FILE *);
-int	 putchar_unlocked(int);
-#endif /* __POSIX_VISIBLE >= 199506 */
-
-__END_DECLS
-
-#endif /* __BSD_VISIBLE || __POSIX_VISIBLE || __XPG_VISIBLE */
-
-/*
- * Routines that are purely local.
- */
-#if __BSD_VISIBLE
-__BEGIN_DECLS
-int	 asprintf(char ** __restrict, const char * __restrict, ...)
-		__printflike(2, 3);
-char	*fgetln(FILE * __restrict, size_t * __restrict);
-int	 fpurge(FILE *);
-int	 getw(FILE *);
-int	 putw(int, FILE *);
-void	 setbuffer(FILE *, char *, int);
-int	 setlinebuf(FILE *);
-int	 vasprintf(char ** __restrict, const char * __restrict,
-    __va_list)
-		__printflike(2, 0);
-__END_DECLS
-
-/*
- * Stdio function-access interface.
- */
-__BEGIN_DECLS
-FILE	*funopen(const void *,
-		int (*)(void *, char *, int),
-		int (*)(void *, const char *, int),
-		fpos_t (*)(void *, fpos_t, int),
-		int (*)(void *));
-__END_DECLS
-#define	fropen(cookie, fn) funopen(cookie, fn, 0, 0, 0)
-#define	fwopen(cookie, fn) funopen(cookie, 0, fn, 0, 0)
-#endif /* __BSD_VISIBLE */
-
-#ifdef _GNU_SOURCE
-/*
- * glibc defines dprintf(int, const char*, ...), which is poorly named
- * and likely to conflict with locally defined debugging printfs
- * fdprintf is a better name, and some programs that use fdprintf use a
- * #define fdprintf dprintf for compatibility
- */
-__BEGIN_DECLS
-int fdprintf(int, const char*, ...)
-		__printflike(2, 3);
-int vfdprintf(int, const char*, __va_list)
-		__printflike(2, 0);
-__END_DECLS
-#endif /* _GNU_SOURCE */
-
-#if defined(__BIONIC_FORTIFY)
-
-__BEGIN_DECLS
-
-__BIONIC_FORTIFY_INLINE
-__printflike(3, 0)
-int vsnprintf(char *dest, size_t size, const char *format, __va_list ap)
-{
-    return __builtin___vsnprintf_chk(dest, size, 0, __bos(dest), format, ap);
-}
-
-__BIONIC_FORTIFY_INLINE
-__printflike(2, 0)
-int vsprintf(char *dest, const char *format, __va_list ap)
-{
-    return __builtin___vsprintf_chk(dest, 0, __bos(dest), format, ap);
-}
-
-#if defined(__clang__)
-  #if !defined(snprintf)
-    #define __wrap_snprintf(dest, size, ...) __builtin___snprintf_chk(dest, size, 0, __bos(dest), __VA_ARGS__)
-    #define snprintf(...) __wrap_snprintf(__VA_ARGS__)
-  #endif
-#else
-__BIONIC_FORTIFY_INLINE
-__printflike(3, 4)
-int snprintf(char *dest, size_t size, const char *format, ...)
-{
-    return __builtin___snprintf_chk(dest, size, 0,
-        __bos(dest), format, __builtin_va_arg_pack());
-}
-#endif
-
-#if defined(__clang__)
-  #if !defined(sprintf)
-    #define __wrap_sprintf(dest, ...) __builtin___sprintf_chk(dest, 0, __bos(dest), __VA_ARGS__)
-    #define sprintf(...) __wrap_sprintf(__VA_ARGS__)
-  #endif
-#else
-__BIONIC_FORTIFY_INLINE
-__printflike(2, 3)
-int sprintf(char *dest, const char *format, ...)
-{
-    return __builtin___sprintf_chk(dest, 0,
-        __bos(dest), format, __builtin_va_arg_pack());
-}
-#endif
-
-extern char* __fgets_chk(char*, int, FILE*, size_t);
-extern char* __fgets_real(char*, int, FILE*) __asm__(__USER_LABEL_PREFIX__ "fgets");
-__errordecl(__fgets_too_big_error, "fgets called with size bigger than buffer");
-__errordecl(__fgets_too_small_error, "fgets called with size less than zero");
-
-#if !defined(__clang__)
-
-__BIONIC_FORTIFY_INLINE
-char *fgets(char* dest, int size, FILE* stream) {
-    size_t bos = __bos(dest);
-
-    // Compiler can prove, at compile time, that the passed in size
-    // is always negative. Force a compiler error.
-    if (__builtin_constant_p(size) && (size < 0)) {
-        __fgets_too_small_error();
-    }
-
-    // Compiler doesn't know destination size. Don't call __fgets_chk
-    if (bos == __BIONIC_FORTIFY_UNKNOWN_SIZE) {
-        return __fgets_real(dest, size, stream);
-    }
-
-    // Compiler can prove, at compile time, that the passed in size
-    // is always <= the actual object size. Don't call __fgets_chk
-    if (__builtin_constant_p(size) && (size <= (int) bos)) {
-        return __fgets_real(dest, size, stream);
-    }
-
-    // Compiler can prove, at compile time, that the passed in size
-    // is always > the actual object size. Force a compiler error.
-    if (__builtin_constant_p(size) && (size > (int) bos)) {
-        __fgets_too_big_error();
-    }
-
-    return __fgets_chk(dest, size, stream, bos);
-}
-
-#endif /* !defined(__clang__) */
-
-__END_DECLS
-
-#endif /* defined(__BIONIC_FORTIFY) */
-
-#endif /* _STDIO_H_ */
diff --git a/ndk/platforms/android-20/include/stdlib.h b/ndk/platforms/android-20/include/stdlib.h
deleted file mode 100644
index 834dcda..0000000
--- a/ndk/platforms/android-20/include/stdlib.h
+++ /dev/null
@@ -1,178 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *  * Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  * Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-#ifndef _STDLIB_H_
-#define _STDLIB_H_
-
-#include <sys/cdefs.h>
-
-#include <stddef.h>
-#include <string.h>
-#include <alloca.h>
-#include <strings.h>
-#include <memory.h>
-
-__BEGIN_DECLS
-
-#define EXIT_FAILURE 1
-#define EXIT_SUCCESS 0
-
-extern __noreturn void abort(void);
-extern __noreturn void exit(int);
-extern __noreturn void _Exit(int);
-extern int atexit(void (*)(void));
-
-#if __ISO_C_VISIBLE >= 2011 || __cplusplus >= 201103L
-int at_quick_exit(void (*)(void));
-void quick_exit(int) __noreturn;
-#endif
-
-extern char* getenv(const char*);
-extern int putenv(char*);
-extern int setenv(const char*, const char*, int);
-extern int unsetenv(const char*);
-extern int clearenv(void);
-
-extern char* mkdtemp(char*);
-extern char* mktemp(char*) __warnattr("mktemp possibly used unsafely; consider using mkstemp");
-extern int mkstemp(char*);
-extern int mkstemp64(char*);
-
-extern long strtol(const char *, char **, int);
-extern long long strtoll(const char *, char **, int);
-extern unsigned long strtoul(const char *, char **, int);
-extern unsigned long long strtoull(const char *, char **, int);
-
-extern int posix_memalign(void **memptr, size_t alignment, size_t size);
-
-extern double atof(const char*);
-
-extern double strtod(const char*, char**) __LIBC_ABI_PUBLIC__;
-extern float strtof(const char*, char**) __LIBC_ABI_PUBLIC__;
-extern long double strtold(const char*, char**) __LIBC_ABI_PUBLIC__;
-
-extern int atoi(const char*) __purefunc;
-extern long atol(const char*) __purefunc;
-extern long long atoll(const char*) __purefunc;
-
-extern int abs(int) __pure2;
-extern long labs(long) __pure2;
-extern long long llabs(long long) __pure2;
-
-extern char * realpath(const char *path, char *resolved);
-extern int system(const char * string);
-
-extern void * bsearch(const void *key, const void *base0,
-	size_t nmemb, size_t size,
-	int (*compar)(const void *, const void *));
-
-extern void qsort(void *, size_t, size_t, int (*)(const void *, const void *));
-
-extern long jrand48(unsigned short *);
-extern long mrand48(void);
-extern long nrand48(unsigned short *);
-extern long lrand48(void);
-extern unsigned short *seed48(unsigned short*);
-extern double erand48(unsigned short xsubi[3]);
-extern double drand48(void);
-extern void srand48(long);
-extern unsigned int arc4random(void);
-extern void arc4random_stir(void);
-extern void arc4random_addrandom(unsigned char *, int);
-
-#define RAND_MAX 0x7fffffff
-static __inline__ int rand(void) {
-    return (int)lrand48();
-}
-static __inline__ void srand(unsigned int __s) {
-    srand48(__s);
-}
-static __inline__ long random(void)
-{
-    return lrand48();
-}
-static __inline__ void srandom(unsigned int __s)
-{
-    srand48(__s);
-}
-
-/* Basic PTY functions.  These only work if devpts is mounted! */
-
-extern int    unlockpt(int);
-extern char*  ptsname(int);
-extern int    ptsname_r(int, char*, size_t);
-extern int    getpt(void);
-
-static __inline__ int grantpt(int __fd __attribute((unused)))
-{
-  (void)__fd;
-  return 0;     /* devpts does this all for us! */
-}
-
-typedef struct {
-    int  quot;
-    int  rem;
-} div_t;
-
-extern div_t   div(int, int);
-
-typedef struct {
-    long int  quot;
-    long int  rem;
-} ldiv_t;
-
-extern ldiv_t   ldiv(long, long);
-
-typedef struct {
-    long long int  quot;
-    long long int  rem;
-} lldiv_t;
-
-extern lldiv_t   lldiv(long long, long long);
-
-/* BSD compatibility. */
-extern const char* getprogname(void);
-extern void setprogname(const char*);
-
-/* make STLPort happy */
-extern int      mblen(const char *, size_t);
-extern size_t   mbstowcs(wchar_t *, const char *, size_t);
-extern int      mbtowc(wchar_t *, const char *, size_t);
-
-/* Likewise, make libstdc++-v3 happy.  */
-extern int	wctomb(char *, wchar_t);
-extern size_t	wcstombs(char *, const wchar_t *, size_t);
-
-#define MB_CUR_MAX 1
-
-#if 0 /* MISSING FROM BIONIC */
-extern int on_exit(void (*)(int, void *), void *);
-#endif /* MISSING */
-
-__END_DECLS
-
-#endif /* _STDLIB_H_ */
diff --git a/ndk/platforms/android-20/include/string.h b/ndk/platforms/android-20/include/string.h
deleted file mode 100644
index c9ae03b..0000000
--- a/ndk/platforms/android-20/include/string.h
+++ /dev/null
@@ -1,324 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *  * Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  * Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-#ifndef _STRING_H_
-#define _STRING_H_
-
-#include <sys/cdefs.h>
-#include <stddef.h>
-#include <malloc.h>
-
-__BEGIN_DECLS
-
-extern void*  memccpy(void* __restrict, const void* __restrict, int, size_t);
-extern void*  memchr(const void *, int, size_t) __purefunc;
-extern void*  memrchr(const void *, int, size_t) __purefunc;
-extern int    memcmp(const void *, const void *, size_t) __purefunc;
-extern void*  memcpy(void* __restrict, const void* __restrict, size_t);
-extern void*  memmove(void *, const void *, size_t);
-extern void*  memset(void *, int, size_t);
-extern void*  memmem(const void *, size_t, const void *, size_t) __purefunc;
-
-extern char*  index(const char *, int) __purefunc;
-extern char*  strchr(const char *, int) __purefunc;
-extern char* __strchr_chk(const char *, int, size_t);
-
-extern char*  strrchr(const char *, int) __purefunc;
-extern char* __strrchr_chk(const char *, int, size_t);
-
-extern size_t strlen(const char *) __purefunc;
-extern size_t __strlen_chk(const char *, size_t);
-extern int    strcmp(const char *, const char *) __purefunc;
-extern char*  stpcpy(char* __restrict, const char* __restrict);
-extern char*  strcpy(char* __restrict, const char* __restrict);
-extern char*  strcat(char* __restrict, const char* __restrict);
-
-extern int    strcasecmp(const char *, const char *) __purefunc;
-extern int    strncasecmp(const char *, const char *, size_t) __purefunc;
-extern char*  strdup(const char *);
-
-extern char*  strstr(const char *, const char *) __purefunc;
-extern char*  strcasestr(const char *haystack, const char *needle) __purefunc;
-extern char*  strtok(char* __restrict, const char* __restrict);
-extern char*  strtok_r(char* __restrict, const char* __restrict, char** __restrict);
-
-extern char*  strerror(int);
-extern int    strerror_r(int errnum, char *buf, size_t n);
-
-extern size_t strnlen(const char *, size_t) __purefunc;
-extern char*  strncat(char* __restrict, const char* __restrict, size_t);
-extern char*  strndup(const char *, size_t);
-extern int    strncmp(const char *, const char *, size_t) __purefunc;
-extern char*  stpncpy(char* __restrict, const char* __restrict, size_t);
-extern char*  strncpy(char* __restrict, const char* __restrict, size_t);
-
-extern size_t strlcat(char* __restrict, const char* __restrict, size_t);
-extern size_t strlcpy(char* __restrict, const char* __restrict, size_t);
-
-extern size_t strcspn(const char *, const char *) __purefunc;
-extern char*  strpbrk(const char *, const char *) __purefunc;
-extern char*  strsep(char** __restrict, const char* __restrict);
-extern size_t strspn(const char *, const char *);
-
-extern char*  strsignal(int  sig);
-
-extern int    strcoll(const char *, const char *) __purefunc;
-extern size_t strxfrm(char* __restrict, const char* __restrict, size_t);
-
-#if defined(__BIONIC_FORTIFY)
-
-__errordecl(__memcpy_dest_size_error, "memcpy: prevented write past end of buffer");
-__errordecl(__memcpy_src_size_error, "memcpy: prevented read past end of buffer");
-
-__BIONIC_FORTIFY_INLINE
-void* memcpy(void* __restrict dest, const void* __restrict src, size_t copy_amount) {
-    char *d = (char *) dest;
-    const char *s = (const char *) src;
-    size_t s_len = __bos0(s);
-    size_t d_len = __bos0(d);
-
-    if (__builtin_constant_p(copy_amount) && (copy_amount > d_len)) {
-        __memcpy_dest_size_error();
-    }
-
-    if (__builtin_constant_p(copy_amount) && (copy_amount > s_len)) {
-        __memcpy_src_size_error();
-    }
-
-    return __builtin___memcpy_chk(dest, src, copy_amount, d_len);
-}
-
-__BIONIC_FORTIFY_INLINE
-void* memmove(void *dest, const void *src, size_t len) {
-    return __builtin___memmove_chk(dest, src, len, __bos0(dest));
-}
-
-__BIONIC_FORTIFY_INLINE
-char* stpcpy(char* __restrict dest, const char* __restrict src) {
-    return __builtin___stpcpy_chk(dest, src, __bos(dest));
-}
-
-__BIONIC_FORTIFY_INLINE
-char* strcpy(char* __restrict dest, const char* __restrict src) {
-    return __builtin___strcpy_chk(dest, src, __bos(dest));
-}
-
-__errordecl(__stpncpy_error, "stpncpy: prevented write past end of buffer");
-extern char* __stpncpy_chk2(char* __restrict, const char* __restrict, size_t, size_t, size_t);
-
-__BIONIC_FORTIFY_INLINE
-char* stpncpy(char* __restrict dest, const char* __restrict src, size_t n) {
-    size_t bos_dest = __bos(dest);
-    size_t bos_src = __bos(src);
-    if (__builtin_constant_p(n) && (n > bos_dest)) {
-        __stpncpy_error();
-    }
-
-    if (bos_src == __BIONIC_FORTIFY_UNKNOWN_SIZE) {
-        return __builtin___stpncpy_chk(dest, src, n, bos_dest);
-    }
-
-    if (__builtin_constant_p(n) && (n <= bos_src)) {
-        return __builtin___stpncpy_chk(dest, src, n, bos_dest);
-    }
-
-    size_t slen = __builtin_strlen(src);
-    if (__builtin_constant_p(slen)) {
-        return __builtin___stpncpy_chk(dest, src, n, bos_dest);
-    }
-
-    return __stpncpy_chk2(dest, src, n, bos_dest, bos_src);
-}
-
-__errordecl(__strncpy_error, "strncpy: prevented write past end of buffer");
-extern char* __strncpy_chk2(char* __restrict, const char* __restrict, size_t, size_t, size_t);
-
-__BIONIC_FORTIFY_INLINE
-char* strncpy(char* __restrict dest, const char* __restrict src, size_t n) {
-    size_t bos_dest = __bos(dest);
-    size_t bos_src = __bos(src);
-    if (__builtin_constant_p(n) && (n > bos_dest)) {
-        __strncpy_error();
-    }
-
-    if (bos_src == __BIONIC_FORTIFY_UNKNOWN_SIZE) {
-        return __builtin___strncpy_chk(dest, src, n, bos_dest);
-    }
-
-    if (__builtin_constant_p(n) && (n <= bos_src)) {
-        return __builtin___strncpy_chk(dest, src, n, bos_dest);
-    }
-
-    size_t slen = __builtin_strlen(src);
-    if (__builtin_constant_p(slen)) {
-        return __builtin___strncpy_chk(dest, src, n, bos_dest);
-    }
-
-    return __strncpy_chk2(dest, src, n, bos_dest, bos_src);
-}
-
-__BIONIC_FORTIFY_INLINE
-char* strcat(char* __restrict dest, const char* __restrict src) {
-    return __builtin___strcat_chk(dest, src, __bos(dest));
-}
-
-__BIONIC_FORTIFY_INLINE
-char *strncat(char* __restrict dest, const char* __restrict src, size_t n) {
-    return __builtin___strncat_chk(dest, src, n, __bos(dest));
-}
-
-__BIONIC_FORTIFY_INLINE
-void* memset(void *s, int c, size_t n) {
-    return __builtin___memset_chk(s, c, n, __bos0(s));
-}
-
-extern size_t __strlcpy_real(char* __restrict, const char* __restrict, size_t)
-    __asm__(__USER_LABEL_PREFIX__ "strlcpy");
-__errordecl(__strlcpy_error, "strlcpy: prevented write past end of buffer");
-extern size_t __strlcpy_chk(char *, const char *, size_t, size_t);
-
-__BIONIC_FORTIFY_INLINE
-size_t strlcpy(char* __restrict dest, const char* __restrict src, size_t size) {
-    size_t bos = __bos(dest);
-
-#if !defined(__clang__)
-    // Compiler doesn't know destination size. Don't call __strlcpy_chk
-    if (bos == __BIONIC_FORTIFY_UNKNOWN_SIZE) {
-        return __strlcpy_real(dest, src, size);
-    }
-
-    // Compiler can prove, at compile time, that the passed in size
-    // is always <= the actual object size. Don't call __strlcpy_chk
-    if (__builtin_constant_p(size) && (size <= bos)) {
-        return __strlcpy_real(dest, src, size);
-    }
-
-    // Compiler can prove, at compile time, that the passed in size
-    // is always > the actual object size. Force a compiler error.
-    if (__builtin_constant_p(size) && (size > bos)) {
-        __strlcpy_error();
-    }
-#endif /* !defined(__clang__) */
-
-    return __strlcpy_chk(dest, src, size, bos);
-}
-
-extern size_t __strlcat_real(char* __restrict, const char* __restrict, size_t)
-    __asm__(__USER_LABEL_PREFIX__ "strlcat");
-__errordecl(__strlcat_error, "strlcat: prevented write past end of buffer");
-extern size_t __strlcat_chk(char* __restrict, const char* __restrict, size_t, size_t);
-
-
-__BIONIC_FORTIFY_INLINE
-size_t strlcat(char* __restrict dest, const char* __restrict src, size_t size) {
-    size_t bos = __bos(dest);
-
-#if !defined(__clang__)
-    // Compiler doesn't know destination size. Don't call __strlcat_chk
-    if (bos == __BIONIC_FORTIFY_UNKNOWN_SIZE) {
-        return __strlcat_real(dest, src, size);
-    }
-
-    // Compiler can prove, at compile time, that the passed in size
-    // is always <= the actual object size. Don't call __strlcat_chk
-    if (__builtin_constant_p(size) && (size <= bos)) {
-        return __strlcat_real(dest, src, size);
-    }
-
-    // Compiler can prove, at compile time, that the passed in size
-    // is always > the actual object size. Force a compiler error.
-    if (__builtin_constant_p(size) && (size > bos)) {
-        __strlcat_error();
-    }
-#endif /* !defined(__clang__) */
-
-    return __strlcat_chk(dest, src, size, bos);
-}
-
-__BIONIC_FORTIFY_INLINE
-size_t strlen(const char *s) {
-    size_t bos = __bos(s);
-
-#if !defined(__clang__)
-    // Compiler doesn't know destination size. Don't call __strlen_chk
-    if (bos == __BIONIC_FORTIFY_UNKNOWN_SIZE) {
-        return __builtin_strlen(s);
-    }
-
-    size_t slen = __builtin_strlen(s);
-    if (__builtin_constant_p(slen)) {
-        return slen;
-    }
-#endif /* !defined(__clang__) */
-
-    return __strlen_chk(s, bos);
-}
-
-__BIONIC_FORTIFY_INLINE
-char* strchr(const char *s, int c) {
-    size_t bos = __bos(s);
-
-#if !defined(__clang__)
-    // Compiler doesn't know destination size. Don't call __strchr_chk
-    if (bos == __BIONIC_FORTIFY_UNKNOWN_SIZE) {
-        return __builtin_strchr(s, c);
-    }
-
-    size_t slen = __builtin_strlen(s);
-    if (__builtin_constant_p(slen) && (slen < bos)) {
-        return __builtin_strchr(s, c);
-    }
-#endif /* !defined(__clang__) */
-
-    return __strchr_chk(s, c, bos);
-}
-
-__BIONIC_FORTIFY_INLINE
-char* strrchr(const char *s, int c) {
-    size_t bos = __bos(s);
-
-#if !defined(__clang__)
-    // Compiler doesn't know destination size. Don't call __strrchr_chk
-    if (bos == __BIONIC_FORTIFY_UNKNOWN_SIZE) {
-        return __builtin_strrchr(s, c);
-    }
-
-    size_t slen = __builtin_strlen(s);
-    if (__builtin_constant_p(slen) && (slen < bos)) {
-        return __builtin_strrchr(s, c);
-    }
-#endif /* !defined(__clang__) */
-
-    return __strrchr_chk(s, c, bos);
-}
-
-
-#endif /* defined(__BIONIC_FORTIFY) */
-
-__END_DECLS
-
-#endif /* _STRING_H_ */
diff --git a/ndk/platforms/android-20/include/strings.h b/ndk/platforms/android-20/include/strings.h
deleted file mode 100644
index e72798b..0000000
--- a/ndk/platforms/android-20/include/strings.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/*	$NetBSD: strings.h,v 1.10 2005/02/03 04:39:32 perry Exp $	*/
-
-/*-
- * Copyright (c) 1998 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Klaus Klein.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *        This product includes software developed by the NetBSD
- *        Foundation, Inc. and its contributors.
- * 4. Neither the name of The NetBSD Foundation nor the names of its
- *    contributors may be used to endorse or promote products derived
- *    from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef _STRINGS_H_
-#define _STRINGS_H_
-
-#include <sys/types.h>
-#include <sys/cdefs.h>
-
-__BEGIN_DECLS
-void	 bcopy(const void *, void *, size_t);
-void	 bzero(void *, size_t);
-int	 ffs(int);
-char	*index(const char *, int);
-int	 strcasecmp(const char *, const char *);
-int	 strncasecmp(const char *, const char *, size_t);
-
-#if defined(__BIONIC_FORTIFY)
-__BIONIC_FORTIFY_INLINE
-void bzero (void *s, size_t n) {
-    __builtin___memset_chk(s, '\0', n, __builtin_object_size (s, 0));
-}
-#endif /* defined(__BIONIC_FORTIFY) */
-
-__END_DECLS
-
-#endif /* !defined(_STRINGS_H_) */
diff --git a/ndk/platforms/android-20/include/sys/_errdefs.h b/ndk/platforms/android-20/include/sys/_errdefs.h
deleted file mode 100644
index 3eeadf4..0000000
--- a/ndk/platforms/android-20/include/sys/_errdefs.h
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *  * Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  * Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-/* the following corresponds to the error codes of the Linux kernel used by the Android platform
- * these are distinct from the OpenBSD ones, which is why we need to redeclare them here
- *
- * this file may be included several times to define either error constants or their
- * string representation
- */
-
-#ifndef __BIONIC_ERRDEF
-#error "__BIONIC_ERRDEF must be defined before including this file"
-#endif
-__BIONIC_ERRDEF( 0              ,   0, "Success" )
-__BIONIC_ERRDEF( EPERM          ,   1, "Operation not permitted" )
-__BIONIC_ERRDEF( ENOENT         ,   2, "No such file or directory" )
-__BIONIC_ERRDEF( ESRCH          ,   3, "No such process" )
-__BIONIC_ERRDEF( EINTR          ,   4, "Interrupted system call" )
-__BIONIC_ERRDEF( EIO            ,   5, "I/O error" )
-__BIONIC_ERRDEF( ENXIO          ,   6, "No such device or address" )
-__BIONIC_ERRDEF( E2BIG          ,   7, "Argument list too long" )
-__BIONIC_ERRDEF( ENOEXEC        ,   8, "Exec format error" )
-__BIONIC_ERRDEF( EBADF          ,   9, "Bad file number" )
-__BIONIC_ERRDEF( ECHILD         ,  10, "No child processes" )
-__BIONIC_ERRDEF( EAGAIN         ,  11, "Try again" )
-__BIONIC_ERRDEF( ENOMEM         ,  12, "Out of memory" )
-__BIONIC_ERRDEF( EACCES         ,  13, "Permission denied" )
-__BIONIC_ERRDEF( EFAULT         ,  14, "Bad address" )
-__BIONIC_ERRDEF( ENOTBLK        ,  15, "Block device required" )
-__BIONIC_ERRDEF( EBUSY          ,  16, "Device or resource busy" )
-__BIONIC_ERRDEF( EEXIST         ,  17, "File exists" )
-__BIONIC_ERRDEF( EXDEV          ,  18, "Cross-device link" )
-__BIONIC_ERRDEF( ENODEV         ,  19, "No such device" )
-__BIONIC_ERRDEF( ENOTDIR        ,  20, "Not a directory" )
-__BIONIC_ERRDEF( EISDIR         ,  21, "Is a directory" )
-__BIONIC_ERRDEF( EINVAL         ,  22, "Invalid argument" )
-__BIONIC_ERRDEF( ENFILE         ,  23, "File table overflow" )
-__BIONIC_ERRDEF( EMFILE         ,  24, "Too many open files" )
-__BIONIC_ERRDEF( ENOTTY         ,  25, "Not a typewriter" )
-__BIONIC_ERRDEF( ETXTBSY        ,  26, "Text file busy" )
-__BIONIC_ERRDEF( EFBIG          ,  27, "File too large" )
-__BIONIC_ERRDEF( ENOSPC         ,  28, "No space left on device" )
-__BIONIC_ERRDEF( ESPIPE         ,  29, "Illegal seek" )
-__BIONIC_ERRDEF( EROFS          ,  30, "Read-only file system" )
-__BIONIC_ERRDEF( EMLINK         ,  31, "Too many links" )
-__BIONIC_ERRDEF( EPIPE          ,  32, "Broken pipe" )
-__BIONIC_ERRDEF( EDOM           ,  33, "Math argument out of domain of func" )
-__BIONIC_ERRDEF( ERANGE         ,  34, "Math result not representable" )
-__BIONIC_ERRDEF( EDEADLK        ,  35, "Resource deadlock would occur" )
-__BIONIC_ERRDEF( ENAMETOOLONG   ,  36, "File name too long" )
-__BIONIC_ERRDEF( ENOLCK         ,  37, "No record locks available" )
-__BIONIC_ERRDEF( ENOSYS         ,  38, "Function not implemented" )
-__BIONIC_ERRDEF( ENOTEMPTY      ,  39, "Directory not empty" )
-__BIONIC_ERRDEF( ELOOP          ,  40, "Too many symbolic links encountered" )
-__BIONIC_ERRDEF( ENOMSG         ,  42, "No message of desired type" )
-__BIONIC_ERRDEF( EIDRM          ,  43, "Identifier removed" )
-__BIONIC_ERRDEF( ECHRNG         ,  44, "Channel number out of range" )
-__BIONIC_ERRDEF( EL2NSYNC       ,  45, "Level 2 not synchronized" )
-__BIONIC_ERRDEF( EL3HLT         ,  46, "Level 3 halted" )
-__BIONIC_ERRDEF( EL3RST         ,  47, "Level 3 reset" )
-__BIONIC_ERRDEF( ELNRNG         ,  48, "Link number out of range" )
-__BIONIC_ERRDEF( EUNATCH        ,  49, "Protocol driver not attached" )
-__BIONIC_ERRDEF( ENOCSI         ,  50, "No CSI structure available" )
-__BIONIC_ERRDEF( EL2HLT         ,  51, "Level 2 halted" )
-__BIONIC_ERRDEF( EBADE          ,  52, "Invalid exchange" )
-__BIONIC_ERRDEF( EBADR          ,  53, "Invalid request descriptor" )
-__BIONIC_ERRDEF( EXFULL         ,  54, "Exchange full" )
-__BIONIC_ERRDEF( ENOANO         ,  55, "No anode" )
-__BIONIC_ERRDEF( EBADRQC        ,  56, "Invalid request code" )
-__BIONIC_ERRDEF( EBADSLT        ,  57, "Invalid slot" )
-__BIONIC_ERRDEF( EBFONT         ,  59, "Bad font file format" )
-__BIONIC_ERRDEF( ENOSTR         ,  60, "Device not a stream" )
-__BIONIC_ERRDEF( ENODATA        ,  61, "No data available" )
-__BIONIC_ERRDEF( ETIME          ,  62, "Timer expired" )
-__BIONIC_ERRDEF( ENOSR          ,  63, "Out of streams resources" )
-__BIONIC_ERRDEF( ENONET         ,  64, "Machine is not on the network" )
-__BIONIC_ERRDEF( ENOPKG         ,  65, "Package not installed" )
-__BIONIC_ERRDEF( EREMOTE        ,  66, "Object is remote" )
-__BIONIC_ERRDEF( ENOLINK        ,  67, "Link has been severed" )
-__BIONIC_ERRDEF( EADV           ,  68, "Advertise error" )
-__BIONIC_ERRDEF( ESRMNT         ,  69, "Srmount error" )
-__BIONIC_ERRDEF( ECOMM          ,  70, "Communication error on send" )
-__BIONIC_ERRDEF( EPROTO         ,  71, "Protocol error" )
-__BIONIC_ERRDEF( EMULTIHOP      ,  72, "Multihop attempted" )
-__BIONIC_ERRDEF( EDOTDOT        ,  73, "RFS specific error" )
-__BIONIC_ERRDEF( EBADMSG        ,  74, "Not a data message" )
-__BIONIC_ERRDEF( EOVERFLOW      ,  75, "Value too large for defined data type" )
-__BIONIC_ERRDEF( ENOTUNIQ       ,  76, "Name not unique on network" )
-__BIONIC_ERRDEF( EBADFD         ,  77, "File descriptor in bad state" )
-__BIONIC_ERRDEF( EREMCHG        ,  78, "Remote address changed" )
-__BIONIC_ERRDEF( ELIBACC        ,  79, "Can not access a needed shared library" )
-__BIONIC_ERRDEF( ELIBBAD        ,  80, "Accessing a corrupted shared library" )
-__BIONIC_ERRDEF( ELIBSCN        ,  81, ".lib section in a.out corrupted" )
-__BIONIC_ERRDEF( ELIBMAX        ,  82, "Attempting to link in too many shared libraries" )
-__BIONIC_ERRDEF( ELIBEXEC       ,  83, "Cannot exec a shared library directly" )
-__BIONIC_ERRDEF( EILSEQ         ,  84, "Illegal byte sequence" )
-__BIONIC_ERRDEF( ERESTART       ,  85, "Interrupted system call should be restarted" )
-__BIONIC_ERRDEF( ESTRPIPE       ,  86, "Streams pipe error" )
-__BIONIC_ERRDEF( EUSERS         ,  87, "Too many users" )
-__BIONIC_ERRDEF( ENOTSOCK       ,  88, "Socket operation on non-socket" )
-__BIONIC_ERRDEF( EDESTADDRREQ   ,  89, "Destination address required" )
-__BIONIC_ERRDEF( EMSGSIZE       ,  90, "Message too long" )
-__BIONIC_ERRDEF( EPROTOTYPE     ,  91, "Protocol wrong type for socket" )
-__BIONIC_ERRDEF( ENOPROTOOPT    ,  92, "Protocol not available" )
-__BIONIC_ERRDEF( EPROTONOSUPPORT,  93, "Protocol not supported" )
-__BIONIC_ERRDEF( ESOCKTNOSUPPORT,  94, "Socket type not supported" )
-__BIONIC_ERRDEF( EOPNOTSUPP     ,  95, "Operation not supported on transport endpoint" )
-__BIONIC_ERRDEF( EPFNOSUPPORT   ,  96, "Protocol family not supported" )
-__BIONIC_ERRDEF( EAFNOSUPPORT   ,  97, "Address family not supported by protocol" )
-__BIONIC_ERRDEF( EADDRINUSE     ,  98, "Address already in use" )
-__BIONIC_ERRDEF( EADDRNOTAVAIL  ,  99, "Cannot assign requested address" )
-__BIONIC_ERRDEF( ENETDOWN       , 100, "Network is down" )
-__BIONIC_ERRDEF( ENETUNREACH    , 101, "Network is unreachable" )
-__BIONIC_ERRDEF( ENETRESET      , 102, "Network dropped connection because of reset" )
-__BIONIC_ERRDEF( ECONNABORTED   , 103, "Software caused connection abort" )
-__BIONIC_ERRDEF( ECONNRESET     , 104, "Connection reset by peer" )
-__BIONIC_ERRDEF( ENOBUFS        , 105, "No buffer space available" )
-__BIONIC_ERRDEF( EISCONN        , 106, "Transport endpoint is already connected" )
-__BIONIC_ERRDEF( ENOTCONN       , 107, "Transport endpoint is not connected" )
-__BIONIC_ERRDEF( ESHUTDOWN      , 108, "Cannot send after transport endpoint shutdown" )
-__BIONIC_ERRDEF( ETOOMANYREFS   , 109, "Too many references: cannot splice" )
-__BIONIC_ERRDEF( ETIMEDOUT      , 110, "Connection timed out" )
-__BIONIC_ERRDEF( ECONNREFUSED   , 111, "Connection refused" )
-__BIONIC_ERRDEF( EHOSTDOWN      , 112, "Host is down" )
-__BIONIC_ERRDEF( EHOSTUNREACH   , 113, "No route to host" )
-__BIONIC_ERRDEF( EALREADY       , 114, "Operation already in progress" )
-__BIONIC_ERRDEF( EINPROGRESS    , 115, "Operation now in progress" )
-__BIONIC_ERRDEF( ESTALE         , 116, "Stale NFS file handle" )
-__BIONIC_ERRDEF( EUCLEAN        , 117, "Structure needs cleaning" )
-__BIONIC_ERRDEF( ENOTNAM        , 118, "Not a XENIX named type file" )
-__BIONIC_ERRDEF( ENAVAIL        , 119, "No XENIX semaphores available" )
-__BIONIC_ERRDEF( EISNAM         , 120, "Is a named type file" )
-__BIONIC_ERRDEF( EREMOTEIO      , 121, "Remote I/O error" )
-__BIONIC_ERRDEF( EDQUOT         , 122, "Quota exceeded" )
-__BIONIC_ERRDEF( ENOMEDIUM      , 123, "No medium found" )
-__BIONIC_ERRDEF( EMEDIUMTYPE    , 124, "Wrong medium type" )
-__BIONIC_ERRDEF( ECANCELED      , 125, "Operation Canceled" )
-__BIONIC_ERRDEF( ENOKEY         , 126, "Required key not available" )
-__BIONIC_ERRDEF( EKEYEXPIRED    , 127, "Key has expired" )
-__BIONIC_ERRDEF( EKEYREVOKED    , 128, "Key has been revoked" )
-__BIONIC_ERRDEF( EKEYREJECTED   , 129, "Key was rejected by service" )
-__BIONIC_ERRDEF( EOWNERDEAD     , 130, "Owner died" )
-__BIONIC_ERRDEF( ENOTRECOVERABLE, 131, "State not recoverable" )
-
-#undef __BIONIC_ERRDEF
diff --git a/ndk/platforms/android-20/include/sys/_sigdefs.h b/ndk/platforms/android-20/include/sys/_sigdefs.h
deleted file mode 100644
index 44d60d9..0000000
--- a/ndk/platforms/android-20/include/sys/_sigdefs.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *  * Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  * Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-/*
- * this header is used to define signal constants and names;
- * it might be included several times
- */
-
-#ifndef __BIONIC_SIGDEF
-#error __BIONIC_SIGDEF not defined
-#endif
-
-__BIONIC_SIGDEF(SIGHUP,    "Hangup")
-__BIONIC_SIGDEF(SIGINT,    "Interrupt")
-__BIONIC_SIGDEF(SIGQUIT,   "Quit")
-__BIONIC_SIGDEF(SIGILL,    "Illegal instruction")
-__BIONIC_SIGDEF(SIGTRAP,   "Trap")
-__BIONIC_SIGDEF(SIGABRT,   "Aborted")
-#ifdef SIGEMT
-__BIONIC_SIGDEF(SIGEMT,    "EMT")
-#endif
-__BIONIC_SIGDEF(SIGFPE,    "Floating point exception")
-__BIONIC_SIGDEF(SIGKILL,   "Killed")
-__BIONIC_SIGDEF(SIGBUS,    "Bus error")
-__BIONIC_SIGDEF(SIGSEGV,   "Segmentation fault")
-__BIONIC_SIGDEF(SIGPIPE,   "Broken pipe")
-__BIONIC_SIGDEF(SIGALRM,   "Alarm clock")
-__BIONIC_SIGDEF(SIGTERM,   "Terminated")
-__BIONIC_SIGDEF(SIGUSR1,   "User signal 1")
-__BIONIC_SIGDEF(SIGUSR2,   "User signal 2")
-__BIONIC_SIGDEF(SIGCHLD,   "Child exited")
-__BIONIC_SIGDEF(SIGPWR,    "Power failure")
-__BIONIC_SIGDEF(SIGWINCH,  "Window size changed")
-__BIONIC_SIGDEF(SIGURG,    "Urgent I/O condition")
-__BIONIC_SIGDEF(SIGIO,     "I/O possible")
-__BIONIC_SIGDEF(SIGSTOP,   "Stopped (signal)")
-__BIONIC_SIGDEF(SIGTSTP,   "Stopped")
-__BIONIC_SIGDEF(SIGCONT,   "Continue")
-__BIONIC_SIGDEF(SIGTTIN,   "Stopped (tty input)")
-__BIONIC_SIGDEF(SIGTTOU,   "Stopped (tty output)")
-__BIONIC_SIGDEF(SIGVTALRM, "Virtual timer expired")
-__BIONIC_SIGDEF(SIGPROF,   "Profiling timer expired")
-__BIONIC_SIGDEF(SIGXCPU,   "CPU time limit exceeded")
-__BIONIC_SIGDEF(SIGXFSZ,   "File size limit exceeded")
-#if defined(SIGSTKFLT)
-__BIONIC_SIGDEF(SIGSTKFLT, "Stack fault")
-#endif
-__BIONIC_SIGDEF(SIGSYS,    "Bad system call")
-
-#undef __BIONIC_SIGDEF
diff --git a/ndk/platforms/android-20/include/sys/_system_properties.h b/ndk/platforms/android-20/include/sys/_system_properties.h
deleted file mode 100644
index 5a681df..0000000
--- a/ndk/platforms/android-20/include/sys/_system_properties.h
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *  * Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  * Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef _INCLUDE_SYS__SYSTEM_PROPERTIES_H
-#define _INCLUDE_SYS__SYSTEM_PROPERTIES_H
-
-#ifndef _REALLY_INCLUDE_SYS__SYSTEM_PROPERTIES_H_
-#error you should #include <sys/system_properties.h> instead
-#else
-#include <sys/system_properties.h>
-
-typedef struct prop_msg prop_msg;
-
-#define PROP_AREA_MAGIC   0x504f5250
-#define PROP_AREA_VERSION 0xfc6ed0ab
-#define PROP_AREA_VERSION_COMPAT 0x45434f76
-
-#define PROP_SERVICE_NAME "property_service"
-#define PROP_FILENAME "/dev/__properties__"
-
-#define PA_SIZE         (128 * 1024)
-
-#define SERIAL_VALUE_LEN(serial) ((serial) >> 24)
-#define SERIAL_DIRTY(serial) ((serial) & 1)
-
-__BEGIN_DECLS
-
-struct prop_msg 
-{
-    unsigned cmd;
-    char name[PROP_NAME_MAX];
-    char value[PROP_VALUE_MAX];
-};
-
-#define PROP_MSG_SETPROP 1
-    
-/*
-** Rules:
-**
-** - there is only one writer, but many readers
-** - prop_area.count will never decrease in value
-** - once allocated, a prop_info's name will not change
-** - once allocated, a prop_info's offset will not change
-** - reading a value requires the following steps
-**   1. serial = pi->serial
-**   2. if SERIAL_DIRTY(serial), wait*, then goto 1
-**   3. memcpy(local, pi->value, SERIAL_VALUE_LEN(serial) + 1)
-**   4. if pi->serial != serial, goto 2
-**
-** - writing a value requires the following steps
-**   1. pi->serial = pi->serial | 1
-**   2. memcpy(pi->value, local_value, value_len)
-**   3. pi->serial = (value_len << 24) | ((pi->serial + 1) & 0xffffff)
-*/
-
-#define PROP_PATH_RAMDISK_DEFAULT  "/default.prop"
-#define PROP_PATH_SYSTEM_BUILD     "/system/build.prop"
-#define PROP_PATH_SYSTEM_DEFAULT   "/system/default.prop"
-#define PROP_PATH_LOCAL_OVERRIDE   "/data/local.prop"
-#define PROP_PATH_FACTORY          "/factory/factory.prop"
-
-/*
-** Map the property area from the specified filename.  This
-** method is for testing only.
-*/
-int __system_property_set_filename(const char *filename);
-
-/*
-** Initialize the area to be used to store properties.  Can
-** only be done by a single process that has write access to
-** the property area.
-*/
-int __system_property_area_init();
-
-/* Add a new system property.  Can only be done by a single
-** process that has write access to the property area, and
-** that process must handle sequencing to ensure the property
-** does not already exist and that only one property is added
-** or updated at a time.
-**
-** Returns 0 on success, -1 if the property area is full.
-*/
-int __system_property_add(const char *name, unsigned int namelen,
-			const char *value, unsigned int valuelen);
-
-/* Update the value of a system property returned by
-** __system_property_find.  Can only be done by a single process
-** that has write access to the property area, and that process
-** must handle sequencing to ensure that only one property is
-** updated at a time.
-**
-** Returns 0 on success, -1 if the parameters are incorrect.
-*/
-int __system_property_update(prop_info *pi, const char *value, unsigned int len);
-
-/* Read the serial number of a system property returned by
-** __system_property_find.
-**
-** Returns the serial number on success, -1 on error.
-*/
-unsigned int __system_property_serial(const prop_info *pi);
-
-/* Wait for any system property to be updated.  Caller must pass
-** in 0 the first time, and the previous return value on each
-** successive call. */
-unsigned int __system_property_wait_any(unsigned int serial);
-
-/*  Compatibility functions to support using an old init with a new libc,
- ** mostly for the OTA updater binary.  These can be deleted once OTAs from
- ** a pre-K release no longer needed to be supported. */
-const prop_info *__system_property_find_compat(const char *name);
-int __system_property_read_compat(const prop_info *pi, char *name, char *value);
-int __system_property_foreach_compat(
-        void (*propfn)(const prop_info *pi, void *cookie),
-        void *cookie);
-
-/* Initialize the system properties area in read only mode.
- * Should be done by all processes that need to read system
- * properties.
- *
- * Returns 0 on success, -1 otherwise.
- */
-int __system_properties_init();
-
-__END_DECLS
-
-#endif
-#endif
diff --git a/ndk/platforms/android-20/include/sys/atomics.h b/ndk/platforms/android-20/include/sys/atomics.h
deleted file mode 100644
index 143bc4b..0000000
--- a/ndk/platforms/android-20/include/sys/atomics.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *  * Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  * Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-#ifndef _SYS_ATOMICS_H
-#define _SYS_ATOMICS_H
-
-#include <sys/cdefs.h>
-#include <sys/time.h>
-
-__BEGIN_DECLS
-
-/* Note: atomic operations that were exported by the C library didn't
- *       provide any memory barriers, which created potential issues on
- *       multi-core devices. We now define them as inlined calls to
- *       GCC sync builtins, which always provide a full barrier.
- *
- *       NOTE: The C library still exports atomic functions by the same
- *              name to ensure ABI stability for existing NDK machine code.
- *
- *       If you are an NDK developer, we encourage you to rebuild your
- *       unmodified sources against this header as soon as possible.
- */
-#define __ATOMIC_INLINE__ static __inline__ __attribute__((always_inline))
-
-__ATOMIC_INLINE__ int
-__atomic_cmpxchg(int old_value, int new_value, volatile int* ptr)
-{
-    /* We must return 0 on success */
-    return __sync_val_compare_and_swap(ptr, old_value, new_value) != old_value;
-}
-
-__ATOMIC_INLINE__ int
-__atomic_swap(int new_value, volatile int *ptr)
-{
-    int old_value;
-    do {
-        old_value = *ptr;
-    } while (__sync_val_compare_and_swap(ptr, old_value, new_value) != old_value);
-    return old_value;
-}
-
-__ATOMIC_INLINE__ int
-__atomic_dec(volatile int *ptr)
-{
-  return __sync_fetch_and_sub (ptr, 1);
-}
-
-__ATOMIC_INLINE__ int
-__atomic_inc(volatile int *ptr)
-{
-  return __sync_fetch_and_add (ptr, 1);
-}
-
-
-int __futex_wait(volatile void *ftx, int val, const struct timespec *timeout);
-int __futex_wake(volatile void *ftx, int count);
-
-__END_DECLS
-
-#endif /* _SYS_ATOMICS_H */
diff --git a/ndk/platforms/android-20/include/sys/cdefs.h b/ndk/platforms/android-20/include/sys/cdefs.h
deleted file mode 100644
index 8ab5b47..0000000
--- a/ndk/platforms/android-20/include/sys/cdefs.h
+++ /dev/null
@@ -1,575 +0,0 @@
-/*	$NetBSD: cdefs.h,v 1.58 2004/12/11 05:59:00 christos Exp $	*/
-
-/*
- * Copyright (c) 1991, 1993
- *	The Regents of the University of California.  All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Berkeley Software Design, Inc.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *	@(#)cdefs.h	8.8 (Berkeley) 1/9/95
- */
-
-#ifndef	_SYS_CDEFS_H_
-#define	_SYS_CDEFS_H_
-
-/*
- * Macro to test if we're using a GNU C compiler of a specific vintage
- * or later, for e.g. features that appeared in a particular version
- * of GNU C.  Usage:
- *
- *	#if __GNUC_PREREQ__(major, minor)
- *	...cool feature...
- *	#else
- *	...delete feature...
- *	#endif
- */
-#ifdef __GNUC__
-#define	__GNUC_PREREQ__(x, y)						\
-	((__GNUC__ == (x) && __GNUC_MINOR__ >= (y)) ||			\
-	 (__GNUC__ > (x)))
-#else
-#define	__GNUC_PREREQ__(x, y)	0
-#endif
-
-#include <sys/cdefs_elf.h>
-
-#if defined(__cplusplus)
-#define	__BEGIN_DECLS		extern "C" {
-#define	__END_DECLS		}
-#define	__static_cast(x,y)	static_cast<x>(y)
-#else
-#define	__BEGIN_DECLS
-#define	__END_DECLS
-#define	__static_cast(x,y)	(x)y
-#endif
-
-/*
- * The __CONCAT macro is used to concatenate parts of symbol names, e.g.
- * with "#define OLD(foo) __CONCAT(old,foo)", OLD(foo) produces oldfoo.
- * The __CONCAT macro is a bit tricky -- make sure you don't put spaces
- * in between its arguments.  __CONCAT can also concatenate double-quoted
- * strings produced by the __STRING macro, but this only works with ANSI C.
- */
-
-#define	___STRING(x)	__STRING(x)
-#define	___CONCAT(x,y)	__CONCAT(x,y)
-
-#if defined(__STDC__) || defined(__cplusplus)
-#define	__P(protos)	protos		/* full-blown ANSI C */
-#define	__CONCAT(x,y)	x ## y
-#define	__STRING(x)	#x
-
-#define	__const		const		/* define reserved names to standard */
-#define	__signed	signed
-#define	__volatile	volatile
-#if defined(__cplusplus)
-#define	__inline	inline		/* convert to C++ keyword */
-#else
-#if !defined(__GNUC__) && !defined(__lint__)
-#define	__inline			/* delete GCC keyword */
-#endif /* !__GNUC__  && !__lint__ */
-#endif /* !__cplusplus */
-
-#else	/* !(__STDC__ || __cplusplus) */
-#define	__P(protos)	()		/* traditional C preprocessor */
-#define	__CONCAT(x,y)	x/**/y
-#define	__STRING(x)	"x"
-
-#ifndef __GNUC__
-#define	__const				/* delete pseudo-ANSI C keywords */
-#define	__inline
-#define	__signed
-#define	__volatile
-#endif	/* !__GNUC__ */
-
-/*
- * In non-ANSI C environments, new programs will want ANSI-only C keywords
- * deleted from the program and old programs will want them left alone.
- * Programs using the ANSI C keywords const, inline etc. as normal
- * identifiers should define -DNO_ANSI_KEYWORDS.
- */
-#ifndef	NO_ANSI_KEYWORDS
-#define	const		__const		/* convert ANSI C keywords */
-#define	inline		__inline
-#define	signed		__signed
-#define	volatile	__volatile
-#endif /* !NO_ANSI_KEYWORDS */
-#endif	/* !(__STDC__ || __cplusplus) */
-
-/*
- * Used for internal auditing of the NetBSD source tree.
- */
-#ifdef __AUDIT__
-#define	__aconst	__const
-#else
-#define	__aconst
-#endif
-
-/*
- * The following macro is used to remove const cast-away warnings
- * from gcc -Wcast-qual; it should be used with caution because it
- * can hide valid errors; in particular most valid uses are in
- * situations where the API requires it, not to cast away string
- * constants. We don't use *intptr_t on purpose here and we are
- * explicit about unsigned long so that we don't have additional
- * dependencies.
- */
-#define __UNCONST(a)	((void *)(unsigned long)(const void *)(a))
-
-/*
- * GCC2 provides __extension__ to suppress warnings for various GNU C
- * language extensions under "-ansi -pedantic".
- */
-#if !__GNUC_PREREQ__(2, 0)
-#define	__extension__		/* delete __extension__ if non-gcc or gcc1 */
-#endif
-
-/*
- * GCC1 and some versions of GCC2 declare dead (non-returning) and
- * pure (no side effects) functions using "volatile" and "const";
- * unfortunately, these then cause warnings under "-ansi -pedantic".
- * GCC2 uses a new, peculiar __attribute__((attrs)) style.  All of
- * these work for GNU C++ (modulo a slight glitch in the C++ grammar
- * in the distribution version of 2.5.5).
- */
-#if !__GNUC_PREREQ__(2, 5)
-#define	__attribute__(x)	/* delete __attribute__ if non-gcc or gcc1 */
-#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
-#define	__dead		__volatile
-#define	__pure		__const
-#endif
-#endif
-
-/* Delete pseudo-keywords wherever they are not available or needed. */
-#ifndef __dead
-#define	__dead
-#define	__pure
-#endif
-
-#if __GNUC_PREREQ__(2, 7)
-#define	__unused	__attribute__((__unused__))
-#else
-#define	__unused	/* delete */
-#endif
-
-#define __pure2 __attribute__((__const__)) /* Android-added: used by FreeBSD libm */
-
-#if __GNUC_PREREQ__(3, 1)
-#define	__used		__attribute__((__used__))
-#else
-#define	__used		/* delete */
-#endif
-
-#if __GNUC_PREREQ__(2, 7)
-#define	__packed	__attribute__((__packed__))
-#define	__aligned(x)	__attribute__((__aligned__(x)))
-#define	__section(x)	__attribute__((__section__(x)))
-#elif defined(__lint__)
-#define	__packed	/* delete */
-#define	__aligned(x)	/* delete */
-#define	__section(x)	/* delete */
-#else
-#define	__packed	error: no __packed for this compiler
-#define	__aligned(x)	error: no __aligned for this compiler
-#define	__section(x)	error: no __section for this compiler
-#endif
-
-#if !__GNUC_PREREQ__(2, 8)
-#define	__extension__
-#endif
-
-#if __GNUC_PREREQ__(2, 8)
-#define __statement(x)	__extension__(x)
-#elif defined(lint)
-#define __statement(x)	(0)
-#else
-#define __statement(x)	(x)
-#endif
-
-#define __nonnull(args) __attribute__((__nonnull__ args))
-
-#define __printflike(x, y) __attribute__((__format__(printf, x, y))) __nonnull((x))
-#define __scanflike(x, y) __attribute__((__format__(scanf, x, y))) __nonnull((x))
-
-/*
- * C99 defines the restrict type qualifier keyword, which was made available
- * in GCC 2.92.
- */
-#if defined(__STDC__VERSION__) && __STDC_VERSION__ >= 199901L
-#define	__restrict	restrict
-#else
-#if !__GNUC_PREREQ__(2, 92)
-#define	__restrict	/* delete __restrict when not supported */
-#endif
-#endif
-
-/*
- * C99 defines __func__ predefined identifier, which was made available
- * in GCC 2.95.
- */
-#if !defined(__STDC_VERSION__) || !(__STDC_VERSION__ >= 199901L)
-#if __GNUC_PREREQ__(2, 6)
-#define	__func__	__PRETTY_FUNCTION__
-#elif __GNUC_PREREQ__(2, 4)
-#define	__func__	__FUNCTION__
-#else
-#define	__func__	""
-#endif
-#endif /* !(__STDC_VERSION__ >= 199901L) */
-
-#if defined(_KERNEL)
-#if defined(NO_KERNEL_RCSIDS)
-#undef __KERNEL_RCSID
-#define	__KERNEL_RCSID(_n, _s)		/* nothing */
-#endif /* NO_KERNEL_RCSIDS */
-#endif /* _KERNEL */
-
-#if !defined(_STANDALONE) && !defined(_KERNEL)
-#ifdef __GNUC__
-#define	__RENAME(x)	___RENAME(x)
-#else
-#ifdef __lint__
-#define	__RENAME(x)	__symbolrename(x)
-#else
-#error "No function renaming possible"
-#endif /* __lint__ */
-#endif /* __GNUC__ */
-#else /* _STANDALONE || _KERNEL */
-#define	__RENAME(x)	no renaming in kernel or standalone environment
-#endif
-
-/*
- * A barrier to stop the optimizer from moving code or assume live
- * register values. This is gcc specific, the version is more or less
- * arbitrary, might work with older compilers.
- */
-#if __GNUC_PREREQ__(2, 95)
-#define	__insn_barrier()	__asm __volatile("":::"memory")
-#else
-#define	__insn_barrier()	/* */
-#endif
-
-/*
- * GNU C version 2.96 adds explicit branch prediction so that
- * the CPU back-end can hint the processor and also so that
- * code blocks can be reordered such that the predicted path
- * sees a more linear flow, thus improving cache behavior, etc.
- *
- * The following two macros provide us with a way to use this
- * compiler feature.  Use __predict_true() if you expect the expression
- * to evaluate to true, and __predict_false() if you expect the
- * expression to evaluate to false.
- *
- * A few notes about usage:
- *
- *	* Generally, __predict_false() error condition checks (unless
- *	  you have some _strong_ reason to do otherwise, in which case
- *	  document it), and/or __predict_true() `no-error' condition
- *	  checks, assuming you want to optimize for the no-error case.
- *
- *	* Other than that, if you don't know the likelihood of a test
- *	  succeeding from empirical or other `hard' evidence, don't
- *	  make predictions.
- *
- *	* These are meant to be used in places that are run `a lot'.
- *	  It is wasteful to make predictions in code that is run
- *	  seldomly (e.g. at subsystem initialization time) as the
- *	  basic block reordering that this affects can often generate
- *	  larger code.
- */
-#if __GNUC_PREREQ__(2, 96)
-#define	__predict_true(exp)	__builtin_expect((exp) != 0, 1)
-#define	__predict_false(exp)	__builtin_expect((exp) != 0, 0)
-#else
-#define	__predict_true(exp)	(exp)
-#define	__predict_false(exp)	(exp)
-#endif
-
-#if __GNUC_PREREQ__(2, 96)
-#define __noreturn    __attribute__((__noreturn__))
-#define __mallocfunc  __attribute__((malloc))
-#define __purefunc    __attribute__((pure))
-#else
-#define __noreturn
-#define __mallocfunc
-#define __purefunc
-#endif
-
-#if __GNUC_PREREQ__(3, 1)
-#define __always_inline __attribute__((__always_inline__))
-#else
-#define __always_inline
-#endif
-
-#if __GNUC_PREREQ__(3, 4)
-#define __wur __attribute__((__warn_unused_result__))
-#else
-#define __wur
-#endif
-
-#if __GNUC_PREREQ__(4, 3)
-#define __errordecl(name, msg) extern void name(void) __attribute__((__error__(msg)))
-#define __warnattr(msg) __attribute__((__warning__(msg)))
-#else
-#define __errordecl(name, msg) extern void name(void)
-#define __warnattr(msg)
-#endif
-
-/*
- * Macros for manipulating "link sets".  Link sets are arrays of pointers
- * to objects, which are gathered up by the linker.
- *
- * Object format-specific code has provided us with the following macros:
- *
- *	__link_set_add_text(set, sym)
- *		Add a reference to the .text symbol `sym' to `set'.
- *
- *	__link_set_add_rodata(set, sym)
- *		Add a reference to the .rodata symbol `sym' to `set'.
- *
- *	__link_set_add_data(set, sym)
- *		Add a reference to the .data symbol `sym' to `set'.
- *
- *	__link_set_add_bss(set, sym)
- *		Add a reference to the .bss symbol `sym' to `set'.
- *
- *	__link_set_decl(set, ptype)
- *		Provide an extern declaration of the set `set', which
- *		contains an array of the pointer type `ptype'.  This
- *		macro must be used by any code which wishes to reference
- *		the elements of a link set.
- *
- *	__link_set_start(set)
- *		This points to the first slot in the link set.
- *
- *	__link_set_end(set)
- *		This points to the (non-existent) slot after the last
- *		entry in the link set.
- *
- *	__link_set_count(set)
- *		Count the number of entries in link set `set'.
- *
- * In addition, we provide the following macros for accessing link sets:
- *
- *	__link_set_foreach(pvar, set)
- *		Iterate over the link set `set'.  Because a link set is
- *		an array of pointers, pvar must be declared as "type **pvar",
- *		and the actual entry accessed as "*pvar".
- *
- *	__link_set_entry(set, idx)
- *		Access the link set entry at index `idx' from set `set'.
- */
-#define	__link_set_foreach(pvar, set)					\
-	for (pvar = __link_set_start(set); pvar < __link_set_end(set); pvar++)
-
-#define	__link_set_entry(set, idx)	(__link_set_begin(set)[idx])
-
-/*
- * Some of the FreeBSD sources used in Bionic need this.
- * Originally, this is used to embed the rcs versions of each source file
- * in the generated binary. We certainly don't want this in Bionic.
- */
-#define __FBSDID(s) /* nothing */
-
-/*-
- * The following definitions are an extension of the behavior originally
- * implemented in <sys/_posix.h>, but with a different level of granularity.
- * POSIX.1 requires that the macros we test be defined before any standard
- * header file is included.
- *
- * Here's a quick run-down of the versions:
- *  defined(_POSIX_SOURCE)		1003.1-1988
- *  _POSIX_C_SOURCE == 1		1003.1-1990
- *  _POSIX_C_SOURCE == 2		1003.2-1992 C Language Binding Option
- *  _POSIX_C_SOURCE == 199309		1003.1b-1993
- *  _POSIX_C_SOURCE == 199506		1003.1c-1995, 1003.1i-1995,
- *					and the omnibus ISO/IEC 9945-1: 1996
- *  _POSIX_C_SOURCE == 200112		1003.1-2001
- *  _POSIX_C_SOURCE == 200809		1003.1-2008
- *
- * In addition, the X/Open Portability Guide, which is now the Single UNIX
- * Specification, defines a feature-test macro which indicates the version of
- * that specification, and which subsumes _POSIX_C_SOURCE.
- *
- * Our macros begin with two underscores to avoid namespace screwage.
- */
-
-/* Deal with IEEE Std. 1003.1-1990, in which _POSIX_C_SOURCE == 1. */
-#if defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE == 1
-#undef _POSIX_C_SOURCE		/* Probably illegal, but beyond caring now. */
-#define	_POSIX_C_SOURCE		199009
-#endif
-
-/* Deal with IEEE Std. 1003.2-1992, in which _POSIX_C_SOURCE == 2. */
-#if defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE == 2
-#undef _POSIX_C_SOURCE
-#define	_POSIX_C_SOURCE		199209
-#endif
-
-/* Deal with various X/Open Portability Guides and Single UNIX Spec. */
-#ifdef _XOPEN_SOURCE
-#if _XOPEN_SOURCE - 0 >= 700
-#define	__XSI_VISIBLE		700
-#undef _POSIX_C_SOURCE
-#define	_POSIX_C_SOURCE		200809
-#elif _XOPEN_SOURCE - 0 >= 600
-#define	__XSI_VISIBLE		600
-#undef _POSIX_C_SOURCE
-#define	_POSIX_C_SOURCE		200112
-#elif _XOPEN_SOURCE - 0 >= 500
-#define	__XSI_VISIBLE		500
-#undef _POSIX_C_SOURCE
-#define	_POSIX_C_SOURCE		199506
-#endif
-#endif
-
-/*
- * Deal with all versions of POSIX.  The ordering relative to the tests above is
- * important.
- */
-#if defined(_POSIX_SOURCE) && !defined(_POSIX_C_SOURCE)
-#define	_POSIX_C_SOURCE		198808
-#endif
-#ifdef _POSIX_C_SOURCE
-#if _POSIX_C_SOURCE >= 200809
-#define	__POSIX_VISIBLE		200809
-#define	__ISO_C_VISIBLE		1999
-#elif _POSIX_C_SOURCE >= 200112
-#define	__POSIX_VISIBLE		200112
-#define	__ISO_C_VISIBLE		1999
-#elif _POSIX_C_SOURCE >= 199506
-#define	__POSIX_VISIBLE		199506
-#define	__ISO_C_VISIBLE		1990
-#elif _POSIX_C_SOURCE >= 199309
-#define	__POSIX_VISIBLE		199309
-#define	__ISO_C_VISIBLE		1990
-#elif _POSIX_C_SOURCE >= 199209
-#define	__POSIX_VISIBLE		199209
-#define	__ISO_C_VISIBLE		1990
-#elif _POSIX_C_SOURCE >= 199009
-#define	__POSIX_VISIBLE		199009
-#define	__ISO_C_VISIBLE		1990
-#else
-#define	__POSIX_VISIBLE		198808
-#define	__ISO_C_VISIBLE		0
-#endif /* _POSIX_C_SOURCE */
-#else
-/*-
- * Deal with _ANSI_SOURCE:
- * If it is defined, and no other compilation environment is explicitly
- * requested, then define our internal feature-test macros to zero.  This
- * makes no difference to the preprocessor (undefined symbols in preprocessing
- * expressions are defined to have value zero), but makes it more convenient for
- * a test program to print out the values.
- *
- * If a program mistakenly defines _ANSI_SOURCE and some other macro such as
- * _POSIX_C_SOURCE, we will assume that it wants the broader compilation
- * environment (and in fact we will never get here).
- */
-#if defined(_ANSI_SOURCE)	/* Hide almost everything. */
-#define	__POSIX_VISIBLE		0
-#define	__XSI_VISIBLE		0
-#define	__BSD_VISIBLE		0
-#define	__ISO_C_VISIBLE		1990
-#elif defined(_C99_SOURCE)	/* Localism to specify strict C99 env. */
-#define	__POSIX_VISIBLE		0
-#define	__XSI_VISIBLE		0
-#define	__BSD_VISIBLE		0
-#define	__ISO_C_VISIBLE		1999
-#else				/* Default environment: show everything. */
-#define	__POSIX_VISIBLE		200809
-#define	__XSI_VISIBLE		700
-#define	__BSD_VISIBLE		1
-#define	__ISO_C_VISIBLE		1999
-#endif
-#endif
-
-/*
- * Default values.
- */
-#ifndef __XPG_VISIBLE
-# define __XPG_VISIBLE          700
-#endif
-#ifndef __POSIX_VISIBLE
-# define __POSIX_VISIBLE        200809
-#endif
-#ifndef __ISO_C_VISIBLE
-# define __ISO_C_VISIBLE        1999
-#endif
-#ifndef __BSD_VISIBLE
-# define __BSD_VISIBLE          1
-#endif
-
-#define  __BIONIC__   1
-#include <android/api-level.h>
-
-/* glibc compatibility. */
-#if __LP64__
-#define __WORDSIZE 64
-#else
-#define __WORDSIZE 32
-#endif
-
-/*
- * When _FORTIFY_SOURCE is defined, automatic bounds checking is
- * added to commonly used libc functions. If a buffer overrun is
- * detected, the program is safely aborted.
- *
- * See
- * http://gcc.gnu.org/onlinedocs/gcc/Object-Size-Checking.html for details.
- */
-#if defined(_FORTIFY_SOURCE) && _FORTIFY_SOURCE > 0 && defined(__OPTIMIZE__) && __OPTIMIZE__ > 0
-#define __BIONIC_FORTIFY 1
-#if _FORTIFY_SOURCE == 2
-#define __bos(s) __builtin_object_size((s), 1)
-#else
-#define __bos(s) __builtin_object_size((s), 0)
-#endif
-#define __bos0(s) __builtin_object_size((s), 0)
-
-#define __BIONIC_FORTIFY_INLINE \
-    extern __inline__ \
-    __attribute__ ((always_inline)) \
-    __attribute__ ((gnu_inline))
-#endif
-#define __BIONIC_FORTIFY_UNKNOWN_SIZE ((size_t) -1)
-
-
-#if defined(__ANDROID__) && !__LP64__ && defined( __arm__)
-#define __NDK_FPABI__ __attribute__((pcs("aapcs")))
-#else
-#define __NDK_FPABI__
-#endif
-
-#if (!defined(_NDK_MATH_NO_SOFTFP) || _NDK_MATH_NO_SOFTFP != 1) && !defined(__clang__)
-#define __NDK_FPABI_MATH__ __NDK_FPABI__
-#else
-#define __NDK_FPABI_MATH__  /* nothing */
-#endif
-
-#endif /* !_SYS_CDEFS_H_ */
diff --git a/ndk/platforms/android-20/include/sys/ioctl.h b/ndk/platforms/android-20/include/sys/ioctl.h
deleted file mode 100644
index 49d452c..0000000
--- a/ndk/platforms/android-20/include/sys/ioctl.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *  * Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  * Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-#ifndef _SYS_IOCTL_H_
-#define _SYS_IOCTL_H_
-
-#include <sys/cdefs.h>
-#include <linux/ioctl.h>
-/*
- * NetBSD and glibc's <sys/ioctl.h> provide some of the
- * terminal-related ioctl data structures such as struct winsize.
- */
-#include <linux/termios.h>
-#include <asm/ioctls.h>
-#include <asm/termbits.h>
-#include <sys/ioctl_compat.h>
-
-__BEGIN_DECLS
-
-extern int ioctl(int, int, ...);
-
-__END_DECLS
-
-#endif /* _SYS_IOCTL_H_ */
diff --git a/ndk/platforms/android-20/include/sys/timeb.h b/ndk/platforms/android-20/include/sys/timeb.h
deleted file mode 100644
index cf6f255..0000000
--- a/ndk/platforms/android-20/include/sys/timeb.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *  * Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  * Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-#ifndef _SYS_TIMEB_H
-#define _SYS_TIMEB_H
-
-#include <sys/cdefs.h>
-#include <sys/time.h>
-
-__BEGIN_DECLS
-
-struct timeb {
-    time_t          time;
-    unsigned short  millitm;
-    short           timezone;
-    short           dstflag;
-};
-
-extern int  ftime(struct timeb*  timebuf);
-
-__END_DECLS
-
-#endif /* _SYS_TIMEB_H */
diff --git a/ndk/platforms/android-20/include/sys/ucontext.h b/ndk/platforms/android-20/include/sys/ucontext.h
deleted file mode 100644
index f150ac7..0000000
--- a/ndk/platforms/android-20/include/sys/ucontext.h
+++ /dev/null
@@ -1,288 +0,0 @@
-/*
- * Copyright (C) 2014 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *  * Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  * Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef _SYS_UCONTEXT_H_
-#define _SYS_UCONTEXT_H_
-
-#include <signal.h>
-#include <sys/user.h>
-
-__BEGIN_DECLS
-
-#if defined(__arm__)
-
-enum {
-  REG_R0 = 0,
-  REG_R1,
-  REG_R2,
-  REG_R3,
-  REG_R4,
-  REG_R5,
-  REG_R6,
-  REG_R7,
-  REG_R8,
-  REG_R9,
-  REG_R10,
-  REG_R11,
-  REG_R12,
-  REG_R13,
-  REG_R14,
-  REG_R15,
-};
-
-#define NGREG 18 /* Like glibc. */
-
-typedef int greg_t;
-typedef greg_t gregset_t[NGREG];
-
-/* TODO: fpregset_t. */
-
-#include <asm/sigcontext.h>
-typedef struct sigcontext mcontext_t;
-
-typedef struct ucontext {
-  unsigned long uc_flags;
-  struct ucontext* uc_link;
-  stack_t uc_stack;
-  mcontext_t uc_mcontext;
-  sigset_t uc_sigmask;
-  /* TODO: uc_regspace */
-} ucontext_t;
-
-#elif defined(__aarch64__)
-
-/* TODO: gregset_t and fpregset_t. */
-
-#include <asm/sigcontext.h>
-typedef struct sigcontext mcontext_t;
-
-typedef struct ucontext {
-  unsigned long uc_flags;
-  struct ucontext *uc_link;
-  stack_t uc_stack;
-  sigset_t uc_sigmask;
-  char __padding[128 - sizeof(sigset_t)];
-  mcontext_t uc_mcontext;
-} ucontext_t;
-
-#elif defined(__i386__)
-
-enum {
-  REG_GS = 0,
-  REG_FS,
-  REG_ES,
-  REG_DS,
-  REG_EDI,
-  REG_ESI,
-  REG_EBP,
-  REG_ESP,
-  REG_EBX,
-  REG_EDX,
-  REG_ECX,
-  REG_EAX,
-  REG_TRAPNO,
-  REG_ERR,
-  REG_EIP,
-  REG_CS,
-  REG_EFL,
-  REG_UESP,
-  REG_SS,
-  NGREG
-};
-
-typedef int greg_t;
-typedef greg_t gregset_t[NGREG];
-
-struct _libc_fpreg {
-  unsigned short significand[4];
-  unsigned short exponent;
-};
-
-struct _libc_fpstate {
-  unsigned long cw;
-  unsigned long sw;
-  unsigned long tag;
-  unsigned long ipoff;
-  unsigned long cssel;
-  unsigned long dataoff;
-  unsigned long datasel;
-  struct _libc_fpreg _st[8];
-  unsigned long status;
-};
-
-typedef struct _libc_fpstate* fpregset_t;
-
-typedef struct {
-  gregset_t gregs;
-  fpregset_t fpregs;
-  unsigned long oldmask;
-  unsigned long cr2;
-} mcontext_t;
-
-typedef struct ucontext {
-  unsigned long uc_flags;
-  struct ucontext* uc_link;
-  stack_t uc_stack;
-  mcontext_t uc_mcontext;
-  sigset_t uc_sigmask;
-  char __padding[128 - sizeof(sigset_t)];
-  struct _libc_fpstate __fpregs_mem;
-} ucontext_t;
-
-#elif defined(__mips__)
-
-/* glibc doesn't have names for MIPS registers. */
-
-#define NGREG 32
-#define NFPREG 32
-
-typedef unsigned long long greg_t;
-typedef greg_t gregset_t[NGREG];
-
-typedef struct fpregset {
-  union {
-    double fp_dregs[NFPREG];
-    struct {
-      float _fp_fregs;
-      unsigned _fp_pad;
-    } fp_fregs[NFPREG];
-  } fp_r;
-} fpregset_t;
-
-typedef struct {
-  unsigned regmask;
-  unsigned status;
-  greg_t pc;
-  gregset_t gregs;
-  fpregset_t fpregs;
-  unsigned fp_owned;
-  unsigned fpc_csr;
-  unsigned fpc_eir;
-  unsigned used_math;
-  unsigned dsp;
-  greg_t mdhi;
-  greg_t mdlo;
-  unsigned long hi1;
-  unsigned long lo1;
-  unsigned long hi2;
-  unsigned long lo2;
-  unsigned long hi3;
-  unsigned long lo3;
-} mcontext_t;
-
-typedef struct ucontext {
-  unsigned long uc_flags;
-  struct ucontext* uc_link;
-  stack_t uc_stack;
-  mcontext_t uc_mcontext;
-  sigset_t uc_sigmask;
-} ucontext_t;
-
-#elif defined(__mips64__)
-
-#error TODO
-
-#elif defined(__x86_64__)
-
-enum {
-  REG_R8 = 0,
-  REG_R9,
-  REG_R10,
-  REG_R11,
-  REG_R12,
-  REG_R13,
-  REG_R14,
-  REG_R15,
-  REG_RDI,
-  REG_RSI,
-  REG_RBP,
-  REG_RBX,
-  REG_RDX,
-  REG_RAX,
-  REG_RCX,
-  REG_RSP,
-  REG_RIP,
-  REG_EFL,
-  REG_CSGSFS,
-  REG_ERR,
-  REG_TRAPNO,
-  REG_OLDMASK,
-  REG_CR2,
-  NGREG
-};
-
-typedef long greg_t;
-typedef greg_t gregset_t[NGREG];
-
-struct _libc_fpxreg {
-  unsigned short significand[4];
-  unsigned short exponent;
-  unsigned short padding[3];
-};
-
-struct _libc_xmmreg {
-  uint32_t element[4];
-};
-
-struct _libc_fpstate {
-  uint16_t cwd;
-  uint16_t swd;
-  uint16_t ftw;
-  uint16_t fop;
-  uint64_t rip;
-  uint64_t rdp;
-  uint32_t mxcsr;
-  uint32_t mxcr_mask;
-  struct _libc_fpxreg _st[8];
-  struct _libc_xmmreg _xmm[16];
-  uint32_t padding[24];
-};
-
-typedef struct _libc_fpstate* fpregset_t;
-
-typedef struct {
-  gregset_t gregs;
-  fpregset_t fpregs;
-  unsigned long __reserved1[8];
-} mcontext_t;
-
-typedef struct ucontext {
-  unsigned long uc_flags;
-  struct ucontext* uc_link;
-  stack_t uc_stack;
-  mcontext_t uc_mcontext;
-  sigset_t uc_sigmask;
-  char __padding[128 - sizeof(sigset_t)];
-  struct _libc_fpstate __fpregs_mem;
-} ucontext_t;
-
-#endif
-
-__END_DECLS
-
-#endif /* _SYS_UCONTEXT_H_ */
diff --git a/ndk/platforms/android-20/include/sys/user.h b/ndk/platforms/android-20/include/sys/user.h
deleted file mode 100644
index 705e0e9..0000000
--- a/ndk/platforms/android-20/include/sys/user.h
+++ /dev/null
@@ -1,246 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *  * Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  * Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef _SYS_USER_H_
-#define _SYS_USER_H_
-
-#include <sys/cdefs.h>
-#include <limits.h> /* For PAGE_SIZE. */
-
-__BEGIN_DECLS
-
-#if __i386__
-
-struct user_fpregs_struct {
-  long cwd;
-  long swd;
-  long twd;
-  long fip;
-  long fcs;
-  long foo;
-  long fos;
-  long st_space[20];
-};
-struct user_fxsr_struct {
-  unsigned short cwd;
-  unsigned short swd;
-  unsigned short twd;
-  unsigned short fop;
-  long fip;
-  long fcs;
-  long foo;
-  long fos;
-  long mxcsr;
-  long reserved;
-  long st_space[32];
-  long xmm_space[32];
-  long padding[56];
-};
-struct user_regs_struct {
-  long ebx;
-  long ecx;
-  long edx;
-  long esi;
-  long edi;
-  long ebp;
-  long eax;
-  long xds;
-  long xes;
-  long xfs;
-  long xgs;
-  long orig_eax;
-  long eip;
-  long xcs;
-  long eflags;
-  long esp;
-  long xss;
-};
-struct user {
-  struct user_regs_struct regs;
-  int u_fpvalid;
-  struct user_fpregs_struct i387;
-  unsigned long int u_tsize;
-  unsigned long int u_dsize;
-  unsigned long int u_ssize;
-  unsigned long start_code;
-  unsigned long start_stack;
-  long int signal;
-  int reserved;
-  unsigned long u_ar0;
-  struct user_fpregs_struct* u_fpstate;
-  unsigned long magic;
-  char u_comm[32];
-  int u_debugreg[8];
-};
-
-#elif defined(__x86_64__)
-
-struct user_fpregs_struct {
-  unsigned short cwd;
-  unsigned short swd;
-  unsigned short ftw;
-  unsigned short fop;
-  __u64 rip;
-  __u64 rdp;
-  __u32 mxcsr;
-  __u32 mxcsr_mask;
-  __u32 st_space[32];
-  __u32 xmm_space[64];
-  __u32 padding[24];
-};
-struct user_regs_struct {
-  unsigned long r15;
-  unsigned long r14;
-  unsigned long r13;
-  unsigned long r12;
-  unsigned long rbp;
-  unsigned long rbx;
-  unsigned long r11;
-  unsigned long r10;
-  unsigned long r9;
-  unsigned long r8;
-  unsigned long rax;
-  unsigned long rcx;
-  unsigned long rdx;
-  unsigned long rsi;
-  unsigned long rdi;
-  unsigned long orig_rax;
-  unsigned long rip;
-  unsigned long cs;
-  unsigned long eflags;
-  unsigned long rsp;
-  unsigned long ss;
-  unsigned long fs_base;
-  unsigned long gs_base;
-  unsigned long ds;
-  unsigned long es;
-  unsigned long fs;
-  unsigned long gs;
-};
-struct user {
-  struct user_regs_struct regs;
-  int u_fpvalid;
-  int pad0;
-  struct user_fpregs_struct i387;
-  unsigned long int u_tsize;
-  unsigned long int u_dsize;
-  unsigned long int u_ssize;
-  unsigned long start_code;
-  unsigned long start_stack;
-  long int signal;
-  int reserved;
-  int pad1;
-  unsigned long u_ar0;
-  struct user_fpregs_struct* u_fpstate;
-  unsigned long magic;
-  char u_comm[32];
-  unsigned long u_debugreg[8];
-  unsigned long error_code;
-  unsigned long fault_address;
-};
-
-#elif defined(__mips__)
-struct user_regs_struct 
-{
-  unsigned long a[180];
-};
-
-struct user {
-  unsigned long regs[180 / sizeof(unsigned long) + 64];
-  size_t u_tsize;
-  size_t u_dsize;
-  size_t u_ssize;
-  unsigned long start_code;
-  unsigned long start_data;
-  unsigned long start_stack;
-  long int signal;
-  unsigned long u_ar0;
-  unsigned long magic;
-  char u_comm[32];
-};
-
-#elif defined(__arm__)
-
-struct user_fpregs {
-  struct fp_reg {
-    unsigned int sign1:1;
-    unsigned int unused:15;
-    unsigned int sign2:1;
-    unsigned int exponent:14;
-    unsigned int j:1;
-    unsigned int mantissa1:31;
-    unsigned int mantissa0:32;
-  } fpregs[8];
-  unsigned int fpsr:32;
-  unsigned int fpcr:32;
-  unsigned char ftype[8];
-  unsigned int init_flag;
-};
-struct user_regs {
-  unsigned long uregs[18];
-};
-struct user_vfp {
-  unsigned long long fpregs[32];
-  unsigned long fpscr;
-};
-struct user_vfp_exc {
-  unsigned long fpexc;
-  unsigned long fpinst;
-  unsigned long fpinst2;
-};
-struct user {
-  struct user_regs regs;
-  int u_fpvalid;
-  unsigned long int u_tsize;
-  unsigned long int u_dsize;
-  unsigned long int u_ssize;
-  unsigned long start_code;
-  unsigned long start_stack;
-  long int signal;
-  int reserved;
-  struct user_regs* u_ar0;
-  unsigned long magic;
-  char u_comm[32];
-  int u_debugreg[8];
-  struct user_fpregs u_fp;
-  struct user_fpregs* u_fp0;
-};
-
-#elif defined(__aarch64__)
-
-// There are no user structures for 64 bit arm.
-
-#else
-
-#error "Unsupported architecture."
-
-#endif
-
-__END_DECLS
-
-#endif  /* _SYS_USER_H_ */
diff --git a/ndk/platforms/android-20/include/sys/wait.h b/ndk/platforms/android-20/include/sys/wait.h
deleted file mode 100644
index b30b7ec..0000000
--- a/ndk/platforms/android-20/include/sys/wait.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *  * Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  * Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-#ifndef _SYS_WAIT_H_
-#define _SYS_WAIT_H_
-
-#include <sys/cdefs.h>
-#include <sys/types.h>
-#include <sys/resource.h>
-#include <linux/wait.h>
-#include <signal.h>
-
-__BEGIN_DECLS
-
-#define WEXITSTATUS(s)  (((s) & 0xff00) >> 8)
-#define WCOREDUMP(s)    ((s) & 0x80)
-#define WTERMSIG(s)     ((s) & 0x7f)
-#define WSTOPSIG(s)     WEXITSTATUS(s)
-
-#define WIFEXITED(s)    (WTERMSIG(s) == 0)
-#define WIFSTOPPED(s)   (WTERMSIG(s) == 0x7f)
-#define WIFSIGNALED(s)  (WTERMSIG((s)+1) >= 2)
-
-extern pid_t  wait(int *);
-extern pid_t  waitpid(pid_t, int *, int);
-extern pid_t  wait3(int *, int, struct rusage *);
-extern pid_t  wait4(pid_t, int *, int, struct rusage *);
-
-/* Posix states that idtype_t should be an enumeration type, but
- * the kernel headers define P_ALL, P_PID and P_PGID as constant macros
- * instead.
- */
-typedef int idtype_t;
-
-extern int  waitid(idtype_t which, id_t id, siginfo_t *info, int options);
-
-__END_DECLS
-
-#endif /* _SYS_WAIT_H_ */
diff --git a/ndk/platforms/android-20/include/syslog.h b/ndk/platforms/android-20/include/syslog.h
deleted file mode 100644
index 4677c14..0000000
--- a/ndk/platforms/android-20/include/syslog.h
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *  * Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  * Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-#ifndef _SYSLOG_H
-#define _SYSLOG_H
-
-#include <stdio.h>
-#include <sys/cdefs.h>
-#include <stdarg.h>
-
-__BEGIN_DECLS
-
-/* Alert levels */
-#define LOG_EMERG	0
-#define LOG_ALERT	1
-#define LOG_CRIT	2
-#define LOG_ERR		3
-#define LOG_WARNING	4
-#define LOG_NOTICE	5
-#define LOG_INFO	6
-#define LOG_DEBUG	7
-
-#define LOG_PRIMASK	7
-#define LOG_PRI(x)	((x) & LOG_PRIMASK)
-
-
-/* Facilities; not actually used */
-#define LOG_KERN	0000
-#define LOG_USER	0010
-#define LOG_MAIL	0020
-#define LOG_DAEMON	0030
-#define LOG_AUTH	0040
-#define LOG_SYSLOG	0050
-#define LOG_LPR		0060
-#define LOG_NEWS	0070
-#define LOG_UUCP	0100
-#define LOG_CRON	0110
-#define LOG_AUTHPRIV	0120
-#define LOG_FTP		0130
-#define LOG_LOCAL0	0200
-#define LOG_LOCAL1	0210
-#define LOG_LOCAL2	0220
-#define LOG_LOCAL3	0230
-#define LOG_LOCAL4	0240
-#define LOG_LOCAL5	0250
-#define LOG_LOCAL6	0260
-#define LOG_LOCAL7	0270
-
-#define LOG_FACMASK	01770
-#define LOG_FAC(x)	(((x) >> 3) & (LOG_FACMASK >> 3))
-
-#define	LOG_MASK(pri)	(1 << (pri))		/* mask for one priority */
-#define	LOG_UPTO(pri)	((1 << ((pri)+1)) - 1)	/* all priorities through pri */
-
-/* openlog() flags; only LOG_PID and LOG_PERROR supported */
-#define        LOG_PID         0x01    /* include pid with message */
-#define        LOG_CONS        0x02    /* write to console on logger error */
-#define        LOG_ODELAY      0x04    /* delay connection until syslog() */
-#define        LOG_NDELAY      0x08    /* open connection immediately */
-#define        LOG_NOWAIT      0x10    /* wait for child processes (unused on linux) */
-#define        LOG_PERROR      0x20    /* additional logging to stderr */
-
-/* BIONIC: the following definitions are from OpenBSD's sys/syslog.h
- */
-struct syslog_data {
-	int	log_file;
-        int	connected;
-        int	opened;
-        int	log_stat;
-        const char 	*log_tag;
-        int 	log_fac;
-        int 	log_mask;
-};
-
-#define SYSLOG_DATA_INIT {-1, 0, 0, 0, (const char *)0, LOG_USER, 0xff}
-
-#define _PATH_LOG  "/dev/syslog"
-
-extern void	closelog(void);
-extern void	openlog(const char *, int, int);
-extern int	setlogmask(int);
-extern void	syslog(int, const char *, ...) __printflike(2, 3);
-extern void	vsyslog(int, const char *, va_list) __printflike(2, 0);
-extern void	closelog_r(struct syslog_data *);
-extern void	openlog_r(const char *, int, int, struct syslog_data *);
-extern int	setlogmask_r(int, struct syslog_data *);
-extern void	syslog_r(int, struct syslog_data *, const char *, ...) __printflike(3, 4);
-extern void	vsyslog_r(int, struct syslog_data *, const char *, va_list) __printflike(3, 0);
-
-__END_DECLS
-
-#endif /* _SYSLOG_H */
diff --git a/ndk/platforms/android-20/include/time.h b/ndk/platforms/android-20/include/time.h
deleted file mode 100644
index 0f86fd3..0000000
--- a/ndk/platforms/android-20/include/time.h
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *  * Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  * Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef _TIME_H_
-#define _TIME_H_
-
-#include <sys/cdefs.h>
-#include <sys/time.h>
-
-__BEGIN_DECLS
-
-#define CLOCKS_PER_SEC 1000000
-
-extern char* tzname[];
-extern int daylight;
-extern long int timezone;
-
-struct sigevent;
-
-struct tm {
-  int tm_sec;
-  int tm_min;
-  int tm_hour;
-  int tm_mday;
-  int tm_mon;
-  int tm_year;
-  int tm_wday;
-  int tm_yday;
-  int tm_isdst;
-  long int tm_gmtoff;
-  const char* tm_zone;
-};
-
-#define TM_ZONE tm_zone
-
-extern time_t time(time_t*);
-extern int nanosleep(const struct timespec*, struct timespec*);
-
-extern char* asctime(const struct tm*);
-extern char* asctime_r(const struct tm*, char*);
-
-extern double difftime(time_t, time_t);
-extern time_t mktime(struct tm*);
-
-extern struct tm* localtime(const time_t*);
-extern struct tm* localtime_r(const time_t*, struct tm*);
-
-extern struct tm* gmtime(const time_t*);
-extern struct tm* gmtime_r(const time_t*, struct tm*);
-
-extern char* strptime(const char*, const char*, struct tm*);
-extern size_t strftime(char*, size_t, const char*, const struct tm*);
-
-extern char* ctime(const time_t*);
-extern char* ctime_r(const time_t*, char*);
-
-extern void tzset(void);
-
-extern clock_t clock(void);
-
-extern int clock_getres(int, struct timespec*);
-extern int clock_gettime(int, struct timespec*);
-
-extern int timer_create(int, struct sigevent*, timer_t*);
-extern int timer_delete(timer_t);
-extern int timer_settime(timer_t, int, const struct itimerspec*, struct itimerspec*);
-extern int timer_gettime(timer_t, struct itimerspec*);
-extern int timer_getoverrun(timer_t);
-
-extern time_t timelocal(struct tm*);
-extern time_t timegm(struct tm*);
-extern time_t time2posix(time_t);
-extern time_t posix2time(time_t);
-
-__END_DECLS
-
-#endif /* _TIME_H_ */
diff --git a/ndk/platforms/android-20/include/unistd.h b/ndk/platforms/android-20/include/unistd.h
deleted file mode 100644
index 6cb36d8..0000000
--- a/ndk/platforms/android-20/include/unistd.h
+++ /dev/null
@@ -1,251 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *  * Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  * Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-#ifndef _UNISTD_H_
-#define _UNISTD_H_
-
-#include <stddef.h>
-#include <sys/cdefs.h>
-#include <sys/types.h>
-#include <sys/select.h>
-#include <sys/sysconf.h>
-#include <pathconf.h>
-
-__BEGIN_DECLS
-
-/* Standard file descriptor numbers. */
-#define STDIN_FILENO	0
-#define STDOUT_FILENO	1
-#define STDERR_FILENO	2
-
-/* Values for whence in fseek and lseek */
-#define SEEK_SET 0
-#define SEEK_CUR 1
-#define SEEK_END 2
-
-extern char** environ;
-
-extern __noreturn void _exit(int);
-
-extern pid_t  fork(void);
-extern pid_t  vfork(void);
-extern pid_t  getpid(void);
-extern pid_t  gettid(void);
-extern pid_t  getpgid(pid_t);
-extern int    setpgid(pid_t, pid_t);
-extern pid_t  getppid(void);
-extern pid_t  getpgrp(void);
-extern int    setpgrp(void);
-extern pid_t  getsid(pid_t);
-extern pid_t  setsid(void);
-
-extern int execv(const char *, char * const *);
-extern int execvp(const char *, char * const *);
-extern int execvpe(const char *, char * const *, char * const *);
-extern int execve(const char *, char * const *, char * const *);
-extern int execl(const char *, const char *, ...);
-extern int execlp(const char *, const char *, ...);
-extern int execle(const char *, const char *, ...);
-
-/* IMPORTANT: See comment under <sys/prctl.h> about this declaration */
-extern int prctl(int  option, ...);
-
-extern int nice(int);
-
-extern int setuid(uid_t);
-extern uid_t getuid(void);
-extern int seteuid(uid_t);
-extern uid_t geteuid(void);
-extern int setgid(gid_t);
-extern gid_t getgid(void);
-extern int setegid(gid_t);
-extern gid_t getegid(void);
-extern int getgroups(int, gid_t *);
-extern int setgroups(size_t, const gid_t *);
-extern int setreuid(uid_t, uid_t);
-extern int setregid(gid_t, gid_t);
-extern int setresuid(uid_t, uid_t, uid_t);
-extern int setresgid(gid_t, gid_t, gid_t);
-extern int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid);
-extern int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid);
-extern int issetugid(void);
-extern char* getlogin(void);
-extern char* getusershell(void);
-extern void setusershell(void);
-extern void endusershell(void);
-
-
-
-/* Macros for access() */
-#define R_OK  4  /* Read */
-#define W_OK  2  /* Write */
-#define X_OK  1  /* Execute */
-#define F_OK  0  /* Existence */
-
-extern int access(const char*, int);
-extern int faccessat(int, const char*, int, int);
-extern int link(const char*, const char*);
-extern int linkat(int, const char*, int, const char*, int);
-extern int unlink(const char*);
-extern int unlinkat(int, const char*, int);
-extern int chdir(const char *);
-extern int fchdir(int);
-extern int rmdir(const char *);
-extern int pipe(int *);
-#ifdef _GNU_SOURCE
-extern int pipe2(int *, int);
-#endif
-extern int chroot(const char *);
-extern int symlink(const char*, const char*);
-extern int symlinkat(const char*, int, const char*);
-extern ssize_t readlink(const char*, char*, size_t);
-extern ssize_t readlinkat(int, const char*, char*, size_t);
-extern int chown(const char *, uid_t, gid_t);
-extern int fchown(int, uid_t, gid_t);
-extern int fchownat(int, const char*, uid_t, gid_t, int);
-extern int lchown(const char *, uid_t, gid_t);
-extern int truncate(const char *, off_t);
-extern int truncate64(const char *, off64_t);
-extern char *getcwd(char *, size_t);
-
-extern int sync(void);
-
-extern int close(int);
-extern off_t lseek(int, off_t, int);
-extern off64_t lseek64(int, off64_t, int);
-
-extern ssize_t read(int, void *, size_t);
-extern ssize_t write(int, const void *, size_t);
-extern ssize_t pread(int, void *, size_t, off_t);
-extern ssize_t pread64(int, void *, size_t, off64_t);
-extern ssize_t pwrite(int, const void *, size_t, off_t);
-extern ssize_t pwrite64(int, const void *, size_t, off64_t);
-
-extern int dup(int);
-extern int dup2(int, int);
-#ifdef _GNU_SOURCE
-extern int dup3(int, int, int);
-#endif
-extern int fcntl(int, int, ...);
-extern int ioctl(int, int, ...);
-extern int flock(int, int);
-extern int fsync(int);
-extern int fdatasync(int);
-extern int ftruncate(int, off_t);
-extern int ftruncate64(int, off64_t);
-
-extern int pause(void);
-extern unsigned int alarm(unsigned int);
-extern unsigned int sleep(unsigned int);
-extern int usleep(useconds_t);
-
-extern int gethostname(char *, size_t);
-
-extern int getdtablesize(void);
-
-extern void *__brk(void *);
-extern int brk(void *);
-extern void *sbrk(ptrdiff_t);
-
-extern int getopt(int, char * const *, const char *);
-extern char *optarg;
-extern int optind, opterr, optopt;
-
-extern int isatty(int);
-extern char* ttyname(int);
-extern int ttyname_r(int, char*, size_t);
-
-extern int  acct(const char*  filepath);
-
-int getpagesize(void);
-
-extern int sysconf(int  name);
-
-extern int daemon(int, int);
-
-#if defined(__arm__) || (defined(__mips__) && !defined(__LP64__))
-extern int cacheflush(long, long, long);
-    /* __attribute__((deprecated("use __builtin___clear_cache instead"))); */
-#endif
-
-extern pid_t tcgetpgrp(int fd);
-extern int   tcsetpgrp(int fd, pid_t _pid);
-
-#if 0 /* MISSING FROM BIONIC */
-extern int execlpe(const char *, const char *, ...);
-extern int getfsuid(uid_t);
-extern int setfsuid(uid_t);
-extern int getlogin_r(char* name, size_t namesize);
-extern int sethostname(const char *, size_t);
-extern int getdomainname(char *, size_t);
-extern int setdomainname(const char *, size_t);
-#endif /* MISSING */
-
-/* Used to retry syscalls that can return EINTR. */
-#define TEMP_FAILURE_RETRY(exp) ({         \
-    typeof (exp) _rc;                      \
-    do {                                   \
-        _rc = (exp);                       \
-    } while (_rc == -1 && errno == EINTR); \
-    _rc; })
-
-#if defined(__BIONIC_FORTIFY)
-extern ssize_t __read_chk(int, void*, size_t, size_t);
-__errordecl(__read_dest_size_error, "read called with size bigger than destination");
-__errordecl(__read_count_toobig_error, "read called with count > SSIZE_MAX");
-extern ssize_t __read_real(int, void*, size_t)
-    __asm__(__USER_LABEL_PREFIX__ "read");
-
-__BIONIC_FORTIFY_INLINE
-ssize_t read(int fd, void* buf, size_t count) {
-    size_t bos = __bos0(buf);
-
-#if !defined(__clang__)
-    if (__builtin_constant_p(count) && (count > SSIZE_MAX)) {
-        __read_count_toobig_error();
-    }
-
-    if (bos == __BIONIC_FORTIFY_UNKNOWN_SIZE) {
-        return __read_real(fd, buf, count);
-    }
-
-    if (__builtin_constant_p(count) && (count > bos)) {
-        __read_dest_size_error();
-    }
-
-    if (__builtin_constant_p(count) && (count <= bos)) {
-        return __read_real(fd, buf, count);
-    }
-#endif
-
-    return __read_chk(fd, buf, count, bos);
-}
-#endif /* defined(__BIONIC_FORTIFY) */
-
-__END_DECLS
-
-#endif /* _UNISTD_H_ */
diff --git a/ndk/platforms/android-20/include/wchar.h b/ndk/platforms/android-20/include/wchar.h
deleted file mode 100644
index af7593f..0000000
--- a/ndk/platforms/android-20/include/wchar.h
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *  * Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  * Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-#ifndef _WCHAR_H_
-#define _WCHAR_H_
-
-#include <sys/cdefs.h>
-#include <stdio.h>
-
-#include <stdarg.h>
-#include <stddef.h>
-#include <time.h>
-
-#include <machine/wchar_limits.h>
-
-__BEGIN_DECLS
-
-typedef __WINT_TYPE__  wint_t;
-typedef struct {
-  uint8_t __seq[4];
-#ifdef __LP64__
-  char __reserved[4];
-#endif
-} mbstate_t;
-
-enum {
-    WC_TYPE_INVALID = 0,
-    WC_TYPE_ALNUM,
-    WC_TYPE_ALPHA,
-    WC_TYPE_BLANK,
-    WC_TYPE_CNTRL,
-    WC_TYPE_DIGIT,
-    WC_TYPE_GRAPH,
-    WC_TYPE_LOWER,
-    WC_TYPE_PRINT,
-    WC_TYPE_PUNCT,
-    WC_TYPE_SPACE,
-    WC_TYPE_UPPER,
-    WC_TYPE_XDIGIT,
-    WC_TYPE_MAX
-};
-
-typedef long wctype_t;
-
-#define  WEOF        ((wint_t)(-1))
-
-extern wint_t            btowc(int);
-extern int               fwprintf(FILE *, const wchar_t *, ...);
-extern int               fwscanf(FILE *, const wchar_t *, ...);
-extern int               iswalnum(wint_t);
-extern int               iswalpha(wint_t);
-extern int               iswblank(wint_t);
-extern int               iswcntrl(wint_t);
-extern int               iswdigit(wint_t);
-extern int               iswgraph(wint_t);
-extern int               iswlower(wint_t);
-extern int               iswprint(wint_t);
-extern int               iswpunct(wint_t);
-extern int               iswspace(wint_t);
-extern int               iswupper(wint_t);
-extern int               iswxdigit(wint_t);
-extern int               iswctype(wint_t, wctype_t);
-extern wint_t            fgetwc(FILE *);
-extern wchar_t          *fgetws(wchar_t *, int, FILE *);
-extern wint_t            fputwc(wchar_t, FILE *);
-extern int               fputws(const wchar_t *, FILE *);
-extern int               fwide(FILE *, int);
-extern wint_t            getwc(FILE *);
-extern wint_t            getwchar(void);
-extern int               mbsinit(const mbstate_t *);
-extern size_t            mbrlen(const char *, size_t, mbstate_t *);
-extern size_t            mbrtowc(wchar_t *, const char *, size_t, mbstate_t *);
-extern size_t mbsrtowcs(wchar_t*, const char**, size_t, mbstate_t*);
-extern size_t mbsnrtowcs(wchar_t*, const char**, size_t, size_t, mbstate_t*);
-extern size_t            mbstowcs(wchar_t *, const char *, size_t);
-extern wint_t            putwc(wchar_t, FILE *);
-extern wint_t            putwchar(wchar_t);
-extern int               swprintf(wchar_t *, size_t, const wchar_t *, ...);
-extern int               swscanf(const wchar_t *, const wchar_t *, ...);
-extern wint_t            towlower(wint_t);
-extern wint_t            towupper(wint_t);
-extern wint_t            ungetwc(wint_t, FILE *);
-extern int vfwprintf(FILE*, const wchar_t*, va_list);
-extern int vfwscanf(FILE*, const wchar_t*, va_list);
-extern int vswprintf(wchar_t*, size_t, const wchar_t*, va_list);
-extern int vswscanf(const wchar_t*, const wchar_t*, va_list);
-extern int vwprintf(const wchar_t*, va_list);
-extern int vwscanf(const wchar_t*, va_list);
-extern size_t            wcrtomb(char *, wchar_t, mbstate_t *);
-extern int               wcscasecmp(const wchar_t *, const wchar_t *);
-extern wchar_t          *wcscat(wchar_t *, const wchar_t *);
-extern wchar_t          *wcschr(const wchar_t *, wchar_t);
-extern int               wcscmp(const wchar_t *, const wchar_t *);
-extern int               wcscoll(const wchar_t *, const wchar_t *);
-extern wchar_t          *wcscpy(wchar_t *, const wchar_t *);
-extern size_t            wcscspn(const wchar_t *, const wchar_t *);
-extern size_t            wcsftime(wchar_t *, size_t, const wchar_t *, const struct tm *);
-extern size_t            wcslen(const wchar_t *);
-extern int               wcsncasecmp(const wchar_t *, const wchar_t *, size_t);
-extern wchar_t          *wcsncat(wchar_t *, const wchar_t *, size_t);
-extern int               wcsncmp(const wchar_t *, const wchar_t *, size_t);
-extern wchar_t          *wcsncpy(wchar_t *, const wchar_t *, size_t);
-extern size_t wcsnrtombs(char*, const wchar_t**, size_t, size_t, mbstate_t*);
-extern wchar_t          *wcspbrk(const wchar_t *, const wchar_t *);
-extern wchar_t          *wcsrchr(const wchar_t *, wchar_t);
-extern size_t wcsrtombs(char*, const wchar_t**, size_t, mbstate_t*);
-extern size_t            wcsspn(const wchar_t *, const wchar_t *);
-extern wchar_t          *wcsstr(const wchar_t *, const wchar_t *);
-extern double wcstod(const wchar_t*, wchar_t**);
-extern float wcstof(const wchar_t*, wchar_t**);
-extern wchar_t* wcstok(wchar_t*, const wchar_t*, wchar_t**);
-extern long wcstol(const wchar_t*, wchar_t**, int);
-extern long long wcstoll(const wchar_t*, wchar_t**, int);
-extern long double wcstold(const wchar_t*, wchar_t**);
-extern unsigned long wcstoul(const wchar_t*, wchar_t**, int);
-extern unsigned long long wcstoull(const wchar_t*, wchar_t**, int);
-extern wchar_t          *wcswcs(const wchar_t *, const wchar_t *);
-extern int               wcswidth(const wchar_t *, size_t);
-extern size_t            wcsxfrm(wchar_t *, const wchar_t *, size_t);
-extern int               wctob(wint_t);
-extern wctype_t          wctype(const char *);
-extern int               wcwidth(wchar_t);
-extern wchar_t          *wmemchr(const wchar_t *, wchar_t, size_t);
-extern int               wmemcmp(const wchar_t *, const wchar_t *, size_t);
-extern wchar_t          *wmemcpy(wchar_t *, const wchar_t *, size_t);
-extern wchar_t          *wmemmove(wchar_t *, const wchar_t *, size_t);
-extern wchar_t          *wmemset(wchar_t *, wchar_t, size_t);
-extern int               wprintf(const wchar_t *, ...);
-extern int               wscanf(const wchar_t *, ...);
-
-extern size_t wcslcat(wchar_t*, const wchar_t*, size_t);
-extern size_t wcslcpy(wchar_t*, const wchar_t*, size_t);
-
-typedef void *wctrans_t;
-extern wint_t towctrans(wint_t, wctrans_t);
-extern wctrans_t wctrans(const char*);
-
-#if __POSIX_VISIBLE >= 200809
-wchar_t* wcsdup(const wchar_t*);
-size_t wcsnlen(const wchar_t*, size_t);
-#endif
-
-__END_DECLS
-
-#endif /* _WCHAR_H_ */
diff --git a/ndk/platforms/android-20/samples/native-codec/AndroidManifest.xml b/ndk/platforms/android-20/samples/native-codec/AndroidManifest.xml
new file mode 100644
index 0000000..addf1f0
--- /dev/null
+++ b/ndk/platforms/android-20/samples/native-codec/AndroidManifest.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+      package="com.example.nativecodec">
+
+    <uses-feature android:glEsVersion="0x00020000" />
+
+    <application android:icon="@drawable/icon" android:label="@string/app_name">
+        <activity android:name=".NativeCodec"
+                  android:label="@string/app_name">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
+
+    </application>
+
+    <uses-sdk android:minSdkVersion="19" />
+
+    <!-- INTERNET is needed to use a URI-based media player, depending on the URI -->
+    <uses-permission android:name="android.permission.INTERNET"></uses-permission>
+    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>
+
+</manifest>
diff --git a/ndk/platforms/android-20/samples/native-codec/README.txt b/ndk/platforms/android-20/samples/native-codec/README.txt
new file mode 100644
index 0000000..446941a
--- /dev/null
+++ b/ndk/platforms/android-20/samples/native-codec/README.txt
@@ -0,0 +1,2 @@
+This sample app requires a video file to be placed in /sdcard/testfile.mp4
+For demonstration purposes we have supplied such a file.
diff --git a/ndk/platforms/android-20/samples/native-codec/default.properties b/ndk/platforms/android-20/samples/native-codec/default.properties
new file mode 100644
index 0000000..5874172
--- /dev/null
+++ b/ndk/platforms/android-20/samples/native-codec/default.properties
@@ -0,0 +1,4 @@
+# Indicates whether an apk should be generated for each density.
+split.density=false
+# Project target.
+target=android-20
diff --git a/ndk/platforms/android-20/samples/native-codec/jni/Android.mk b/ndk/platforms/android-20/samples/native-codec/jni/Android.mk
new file mode 100644
index 0000000..34300c4
--- /dev/null
+++ b/ndk/platforms/android-20/samples/native-codec/jni/Android.mk
@@ -0,0 +1,30 @@
+# Copyright (C) 2014 The Android Open Source Project
+#
+# 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.
+#
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE    := native-codec-jni
+LOCAL_SRC_FILES := native-codec-jni.cpp looper.cpp
+# for native multimedia
+LOCAL_LDLIBS    += -lOpenMAXAL -lmediandk
+# for logging
+LOCAL_LDLIBS    += -llog
+# for native windows
+LOCAL_LDLIBS    += -landroid
+
+LOCAL_CFLAGS    += -UNDEBUG
+
+include $(BUILD_SHARED_LIBRARY)
diff --git a/ndk/platforms/android-20/samples/native-codec/jni/Application.mk b/ndk/platforms/android-20/samples/native-codec/jni/Application.mk
new file mode 100644
index 0000000..b02fc24
--- /dev/null
+++ b/ndk/platforms/android-20/samples/native-codec/jni/Application.mk
@@ -0,0 +1,2 @@
+APP_PLATFORM := android-20
+APP_ABI := all
diff --git a/ndk/platforms/android-20/samples/native-codec/jni/looper.cpp b/ndk/platforms/android-20/samples/native-codec/jni/looper.cpp
new file mode 100644
index 0000000..98112f4
--- /dev/null
+++ b/ndk/platforms/android-20/samples/native-codec/jni/looper.cpp
@@ -0,0 +1,152 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * 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.
+ */
+
+#include "looper.h"
+
+#include <assert.h>
+#include <jni.h>
+#include <pthread.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <errno.h>
+#include <limits.h>
+#include <semaphore.h>
+
+// for __android_log_print(ANDROID_LOG_INFO, "YourApp", "formatted message");
+#include <android/log.h>
+#define TAG "NativeCodec-looper"
+#define LOGV(...) __android_log_print(ANDROID_LOG_VERBOSE, TAG, __VA_ARGS__)
+
+
+struct loopermessage;
+typedef struct loopermessage loopermessage;
+
+struct loopermessage {
+    int what;
+    void *obj;
+    loopermessage *next;
+    bool quit;
+};
+
+
+
+void* looper::trampoline(void* p) {
+    ((looper*)p)->loop();
+    return NULL;
+}
+
+looper::looper() {
+    sem_init(&headdataavailable, 0, 0);
+    sem_init(&headwriteprotect, 0, 1);
+    pthread_attr_t attr;
+    pthread_attr_init(&attr);
+
+    pthread_create(&worker, &attr, trampoline, this);
+    running = true;
+}
+
+
+looper::~looper() {
+    if (running) {
+        LOGV("Looper deleted while still running. Some messages will not be processed");
+        quit();
+    }
+}
+
+void looper::post(int what, void *data, bool flush) {
+    loopermessage *msg = new loopermessage();
+    msg->what = what;
+    msg->obj = data;
+    msg->next = NULL;
+    msg->quit = false;
+    addmsg(msg, flush);
+}
+
+void looper::addmsg(loopermessage *msg, bool flush) {
+    sem_wait(&headwriteprotect);
+    loopermessage *h = head;
+
+    if (flush) {
+        while(h) {
+            loopermessage *next = h->next;
+            delete h;
+            h = next;
+        }
+        h = NULL;
+    }
+    if (h) {
+        while (h->next) {
+            h = h->next;
+        }
+        h->next = msg;
+    } else {
+        head = msg;
+    }
+    LOGV("post msg %d", msg->what);
+    sem_post(&headwriteprotect);
+    sem_post(&headdataavailable);
+}
+
+void looper::loop() {
+    while(true) {
+        // wait for available message
+        sem_wait(&headdataavailable);
+
+        // get next available message
+        sem_wait(&headwriteprotect);
+        loopermessage *msg = head;
+        if (msg == NULL) {
+            LOGV("no msg");
+            sem_post(&headwriteprotect);
+            continue;
+        }
+        head = msg->next;
+        sem_post(&headwriteprotect);
+
+        if (msg->quit) {
+            LOGV("quitting");
+            delete msg;
+            return;
+        }
+        LOGV("processing msg %d", msg->what);
+        handle(msg->what, msg->obj);
+        delete msg;
+    }
+}
+
+void looper::quit() {
+    LOGV("quit");
+    loopermessage *msg = new loopermessage();
+    msg->what = 0;
+    msg->obj = NULL;
+    msg->next = NULL;
+    msg->quit = true;
+    addmsg(msg, false);
+    void *retval;
+    pthread_join(worker, &retval);
+    sem_destroy(&headdataavailable);
+    sem_destroy(&headwriteprotect);
+    running = false;
+}
+
+void looper::handle(int what, void* obj) {
+    LOGV("dropping msg %d %p", what, obj);
+}
+
diff --git a/ndk/platforms/android-20/samples/native-codec/jni/looper.h b/ndk/platforms/android-20/samples/native-codec/jni/looper.h
new file mode 100644
index 0000000..531a7cb
--- /dev/null
+++ b/ndk/platforms/android-20/samples/native-codec/jni/looper.h
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * 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.
+ */
+
+#include <pthread.h>
+#include <semaphore.h>
+
+struct loopermessage;
+
+class looper {
+    public:
+        looper();
+        ~looper();
+
+        void post(int what, void *data, bool flush = false);
+        void quit();
+
+        virtual void handle(int what, void *data);
+
+    private:
+        void addmsg(loopermessage *msg, bool flush);
+        static void* trampoline(void* p);
+        void loop();
+        loopermessage *head;
+        pthread_t worker;
+        sem_t headwriteprotect;
+        sem_t headdataavailable;
+        bool running;
+};
diff --git a/ndk/platforms/android-20/samples/native-codec/jni/native-codec-jni.cpp b/ndk/platforms/android-20/samples/native-codec/jni/native-codec-jni.cpp
new file mode 100644
index 0000000..6053abe
--- /dev/null
+++ b/ndk/platforms/android-20/samples/native-codec/jni/native-codec-jni.cpp
@@ -0,0 +1,328 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * 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.
+ */
+
+/* This is a JNI example where we use native methods to play video
+ * using the native AMedia* APIs.
+ * See the corresponding Java source file located at:
+ *
+ *   src/com/example/nativecodec/NativeMedia.java
+ *
+ * In this example we use assert() for "impossible" error conditions,
+ * and explicit handling and recovery for more likely error conditions.
+ */
+
+#include <assert.h>
+#include <jni.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <errno.h>
+#include <limits.h>
+
+#include "looper.h"
+#include "media/NdkMediaCodec.h"
+#include "media/NdkMediaExtractor.h"
+
+// for __android_log_print(ANDROID_LOG_INFO, "YourApp", "formatted message");
+#include <android/log.h>
+#define TAG "NativeCodec"
+#define LOGV(...) __android_log_print(ANDROID_LOG_VERBOSE, TAG, __VA_ARGS__)
+
+// for native window JNI
+#include <android/native_window_jni.h>
+
+typedef struct {
+    int fd;
+    ANativeWindow* window;
+    AMediaExtractor* ex;
+    AMediaCodec *codec;
+    int64_t renderstart;
+    bool sawInputEOS;
+    bool sawOutputEOS;
+    bool isPlaying;
+    bool renderonce;
+} workerdata;
+
+workerdata data = {-1, NULL, NULL, NULL, 0, false, false, false, false};
+
+enum {
+    kMsgCodecBuffer,
+    kMsgPause,
+    kMsgResume,
+    kMsgPauseAck,
+    kMsgDecodeDone,
+    kMsgSeek,
+};
+
+
+
+class mylooper: public looper {
+    virtual void handle(int what, void* obj);
+};
+
+static mylooper *mlooper = NULL;
+
+int64_t systemnanotime() {
+    timespec now;
+    clock_gettime(CLOCK_MONOTONIC, &now);
+    return now.tv_sec * 1000000000LL + now.tv_nsec;
+}
+
+void doCodecWork(workerdata *d) {
+
+    ssize_t bufidx = -1;
+    if (!d->sawInputEOS) {
+        bufidx = AMediaCodec_dequeueInputBuffer(d->codec, 2000);
+        LOGV("input buffer %zd", bufidx);
+        if (bufidx >= 0) {
+            size_t bufsize;
+            uint8_t *buf = AMediaCodec_getInputBuffer(d->codec, bufidx, &bufsize);
+            ssize_t sampleSize = AMediaExtractor_readSampleData(d->ex, buf, bufsize);
+            if (sampleSize < 0) {
+                sampleSize = 0;
+                d->sawInputEOS = true;
+                LOGV("EOS");
+            }
+            int64_t presentationTimeUs = AMediaExtractor_getSampleTime(d->ex);
+
+            AMediaCodec_queueInputBuffer(d->codec, bufidx, 0, sampleSize, presentationTimeUs,
+                    d->sawInputEOS ? AMEDIACODEC_BUFFER_FLAG_END_OF_STREAM : 0);
+            AMediaExtractor_advance(d->ex);
+        }
+    }
+
+    if (!d->sawOutputEOS) {
+        AMediaCodecBufferInfo info;
+        ssize_t status = AMediaCodec_dequeueOutputBuffer(d->codec, &info, 0);
+        if (status >= 0) {
+            if (info.flags & AMEDIACODEC_BUFFER_FLAG_END_OF_STREAM) {
+                LOGV("output EOS");
+                d->sawOutputEOS = true;
+            }
+            int64_t presentationNano = info.presentationTimeUs * 1000;
+            if (d->renderstart < 0) {
+                d->renderstart = systemnanotime() - presentationNano;
+            }
+            int64_t delay = (d->renderstart + presentationNano) - systemnanotime();
+            if (delay > 0) {
+                usleep(delay / 1000);
+            }
+            AMediaCodec_releaseOutputBuffer(d->codec, status, info.size != 0);
+            if (d->renderonce) {
+                d->renderonce = false;
+                return;
+            }
+        } else if (status == AMEDIACODEC_INFO_OUTPUT_BUFFERS_CHANGED) {
+            LOGV("output buffers changed");
+        } else if (status == AMEDIACODEC_INFO_OUTPUT_FORMAT_CHANGED) {
+            AMediaFormat *format = NULL;
+            format = AMediaCodec_getOutputFormat(d->codec);
+            LOGV("format changed to: %s", AMediaFormat_toString(format));
+            AMediaFormat_delete(format);
+        } else if (status == AMEDIACODEC_INFO_TRY_AGAIN_LATER) {
+            LOGV("no output buffer right now");
+        } else {
+            LOGV("unexpected info code: %zd", status);
+        }
+    }
+
+    if (!d->sawInputEOS || !d->sawOutputEOS) {
+        mlooper->post(kMsgCodecBuffer, d);
+    }
+}
+
+void mylooper::handle(int what, void* obj) {
+    switch (what) {
+        case kMsgCodecBuffer:
+            doCodecWork((workerdata*)obj);
+            break;
+
+        case kMsgDecodeDone:
+        {
+            workerdata *d = (workerdata*)obj;
+            AMediaCodec_stop(d->codec);
+            AMediaCodec_delete(d->codec);
+            AMediaExtractor_delete(d->ex);
+            d->sawInputEOS = true;
+            d->sawOutputEOS = true;
+        }
+        break;
+
+        case kMsgSeek:
+        {
+            workerdata *d = (workerdata*)obj;
+            AMediaExtractor_seekTo(d->ex, 0, AMEDIAEXTRACTOR_SEEK_NEXT_SYNC);
+            AMediaCodec_flush(d->codec);
+            d->renderstart = -1;
+            d->sawInputEOS = false;
+            d->sawOutputEOS = false;
+            if (!d->isPlaying) {
+                d->renderonce = true;
+                post(kMsgCodecBuffer, d);
+            }
+            LOGV("seeked");
+        }
+        break;
+
+        case kMsgPause:
+        {
+            workerdata *d = (workerdata*)obj;
+            if (d->isPlaying) {
+                // flush all outstanding codecbuffer messages with a no-op message
+                d->isPlaying = false;
+                post(kMsgPauseAck, NULL, true);
+            }
+        }
+        break;
+
+        case kMsgResume:
+        {
+            workerdata *d = (workerdata*)obj;
+            if (!d->isPlaying) {
+                d->renderstart = -1;
+                d->isPlaying = true;
+                post(kMsgCodecBuffer, d);
+            }
+        }
+        break;
+    }
+}
+
+
+
+
+extern "C" {
+
+jboolean Java_com_example_nativecodec_NativeCodec_createStreamingMediaPlayer(JNIEnv* env,
+        jclass clazz, jstring filename)
+{
+    LOGV("@@@ create");
+
+    // convert Java string to UTF-8
+    const char *utf8 = env->GetStringUTFChars(filename, NULL);
+    LOGV("opening %s", utf8);
+    int fd = open(utf8, O_RDONLY);
+    env->ReleaseStringUTFChars(filename, utf8);
+    if (fd < 0) {
+        LOGV("failed: %d (%s)", fd, strerror(errno));
+        return JNI_FALSE;
+    }
+
+    data.fd = fd;
+
+    workerdata *d = &data;
+
+    AMediaExtractor *ex = AMediaExtractor_new();
+    media_status_t err = AMediaExtractor_setDataSourceFd(ex, d->fd, 0 , LONG_MAX);
+    close(d->fd);
+    if (err != AMEDIA_OK) {
+        LOGV("setDataSource error: %d", err);
+        return JNI_FALSE;
+    }
+
+    int numtracks = AMediaExtractor_getTrackCount(ex);
+
+    AMediaCodec *codec = NULL;
+
+    LOGV("input has %d tracks", numtracks);
+    for (int i = 0; i < numtracks; i++) {
+        AMediaFormat *format = AMediaExtractor_getTrackFormat(ex, i);
+        const char *s = AMediaFormat_toString(format);
+        LOGV("track %d format: %s", i, s);
+        const char *mime;
+        if (!AMediaFormat_getString(format, AMEDIAFORMAT_KEY_MIME, &mime)) {
+            LOGV("no mime type");
+            return JNI_FALSE;
+        } else if (!strncmp(mime, "video/", 6)) {
+            // Omitting most error handling for clarity.
+            // Production code should check for errors.
+            AMediaExtractor_selectTrack(ex, i);
+            codec = AMediaCodec_createDecoderByType(mime);
+            AMediaCodec_configure(codec, format, d->window, NULL, 0);
+            d->ex = ex;
+            d->codec = codec;
+            d->renderstart = -1;
+            d->sawInputEOS = false;
+            d->sawOutputEOS = false;
+            d->isPlaying = false;
+            d->renderonce = true;
+            AMediaCodec_start(codec);
+        }
+        AMediaFormat_delete(format);
+    }
+
+    mlooper = new mylooper();
+    mlooper->post(kMsgCodecBuffer, d);
+
+    return JNI_TRUE;
+}
+
+// set the playing state for the streaming media player
+void Java_com_example_nativecodec_NativeCodec_setPlayingStreamingMediaPlayer(JNIEnv* env,
+        jclass clazz, jboolean isPlaying)
+{
+    LOGV("@@@ playpause: %d", isPlaying);
+    if (mlooper) {
+        if (isPlaying) {
+            mlooper->post(kMsgResume, &data);
+        } else {
+            mlooper->post(kMsgPause, &data);
+        }
+    }
+}
+
+
+// shut down the native media system
+void Java_com_example_nativecodec_NativeCodec_shutdown(JNIEnv* env, jclass clazz)
+{
+    LOGV("@@@ shutdown");
+    if (mlooper) {
+        mlooper->post(kMsgDecodeDone, &data, true /* flush */);
+        mlooper->quit();
+        delete mlooper;
+        mlooper = NULL;
+    }
+    if (data.window) {
+        ANativeWindow_release(data.window);
+        data.window = NULL;
+    }
+}
+
+
+// set the surface
+void Java_com_example_nativecodec_NativeCodec_setSurface(JNIEnv *env, jclass clazz, jobject surface)
+{
+    // obtain a native window from a Java surface
+    if (data.window) {
+        ANativeWindow_release(data.window);
+        data.window = NULL;
+    }
+    data.window = ANativeWindow_fromSurface(env, surface);
+    LOGV("@@@ setsurface %p", data.window);
+}
+
+
+// rewind the streaming media player
+void Java_com_example_nativecodec_NativeCodec_rewindStreamingMediaPlayer(JNIEnv *env, jclass clazz)
+{
+    LOGV("@@@ rewind");
+    mlooper->post(kMsgSeek, &data);
+}
+
+}
diff --git a/ndk/platforms/android-20/samples/native-codec/res/drawable/icon.png b/ndk/platforms/android-20/samples/native-codec/res/drawable/icon.png
new file mode 100644
index 0000000..a07c69f
--- /dev/null
+++ b/ndk/platforms/android-20/samples/native-codec/res/drawable/icon.png
Binary files differ
diff --git a/ndk/platforms/android-20/samples/native-codec/res/layout/main.xml b/ndk/platforms/android-20/samples/native-codec/res/layout/main.xml
new file mode 100644
index 0000000..4e94a7b
--- /dev/null
+++ b/ndk/platforms/android-20/samples/native-codec/res/layout/main.xml
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="vertical"
+    android:layout_width="fill_parent"
+    android:layout_height="fill_parent"
+    >
+    <LinearLayout
+        android:orientation="horizontal"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_margin="8dip"
+        >
+        <TextView
+            android:layout_width="fill_parent"
+            android:layout_height="wrap_content"
+            android:text="@string/source_select"
+            />
+        <Spinner
+            android:id="@+id/source_spinner"
+            android:layout_width="fill_parent"
+            android:layout_height="wrap_content"
+            android:text="@string/source_prompt"
+            />
+    </LinearLayout>
+
+    <LinearLayout
+        android:orientation="horizontal"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_margin="8dip"
+        >
+        <Button
+            android:id="@+id/start_native"
+            android:text="@string/start_native"
+            android:layout_width="fill_parent"
+            android:layout_height="wrap_content"
+            />
+        <Button
+            android:id="@+id/rewind_native"
+            android:text="@string/rewind_native"
+            android:layout_width="fill_parent"
+            android:layout_height="wrap_content"
+            />
+    </LinearLayout>
+
+    <LinearLayout
+        android:orientation="horizontal"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_margin="8dip"
+        >
+        <RadioButton
+            android:id="@+id/radio1"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:padding="10dip"
+        />
+        <SurfaceView
+            android:id="@+id/surfaceview1"
+            android:layout_width="640px"
+            android:layout_height="480px"
+            />
+    </LinearLayout>
+
+    <LinearLayout
+        android:orientation="horizontal"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_margin="8dip"
+        >
+        <RadioButton
+            android:id="@+id/radio2"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:padding="10dip"
+        />
+        <com.example.nativecodec.MyGLSurfaceView
+            android:id="@+id/glsurfaceview1"
+            android:layout_width="640px"
+            android:layout_height="480px"
+            />
+    </LinearLayout>
+
+</LinearLayout>
diff --git a/ndk/platforms/android-20/samples/native-codec/res/values/strings.xml b/ndk/platforms/android-20/samples/native-codec/res/values/strings.xml
new file mode 100644
index 0000000..03169fc
--- /dev/null
+++ b/ndk/platforms/android-20/samples/native-codec/res/values/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <string name="app_name">NativeCodec</string>
+    <string name="start_java">Start/Pause\nJava MediaPlayer</string>
+    <string name="start_native">Start/Pause</string>
+
+    <string name="rewind_native">Rewind</string>
+
+    <string name="source_select">Please select the media source</string>
+    <string name="source_prompt">Media source</string>
+    <string-array name="source_array">
+        <item>/sdcard/testfile.mp4</item>
+    </string-array>
+
+    <string name="sink_select">Please select the video sink</string>
+    <string name="sink_prompt">Video sink</string>
+    <string-array name="sink_array">
+        <item>Surface</item>
+        <item>Texture</item>
+    </string-array>
+
+</resources>
diff --git a/ndk/platforms/android-20/samples/native-codec/src/com/example/nativecodec/MyGLSurfaceView.java b/ndk/platforms/android-20/samples/native-codec/src/com/example/nativecodec/MyGLSurfaceView.java
new file mode 100644
index 0000000..8897feb
--- /dev/null
+++ b/ndk/platforms/android-20/samples/native-codec/src/com/example/nativecodec/MyGLSurfaceView.java
@@ -0,0 +1,354 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package com.example.nativecodec;
+
+import android.graphics.SurfaceTexture;
+import android.util.Log;
+
+import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
+import java.nio.FloatBuffer;
+
+import javax.microedition.khronos.egl.EGLConfig;
+import javax.microedition.khronos.opengles.GL10;
+
+import android.content.Context;
+import android.opengl.GLES20;
+import android.opengl.GLSurfaceView;
+import android.opengl.Matrix;
+import android.os.SystemClock;
+import android.util.AttributeSet;
+
+public class MyGLSurfaceView extends GLSurfaceView {
+
+    MyRenderer mRenderer;
+
+    public MyGLSurfaceView(Context context) {
+        this(context, null);
+    }
+
+    public MyGLSurfaceView(Context context, AttributeSet attributeSet) {
+        super(context, attributeSet);
+        init();
+    }
+
+    private void init() {
+        setEGLContextClientVersion(2);
+        mRenderer = new MyRenderer();
+        setRenderer(mRenderer);
+        Log.i("@@@", "setrenderer");
+    }
+
+    @Override
+    public void onPause() {
+        mRenderer.onPause();
+        super.onPause();
+    }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+        mRenderer.onResume();
+    }
+
+    public SurfaceTexture getSurfaceTexture() {
+        return mRenderer.getSurfaceTexture();
+    }
+}
+
+class MyRenderer implements GLSurfaceView.Renderer, SurfaceTexture.OnFrameAvailableListener {
+
+    public MyRenderer() {
+        mVertices = ByteBuffer.allocateDirect(mVerticesData.length
+                * FLOAT_SIZE_BYTES).order(ByteOrder.nativeOrder()).asFloatBuffer();
+        mVertices.put(mVerticesData).position(0);
+
+        Matrix.setIdentityM(mSTMatrix, 0);
+    }
+    public void onPause() {
+    }
+
+    public void onResume() {
+        mLastTime = SystemClock.elapsedRealtimeNanos();
+    }
+
+    @Override
+    public void onDrawFrame(GL10 glUnused) {
+        synchronized(this) {
+            if (updateSurface) {
+                mSurface.updateTexImage();
+
+                mSurface.getTransformMatrix(mSTMatrix);
+                updateSurface = false;
+            }
+        }
+
+        // Ignore the passed-in GL10 interface, and use the GLES20
+        // class's static methods instead.
+        GLES20.glClear( GLES20.GL_DEPTH_BUFFER_BIT | GLES20.GL_COLOR_BUFFER_BIT);
+        GLES20.glUseProgram(mProgram);
+        checkGlError("glUseProgram");
+
+        GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
+        GLES20.glBindTexture(GL_TEXTURE_EXTERNAL_OES, mTextureID);
+
+        mVertices.position(VERTICES_DATA_POS_OFFSET);
+        GLES20.glVertexAttribPointer(maPositionHandle, 3, GLES20.GL_FLOAT, false,
+                VERTICES_DATA_STRIDE_BYTES, mVertices);
+        checkGlError("glVertexAttribPointer maPosition");
+        GLES20.glEnableVertexAttribArray(maPositionHandle);
+        checkGlError("glEnableVertexAttribArray maPositionHandle");
+
+        mVertices.position(VERTICES_DATA_UV_OFFSET);
+        GLES20.glVertexAttribPointer(maTextureHandle, 3, GLES20.GL_FLOAT, false,
+                VERTICES_DATA_STRIDE_BYTES, mVertices);
+        checkGlError("glVertexAttribPointer maTextureHandle");
+        GLES20.glEnableVertexAttribArray(maTextureHandle);
+        checkGlError("glEnableVertexAttribArray maTextureHandle");
+
+        long now = SystemClock.elapsedRealtimeNanos();
+        mRunTime += (now - mLastTime);
+        mLastTime = now;
+        double d = ((double)mRunTime) / 1000000000;
+        Matrix.setIdentityM(mMMatrix, 0);
+        Matrix.rotateM(mMMatrix, 0, 30, (float)Math.sin(d), (float)Math.cos(d), 0);
+        Matrix.multiplyMM(mMVPMatrix, 0, mVMatrix, 0, mMMatrix, 0);
+        Matrix.multiplyMM(mMVPMatrix, 0, mProjMatrix, 0, mMVPMatrix, 0);
+
+        GLES20.glUniformMatrix4fv(muMVPMatrixHandle, 1, false, mMVPMatrix, 0);
+        GLES20.glUniformMatrix4fv(muSTMatrixHandle, 1, false, mSTMatrix, 0);
+
+        GLES20.glDrawArrays(GLES20.GL_TRIANGLE_STRIP, 0, 4);
+        checkGlError("glDrawArrays");
+    }
+
+    @Override
+    public void onSurfaceChanged(GL10 glUnused, int width, int height) {
+        // Ignore the passed-in GL10 interface, and use the GLES20
+        // class's static methods instead.
+        GLES20.glViewport(0, 0, width, height);
+        mRatio = (float) width / height;
+        Matrix.frustumM(mProjMatrix, 0, -mRatio, mRatio, -1, 1, 3, 7);
+    }
+
+    @Override
+    public void onSurfaceCreated(GL10 glUnused, EGLConfig config) {
+        // Ignore the passed-in GL10 interface, and use the GLES20
+        // class's static methods instead.
+
+        /* Set up alpha blending and an Android background color */
+        GLES20.glEnable(GLES20.GL_BLEND);
+        GLES20.glBlendFunc(GLES20.GL_SRC_ALPHA, GLES20.GL_ONE_MINUS_SRC_ALPHA);
+        GLES20.glClearColor(0.643f, 0.776f, 0.223f, 1.0f);
+
+        /* Set up shaders and handles to their variables */
+        mProgram = createProgram(mVertexShader, mFragmentShader);
+        if (mProgram == 0) {
+            return;
+        }
+        maPositionHandle = GLES20.glGetAttribLocation(mProgram, "aPosition");
+        checkGlError("glGetAttribLocation aPosition");
+        if (maPositionHandle == -1) {
+            throw new RuntimeException("Could not get attrib location for aPosition");
+        }
+        maTextureHandle = GLES20.glGetAttribLocation(mProgram, "aTextureCoord");
+        checkGlError("glGetAttribLocation aTextureCoord");
+        if (maTextureHandle == -1) {
+            throw new RuntimeException("Could not get attrib location for aTextureCoord");
+        }
+
+        muMVPMatrixHandle = GLES20.glGetUniformLocation(mProgram, "uMVPMatrix");
+        checkGlError("glGetUniformLocation uMVPMatrix");
+        if (muMVPMatrixHandle == -1) {
+            throw new RuntimeException("Could not get attrib location for uMVPMatrix");
+        }
+
+        muSTMatrixHandle = GLES20.glGetUniformLocation(mProgram, "uSTMatrix");
+        checkGlError("glGetUniformLocation uSTMatrix");
+        if (muMVPMatrixHandle == -1) {
+            throw new RuntimeException("Could not get attrib location for uSTMatrix");
+        }
+
+        checkGlError("glGetUniformLocation uCRatio");
+        if (muMVPMatrixHandle == -1) {
+            throw new RuntimeException("Could not get attrib location for uCRatio");
+        }
+
+        /*
+         * Create our texture. This has to be done each time the
+         * surface is created.
+         */
+
+        int[] textures = new int[1];
+        GLES20.glGenTextures(1, textures, 0);
+
+        mTextureID = textures[0];
+        GLES20.glBindTexture(GL_TEXTURE_EXTERNAL_OES, mTextureID);
+        checkGlError("glBindTexture mTextureID");
+
+        // Can't do mipmapping with camera source
+        GLES20.glTexParameterf(GL_TEXTURE_EXTERNAL_OES, GLES20.GL_TEXTURE_MIN_FILTER,
+                GLES20.GL_NEAREST);
+        GLES20.glTexParameterf(GL_TEXTURE_EXTERNAL_OES, GLES20.GL_TEXTURE_MAG_FILTER,
+                GLES20.GL_LINEAR);
+        // Clamp to edge is the only option
+        GLES20.glTexParameteri(GL_TEXTURE_EXTERNAL_OES, GLES20.GL_TEXTURE_WRAP_S,
+                GLES20.GL_CLAMP_TO_EDGE);
+        GLES20.glTexParameteri(GL_TEXTURE_EXTERNAL_OES, GLES20.GL_TEXTURE_WRAP_T,
+                GLES20.GL_CLAMP_TO_EDGE);
+        checkGlError("glTexParameteri mTextureID");
+
+        /*
+         * Create the SurfaceTexture that will feed this textureID, and pass it to the camera
+         */
+
+        mSurface = new SurfaceTexture(mTextureID);
+        mSurface.setOnFrameAvailableListener(this);
+
+        Matrix.setLookAtM(mVMatrix, 0, 0, 0, 4f, 0f, 0f, 0f, 0f, 1.0f, 0.0f);
+
+        synchronized(this) {
+            updateSurface = false;
+        }
+    }
+
+    @Override
+    synchronized public void onFrameAvailable(SurfaceTexture surface) {
+        /* For simplicity, SurfaceTexture calls here when it has new
+         * data available.  Call may come in from some random thread,
+         * so let's be safe and use synchronize. No OpenGL calls can be done here.
+         */
+        updateSurface = true;
+        //Log.v(TAG, "onFrameAvailable " + surface.getTimestamp());
+    }
+
+    private int loadShader(int shaderType, String source) {
+        int shader = GLES20.glCreateShader(shaderType);
+        if (shader != 0) {
+            GLES20.glShaderSource(shader, source);
+            GLES20.glCompileShader(shader);
+            int[] compiled = new int[1];
+            GLES20.glGetShaderiv(shader, GLES20.GL_COMPILE_STATUS, compiled, 0);
+            if (compiled[0] == 0) {
+                Log.e(TAG, "Could not compile shader " + shaderType + ":");
+                Log.e(TAG, GLES20.glGetShaderInfoLog(shader));
+                GLES20.glDeleteShader(shader);
+                shader = 0;
+            }
+        }
+        return shader;
+    }
+
+    private int createProgram(String vertexSource, String fragmentSource) {
+        int vertexShader = loadShader(GLES20.GL_VERTEX_SHADER, vertexSource);
+        if (vertexShader == 0) {
+            return 0;
+        }
+        int pixelShader = loadShader(GLES20.GL_FRAGMENT_SHADER, fragmentSource);
+        if (pixelShader == 0) {
+            return 0;
+        }
+
+        int program = GLES20.glCreateProgram();
+        if (program != 0) {
+            GLES20.glAttachShader(program, vertexShader);
+            checkGlError("glAttachShader");
+            GLES20.glAttachShader(program, pixelShader);
+            checkGlError("glAttachShader");
+            GLES20.glLinkProgram(program);
+            int[] linkStatus = new int[1];
+            GLES20.glGetProgramiv(program, GLES20.GL_LINK_STATUS, linkStatus, 0);
+            if (linkStatus[0] != GLES20.GL_TRUE) {
+                Log.e(TAG, "Could not link program: ");
+                Log.e(TAG, GLES20.glGetProgramInfoLog(program));
+                GLES20.glDeleteProgram(program);
+                program = 0;
+            }
+        }
+        return program;
+    }
+
+    private void checkGlError(String op) {
+        int error;
+        while ((error = GLES20.glGetError()) != GLES20.GL_NO_ERROR) {
+            Log.e(TAG, op + ": glError " + error);
+            throw new RuntimeException(op + ": glError " + error);
+        }
+    }
+
+    private static final int FLOAT_SIZE_BYTES = 4;
+    private static final int VERTICES_DATA_STRIDE_BYTES = 5 * FLOAT_SIZE_BYTES;
+    private static final int VERTICES_DATA_POS_OFFSET = 0;
+    private static final int VERTICES_DATA_UV_OFFSET = 3;
+    private final float[] mVerticesData = {
+        // X, Y, Z, U, V
+        -1.25f, -1.0f, 0, 0.f, 0.f,
+         1.25f, -1.0f, 0, 1.f, 0.f,
+        -1.25f,  1.0f, 0, 0.f, 1.f,
+         1.25f,  1.0f, 0, 1.f, 1.f,
+    };
+
+    private FloatBuffer mVertices;
+
+    private final String mVertexShader =
+        "uniform mat4 uMVPMatrix;\n" +
+        "uniform mat4 uSTMatrix;\n" +
+        "attribute vec4 aPosition;\n" +
+        "attribute vec4 aTextureCoord;\n" +
+        "varying vec2 vTextureCoord;\n" +
+        "void main() {\n" +
+        "  gl_Position = uMVPMatrix * aPosition;\n" +
+        "  vTextureCoord = (uSTMatrix * aTextureCoord).xy;\n" +
+        "}\n";
+
+    private final String mFragmentShader =
+        "#extension GL_OES_EGL_image_external : require\n" +
+        "precision mediump float;\n" +
+        "varying vec2 vTextureCoord;\n" +
+        "uniform samplerExternalOES sTexture;\n" +
+        "void main() {\n" +
+        "  gl_FragColor = texture2D(sTexture, vTextureCoord);\n" +
+        "}\n";
+
+    private float[] mMVPMatrix = new float[16];
+    private float[] mProjMatrix = new float[16];
+    private float[] mMMatrix = new float[16];
+    private float[] mVMatrix = new float[16];
+    private float[] mSTMatrix = new float[16];
+
+    private int mProgram;
+    private int mTextureID;
+    private int muMVPMatrixHandle;
+    private int muSTMatrixHandle;
+    private int maPositionHandle;
+    private int maTextureHandle;
+
+    private float mRatio = 1.0f;
+    private SurfaceTexture mSurface;
+    private boolean updateSurface = false;
+    private long mLastTime = -1;
+    private long mRunTime = 0;
+
+    private static final String TAG = "MyRenderer";
+
+    // Magic key
+    private static final int GL_TEXTURE_EXTERNAL_OES = 0x8D65;
+
+    public SurfaceTexture getSurfaceTexture() {
+        return mSurface;
+    }
+}
diff --git a/ndk/platforms/android-20/samples/native-codec/src/com/example/nativecodec/NativeCodec.java b/ndk/platforms/android-20/samples/native-codec/src/com/example/nativecodec/NativeCodec.java
new file mode 100644
index 0000000..babd55f
--- /dev/null
+++ b/ndk/platforms/android-20/samples/native-codec/src/com/example/nativecodec/NativeCodec.java
@@ -0,0 +1,319 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package com.example.nativecodec;
+
+import android.app.Activity;
+import android.graphics.SurfaceTexture;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.Surface;
+import android.view.SurfaceHolder;
+import android.view.SurfaceView;
+import android.view.View;
+import android.widget.AdapterView;
+import android.widget.ArrayAdapter;
+import android.widget.Button;
+import android.widget.CompoundButton;
+import android.widget.CompoundButton.OnCheckedChangeListener;
+import android.widget.RadioButton;
+import android.widget.Spinner;
+
+import java.io.IOException;
+
+public class NativeCodec extends Activity {
+    static final String TAG = "NativeCodec";
+
+    String mSourceString = null;
+
+    SurfaceView mSurfaceView1;
+    SurfaceHolder mSurfaceHolder1;
+
+    VideoSink mSelectedVideoSink;
+    VideoSink mNativeCodecPlayerVideoSink;
+
+    SurfaceHolderVideoSink mSurfaceHolder1VideoSink;
+    GLViewVideoSink mGLView1VideoSink;
+
+    boolean mCreated = false;
+    boolean mIsPlaying = false;
+
+    /** Called when the activity is first created. */
+    @Override
+    public void onCreate(Bundle icicle) {
+        super.onCreate(icicle);
+        setContentView(R.layout.main);
+
+        mGLView1 = (MyGLSurfaceView) findViewById(R.id.glsurfaceview1);
+
+        // set up the Surface 1 video sink
+        mSurfaceView1 = (SurfaceView) findViewById(R.id.surfaceview1);
+        mSurfaceHolder1 = mSurfaceView1.getHolder();
+
+        mSurfaceHolder1.addCallback(new SurfaceHolder.Callback() {
+
+            @Override
+            public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
+                Log.v(TAG, "surfaceChanged format=" + format + ", width=" + width + ", height="
+                        + height);
+            }
+
+            @Override
+            public void surfaceCreated(SurfaceHolder holder) {
+                Log.v(TAG, "surfaceCreated");
+                if (mRadio1.isChecked()) {
+                    setSurface(holder.getSurface());
+                }
+            }
+
+            @Override
+            public void surfaceDestroyed(SurfaceHolder holder) {
+                Log.v(TAG, "surfaceDestroyed");
+            }
+
+        });
+
+        // initialize content source spinner
+        Spinner sourceSpinner = (Spinner) findViewById(R.id.source_spinner);
+        ArrayAdapter<CharSequence> sourceAdapter = ArrayAdapter.createFromResource(
+                this, R.array.source_array, android.R.layout.simple_spinner_item);
+        sourceAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
+        sourceSpinner.setAdapter(sourceAdapter);
+        sourceSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
+
+            @Override
+            public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
+                mSourceString = parent.getItemAtPosition(pos).toString();
+                Log.v(TAG, "onItemSelected " + mSourceString);
+            }
+
+            @Override
+            public void onNothingSelected(AdapterView parent) {
+                Log.v(TAG, "onNothingSelected");
+                mSourceString = null;
+            }
+
+        });
+
+        mRadio1 = (RadioButton) findViewById(R.id.radio1);
+        mRadio2 = (RadioButton) findViewById(R.id.radio2);
+
+        OnCheckedChangeListener checklistener = new CompoundButton.OnCheckedChangeListener() {
+
+          @Override
+          public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
+              Log.i("@@@@", "oncheckedchanged");
+              if (buttonView == mRadio1 && isChecked) {
+                  mRadio2.setChecked(false);
+              }
+              if (buttonView == mRadio2 && isChecked) {
+                  mRadio1.setChecked(false);
+              }
+              if (isChecked) {
+                  if (mRadio1.isChecked()) {
+                      if (mSurfaceHolder1VideoSink == null) {
+                          mSurfaceHolder1VideoSink = new SurfaceHolderVideoSink(mSurfaceHolder1);
+                      }
+                      mSelectedVideoSink = mSurfaceHolder1VideoSink;
+                      mGLView1.onPause();
+                      Log.i("@@@@", "glview pause");
+                  } else {
+                      mGLView1.onResume();
+                      if (mGLView1VideoSink == null) {
+                          mGLView1VideoSink = new GLViewVideoSink(mGLView1);
+                      }
+                      mSelectedVideoSink = mGLView1VideoSink;
+                  }
+                  switchSurface();
+              }
+          }
+        };
+        mRadio1.setOnCheckedChangeListener(checklistener);
+        mRadio2.setOnCheckedChangeListener(checklistener);
+        mRadio2.toggle();
+
+        // the surfaces themselves are easier targets than the radio buttons
+        mSurfaceView1.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                mRadio1.toggle();
+            }
+        });
+        mGLView1.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                mRadio2.toggle();
+            }
+      });
+
+        // initialize button click handlers
+
+        // native MediaPlayer start/pause
+        ((Button) findViewById(R.id.start_native)).setOnClickListener(new View.OnClickListener() {
+
+            @Override
+            public void onClick(View view) {
+                if (!mCreated) {
+                    if (mNativeCodecPlayerVideoSink == null) {
+                        if (mSelectedVideoSink == null) {
+                            return;
+                        }
+                        mSelectedVideoSink.useAsSinkForNative();
+                        mNativeCodecPlayerVideoSink = mSelectedVideoSink;
+                    }
+                    if (mSourceString != null) {
+                        mCreated = createStreamingMediaPlayer(mSourceString);
+                    }
+                }
+                if (mCreated) {
+                    mIsPlaying = !mIsPlaying;
+                    setPlayingStreamingMediaPlayer(mIsPlaying);
+                }
+            }
+
+        });
+
+
+        // native MediaPlayer rewind
+        ((Button) findViewById(R.id.rewind_native)).setOnClickListener(new View.OnClickListener() {
+
+            @Override
+            public void onClick(View view) {
+                if (mNativeCodecPlayerVideoSink != null) {
+                    rewindStreamingMediaPlayer();
+                }
+            }
+
+        });
+
+    }
+
+    void switchSurface() {
+        if (mCreated && mNativeCodecPlayerVideoSink != mSelectedVideoSink) {
+            // shutdown and recreate on other surface
+          Log.i("@@@", "shutting down player");
+            shutdown();
+            mCreated = false;
+            mSelectedVideoSink.useAsSinkForNative();
+            mNativeCodecPlayerVideoSink = mSelectedVideoSink;
+            if (mSourceString != null) {
+                Log.i("@@@", "recreating player");
+                mCreated = createStreamingMediaPlayer(mSourceString);
+                mIsPlaying = false;
+            }
+        }
+    }
+
+    /** Called when the activity is about to be paused. */
+    @Override
+    protected void onPause()
+    {
+        mIsPlaying = false;
+        setPlayingStreamingMediaPlayer(false);
+        mGLView1.onPause();
+        super.onPause();
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        if (mRadio2.isChecked()) {
+            mGLView1.onResume();
+        }
+    }
+
+    /** Called when the activity is about to be destroyed. */
+    @Override
+    protected void onDestroy()
+    {
+        shutdown();
+        mCreated = false;
+        super.onDestroy();
+    }
+
+    private MyGLSurfaceView mGLView1;
+
+    private RadioButton mRadio1;
+
+    private RadioButton mRadio2;
+
+    /** Native methods, implemented in jni folder */
+    public static native void createEngine();
+    public static native boolean createStreamingMediaPlayer(String filename);
+    public static native void setPlayingStreamingMediaPlayer(boolean isPlaying);
+    public static native void shutdown();
+    public static native void setSurface(Surface surface);
+    public static native void rewindStreamingMediaPlayer();
+
+    /** Load jni .so on initialization */
+    static {
+         System.loadLibrary("native-codec-jni");
+    }
+
+    // VideoSink abstracts out the difference between Surface and SurfaceTexture
+    // aka SurfaceHolder and GLSurfaceView
+    static abstract class VideoSink {
+
+        abstract void setFixedSize(int width, int height);
+        abstract void useAsSinkForNative();
+
+    }
+
+    static class SurfaceHolderVideoSink extends VideoSink {
+
+        private final SurfaceHolder mSurfaceHolder;
+
+        SurfaceHolderVideoSink(SurfaceHolder surfaceHolder) {
+            mSurfaceHolder = surfaceHolder;
+        }
+
+        @Override
+        void setFixedSize(int width, int height) {
+            mSurfaceHolder.setFixedSize(width, height);
+        }
+
+        @Override
+        void useAsSinkForNative() {
+            Surface s = mSurfaceHolder.getSurface();
+            Log.i("@@@", "setting surface " + s);
+            setSurface(s);
+        }
+
+    }
+
+    static class GLViewVideoSink extends VideoSink {
+
+        private final MyGLSurfaceView mMyGLSurfaceView;
+
+        GLViewVideoSink(MyGLSurfaceView myGLSurfaceView) {
+            mMyGLSurfaceView = myGLSurfaceView;
+        }
+
+        @Override
+        void setFixedSize(int width, int height) {
+        }
+
+        @Override
+        void useAsSinkForNative() {
+            SurfaceTexture st = mMyGLSurfaceView.getSurfaceTexture();
+            Surface s = new Surface(st);
+            setSurface(s);
+            s.release();
+        }
+
+    }
+
+}
diff --git a/ndk/platforms/android-20/samples/native-codec/testfile.mp4 b/ndk/platforms/android-20/samples/native-codec/testfile.mp4
new file mode 100644
index 0000000..571ff44
--- /dev/null
+++ b/ndk/platforms/android-20/samples/native-codec/testfile.mp4
Binary files differ
diff --git a/ndk/platforms/android-3/arch-arm/lib/libm_hard.a b/ndk/platforms/android-3/arch-arm/lib/libm_hard.a
index 2ff6e1d..1ab948e 100644
--- a/ndk/platforms/android-3/arch-arm/lib/libm_hard.a
+++ b/ndk/platforms/android-3/arch-arm/lib/libm_hard.a
Binary files differ
diff --git a/ndk/platforms/android-3/include/stdint.h b/ndk/platforms/android-3/include/stdint.h
index 7ae2595..244dd4d 100644
--- a/ndk/platforms/android-3/include/stdint.h
+++ b/ndk/platforms/android-3/include/stdint.h
@@ -251,7 +251,7 @@
 /* size_t is defined by the GCC-specific <stddef.h> */
 #ifndef _SSIZE_T_DEFINED_
 #define _SSIZE_T_DEFINED_
-typedef long int  ssize_t;
+typedef int  ssize_t;
 #endif
 
 #define _BITSIZE 32
diff --git a/ndk/platforms/android-3/include/sys/_wchar_limits.h b/ndk/platforms/android-3/include/sys/_wchar_limits.h
index 644792f..12bc6b1 100644
--- a/ndk/platforms/android-3/include/sys/_wchar_limits.h
+++ b/ndk/platforms/android-3/include/sys/_wchar_limits.h
@@ -86,21 +86,14 @@
 #  else
   /* Otherwise, the value is derived from the toolchain configuration.
    * to avoid putting explicit CPU checks in this header. */
-#    ifndef __WCHAR_MAX__
-#      error "__WCHAR_MAX__ is not defined. Check your toolchain!"
+#    define WCHAR_MAX __WCHAR_MAX__
+
+  /* Clang does not define __WCHAR_MIN__ */
+#    if defined(__WCHAR_UNSIGNED__)
+#      define WCHAR_MIN L'\0'
+#    else
+#      define WCHAR_MIN (-(WCHAR_MAX) - 1)
 #    endif
-  /* Clang does define __WCHAR_MAX__, but not __WCHAR_MIN__ */
-#    ifndef __WCHAR_MIN__
-#      if __WCHAR_MAX__ == 4294967295
-#        define __WCHAR_MIN__  (0U)
-#      elif __WCHAR_MAX__ == 2147483647
-#        define __WCHAR_MIN__  (-2147483647 - 1)
-#      else
-#        error "Invalid __WCHAR_MAX__ value. Check your toolchain!"
-#      endif
-#    endif /* !__WCHAR_MIN__ */
-#    define WCHAR_MIN    __WCHAR_MIN__
-#    define WCHAR_MAX    __WCHAR_MAX__
 #  endif /* !_WCHAR_IS_ALWAYS_SIGNED */
 
 #endif /* !WCHAR_MIN */
diff --git a/ndk/platforms/android-3/include/sys/cdefs.h b/ndk/platforms/android-3/include/sys/cdefs.h
index e840064..10743f6 100644
--- a/ndk/platforms/android-3/include/sys/cdefs.h
+++ b/ndk/platforms/android-3/include/sys/cdefs.h
@@ -545,7 +545,7 @@
                 ^
            a.i:564:6: note: previous declaration is here
  */
-#if defined(__ANDROID__) && !__LP64__ && defined( __arm__)
+#if defined(__ANDROID__) && !defined(__LP64__) && defined( __arm__)
 #define __NDK_FPABI__ __attribute__((pcs("aapcs")))
 #else
 #define __NDK_FPABI__
diff --git a/ndk/platforms/android-3/include/sys/types.h b/ndk/platforms/android-3/include/sys/types.h
index 15ecb37..f7f986c 100644
--- a/ndk/platforms/android-3/include/sys/types.h
+++ b/ndk/platforms/android-3/include/sys/types.h
@@ -87,7 +87,7 @@
 
 #ifndef _SSIZE_T_DEFINED_
 #define _SSIZE_T_DEFINED_
-typedef long int  ssize_t;
+typedef int  ssize_t;
 #endif
 
 typedef __kernel_suseconds_t  suseconds_t;
diff --git a/ndk/platforms/android-4/samples/san-angeles/jni/Application.mk b/ndk/platforms/android-4/samples/san-angeles/jni/Application.mk
new file mode 100644
index 0000000..e619d92
--- /dev/null
+++ b/ndk/platforms/android-4/samples/san-angeles/jni/Application.mk
@@ -0,0 +1 @@
+APP_ABI := all
\ No newline at end of file
diff --git a/ndk/platforms/android-5/samples/hello-gl2/jni/Application.mk b/ndk/platforms/android-5/samples/hello-gl2/jni/Application.mk
new file mode 100644
index 0000000..a252a72
--- /dev/null
+++ b/ndk/platforms/android-5/samples/hello-gl2/jni/Application.mk
@@ -0,0 +1 @@
+APP_ABI := all
diff --git a/ndk/platforms/android-8/samples/bitmap-plasma/jni/Application.mk b/ndk/platforms/android-8/samples/bitmap-plasma/jni/Application.mk
index 8c85307..9c50d46 100644
--- a/ndk/platforms/android-8/samples/bitmap-plasma/jni/Application.mk
+++ b/ndk/platforms/android-8/samples/bitmap-plasma/jni/Application.mk
@@ -1,3 +1,2 @@
-# The ARMv7 is significanly faster due to the use of the hardware FPU
-APP_ABI := armeabi armeabi-v7a
+APP_ABI := all
 APP_PLATFORM := android-8
diff --git a/ndk/platforms/android-8/samples/bitmap-plasma/jni/plasma.c b/ndk/platforms/android-8/samples/bitmap-plasma/jni/plasma.c
index d5f98fb..88f35e6 100644
--- a/ndk/platforms/android-8/samples/bitmap-plasma/jni/plasma.c
+++ b/ndk/platforms/android-8/samples/bitmap-plasma/jni/plasma.c
@@ -215,7 +215,7 @@
         uint16_t*  line_end = line + info->width;
 
         if (line < line_end) {
-            if (((uint32_t)line & 3) != 0) {
+            if (((uint32_t)(uintptr_t)line & 3) != 0) {
                 Fixed ii = base + fixed_sin(xt1) + fixed_sin(xt2);
 
                 xt1 += XT1_INCR;
diff --git a/ndk/platforms/android-9/arch-mips/lib-bootstrap/lib/crtbegin_dynamic.o b/ndk/platforms/android-9/arch-mips/lib-bootstrap/lib/crtbegin_dynamic.o
new file mode 100644
index 0000000..8d2d680
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/lib-bootstrap/lib/crtbegin_dynamic.o
Binary files differ
diff --git a/ndk/platforms/android-9/arch-mips/lib-bootstrap/lib/crtend_android.o b/ndk/platforms/android-9/arch-mips/lib-bootstrap/lib/crtend_android.o
new file mode 100644
index 0000000..20a1a26
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/lib-bootstrap/lib/crtend_android.o
Binary files differ
diff --git a/ndk/platforms/android-9/arch-mips/lib-bootstrap/lib/libc.so b/ndk/platforms/android-9/arch-mips/lib-bootstrap/lib/libc.so
new file mode 100755
index 0000000..3e8871d
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/lib-bootstrap/lib/libc.so
Binary files differ
diff --git a/ndk/platforms/android-9/arch-mips/lib-bootstrap/lib/libdl.so b/ndk/platforms/android-9/arch-mips/lib-bootstrap/lib/libdl.so
new file mode 100755
index 0000000..3c9e279
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/lib-bootstrap/lib/libdl.so
Binary files differ
diff --git a/ndk/platforms/android-9/arch-mips/lib-bootstrap/lib32/crtbegin_dynamic.o b/ndk/platforms/android-9/arch-mips/lib-bootstrap/lib32/crtbegin_dynamic.o
new file mode 100644
index 0000000..c8951c4
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/lib-bootstrap/lib32/crtbegin_dynamic.o
Binary files differ
diff --git a/ndk/platforms/android-9/arch-mips/lib-bootstrap/lib32/crtend_android.o b/ndk/platforms/android-9/arch-mips/lib-bootstrap/lib32/crtend_android.o
new file mode 100644
index 0000000..d646968
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/lib-bootstrap/lib32/crtend_android.o
Binary files differ
diff --git a/ndk/platforms/android-9/arch-mips/lib-bootstrap/lib32/libc.so b/ndk/platforms/android-9/arch-mips/lib-bootstrap/lib32/libc.so
new file mode 100755
index 0000000..9554957
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/lib-bootstrap/lib32/libc.so
Binary files differ
diff --git a/ndk/platforms/android-9/arch-mips/lib-bootstrap/lib32/libdl.so b/ndk/platforms/android-9/arch-mips/lib-bootstrap/lib32/libdl.so
new file mode 100755
index 0000000..66e219c
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/lib-bootstrap/lib32/libdl.so
Binary files differ
diff --git a/ndk/platforms/android-9/arch-mips/lib-bootstrap/lib64/crtbegin_dynamic.o b/ndk/platforms/android-9/arch-mips/lib-bootstrap/lib64/crtbegin_dynamic.o
new file mode 100644
index 0000000..da6f081
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/lib-bootstrap/lib64/crtbegin_dynamic.o
Binary files differ
diff --git a/ndk/platforms/android-9/arch-mips/lib-bootstrap/lib64/crtend_android.o b/ndk/platforms/android-9/arch-mips/lib-bootstrap/lib64/crtend_android.o
new file mode 100644
index 0000000..1211dc6
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/lib-bootstrap/lib64/crtend_android.o
Binary files differ
diff --git a/ndk/platforms/android-9/arch-mips/lib-bootstrap/lib64/libc.so b/ndk/platforms/android-9/arch-mips/lib-bootstrap/lib64/libc.so
new file mode 100755
index 0000000..1de0b20
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/lib-bootstrap/lib64/libc.so
Binary files differ
diff --git a/ndk/platforms/android-9/arch-mips/lib-bootstrap/lib64/libdl.so b/ndk/platforms/android-9/arch-mips/lib-bootstrap/lib64/libdl.so
new file mode 100755
index 0000000..86f9fa8
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/lib-bootstrap/lib64/libdl.so
Binary files differ
diff --git a/ndk/platforms/android-9/include/sys/cdefs.h b/ndk/platforms/android-9/include/sys/cdefs.h
index beb35c4..e17e361 100644
--- a/ndk/platforms/android-9/include/sys/cdefs.h
+++ b/ndk/platforms/android-9/include/sys/cdefs.h
@@ -514,7 +514,7 @@
                 ^
            a.i:564:6: note: previous declaration is here
  */
-#if defined(__ANDROID__) && !__LP64__ && defined( __arm__)
+#if defined(__ANDROID__) && !defined(__LP64__) && defined( __arm__)
 #define __NDK_FPABI__ __attribute__((pcs("aapcs")))
 #else
 #define __NDK_FPABI__
diff --git a/ndk/platforms/android-9/samples/native-activity/jni/Application.mk b/ndk/platforms/android-9/samples/native-activity/jni/Application.mk
index 682f11b..a304c8f 100644
--- a/ndk/platforms/android-9/samples/native-activity/jni/Application.mk
+++ b/ndk/platforms/android-9/samples/native-activity/jni/Application.mk
@@ -1 +1,2 @@
+APP_ABI := all
 APP_PLATFORM := android-10
diff --git a/ndk/platforms/android-9/samples/native-audio/jni/Application.mk b/ndk/platforms/android-9/samples/native-audio/jni/Application.mk
new file mode 100644
index 0000000..e619d92
--- /dev/null
+++ b/ndk/platforms/android-9/samples/native-audio/jni/Application.mk
@@ -0,0 +1 @@
+APP_ABI := all
\ No newline at end of file
diff --git a/ndk/platforms/android-9/samples/native-plasma/jni/Application.mk b/ndk/platforms/android-9/samples/native-plasma/jni/Application.mk
index 70bbb62..a304c8f 100644
--- a/ndk/platforms/android-9/samples/native-plasma/jni/Application.mk
+++ b/ndk/platforms/android-9/samples/native-plasma/jni/Application.mk
@@ -1,3 +1,2 @@
-# The ARMv7 is significanly faster due to the use of the hardware FPU
-APP_ABI := armeabi armeabi-v7a
+APP_ABI := all
 APP_PLATFORM := android-10
diff --git a/ndk/platforms/android-9/samples/native-plasma/jni/plasma.c b/ndk/platforms/android-9/samples/native-plasma/jni/plasma.c
index 6175033..50e136d 100644
--- a/ndk/platforms/android-9/samples/native-plasma/jni/plasma.c
+++ b/ndk/platforms/android-9/samples/native-plasma/jni/plasma.c
@@ -224,7 +224,7 @@
         uint16_t*  line_end = line + buffer->width;
 
         if (line < line_end) {
-            if (((uint32_t)line & 3) != 0) {
+            if (((uint32_t)(uintptr_t)line & 3) != 0) {
                 Fixed ii = base + fixed_sin(xt1) + fixed_sin(xt2);
 
                 xt1 += XT1_INCR;
diff --git a/ndk/platforms/android-20/arch-arm/include/asm/a.out.h b/ndk/platforms/android-L/arch-arm/include/asm/a.out.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm/include/asm/a.out.h
rename to ndk/platforms/android-L/arch-arm/include/asm/a.out.h
diff --git a/ndk/platforms/android-20/arch-arm/include/asm/auxvec.h b/ndk/platforms/android-L/arch-arm/include/asm/auxvec.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm/include/asm/auxvec.h
rename to ndk/platforms/android-L/arch-arm/include/asm/auxvec.h
diff --git a/ndk/platforms/android-20/arch-arm/include/asm/bitsperlong.h b/ndk/platforms/android-L/arch-arm/include/asm/bitsperlong.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm/include/asm/bitsperlong.h
rename to ndk/platforms/android-L/arch-arm/include/asm/bitsperlong.h
diff --git a/ndk/platforms/android-20/arch-arm/include/asm/byteorder.h b/ndk/platforms/android-L/arch-arm/include/asm/byteorder.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm/include/asm/byteorder.h
rename to ndk/platforms/android-L/arch-arm/include/asm/byteorder.h
diff --git a/ndk/platforms/android-20/arch-arm/include/asm/errno.h b/ndk/platforms/android-L/arch-arm/include/asm/errno.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm/include/asm/errno.h
rename to ndk/platforms/android-L/arch-arm/include/asm/errno.h
diff --git a/ndk/platforms/android-20/arch-arm/include/asm/fcntl.h b/ndk/platforms/android-L/arch-arm/include/asm/fcntl.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm/include/asm/fcntl.h
rename to ndk/platforms/android-L/arch-arm/include/asm/fcntl.h
diff --git a/ndk/platforms/android-20/arch-arm/include/asm/hwcap.h b/ndk/platforms/android-L/arch-arm/include/asm/hwcap.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm/include/asm/hwcap.h
rename to ndk/platforms/android-L/arch-arm/include/asm/hwcap.h
diff --git a/ndk/platforms/android-20/arch-arm/include/asm/ioctl.h b/ndk/platforms/android-L/arch-arm/include/asm/ioctl.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm/include/asm/ioctl.h
rename to ndk/platforms/android-L/arch-arm/include/asm/ioctl.h
diff --git a/ndk/platforms/android-20/arch-arm/include/asm/ioctls.h b/ndk/platforms/android-L/arch-arm/include/asm/ioctls.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm/include/asm/ioctls.h
rename to ndk/platforms/android-L/arch-arm/include/asm/ioctls.h
diff --git a/ndk/platforms/android-20/arch-arm/include/asm/ipcbuf.h b/ndk/platforms/android-L/arch-arm/include/asm/ipcbuf.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm/include/asm/ipcbuf.h
rename to ndk/platforms/android-L/arch-arm/include/asm/ipcbuf.h
diff --git a/ndk/platforms/android-20/arch-arm/include/asm/kvm.h b/ndk/platforms/android-L/arch-arm/include/asm/kvm.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm/include/asm/kvm.h
rename to ndk/platforms/android-L/arch-arm/include/asm/kvm.h
diff --git a/ndk/platforms/android-20/arch-arm/include/asm/kvm_para.h b/ndk/platforms/android-L/arch-arm/include/asm/kvm_para.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm/include/asm/kvm_para.h
rename to ndk/platforms/android-L/arch-arm/include/asm/kvm_para.h
diff --git a/ndk/platforms/android-20/arch-arm/include/asm/mman.h b/ndk/platforms/android-L/arch-arm/include/asm/mman.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm/include/asm/mman.h
rename to ndk/platforms/android-L/arch-arm/include/asm/mman.h
diff --git a/ndk/platforms/android-20/arch-arm/include/asm/msgbuf.h b/ndk/platforms/android-L/arch-arm/include/asm/msgbuf.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm/include/asm/msgbuf.h
rename to ndk/platforms/android-L/arch-arm/include/asm/msgbuf.h
diff --git a/ndk/platforms/android-20/arch-arm/include/asm/param.h b/ndk/platforms/android-L/arch-arm/include/asm/param.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm/include/asm/param.h
rename to ndk/platforms/android-L/arch-arm/include/asm/param.h
diff --git a/ndk/platforms/android-20/arch-arm/include/asm/poll.h b/ndk/platforms/android-L/arch-arm/include/asm/poll.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm/include/asm/poll.h
rename to ndk/platforms/android-L/arch-arm/include/asm/poll.h
diff --git a/ndk/platforms/android-20/arch-arm/include/asm/posix_types.h b/ndk/platforms/android-L/arch-arm/include/asm/posix_types.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm/include/asm/posix_types.h
rename to ndk/platforms/android-L/arch-arm/include/asm/posix_types.h
diff --git a/ndk/platforms/android-20/arch-arm/include/asm/ptrace.h b/ndk/platforms/android-L/arch-arm/include/asm/ptrace.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm/include/asm/ptrace.h
rename to ndk/platforms/android-L/arch-arm/include/asm/ptrace.h
diff --git a/ndk/platforms/android-20/arch-arm/include/asm/resource.h b/ndk/platforms/android-L/arch-arm/include/asm/resource.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm/include/asm/resource.h
rename to ndk/platforms/android-L/arch-arm/include/asm/resource.h
diff --git a/ndk/platforms/android-20/arch-arm/include/asm/sembuf.h b/ndk/platforms/android-L/arch-arm/include/asm/sembuf.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm/include/asm/sembuf.h
rename to ndk/platforms/android-L/arch-arm/include/asm/sembuf.h
diff --git a/ndk/platforms/android-20/arch-arm/include/asm/setup.h b/ndk/platforms/android-L/arch-arm/include/asm/setup.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm/include/asm/setup.h
rename to ndk/platforms/android-L/arch-arm/include/asm/setup.h
diff --git a/ndk/platforms/android-20/arch-arm/include/asm/shmbuf.h b/ndk/platforms/android-L/arch-arm/include/asm/shmbuf.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm/include/asm/shmbuf.h
rename to ndk/platforms/android-L/arch-arm/include/asm/shmbuf.h
diff --git a/ndk/platforms/android-20/arch-arm/include/asm/sigcontext.h b/ndk/platforms/android-L/arch-arm/include/asm/sigcontext.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm/include/asm/sigcontext.h
rename to ndk/platforms/android-L/arch-arm/include/asm/sigcontext.h
diff --git a/ndk/platforms/android-20/arch-arm/include/asm/siginfo.h b/ndk/platforms/android-L/arch-arm/include/asm/siginfo.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm/include/asm/siginfo.h
rename to ndk/platforms/android-L/arch-arm/include/asm/siginfo.h
diff --git a/ndk/platforms/android-20/arch-arm/include/asm/signal.h b/ndk/platforms/android-L/arch-arm/include/asm/signal.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm/include/asm/signal.h
rename to ndk/platforms/android-L/arch-arm/include/asm/signal.h
diff --git a/ndk/platforms/android-20/arch-arm/include/asm/socket.h b/ndk/platforms/android-L/arch-arm/include/asm/socket.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm/include/asm/socket.h
rename to ndk/platforms/android-L/arch-arm/include/asm/socket.h
diff --git a/ndk/platforms/android-20/arch-arm/include/asm/sockios.h b/ndk/platforms/android-L/arch-arm/include/asm/sockios.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm/include/asm/sockios.h
rename to ndk/platforms/android-L/arch-arm/include/asm/sockios.h
diff --git a/ndk/platforms/android-20/arch-arm/include/asm/stat.h b/ndk/platforms/android-L/arch-arm/include/asm/stat.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm/include/asm/stat.h
rename to ndk/platforms/android-L/arch-arm/include/asm/stat.h
diff --git a/ndk/platforms/android-20/arch-arm/include/asm/statfs.h b/ndk/platforms/android-L/arch-arm/include/asm/statfs.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm/include/asm/statfs.h
rename to ndk/platforms/android-L/arch-arm/include/asm/statfs.h
diff --git a/ndk/platforms/android-20/arch-arm/include/asm/swab.h b/ndk/platforms/android-L/arch-arm/include/asm/swab.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm/include/asm/swab.h
rename to ndk/platforms/android-L/arch-arm/include/asm/swab.h
diff --git a/ndk/platforms/android-20/arch-arm/include/asm/termbits.h b/ndk/platforms/android-L/arch-arm/include/asm/termbits.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm/include/asm/termbits.h
rename to ndk/platforms/android-L/arch-arm/include/asm/termbits.h
diff --git a/ndk/platforms/android-20/arch-arm/include/asm/termios.h b/ndk/platforms/android-L/arch-arm/include/asm/termios.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm/include/asm/termios.h
rename to ndk/platforms/android-L/arch-arm/include/asm/termios.h
diff --git a/ndk/platforms/android-20/arch-arm/include/asm/types.h b/ndk/platforms/android-L/arch-arm/include/asm/types.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm/include/asm/types.h
rename to ndk/platforms/android-L/arch-arm/include/asm/types.h
diff --git a/ndk/platforms/android-20/arch-arm/include/asm/unistd.h b/ndk/platforms/android-L/arch-arm/include/asm/unistd.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm/include/asm/unistd.h
rename to ndk/platforms/android-L/arch-arm/include/asm/unistd.h
diff --git a/ndk/platforms/android-20/arch-arm/include/machine/asm.h b/ndk/platforms/android-L/arch-arm/include/machine/asm.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm/include/machine/asm.h
rename to ndk/platforms/android-L/arch-arm/include/machine/asm.h
diff --git a/ndk/platforms/android-20/arch-arm/include/machine/cpu-features.h b/ndk/platforms/android-L/arch-arm/include/machine/cpu-features.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm/include/machine/cpu-features.h
rename to ndk/platforms/android-L/arch-arm/include/machine/cpu-features.h
diff --git a/ndk/platforms/android-20/arch-arm/include/machine/elf_machdep.h b/ndk/platforms/android-L/arch-arm/include/machine/elf_machdep.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm/include/machine/elf_machdep.h
rename to ndk/platforms/android-L/arch-arm/include/machine/elf_machdep.h
diff --git a/ndk/platforms/android-L/arch-arm/include/machine/endian.h b/ndk/platforms/android-L/arch-arm/include/machine/endian.h
new file mode 100644
index 0000000..f63e7b7
--- /dev/null
+++ b/ndk/platforms/android-L/arch-arm/include/machine/endian.h
@@ -0,0 +1,89 @@
+/*	$OpenBSD: endian.h,v 1.3 2005/12/13 00:35:23 millert Exp $	*/
+
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#ifndef _ARM_ENDIAN_H_
+#define _ARM_ENDIAN_H_
+
+#ifdef __GNUC__
+
+/*
+ * REV and REV16 weren't available on ARM5 or ARM4.
+ * We don't include <machine/cpu-features.h> because it pollutes the
+ * namespace with macros like PLD.
+ */
+#if !defined __ARM_ARCH_5__ && !defined __ARM_ARCH_5T__ && \
+    !defined __ARM_ARCH_5TE__ && !defined __ARM_ARCH_5TEJ__ && \
+    !defined __ARM_ARCH_4T__ && !defined __ARM_ARCH_4__
+
+/* According to RealView Assembler User's Guide, REV and REV16 are available
+ * in Thumb code and 16-bit instructions when used in Thumb-2 code.
+ *
+ * REV Rd, Rm
+ *   Rd and Rm must both be Lo registers.
+ *
+ * REV16 Rd, Rm
+ *   Rd and Rm must both be Lo registers.
+ *
+ * The +l constraint takes care of this without constraining us in ARM mode.
+ */
+#define __swap16md(x) ({                                        \
+    register u_int16_t _x = (x);                                \
+    __asm__ __volatile__("rev16 %0, %0" : "+l" (_x));           \
+    _x;                                                         \
+})
+
+#define __swap32md(x) ({                                        \
+    register u_int32_t _x = (x);                                \
+    __asm__ __volatile__("rev %0, %0" : "+l" (_x));             \
+    _x;                                                         \
+})
+
+#define __swap64md(x) ({                                        \
+    u_int64_t _swap64md_x = (x);                                \
+    (u_int64_t) __swap32md(_swap64md_x >> 32) |                 \
+        (u_int64_t) __swap32md(_swap64md_x & 0xffffffff) << 32; \
+})
+
+/* Tell sys/endian.h we have MD variants of the swap macros.  */
+#define MD_SWAP
+
+#endif  /* __ARM_ARCH__ */
+#endif  /* __GNUC__ */
+
+#if defined(__ARMEB__)
+#define _BYTE_ORDER _BIG_ENDIAN
+#else
+#define _BYTE_ORDER _LITTLE_ENDIAN
+#endif
+#define __STRICT_ALIGNMENT
+#include <sys/types.h>
+#include <sys/endian.h>
+
+#endif  /* !_ARM_ENDIAN_H_ */
diff --git a/ndk/platforms/android-20/arch-arm/include/machine/exec.h b/ndk/platforms/android-L/arch-arm/include/machine/exec.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm/include/machine/exec.h
rename to ndk/platforms/android-L/arch-arm/include/machine/exec.h
diff --git a/ndk/platforms/android-L/arch-arm/include/machine/fenv.h b/ndk/platforms/android-L/arch-arm/include/machine/fenv.h
new file mode 100644
index 0000000..0e483e3
--- /dev/null
+++ b/ndk/platforms/android-L/arch-arm/include/machine/fenv.h
@@ -0,0 +1,63 @@
+/*-
+ * Copyright (c) 2004-2005 David Schultz <das@FreeBSD.ORG>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD: src/lib/msun/arm/fenv.h,v 1.5 2005/03/16 19:03:45 das Exp $
+ */
+
+/*
+ * Rewritten for Android.
+ *
+ * The ARM FPSCR is described here:
+ * http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0344b/Chdfafia.html
+ */
+
+#ifndef _ARM_FENV_H_
+#define _ARM_FENV_H_
+
+#include <sys/types.h>
+
+__BEGIN_DECLS
+
+typedef __uint32_t fenv_t;
+typedef __uint32_t fexcept_t;
+
+/* Exception flags. */
+#define FE_INVALID    0x01
+#define FE_DIVBYZERO  0x02
+#define FE_OVERFLOW   0x04
+#define FE_UNDERFLOW  0x08
+#define FE_INEXACT    0x10
+#define FE_ALL_EXCEPT (FE_DIVBYZERO | FE_INEXACT | FE_INVALID | \
+                       FE_OVERFLOW | FE_UNDERFLOW)
+
+/* Rounding modes. */
+#define FE_TONEAREST  0x0
+#define FE_UPWARD     0x1
+#define FE_DOWNWARD   0x2
+#define FE_TOWARDZERO 0x3
+
+__END_DECLS
+
+#endif /* !_ARM_FENV_H_ */
diff --git a/ndk/platforms/android-20/arch-arm/include/machine/setjmp.h b/ndk/platforms/android-L/arch-arm/include/machine/setjmp.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm/include/machine/setjmp.h
rename to ndk/platforms/android-L/arch-arm/include/machine/setjmp.h
diff --git a/ndk/platforms/android-L/arch-arm/lib/libc.a b/ndk/platforms/android-L/arch-arm/lib/libc.a
new file mode 100644
index 0000000..b05b703
--- /dev/null
+++ b/ndk/platforms/android-L/arch-arm/lib/libc.a
Binary files differ
diff --git a/ndk/platforms/android-L/arch-arm/lib/libm.a b/ndk/platforms/android-L/arch-arm/lib/libm.a
new file mode 100644
index 0000000..e6658b3
--- /dev/null
+++ b/ndk/platforms/android-L/arch-arm/lib/libm.a
Binary files differ
diff --git a/ndk/platforms/android-L/arch-arm/lib/libstdc++.a b/ndk/platforms/android-L/arch-arm/lib/libstdc++.a
new file mode 100644
index 0000000..c166534
--- /dev/null
+++ b/ndk/platforms/android-L/arch-arm/lib/libstdc++.a
Binary files differ
diff --git a/ndk/platforms/android-20/arch-arm/lib/libz.a b/ndk/platforms/android-L/arch-arm/lib/libz.a
similarity index 100%
rename from ndk/platforms/android-20/arch-arm/lib/libz.a
rename to ndk/platforms/android-L/arch-arm/lib/libz.a
Binary files differ
diff --git a/ndk/platforms/android-20/arch-arm/symbols/libOpenMAXAL.so.functions.txt b/ndk/platforms/android-L/arch-arm/symbols/libOpenMAXAL.so.functions.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-arm/symbols/libOpenMAXAL.so.functions.txt
rename to ndk/platforms/android-L/arch-arm/symbols/libOpenMAXAL.so.functions.txt
diff --git a/ndk/platforms/android-20/arch-arm/symbols/libOpenMAXAL.so.variables.txt b/ndk/platforms/android-L/arch-arm/symbols/libOpenMAXAL.so.variables.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-arm/symbols/libOpenMAXAL.so.variables.txt
rename to ndk/platforms/android-L/arch-arm/symbols/libOpenMAXAL.so.variables.txt
diff --git a/ndk/platforms/android-20/arch-arm/symbols/libOpenSLES.so.functions.txt b/ndk/platforms/android-L/arch-arm/symbols/libOpenSLES.so.functions.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-arm/symbols/libOpenSLES.so.functions.txt
rename to ndk/platforms/android-L/arch-arm/symbols/libOpenSLES.so.functions.txt
diff --git a/ndk/platforms/android-20/arch-arm/symbols/libOpenSLES.so.variables.txt b/ndk/platforms/android-L/arch-arm/symbols/libOpenSLES.so.variables.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-arm/symbols/libOpenSLES.so.variables.txt
rename to ndk/platforms/android-L/arch-arm/symbols/libOpenSLES.so.variables.txt
diff --git a/ndk/platforms/android-20/arch-arm/symbols/libandroid.so.functions.txt b/ndk/platforms/android-L/arch-arm/symbols/libandroid.so.functions.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-arm/symbols/libandroid.so.functions.txt
rename to ndk/platforms/android-L/arch-arm/symbols/libandroid.so.functions.txt
diff --git a/ndk/platforms/android-20/arch-arm/symbols/libandroid.so.variables.txt b/ndk/platforms/android-L/arch-arm/symbols/libandroid.so.variables.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-arm/symbols/libandroid.so.variables.txt
rename to ndk/platforms/android-L/arch-arm/symbols/libandroid.so.variables.txt
diff --git a/ndk/platforms/android-L/arch-arm/symbols/libc.so.functions.txt b/ndk/platforms/android-L/arch-arm/symbols/libc.so.functions.txt
new file mode 100644
index 0000000..5c69eb5
--- /dev/null
+++ b/ndk/platforms/android-L/arch-arm/symbols/libc.so.functions.txt
@@ -0,0 +1,1239 @@
+SHA1Final
+SHA1Init
+SHA1Transform
+SHA1Update
+_Exit
+_Unwind_Backtrace
+_Unwind_Complete
+_Unwind_DeleteException
+_Unwind_ForcedUnwind
+_Unwind_GetCFA
+_Unwind_GetDataRelBase
+_Unwind_GetLanguageSpecificData
+_Unwind_GetRegionStart
+_Unwind_GetTextRelBase
+_Unwind_RaiseException
+_Unwind_Resume
+_Unwind_Resume_or_Rethrow
+_Unwind_VRS_Get
+_Unwind_VRS_Pop
+_Unwind_VRS_Set
+_ZdaPv
+_ZdaPvRKSt9nothrow_t
+_ZdlPv
+_ZdlPvRKSt9nothrow_t
+_Znaj
+_ZnajRKSt9nothrow_t
+_Znwj
+_ZnwjRKSt9nothrow_t
+__FD_CLR_chk
+__FD_ISSET_chk
+__FD_SET_chk
+___Unwind_Backtrace
+___Unwind_ForcedUnwind
+___Unwind_RaiseException
+___Unwind_Resume
+___Unwind_Resume_or_Rethrow
+__accept4
+__adddf3
+__addsf3
+__aeabi_atexit
+__aeabi_cdcmpeq
+__aeabi_cdcmple
+__aeabi_cdrcmple
+__aeabi_d2f
+__aeabi_d2iz
+__aeabi_dadd
+__aeabi_dcmpeq
+__aeabi_dcmpge
+__aeabi_dcmpgt
+__aeabi_dcmple
+__aeabi_dcmplt
+__aeabi_dcmpun
+__aeabi_ddiv
+__aeabi_dmul
+__aeabi_drsub
+__aeabi_dsub
+__aeabi_f2d
+__aeabi_f2iz
+__aeabi_f2uiz
+__aeabi_fadd
+__aeabi_fcmpun
+__aeabi_fdiv
+__aeabi_fmul
+__aeabi_frsub
+__aeabi_fsub
+__aeabi_i2d
+__aeabi_i2f
+__aeabi_idiv
+__aeabi_idiv0
+__aeabi_idivmod
+__aeabi_l2d
+__aeabi_l2f
+__aeabi_lasr
+__aeabi_ldiv0
+__aeabi_ldivmod
+__aeabi_llsl
+__aeabi_llsr
+__aeabi_lmul
+__aeabi_memclr
+__aeabi_memclr4
+__aeabi_memclr8
+__aeabi_memcpy
+__aeabi_memcpy4
+__aeabi_memcpy8
+__aeabi_memmove
+__aeabi_memmove4
+__aeabi_memmove8
+__aeabi_memset
+__aeabi_memset4
+__aeabi_memset8
+__aeabi_ui2d
+__aeabi_ui2f
+__aeabi_uidiv
+__aeabi_uidivmod
+__aeabi_ul2d
+__aeabi_ul2f
+__aeabi_uldivmod
+__aeabi_unwind_cpp_pr0
+__aeabi_unwind_cpp_pr1
+__aeabi_unwind_cpp_pr2
+__android_set_abort_message
+__ashldi3
+__ashrdi3
+__assert
+__assert2
+__atomic_cmpxchg
+__atomic_dec
+__atomic_inc
+__atomic_swap
+__b64_ntop
+__b64_pton
+__bionic_name_mem
+__brk
+__cmpdf2
+__connect
+__cxa_atexit
+__cxa_finalize
+__cxa_guard_abort
+__cxa_guard_acquire
+__cxa_guard_release
+__cxa_pure_virtual
+__divdf3
+__divdi3
+__divsf3
+__divsi3
+__dn_comp
+__dn_count_labels
+__dn_skipname
+__epoll_pwait
+__eqdf2
+__errno
+__exit
+__extendsfdf2
+__fcntl64
+__fgets_chk
+__findenv
+__fixdfsi
+__fixsfsi
+__fixunssfsi
+__floatdidf
+__floatdisf
+__floatsidf
+__floatsisf
+__floatundidf
+__floatundisf
+__floatunsidf
+__floatunsisf
+__fp_nquery
+__fp_query
+__fpclassify
+__fpclassifyd
+__fpclassifyf
+__fpclassifyl
+__fstatfs64
+__futex_wait
+__futex_wake
+__gedf2
+__get_h_errno
+__get_tls
+__getcpu
+__getcwd
+__getdents64
+__getpriority
+__gnu_Unwind_Backtrace
+__gnu_Unwind_Find_exidx
+__gnu_Unwind_ForcedUnwind
+__gnu_Unwind_RaiseException
+__gnu_Unwind_Restore_VFP
+__gnu_Unwind_Restore_VFP_D
+__gnu_Unwind_Restore_VFP_D_16_to_31
+__gnu_Unwind_Restore_WMMXC
+__gnu_Unwind_Restore_WMMXD
+__gnu_Unwind_Resume
+__gnu_Unwind_Resume_or_Rethrow
+__gnu_Unwind_Save_VFP
+__gnu_Unwind_Save_VFP_D
+__gnu_Unwind_Save_VFP_D_16_to_31
+__gnu_Unwind_Save_WMMXC
+__gnu_Unwind_Save_WMMXD
+__gnu_ldivmod_helper
+__gnu_uldivmod_helper
+__gnu_unwind_execute
+__gnu_unwind_frame
+__gtdf2
+__hostalias
+__ioctl
+__isfinite
+__isfinitef
+__isfinitel
+__isinf
+__isinff
+__isinfl
+__isnan
+__isnanf
+__isnanl
+__isnormal
+__isnormalf
+__isnormall
+__ledf2
+__libc_current_sigrtmax
+__libc_current_sigrtmin
+__libc_init
+__llseek
+__loc_aton
+__loc_ntoa
+__lshrdi3
+__ltdf2
+__memcpy_chk
+__memmove_chk
+__memset_chk
+__mmap2
+__muldf3
+__muldi3
+__mulsf3
+__nedf2
+__open
+__open_2
+__openat
+__openat_2
+__p_cdname
+__p_cdnname
+__p_class
+__p_fqname
+__p_fqnname
+__p_option
+__p_query
+__p_rcode
+__p_secstodate
+__p_time
+__p_type
+__popcountsi2
+__ppoll
+__pselect6
+__pthread_cleanup_pop
+__pthread_cleanup_push
+__pthread_gettid
+__ptrace
+__putlong
+__putshort
+__read_chk
+__reboot
+__recvfrom_chk
+__res_close
+__res_dnok
+__res_hnok
+__res_hostalias
+__res_isourserver
+__res_mailok
+__res_nameinquery
+__res_nclose
+__res_ninit
+__res_nmkquery
+__res_nquery
+__res_nquerydomain
+__res_nsearch
+__res_nsend
+__res_ownok
+__res_queriesmatch
+__res_querydomain
+__res_randomid
+__res_send
+__res_send_setqhook
+__res_send_setrhook
+__restore_core_regs
+__rt_sigaction
+__rt_sigpending
+__rt_sigprocmask
+__rt_sigsuspend
+__rt_sigtimedwait
+__sched_cpualloc
+__sched_cpucount
+__sched_cpufree
+__sched_getaffinity
+__set_errno
+__set_tid_address
+__set_tls
+__sigaction
+__signalfd4
+__snprintf_chk
+__socket
+__sprintf_chk
+__srefill
+__srget
+__stack_chk_fail
+__statfs64
+__stpcpy_chk
+__stpncpy_chk
+__stpncpy_chk2
+__strcat_chk
+__strchr_chk
+__strcpy_chk
+__strlcat_chk
+__strlcpy_chk
+__strlen_chk
+__strncat_chk
+__strncpy_chk
+__strncpy_chk2
+__strrchr_chk
+__subdf3
+__subsf3
+__swbuf
+__sym_ntop
+__sym_ntos
+__sym_ston
+__system_properties_init
+__system_property_add
+__system_property_area_init
+__system_property_find
+__system_property_find_nth
+__system_property_foreach
+__system_property_get
+__system_property_read
+__system_property_serial
+__system_property_set
+__system_property_set_filename
+__system_property_update
+__system_property_wait_any
+__timer_create
+__timer_delete
+__timer_getoverrun
+__timer_gettime
+__timer_settime
+__truncdfsf2
+__udivdi3
+__udivsi3
+__umask_chk
+__unorddf2
+__unordsf2
+__vsnprintf_chk
+__vsprintf_chk
+__wait4
+__waitid
+_exit
+_getlong
+_getshort
+_longjmp
+_resolv_flush_cache_for_net
+_resolv_set_nameservers_for_net
+_setjmp
+_thread_created_hook
+_tolower
+_toupper
+abort
+abs
+accept
+accept4
+access
+acct
+alarm
+alphasort
+alphasort64
+android_getaddrinfofornet
+android_gethostbyaddrfornet
+android_gethostbynamefornet
+arc4random
+arc4random_addrandom
+arc4random_buf
+arc4random_stir
+arc4random_uniform
+asctime
+asctime64
+asctime64_r
+asctime_r
+asprintf
+at_quick_exit
+atexit
+atof
+atoi
+atol
+atoll
+basename
+basename_r
+bcopy
+bind
+bindresvport
+brk
+bsd_signal
+bsearch
+btowc
+bzero
+c16rtomb
+c32rtomb
+cacheflush
+calloc
+capget
+capset
+cfgetispeed
+cfgetospeed
+cfmakeraw
+cfsetispeed
+cfsetospeed
+cfsetspeed
+chdir
+chmod
+chown
+chroot
+clearenv
+clearerr
+clock
+clock_getres
+clock_gettime
+clock_nanosleep
+clock_settime
+clone
+close
+closedir
+closelog
+closelog_r
+cmsg_nxthdr
+connect
+creat
+creat64
+ctime
+ctime64
+ctime64_r
+ctime_r
+daemon
+delete_module
+difftime
+dirfd
+dirname
+dirname_r
+div
+dlmalloc_inspect_all
+dlmalloc_trim
+dn_expand
+dprintf
+drand48
+dup
+dup2
+dup3
+duplocale
+endmntent
+endpwent
+endservent
+endusershell
+endutent
+epoll_create
+epoll_create1
+epoll_ctl
+epoll_pwait
+epoll_wait
+erand48
+err
+errx
+ether_aton
+ether_aton_r
+ether_ntoa
+ether_ntoa_r
+eventfd
+eventfd_read
+eventfd_write
+execl
+execle
+execlp
+execv
+execve
+execvp
+execvpe
+exit
+faccessat
+fallocate
+fallocate64
+fchdir
+fchmod
+fchmodat
+fchown
+fchownat
+fclose
+fcntl
+fdatasync
+fdopen
+fdopendir
+fdprintf
+feof
+ferror
+fflush
+ffs
+fgetc
+fgetln
+fgetpos
+fgets
+fgetwc
+fgetws
+fgetxattr
+fileno
+flistxattr
+flock
+flockfile
+fnmatch
+fopen
+fork
+fpathconf
+fprintf
+fpurge
+fputc
+fputs
+fputwc
+fputws
+fread
+free
+freeaddrinfo
+freelocale
+fremovexattr
+freopen
+fscanf
+fseek
+fseeko
+fsetpos
+fsetxattr
+fstat
+fstat64
+fstatat
+fstatat64
+fstatfs
+fstatfs64
+fstatvfs
+fstatvfs64
+fsync
+ftell
+ftello
+ftime
+ftok
+ftruncate
+ftruncate64
+ftrylockfile
+fts_children
+fts_close
+fts_open
+fts_read
+fts_set
+ftw
+ftw64
+funlockfile
+funopen
+futimens
+fwide
+fwprintf
+fwrite
+fwscanf
+gai_strerror
+get_malloc_leak_info
+getaddrinfo
+getauxval
+getc
+getc_unlocked
+getchar
+getchar_unlocked
+getcwd
+getdelim
+getdents
+getdtablesize
+getegid
+getenv
+geteuid
+getgid
+getgrgid
+getgrnam
+getgrouplist
+getgroups
+gethostbyaddr
+gethostbyname
+gethostbyname2
+gethostbyname_r
+gethostent
+gethostname
+getitimer
+getline
+getlogin
+getmntent
+getmntent_r
+getnameinfo
+getnetbyaddr
+getnetbyname
+getopt
+getopt_long
+getopt_long_only
+getpagesize
+getpeername
+getpgid
+getpgrp
+getpid
+getppid
+getpriority
+getprogname
+getprotobyname
+getprotobynumber
+getpt
+getpwnam
+getpwnam_r
+getpwuid
+getpwuid_r
+getresgid
+getresuid
+getrlimit
+getrlimit64
+getrusage
+gets
+getservbyname
+getservbyport
+getservent
+getsid
+getsockname
+getsockopt
+gettid
+gettimeofday
+getuid
+getusershell
+getutent
+getwc
+getwchar
+getxattr
+gmtime
+gmtime64
+gmtime64_r
+gmtime_r
+herror
+hstrerror
+htonl
+htons
+if_indextoname
+if_nametoindex
+imaxabs
+imaxdiv
+index
+inet_addr
+inet_aton
+inet_lnaof
+inet_makeaddr
+inet_netof
+inet_network
+inet_ntoa
+inet_ntop
+inet_pton
+init_module
+initgroups
+initstate
+inotify_add_watch
+inotify_init
+inotify_init1
+inotify_rm_watch
+ioctl
+isalnum
+isalpha
+isascii
+isatty
+isblank
+iscntrl
+isdigit
+isfinite
+isfinitef
+isfinitel
+isgraph
+isinf
+isinff
+isinfl
+islower
+isnan
+isnanf
+isnanl
+isnormal
+isnormalf
+isnormall
+isprint
+ispunct
+issetugid
+isspace
+isupper
+iswalnum
+iswalpha
+iswblank
+iswcntrl
+iswctype
+iswdigit
+iswgraph
+iswlower
+iswprint
+iswpunct
+iswspace
+iswupper
+iswxdigit
+isxdigit
+jrand48
+kill
+killpg
+klogctl
+labs
+lchown
+ldexp
+ldiv
+lfind
+lgetxattr
+link
+linkat
+listen
+listxattr
+llabs
+lldiv
+llistxattr
+localeconv
+localtime
+localtime64
+localtime64_r
+localtime_r
+localtime_tz
+longjmp
+lrand48
+lremovexattr
+lsearch
+lseek
+lseek64
+lsetxattr
+lstat
+lstat64
+madvise
+mallinfo
+malloc
+malloc_usable_size
+mbrlen
+mbrtoc16
+mbrtoc32
+mbrtowc
+mbsinit
+mbsnrtowcs
+mbsrtowcs
+mbstowcs
+mbtowc
+memalign
+memccpy
+memchr
+memcmp
+memcpy
+memmem
+memmove
+memrchr
+memset
+memswap
+mincore
+mkdir
+mkdirat
+mkdtemp
+mkfifo
+mknod
+mknodat
+mkstemp
+mkstemp64
+mkstemps
+mktemp
+mktime
+mktime64
+mktime_tz
+mlock
+mlockall
+mmap
+mmap64
+mount
+mprotect
+mrand48
+mremap
+msync
+munlock
+munlockall
+munmap
+nanosleep
+newlocale
+nftw
+nftw64
+nice
+nrand48
+ntohl
+ntohs
+open
+open64
+openat
+openat64
+opendir
+openlog
+openlog_r
+pathconf
+pause
+pclose
+perror
+personality
+pipe
+pipe2
+poll
+popen
+posix_fallocate
+posix_fallocate64
+posix_memalign
+ppoll
+prctl
+pread
+pread64
+printf
+prlimit64
+pselect
+psiginfo
+psignal
+pthread_atfork
+pthread_attr_destroy
+pthread_attr_getdetachstate
+pthread_attr_getguardsize
+pthread_attr_getschedparam
+pthread_attr_getschedpolicy
+pthread_attr_getscope
+pthread_attr_getstack
+pthread_attr_getstackaddr
+pthread_attr_getstacksize
+pthread_attr_init
+pthread_attr_setdetachstate
+pthread_attr_setguardsize
+pthread_attr_setschedparam
+pthread_attr_setschedpolicy
+pthread_attr_setscope
+pthread_attr_setstack
+pthread_attr_setstackaddr
+pthread_attr_setstacksize
+pthread_cond_broadcast
+pthread_cond_destroy
+pthread_cond_init
+pthread_cond_signal
+pthread_cond_timedwait
+pthread_cond_timedwait_monotonic
+pthread_cond_timedwait_monotonic_np
+pthread_cond_timedwait_relative_np
+pthread_cond_timeout_np
+pthread_cond_wait
+pthread_condattr_destroy
+pthread_condattr_getclock
+pthread_condattr_getpshared
+pthread_condattr_init
+pthread_condattr_setclock
+pthread_condattr_setpshared
+pthread_create
+pthread_detach
+pthread_equal
+pthread_exit
+pthread_getattr_np
+pthread_getcpuclockid
+pthread_getschedparam
+pthread_getspecific
+pthread_join
+pthread_key_create
+pthread_key_delete
+pthread_kill
+pthread_mutex_destroy
+pthread_mutex_init
+pthread_mutex_lock
+pthread_mutex_lock_timeout_np
+pthread_mutex_timedlock
+pthread_mutex_trylock
+pthread_mutex_unlock
+pthread_mutexattr_destroy
+pthread_mutexattr_getpshared
+pthread_mutexattr_gettype
+pthread_mutexattr_init
+pthread_mutexattr_setpshared
+pthread_mutexattr_settype
+pthread_once
+pthread_rwlock_destroy
+pthread_rwlock_init
+pthread_rwlock_rdlock
+pthread_rwlock_timedrdlock
+pthread_rwlock_timedwrlock
+pthread_rwlock_tryrdlock
+pthread_rwlock_trywrlock
+pthread_rwlock_unlock
+pthread_rwlock_wrlock
+pthread_rwlockattr_destroy
+pthread_rwlockattr_getpshared
+pthread_rwlockattr_init
+pthread_rwlockattr_setpshared
+pthread_self
+pthread_setname_np
+pthread_setschedparam
+pthread_setspecific
+pthread_sigmask
+ptrace
+ptsname
+ptsname_r
+putc
+putc_unlocked
+putchar
+putchar_unlocked
+putenv
+puts
+pututline
+putw
+putwc
+putwchar
+pvalloc
+pwrite
+pwrite64
+qsort
+quick_exit
+raise
+rand
+rand_r
+random
+read
+readahead
+readdir
+readdir64
+readdir64_r
+readdir_r
+readlink
+readlinkat
+readv
+realloc
+realpath
+reboot
+recv
+recvfrom
+recvmmsg
+recvmsg
+regcomp
+regerror
+regexec
+regfree
+remove
+removexattr
+rename
+renameat
+res_init
+res_mkquery
+res_query
+res_search
+restore_core_regs
+rewind
+rewinddir
+rmdir
+sbrk
+scandir
+scandir64
+scanf
+sched_get_priority_max
+sched_get_priority_min
+sched_getaffinity
+sched_getcpu
+sched_getparam
+sched_getscheduler
+sched_rr_get_interval
+sched_setaffinity
+sched_setparam
+sched_setscheduler
+sched_yield
+seed48
+select
+sem_close
+sem_destroy
+sem_getvalue
+sem_init
+sem_open
+sem_post
+sem_timedwait
+sem_trywait
+sem_unlink
+sem_wait
+send
+sendfile
+sendfile64
+sendmmsg
+sendmsg
+sendto
+setbuf
+setbuffer
+setegid
+setenv
+seteuid
+setgid
+setgroups
+setitimer
+setjmp
+setlinebuf
+setlocale
+setlogmask
+setlogmask_r
+setmntent
+setns
+setpgid
+setpgrp
+setpriority
+setprogname
+setregid
+setresgid
+setresuid
+setreuid
+setrlimit
+setrlimit64
+setservent
+setsid
+setsockopt
+setstate
+settimeofday
+setuid
+setusershell
+setutent
+setvbuf
+setxattr
+shutdown
+sigaction
+sigaddset
+sigaltstack
+sigblock
+sigdelset
+sigemptyset
+sigfillset
+siginterrupt
+sigismember
+siglongjmp
+signal
+signalfd
+sigpending
+sigprocmask
+sigsetjmp
+sigsetmask
+sigsuspend
+sigwait
+sleep
+snprintf
+socket
+socketpair
+sprintf
+srand
+srand48
+srandom
+sscanf
+stat
+stat64
+statfs
+statfs64
+statvfs
+statvfs64
+stpcpy
+stpncpy
+strcasecmp
+strcasestr
+strcat
+strchr
+strcmp
+strcoll
+strcpy
+strcspn
+strdup
+strerror
+strerror_r
+strftime
+strftime_tz
+strlcat
+strlcpy
+strlen
+strncasecmp
+strncat
+strncmp
+strncpy
+strndup
+strnlen
+strntoimax
+strntoumax
+strpbrk
+strptime
+strrchr
+strsep
+strsignal
+strspn
+strstr
+strtod
+strtof
+strtoimax
+strtok
+strtok_r
+strtol
+strtold
+strtoll
+strtoq
+strtotimeval
+strtoul
+strtoull
+strtoumax
+strtouq
+strxfrm
+swapoff
+swapon
+swprintf
+swscanf
+symlink
+symlinkat
+sync
+syscall
+sysconf
+sysinfo
+syslog
+syslog_r
+system
+sysv_signal
+tcdrain
+tcflow
+tcflush
+tcgetattr
+tcgetpgrp
+tcgetsid
+tcsendbreak
+tcsetattr
+tcsetpgrp
+tdelete
+tdestroy
+tempnam
+tfind
+tgkill
+time
+timegm
+timegm64
+timelocal
+timelocal64
+timer_create
+timer_delete
+timer_getoverrun
+timer_gettime
+timer_settime
+timerfd_create
+timerfd_gettime
+timerfd_settime
+times
+tkill
+tmpfile
+tmpnam
+toascii
+tolower
+toupper
+towlower
+towupper
+truncate
+truncate64
+tsearch
+ttyname
+ttyname_r
+tzset
+umask
+umount
+umount2
+uname
+ungetc
+ungetwc
+unlink
+unlinkat
+unlockpt
+unsetenv
+unshare
+uselocale
+usleep
+utime
+utimensat
+utimes
+utmpname
+valloc
+vasprintf
+vdprintf
+verr
+verrx
+vfdprintf
+vfork
+vfprintf
+vfscanf
+vfwprintf
+vfwscanf
+vprintf
+vscanf
+vsnprintf
+vsprintf
+vsscanf
+vswprintf
+vswscanf
+vsyslog
+vsyslog_r
+vwarn
+vwarnx
+vwprintf
+vwscanf
+wait
+wait3
+wait4
+waitid
+waitpid
+warn
+warnx
+wcpcpy
+wcpncpy
+wcrtomb
+wcscasecmp
+wcscat
+wcschr
+wcscmp
+wcscoll
+wcscpy
+wcscspn
+wcsdup
+wcsftime
+wcslcat
+wcslcpy
+wcslen
+wcsncasecmp
+wcsncat
+wcsncmp
+wcsncpy
+wcsnlen
+wcsnrtombs
+wcspbrk
+wcsrchr
+wcsrtombs
+wcsspn
+wcsstr
+wcstod
+wcstof
+wcstoimax
+wcstok
+wcstol
+wcstold
+wcstoll
+wcstombs
+wcstoul
+wcstoull
+wcstoumax
+wcswcs
+wcswidth
+wcsxfrm
+wctob
+wctomb
+wctype
+wcwidth
+wmemchr
+wmemcmp
+wmemcpy
+wmemmove
+wmemset
+wprintf
+write
+writev
+wscanf
diff --git a/ndk/platforms/android-L/arch-arm/symbols/libc.so.variables.txt b/ndk/platforms/android-L/arch-arm/symbols/libc.so.variables.txt
new file mode 100644
index 0000000..fcefcee
--- /dev/null
+++ b/ndk/platforms/android-L/arch-arm/symbols/libc.so.variables.txt
@@ -0,0 +1,32 @@
+_C_ctype_
+_C_tolower_
+_C_toupper_
+_ZSt7nothrow
+__bionic_brk
+__bionic_libgcc_compat_symbols
+__dso_handle
+__isthreaded
+__libc_malloc_dispatch
+__p_class_syms
+__p_type_syms
+__page_shift
+__page_size
+__popcount_tab
+__progname
+__sF
+__stack_chk_guard
+__system_property_area__
+_ctype_
+_tolower_tab_
+_toupper_tab_
+daylight
+environ
+optarg
+opterr
+optind
+optopt
+optreset
+sys_siglist
+sys_signame
+timezone
+tzname
diff --git a/ndk/platforms/android-20/arch-arm/symbols/libdl.so.functions.txt b/ndk/platforms/android-L/arch-arm/symbols/libdl.so.functions.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-arm/symbols/libdl.so.functions.txt
rename to ndk/platforms/android-L/arch-arm/symbols/libdl.so.functions.txt
diff --git a/ndk/platforms/android-20/arch-arm/symbols/libdl.so.variables.txt b/ndk/platforms/android-L/arch-arm/symbols/libdl.so.variables.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-arm/symbols/libdl.so.variables.txt
rename to ndk/platforms/android-L/arch-arm/symbols/libdl.so.variables.txt
diff --git a/ndk/platforms/android-20/arch-arm/symbols/libjnigraphics.so.functions.txt b/ndk/platforms/android-L/arch-arm/symbols/libjnigraphics.so.functions.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-arm/symbols/libjnigraphics.so.functions.txt
rename to ndk/platforms/android-L/arch-arm/symbols/libjnigraphics.so.functions.txt
diff --git a/ndk/platforms/android-20/arch-arm/symbols/libjnigraphics.so.variables.txt b/ndk/platforms/android-L/arch-arm/symbols/libjnigraphics.so.variables.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-arm/symbols/libjnigraphics.so.variables.txt
rename to ndk/platforms/android-L/arch-arm/symbols/libjnigraphics.so.variables.txt
diff --git a/ndk/platforms/android-20/arch-arm/symbols/liblog.so.functions.txt b/ndk/platforms/android-L/arch-arm/symbols/liblog.so.functions.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-arm/symbols/liblog.so.functions.txt
rename to ndk/platforms/android-L/arch-arm/symbols/liblog.so.functions.txt
diff --git a/ndk/platforms/android-20/arch-arm/symbols/liblog.so.variables.txt b/ndk/platforms/android-L/arch-arm/symbols/liblog.so.variables.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-arm/symbols/liblog.so.variables.txt
rename to ndk/platforms/android-L/arch-arm/symbols/liblog.so.variables.txt
diff --git a/ndk/platforms/android-L/arch-arm/symbols/libm.so.functions.txt b/ndk/platforms/android-L/arch-arm/symbols/libm.so.functions.txt
new file mode 100644
index 0000000..3989fcf
--- /dev/null
+++ b/ndk/platforms/android-L/arch-arm/symbols/libm.so.functions.txt
@@ -0,0 +1,245 @@
+__aeabi_cfcmpeq
+__aeabi_cfcmple
+__aeabi_cfrcmple
+__aeabi_d2lz
+__aeabi_d2uiz
+__aeabi_d2ulz
+__aeabi_f2lz
+__aeabi_f2ulz
+__aeabi_fcmpeq
+__aeabi_fcmpge
+__aeabi_fcmpgt
+__aeabi_fcmple
+__aeabi_fcmplt
+__cmpsf2
+__eqsf2
+__fixdfdi
+__fixsfdi
+__fixunsdfdi
+__fixunsdfsi
+__fixunssfdi
+__gesf2
+__gtsf2
+__lesf2
+__ltsf2
+__nesf2
+__signbit
+__signbitf
+__signbitl
+acos
+acosf
+acosh
+acoshf
+acoshl
+acosl
+asin
+asinf
+asinh
+asinhf
+asinhl
+asinl
+atan
+atan2
+atan2f
+atan2l
+atanf
+atanh
+atanhf
+atanhl
+atanl
+cabsl
+cbrt
+cbrtf
+cbrtl
+ceil
+ceilf
+ceill
+copysign
+copysignf
+copysignl
+cos
+cosf
+cosh
+coshf
+coshl
+cosl
+cprojl
+csqrtl
+drem
+dremf
+erf
+erfc
+erfcf
+erfcl
+erff
+erfl
+exp
+exp2
+exp2f
+exp2l
+expf
+expl
+expm1
+expm1f
+expm1l
+fabs
+fabsf
+fabsl
+fdim
+fdimf
+fdiml
+feclearexcept
+fedisableexcept
+feenableexcept
+fegetenv
+fegetexcept
+fegetexceptflag
+fegetround
+feholdexcept
+feraiseexcept
+fesetenv
+fesetexceptflag
+fesetround
+fetestexcept
+feupdateenv
+finite
+finitef
+floor
+floorf
+floorl
+fma
+fmaf
+fmal
+fmax
+fmaxf
+fmaxl
+fmin
+fminf
+fminl
+fmod
+fmodf
+fmodl
+frexp
+frexpf
+frexpl
+gamma
+gamma_r
+gammaf
+gammaf_r
+hypot
+hypotf
+hypotl
+ilogb
+ilogbf
+ilogbl
+j0
+j0f
+j1
+j1f
+jn
+jnf
+ldexpf
+ldexpl
+lgamma
+lgamma_r
+lgammaf
+lgammaf_r
+lgammal
+llrint
+llrintf
+llrintl
+llround
+llroundf
+llroundl
+log
+log10
+log10f
+log10l
+log1p
+log1pf
+log1pl
+log2
+log2f
+log2l
+logb
+logbf
+logbl
+logf
+logl
+lrint
+lrintf
+lrintl
+lround
+lroundf
+lroundl
+modf
+modff
+modfl
+nan
+nanf
+nanl
+nearbyint
+nearbyintf
+nearbyintl
+nextafter
+nextafterf
+nextafterl
+nexttoward
+nexttowardf
+nexttowardl
+pow
+powf
+powl
+remainder
+remainderf
+remainderl
+remquo
+remquof
+remquol
+rint
+rintf
+rintl
+round
+roundf
+roundl
+scalb
+scalbf
+scalbln
+scalblnf
+scalblnl
+scalbn
+scalbnf
+scalbnl
+significand
+significandf
+significandl
+sin
+sincos
+sincosf
+sincosl
+sinf
+sinh
+sinhf
+sinhl
+sinl
+sqrt
+sqrtf
+sqrtl
+tan
+tanf
+tanh
+tanhf
+tanhl
+tanl
+tgamma
+tgammaf
+tgammal
+trunc
+truncf
+truncl
+y0
+y0f
+y1
+y1f
+yn
+ynf
diff --git a/ndk/platforms/android-20/arch-arm/symbols/libm.so.variables.txt b/ndk/platforms/android-L/arch-arm/symbols/libm.so.variables.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-arm/symbols/libm.so.variables.txt
rename to ndk/platforms/android-L/arch-arm/symbols/libm.so.variables.txt
diff --git a/ndk/platforms/android-L/arch-arm/symbols/libstdc++.so.functions.txt b/ndk/platforms/android-L/arch-arm/symbols/libstdc++.so.functions.txt
new file mode 100644
index 0000000..7e337ad
--- /dev/null
+++ b/ndk/platforms/android-L/arch-arm/symbols/libstdc++.so.functions.txt
@@ -0,0 +1 @@
+__this_library_is_now_part_of_libc
diff --git a/ndk/platforms/android-20/arch-arm/symbols/libdl.so.variables.txt b/ndk/platforms/android-L/arch-arm/symbols/libstdc++.so.variables.txt
similarity index 100%
copy from ndk/platforms/android-20/arch-arm/symbols/libdl.so.variables.txt
copy to ndk/platforms/android-L/arch-arm/symbols/libstdc++.so.variables.txt
diff --git a/ndk/platforms/android-L/arch-arm/symbols/libz.so.functions.txt b/ndk/platforms/android-L/arch-arm/symbols/libz.so.functions.txt
new file mode 100644
index 0000000..4c900ab
--- /dev/null
+++ b/ndk/platforms/android-L/arch-arm/symbols/libz.so.functions.txt
@@ -0,0 +1,130 @@
+_Unwind_Backtrace
+_Unwind_Complete
+_Unwind_DeleteException
+_Unwind_ForcedUnwind
+_Unwind_GetCFA
+_Unwind_GetDataRelBase
+_Unwind_GetLanguageSpecificData
+_Unwind_GetRegionStart
+_Unwind_GetTextRelBase
+_Unwind_RaiseException
+_Unwind_Resume
+_Unwind_Resume_or_Rethrow
+_Unwind_VRS_Get
+_Unwind_VRS_Pop
+_Unwind_VRS_Set
+___Unwind_Backtrace
+___Unwind_ForcedUnwind
+___Unwind_RaiseException
+___Unwind_Resume
+___Unwind_Resume_or_Rethrow
+__aeabi_unwind_cpp_pr0
+__aeabi_unwind_cpp_pr1
+__aeabi_unwind_cpp_pr2
+__gnu_Unwind_Backtrace
+__gnu_Unwind_ForcedUnwind
+__gnu_Unwind_RaiseException
+__gnu_Unwind_Restore_VFP
+__gnu_Unwind_Restore_VFP_D
+__gnu_Unwind_Restore_VFP_D_16_to_31
+__gnu_Unwind_Restore_WMMXC
+__gnu_Unwind_Restore_WMMXD
+__gnu_Unwind_Resume
+__gnu_Unwind_Resume_or_Rethrow
+__gnu_Unwind_Save_VFP
+__gnu_Unwind_Save_VFP_D
+__gnu_Unwind_Save_VFP_D_16_to_31
+__gnu_Unwind_Save_WMMXC
+__gnu_Unwind_Save_WMMXD
+__gnu_unwind_execute
+__gnu_unwind_frame
+__restore_core_regs
+_tr_align
+_tr_flush_bits
+_tr_flush_block
+_tr_init
+_tr_stored_block
+_tr_tally
+adler32
+adler32_combine
+adler32_combine64
+compress
+compress2
+compressBound
+crc32
+crc32_combine
+crc32_combine64
+deflate
+deflateBound
+deflateCopy
+deflateEnd
+deflateInit2_
+deflateInit_
+deflateParams
+deflatePending
+deflatePrime
+deflateReset
+deflateResetKeep
+deflateSetDictionary
+deflateSetHeader
+deflateTune
+get_crc_table
+gz_error
+gzbuffer
+gzclearerr
+gzclose
+gzclose_r
+gzclose_w
+gzdirect
+gzdopen
+gzeof
+gzerror
+gzflush
+gzgetc
+gzgetc_
+gzgets
+gzoffset
+gzoffset64
+gzopen
+gzopen64
+gzprintf
+gzputc
+gzputs
+gzread
+gzrewind
+gzseek
+gzseek64
+gzsetparams
+gztell
+gztell64
+gzungetc
+gzvprintf
+gzwrite
+inflate
+inflateBack
+inflateBackEnd
+inflateBackInit_
+inflateCopy
+inflateEnd
+inflateGetDictionary
+inflateGetHeader
+inflateInit2_
+inflateInit_
+inflateMark
+inflatePrime
+inflateReset
+inflateReset2
+inflateResetKeep
+inflateSetDictionary
+inflateSync
+inflateSyncPoint
+inflateUndermine
+inflate_fast
+inflate_table
+restore_core_regs
+uncompress
+zError
+zcalloc
+zcfree
+zlibCompileFlags
+zlibVersion
diff --git a/ndk/platforms/android-L/arch-arm/symbols/libz.so.variables.txt b/ndk/platforms/android-L/arch-arm/symbols/libz.so.variables.txt
new file mode 100644
index 0000000..c653ee5
--- /dev/null
+++ b/ndk/platforms/android-L/arch-arm/symbols/libz.so.variables.txt
@@ -0,0 +1,5 @@
+_dist_code
+_length_code
+deflate_copyright
+inflate_copyright
+z_errmsg
diff --git a/ndk/platforms/android-20/arch-arm64/include/asm/auxvec.h b/ndk/platforms/android-L/arch-arm64/include/asm/auxvec.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm64/include/asm/auxvec.h
rename to ndk/platforms/android-L/arch-arm64/include/asm/auxvec.h
diff --git a/ndk/platforms/android-20/arch-arm64/include/asm/bitsperlong.h b/ndk/platforms/android-L/arch-arm64/include/asm/bitsperlong.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm64/include/asm/bitsperlong.h
rename to ndk/platforms/android-L/arch-arm64/include/asm/bitsperlong.h
diff --git a/ndk/platforms/android-20/arch-arm64/include/asm/byteorder.h b/ndk/platforms/android-L/arch-arm64/include/asm/byteorder.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm64/include/asm/byteorder.h
rename to ndk/platforms/android-L/arch-arm64/include/asm/byteorder.h
diff --git a/ndk/platforms/android-20/arch-arm64/include/asm/errno.h b/ndk/platforms/android-L/arch-arm64/include/asm/errno.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm64/include/asm/errno.h
rename to ndk/platforms/android-L/arch-arm64/include/asm/errno.h
diff --git a/ndk/platforms/android-20/arch-arm64/include/asm/fcntl.h b/ndk/platforms/android-L/arch-arm64/include/asm/fcntl.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm64/include/asm/fcntl.h
rename to ndk/platforms/android-L/arch-arm64/include/asm/fcntl.h
diff --git a/ndk/platforms/android-20/arch-arm64/include/asm/hwcap.h b/ndk/platforms/android-L/arch-arm64/include/asm/hwcap.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm64/include/asm/hwcap.h
rename to ndk/platforms/android-L/arch-arm64/include/asm/hwcap.h
diff --git a/ndk/platforms/android-20/arch-arm64/include/asm/ioctl.h b/ndk/platforms/android-L/arch-arm64/include/asm/ioctl.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm64/include/asm/ioctl.h
rename to ndk/platforms/android-L/arch-arm64/include/asm/ioctl.h
diff --git a/ndk/platforms/android-20/arch-arm64/include/asm/ioctls.h b/ndk/platforms/android-L/arch-arm64/include/asm/ioctls.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm64/include/asm/ioctls.h
rename to ndk/platforms/android-L/arch-arm64/include/asm/ioctls.h
diff --git a/ndk/platforms/android-20/arch-arm64/include/asm/ipcbuf.h b/ndk/platforms/android-L/arch-arm64/include/asm/ipcbuf.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm64/include/asm/ipcbuf.h
rename to ndk/platforms/android-L/arch-arm64/include/asm/ipcbuf.h
diff --git a/ndk/platforms/android-20/arch-arm64/include/asm/kvm_para.h b/ndk/platforms/android-L/arch-arm64/include/asm/kvm_para.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm64/include/asm/kvm_para.h
rename to ndk/platforms/android-L/arch-arm64/include/asm/kvm_para.h
diff --git a/ndk/platforms/android-20/arch-arm64/include/asm/mman.h b/ndk/platforms/android-L/arch-arm64/include/asm/mman.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm64/include/asm/mman.h
rename to ndk/platforms/android-L/arch-arm64/include/asm/mman.h
diff --git a/ndk/platforms/android-20/arch-arm64/include/asm/msgbuf.h b/ndk/platforms/android-L/arch-arm64/include/asm/msgbuf.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm64/include/asm/msgbuf.h
rename to ndk/platforms/android-L/arch-arm64/include/asm/msgbuf.h
diff --git a/ndk/platforms/android-20/arch-arm64/include/asm/param.h b/ndk/platforms/android-L/arch-arm64/include/asm/param.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm64/include/asm/param.h
rename to ndk/platforms/android-L/arch-arm64/include/asm/param.h
diff --git a/ndk/platforms/android-20/arch-arm64/include/asm/poll.h b/ndk/platforms/android-L/arch-arm64/include/asm/poll.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm64/include/asm/poll.h
rename to ndk/platforms/android-L/arch-arm64/include/asm/poll.h
diff --git a/ndk/platforms/android-20/arch-arm64/include/asm/posix_types.h b/ndk/platforms/android-L/arch-arm64/include/asm/posix_types.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm64/include/asm/posix_types.h
rename to ndk/platforms/android-L/arch-arm64/include/asm/posix_types.h
diff --git a/ndk/platforms/android-20/arch-arm64/include/asm/ptrace.h b/ndk/platforms/android-L/arch-arm64/include/asm/ptrace.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm64/include/asm/ptrace.h
rename to ndk/platforms/android-L/arch-arm64/include/asm/ptrace.h
diff --git a/ndk/platforms/android-20/arch-arm64/include/asm/resource.h b/ndk/platforms/android-L/arch-arm64/include/asm/resource.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm64/include/asm/resource.h
rename to ndk/platforms/android-L/arch-arm64/include/asm/resource.h
diff --git a/ndk/platforms/android-20/arch-arm64/include/asm/sembuf.h b/ndk/platforms/android-L/arch-arm64/include/asm/sembuf.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm64/include/asm/sembuf.h
rename to ndk/platforms/android-L/arch-arm64/include/asm/sembuf.h
diff --git a/ndk/platforms/android-20/arch-arm64/include/asm/setup.h b/ndk/platforms/android-L/arch-arm64/include/asm/setup.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm64/include/asm/setup.h
rename to ndk/platforms/android-L/arch-arm64/include/asm/setup.h
diff --git a/ndk/platforms/android-20/arch-arm64/include/asm/shmbuf.h b/ndk/platforms/android-L/arch-arm64/include/asm/shmbuf.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm64/include/asm/shmbuf.h
rename to ndk/platforms/android-L/arch-arm64/include/asm/shmbuf.h
diff --git a/ndk/platforms/android-20/arch-arm64/include/asm/sigcontext.h b/ndk/platforms/android-L/arch-arm64/include/asm/sigcontext.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm64/include/asm/sigcontext.h
rename to ndk/platforms/android-L/arch-arm64/include/asm/sigcontext.h
diff --git a/ndk/platforms/android-20/arch-arm64/include/asm/siginfo.h b/ndk/platforms/android-L/arch-arm64/include/asm/siginfo.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm64/include/asm/siginfo.h
rename to ndk/platforms/android-L/arch-arm64/include/asm/siginfo.h
diff --git a/ndk/platforms/android-20/arch-arm64/include/asm/signal.h b/ndk/platforms/android-L/arch-arm64/include/asm/signal.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm64/include/asm/signal.h
rename to ndk/platforms/android-L/arch-arm64/include/asm/signal.h
diff --git a/ndk/platforms/android-20/arch-arm64/include/asm/socket.h b/ndk/platforms/android-L/arch-arm64/include/asm/socket.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm64/include/asm/socket.h
rename to ndk/platforms/android-L/arch-arm64/include/asm/socket.h
diff --git a/ndk/platforms/android-20/arch-arm64/include/asm/sockios.h b/ndk/platforms/android-L/arch-arm64/include/asm/sockios.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm64/include/asm/sockios.h
rename to ndk/platforms/android-L/arch-arm64/include/asm/sockios.h
diff --git a/ndk/platforms/android-20/arch-arm64/include/asm/stat.h b/ndk/platforms/android-L/arch-arm64/include/asm/stat.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm64/include/asm/stat.h
rename to ndk/platforms/android-L/arch-arm64/include/asm/stat.h
diff --git a/ndk/platforms/android-20/arch-arm64/include/asm/statfs.h b/ndk/platforms/android-L/arch-arm64/include/asm/statfs.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm64/include/asm/statfs.h
rename to ndk/platforms/android-L/arch-arm64/include/asm/statfs.h
diff --git a/ndk/platforms/android-20/arch-arm64/include/asm/swab.h b/ndk/platforms/android-L/arch-arm64/include/asm/swab.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm64/include/asm/swab.h
rename to ndk/platforms/android-L/arch-arm64/include/asm/swab.h
diff --git a/ndk/platforms/android-20/arch-arm64/include/asm/termbits.h b/ndk/platforms/android-L/arch-arm64/include/asm/termbits.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm64/include/asm/termbits.h
rename to ndk/platforms/android-L/arch-arm64/include/asm/termbits.h
diff --git a/ndk/platforms/android-20/arch-arm64/include/asm/termios.h b/ndk/platforms/android-L/arch-arm64/include/asm/termios.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm64/include/asm/termios.h
rename to ndk/platforms/android-L/arch-arm64/include/asm/termios.h
diff --git a/ndk/platforms/android-20/arch-arm64/include/asm/types.h b/ndk/platforms/android-L/arch-arm64/include/asm/types.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm64/include/asm/types.h
rename to ndk/platforms/android-L/arch-arm64/include/asm/types.h
diff --git a/ndk/platforms/android-20/arch-arm64/include/asm/unistd.h b/ndk/platforms/android-L/arch-arm64/include/asm/unistd.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm64/include/asm/unistd.h
rename to ndk/platforms/android-L/arch-arm64/include/asm/unistd.h
diff --git a/ndk/platforms/android-20/arch-arm64/include/machine/asm.h b/ndk/platforms/android-L/arch-arm64/include/machine/asm.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm64/include/machine/asm.h
rename to ndk/platforms/android-L/arch-arm64/include/machine/asm.h
diff --git a/ndk/platforms/android-20/arch-arm64/include/machine/elf_machdep.h b/ndk/platforms/android-L/arch-arm64/include/machine/elf_machdep.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm64/include/machine/elf_machdep.h
rename to ndk/platforms/android-L/arch-arm64/include/machine/elf_machdep.h
diff --git a/ndk/platforms/android-20/arch-arm64/include/machine/endian.h b/ndk/platforms/android-L/arch-arm64/include/machine/endian.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm64/include/machine/endian.h
rename to ndk/platforms/android-L/arch-arm64/include/machine/endian.h
diff --git a/ndk/platforms/android-20/arch-arm64/include/machine/exec.h b/ndk/platforms/android-L/arch-arm64/include/machine/exec.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm64/include/machine/exec.h
rename to ndk/platforms/android-L/arch-arm64/include/machine/exec.h
diff --git a/ndk/platforms/android-L/arch-arm64/include/machine/fenv.h b/ndk/platforms/android-L/arch-arm64/include/machine/fenv.h
new file mode 100644
index 0000000..a8568b8
--- /dev/null
+++ b/ndk/platforms/android-L/arch-arm64/include/machine/fenv.h
@@ -0,0 +1,102 @@
+/*-
+ * Copyright (c) 2004-2005 David Schultz <das@FreeBSD.ORG>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD: src/lib/msun/arm/fenv.h,v 1.5 2005/03/16 19:03:45 das Exp $
+ */
+
+/*
+ * In ARMv8, AArch64 state, floating-point operation is controlled by:
+ *
+ *  * FPCR - 32Bit Floating-Point Control Register:
+ *      * [31:27] - Reserved, Res0;
+ *      * [26]    - AHP, Alternative half-precision control bit;
+ *      * [25]    - DN, Default NaN mode control bit;
+ *      * [24]    - FZ, Flush-to-zero mode control bit;
+ *      * [23:22] - RMode, Rounding Mode control field:
+ *            * 00  - Round to Nearest (RN) mode;
+ *            * 01  - Round towards Plus Infinity (RP) mode;
+ *            * 10  - Round towards Minus Infinity (RM) mode;
+ *            * 11  - Round towards Zero (RZ) mode.
+ *      * [21:20] - Stride, ignored during AArch64 execution;
+ *      * [19]    - Reserved, Res0;
+ *      * [18:16] - Len, ignored during AArch64 execution;
+ *      * [15]    - IDE, Input Denormal exception trap;
+ *      * [14:13] - Reserved, Res0;
+ *      * [12]    - IXE, Inexact exception trap;
+ *      * [11]    - UFE, Underflow exception trap;
+ *      * [10]    - OFE, Overflow exception trap;
+ *      * [9]     - DZE, Division by Zero exception;
+ *      * [8]     - IOE, Invalid Operation exception;
+ *      * [7:0]   - Reserved, Res0.
+ *
+ *  * FPSR - 32Bit Floating-Point Status Register:
+ *      * [31]    - N, Negative condition flag for AArch32 (AArch64 sets PSTATE.N);
+ *      * [30]    - Z, Zero condition flag for AArch32 (AArch64 sets PSTATE.Z);
+ *      * [29]    - C, Carry conditon flag for AArch32 (AArch64 sets PSTATE.C);
+ *      * [28]    - V, Overflow conditon flag for AArch32 (AArch64 sets PSTATE.V);
+ *      * [27]    - QC, Cumulative saturation bit, Advanced SIMD only;
+ *      * [26:8]  - Reserved, Res0;
+ *      * [7]     - IDC, Input Denormal cumulative exception;
+ *      * [6:5]   - Reserved, Res0;
+ *      * [4]     - IXC, Inexact cumulative exception;
+ *      * [3]     - UFC, Underflow cumulative exception;
+ *      * [2]     - OFC, Overflow cumulative exception;
+ *      * [1]     - DZC, Division by Zero cumulative exception;
+ *      * [0]     - IOC, Invalid Operation cumulative exception.
+ */
+
+#ifndef _ARM64_FENV_H_
+#define _ARM64_FENV_H_
+
+#include <sys/types.h>
+
+__BEGIN_DECLS
+
+typedef struct {
+  __uint32_t __control;     /* FPCR, Floating-point Control Register */
+  __uint32_t __status;      /* FPSR, Floating-point Status Register */
+} fenv_t;
+
+typedef __uint32_t fexcept_t;
+
+/* Exception flags. */
+#define FE_INVALID    0x01
+#define FE_DIVBYZERO  0x02
+#define FE_OVERFLOW   0x04
+#define FE_UNDERFLOW  0x08
+#define FE_INEXACT    0x10
+#define FE_DENORMAL   0x80
+#define FE_ALL_EXCEPT (FE_DIVBYZERO | FE_INEXACT | FE_INVALID | \
+                       FE_OVERFLOW | FE_UNDERFLOW | FE_DENORMAL)
+
+/* Rounding modes. */
+#define FE_TONEAREST  0x0
+#define FE_UPWARD     0x1
+#define FE_DOWNWARD   0x2
+#define FE_TOWARDZERO 0x3
+
+__END_DECLS
+
+#endif /* !_ARM64_FENV_H_ */
diff --git a/ndk/platforms/android-20/arch-arm64/include/machine/setjmp.h b/ndk/platforms/android-L/arch-arm64/include/machine/setjmp.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm64/include/machine/setjmp.h
rename to ndk/platforms/android-L/arch-arm64/include/machine/setjmp.h
diff --git a/ndk/platforms/android-20/arch-arm64/lib-bootstrap/crtbegin_dynamic.o b/ndk/platforms/android-L/arch-arm64/lib-bootstrap/crtbegin_dynamic.o
similarity index 100%
rename from ndk/platforms/android-20/arch-arm64/lib-bootstrap/crtbegin_dynamic.o
rename to ndk/platforms/android-L/arch-arm64/lib-bootstrap/crtbegin_dynamic.o
Binary files differ
diff --git a/ndk/platforms/android-20/arch-arm64/lib-bootstrap/crtend_android.o b/ndk/platforms/android-L/arch-arm64/lib-bootstrap/crtend_android.o
similarity index 100%
rename from ndk/platforms/android-20/arch-arm64/lib-bootstrap/crtend_android.o
rename to ndk/platforms/android-L/arch-arm64/lib-bootstrap/crtend_android.o
Binary files differ
diff --git a/ndk/platforms/android-20/arch-arm64/lib-bootstrap/libc.so b/ndk/platforms/android-L/arch-arm64/lib-bootstrap/libc.so
similarity index 100%
rename from ndk/platforms/android-20/arch-arm64/lib-bootstrap/libc.so
rename to ndk/platforms/android-L/arch-arm64/lib-bootstrap/libc.so
Binary files differ
diff --git a/ndk/platforms/android-20/arch-arm64/lib-bootstrap/libdl.so b/ndk/platforms/android-L/arch-arm64/lib-bootstrap/libdl.so
similarity index 100%
rename from ndk/platforms/android-20/arch-arm64/lib-bootstrap/libdl.so
rename to ndk/platforms/android-L/arch-arm64/lib-bootstrap/libdl.so
Binary files differ
diff --git a/ndk/platforms/android-L/arch-arm64/lib/libc.a b/ndk/platforms/android-L/arch-arm64/lib/libc.a
new file mode 100644
index 0000000..1d2ae12
--- /dev/null
+++ b/ndk/platforms/android-L/arch-arm64/lib/libc.a
Binary files differ
diff --git a/ndk/platforms/android-L/arch-arm64/lib/libm.a b/ndk/platforms/android-L/arch-arm64/lib/libm.a
new file mode 100644
index 0000000..63c94f3
--- /dev/null
+++ b/ndk/platforms/android-L/arch-arm64/lib/libm.a
Binary files differ
diff --git a/ndk/platforms/android-L/arch-arm64/lib/libstdc++.a b/ndk/platforms/android-L/arch-arm64/lib/libstdc++.a
new file mode 100644
index 0000000..e556cfd
--- /dev/null
+++ b/ndk/platforms/android-L/arch-arm64/lib/libstdc++.a
Binary files differ
diff --git a/ndk/platforms/android-L/arch-arm64/lib/libz.a b/ndk/platforms/android-L/arch-arm64/lib/libz.a
new file mode 100644
index 0000000..27aa034
--- /dev/null
+++ b/ndk/platforms/android-L/arch-arm64/lib/libz.a
Binary files differ
diff --git a/ndk/platforms/android-20/arch-arm64/src/atexit.h b/ndk/platforms/android-L/arch-arm64/src/atexit.h
similarity index 100%
rename from ndk/platforms/android-20/arch-arm64/src/atexit.h
rename to ndk/platforms/android-L/arch-arm64/src/atexit.h
diff --git a/ndk/platforms/android-20/arch-arm64/src/crtbegin.c b/ndk/platforms/android-L/arch-arm64/src/crtbegin.c
similarity index 100%
rename from ndk/platforms/android-20/arch-arm64/src/crtbegin.c
rename to ndk/platforms/android-L/arch-arm64/src/crtbegin.c
diff --git a/ndk/platforms/android-20/arch-arm64/src/crtbegin_so.c b/ndk/platforms/android-L/arch-arm64/src/crtbegin_so.c
similarity index 100%
rename from ndk/platforms/android-20/arch-arm64/src/crtbegin_so.c
rename to ndk/platforms/android-L/arch-arm64/src/crtbegin_so.c
diff --git a/ndk/platforms/android-20/arch-arm64/src/crtend.S b/ndk/platforms/android-L/arch-arm64/src/crtend.S
similarity index 100%
rename from ndk/platforms/android-20/arch-arm64/src/crtend.S
rename to ndk/platforms/android-L/arch-arm64/src/crtend.S
diff --git a/ndk/platforms/android-20/arch-arm64/src/crtend_so.S b/ndk/platforms/android-L/arch-arm64/src/crtend_so.S
similarity index 100%
rename from ndk/platforms/android-20/arch-arm64/src/crtend_so.S
rename to ndk/platforms/android-L/arch-arm64/src/crtend_so.S
diff --git a/ndk/platforms/android-20/arch-arm64/symbols/libEGL.so.functions.txt b/ndk/platforms/android-L/arch-arm64/symbols/libEGL.so.functions.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-arm64/symbols/libEGL.so.functions.txt
rename to ndk/platforms/android-L/arch-arm64/symbols/libEGL.so.functions.txt
diff --git a/ndk/platforms/android-20/arch-arm64/symbols/libEGL.so.variables.txt b/ndk/platforms/android-L/arch-arm64/symbols/libEGL.so.variables.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-arm64/symbols/libEGL.so.variables.txt
rename to ndk/platforms/android-L/arch-arm64/symbols/libEGL.so.variables.txt
diff --git a/ndk/platforms/android-20/arch-arm64/symbols/libGLESv1_CM.so.functions.txt b/ndk/platforms/android-L/arch-arm64/symbols/libGLESv1_CM.so.functions.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-arm64/symbols/libGLESv1_CM.so.functions.txt
rename to ndk/platforms/android-L/arch-arm64/symbols/libGLESv1_CM.so.functions.txt
diff --git a/ndk/platforms/android-20/arch-arm64/symbols/libGLESv1_CM.so.variables.txt b/ndk/platforms/android-L/arch-arm64/symbols/libGLESv1_CM.so.variables.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-arm64/symbols/libGLESv1_CM.so.variables.txt
rename to ndk/platforms/android-L/arch-arm64/symbols/libGLESv1_CM.so.variables.txt
diff --git a/ndk/platforms/android-20/arch-arm64/symbols/libGLESv2.so.functions.txt b/ndk/platforms/android-L/arch-arm64/symbols/libGLESv2.so.functions.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-arm64/symbols/libGLESv2.so.functions.txt
rename to ndk/platforms/android-L/arch-arm64/symbols/libGLESv2.so.functions.txt
diff --git a/ndk/platforms/android-20/arch-arm64/symbols/libGLESv2.so.variables.txt b/ndk/platforms/android-L/arch-arm64/symbols/libGLESv2.so.variables.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-arm64/symbols/libGLESv2.so.variables.txt
rename to ndk/platforms/android-L/arch-arm64/symbols/libGLESv2.so.variables.txt
diff --git a/ndk/platforms/android-20/arch-arm64/symbols/libGLESv3.so.functions.txt b/ndk/platforms/android-L/arch-arm64/symbols/libGLESv3.so.functions.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-arm64/symbols/libGLESv3.so.functions.txt
rename to ndk/platforms/android-L/arch-arm64/symbols/libGLESv3.so.functions.txt
diff --git a/ndk/platforms/android-20/arch-arm64/symbols/libGLESv3.so.variables.txt b/ndk/platforms/android-L/arch-arm64/symbols/libGLESv3.so.variables.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-arm64/symbols/libGLESv3.so.variables.txt
rename to ndk/platforms/android-L/arch-arm64/symbols/libGLESv3.so.variables.txt
diff --git a/ndk/platforms/android-20/arch-arm64/symbols/libOpenMAXAL.so.functions.txt b/ndk/platforms/android-L/arch-arm64/symbols/libOpenMAXAL.so.functions.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-arm64/symbols/libOpenMAXAL.so.functions.txt
rename to ndk/platforms/android-L/arch-arm64/symbols/libOpenMAXAL.so.functions.txt
diff --git a/ndk/platforms/android-20/arch-arm64/symbols/libOpenMAXAL.so.variables.txt b/ndk/platforms/android-L/arch-arm64/symbols/libOpenMAXAL.so.variables.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-arm64/symbols/libOpenMAXAL.so.variables.txt
rename to ndk/platforms/android-L/arch-arm64/symbols/libOpenMAXAL.so.variables.txt
diff --git a/ndk/platforms/android-20/arch-arm64/symbols/libOpenSLES.so.functions.txt b/ndk/platforms/android-L/arch-arm64/symbols/libOpenSLES.so.functions.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-arm64/symbols/libOpenSLES.so.functions.txt
rename to ndk/platforms/android-L/arch-arm64/symbols/libOpenSLES.so.functions.txt
diff --git a/ndk/platforms/android-20/arch-arm64/symbols/libOpenSLES.so.variables.txt b/ndk/platforms/android-L/arch-arm64/symbols/libOpenSLES.so.variables.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-arm64/symbols/libOpenSLES.so.variables.txt
rename to ndk/platforms/android-L/arch-arm64/symbols/libOpenSLES.so.variables.txt
diff --git a/ndk/platforms/android-20/arch-arm64/symbols/libandroid.so.functions.txt b/ndk/platforms/android-L/arch-arm64/symbols/libandroid.so.functions.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-arm64/symbols/libandroid.so.functions.txt
rename to ndk/platforms/android-L/arch-arm64/symbols/libandroid.so.functions.txt
diff --git a/ndk/platforms/android-20/arch-arm64/symbols/libandroid.so.variables.txt b/ndk/platforms/android-L/arch-arm64/symbols/libandroid.so.variables.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-arm64/symbols/libandroid.so.variables.txt
rename to ndk/platforms/android-L/arch-arm64/symbols/libandroid.so.variables.txt
diff --git a/ndk/platforms/android-L/arch-arm64/symbols/libc.so.functions.txt b/ndk/platforms/android-L/arch-arm64/symbols/libc.so.functions.txt
new file mode 100644
index 0000000..3ac1f02
--- /dev/null
+++ b/ndk/platforms/android-L/arch-arm64/symbols/libc.so.functions.txt
@@ -0,0 +1,1034 @@
+SHA1Final
+SHA1Init
+SHA1Transform
+SHA1Update
+_Exit
+_Unwind_Backtrace
+_Unwind_DeleteException
+_Unwind_FindEnclosingFunction
+_Unwind_Find_FDE
+_Unwind_ForcedUnwind
+_Unwind_GetCFA
+_Unwind_GetDataRelBase
+_Unwind_GetGR
+_Unwind_GetIP
+_Unwind_GetIPInfo
+_Unwind_GetLanguageSpecificData
+_Unwind_GetRegionStart
+_Unwind_GetTextRelBase
+_Unwind_RaiseException
+_Unwind_Resume
+_Unwind_Resume_or_Rethrow
+_Unwind_SetGR
+_Unwind_SetIP
+_ZdaPv
+_ZdaPvRKSt9nothrow_t
+_ZdlPv
+_ZdlPvRKSt9nothrow_t
+_Znam
+_ZnamRKSt9nothrow_t
+_Znwm
+_ZnwmRKSt9nothrow_t
+__FD_CLR_chk
+__FD_ISSET_chk
+__FD_SET_chk
+__android_set_abort_message
+__assert
+__assert2
+__b64_ntop
+__b64_pton
+__bionic_name_mem
+__cxa_atexit
+__cxa_finalize
+__cxa_guard_abort
+__cxa_guard_acquire
+__cxa_guard_release
+__cxa_pure_virtual
+__deregister_frame
+__deregister_frame_info
+__deregister_frame_info_bases
+__dn_comp
+__dn_count_labels
+__dn_skipname
+__errno
+__fgets_chk
+__findenv
+__fp_nquery
+__fp_query
+__fpclassify
+__fpclassifyd
+__fpclassifyf
+__fpclassifyl
+__frame_state_for
+__get_h_errno
+__hostalias
+__isfinite
+__isfinitef
+__isfinitel
+__isinf
+__isinff
+__isinfl
+__isnan
+__isnanf
+__isnanl
+__isnormal
+__isnormalf
+__isnormall
+__libc_current_sigrtmax
+__libc_current_sigrtmin
+__libc_init
+__loc_aton
+__loc_ntoa
+__memcpy_chk
+__memmove_chk
+__memset_chk
+__multf3
+__open_2
+__openat_2
+__p_cdname
+__p_cdnname
+__p_class
+__p_fqname
+__p_fqnname
+__p_option
+__p_query
+__p_rcode
+__p_secstodate
+__p_time
+__p_type
+__popcountdi2
+__pthread_cleanup_pop
+__pthread_cleanup_push
+__pthread_gettid
+__putlong
+__putshort
+__read_chk
+__recvfrom_chk
+__register_frame
+__register_frame_info
+__register_frame_info_bases
+__register_frame_info_table
+__register_frame_info_table_bases
+__register_frame_table
+__res_close
+__res_dnok
+__res_hnok
+__res_hostalias
+__res_isourserver
+__res_mailok
+__res_nameinquery
+__res_nclose
+__res_ninit
+__res_nmkquery
+__res_nquery
+__res_nquerydomain
+__res_nsearch
+__res_nsend
+__res_ownok
+__res_queriesmatch
+__res_querydomain
+__res_randomid
+__res_send
+__res_send_setqhook
+__res_send_setrhook
+__sched_cpualloc
+__sched_cpucount
+__sched_cpufree
+__sfp_handle_exceptions
+__snprintf_chk
+__sprintf_chk
+__srefill
+__stack_chk_fail
+__stpcpy_chk
+__stpncpy_chk
+__stpncpy_chk2
+__strcat_chk
+__strchr_chk
+__strcpy_chk
+__strlcat_chk
+__strlcpy_chk
+__strlen_chk
+__strncat_chk
+__strncpy_chk
+__strncpy_chk2
+__strrchr_chk
+__sym_ntop
+__sym_ntos
+__sym_ston
+__system_properties_init
+__system_property_add
+__system_property_area_init
+__system_property_find
+__system_property_find_nth
+__system_property_foreach
+__system_property_get
+__system_property_read
+__system_property_serial
+__system_property_set
+__system_property_set_filename
+__system_property_update
+__system_property_wait_any
+__umask_chk
+__vsnprintf_chk
+__vsprintf_chk
+_exit
+_getlong
+_getshort
+_longjmp
+_resolv_flush_cache_for_net
+_resolv_set_nameservers_for_net
+_setjmp
+_thread_created_hook
+_tolower
+_toupper
+abort
+abs
+accept
+accept4
+access
+acct
+alarm
+alphasort
+alphasort64
+android_getaddrinfofornet
+android_gethostbyaddrfornet
+android_gethostbynamefornet
+arc4random
+arc4random_addrandom
+arc4random_buf
+arc4random_stir
+arc4random_uniform
+asctime
+asctime_r
+asprintf
+at_quick_exit
+atof
+atoi
+atol
+atoll
+basename
+basename_r
+bind
+bindresvport
+brk
+bsearch
+btowc
+c16rtomb
+c32rtomb
+calloc
+capget
+capset
+cfgetispeed
+cfgetospeed
+cfmakeraw
+cfsetispeed
+cfsetospeed
+cfsetspeed
+chdir
+chmod
+chown
+chroot
+clearenv
+clearerr
+clock
+clock_getres
+clock_gettime
+clock_nanosleep
+clock_settime
+clone
+close
+closedir
+closelog
+cmsg_nxthdr
+connect
+creat
+creat64
+ctime
+ctime_r
+daemon
+delete_module
+difftime
+dirfd
+dirname
+dirname_r
+div
+dlmalloc_inspect_all
+dlmalloc_trim
+dn_expand
+dprintf
+drand48
+dup
+dup2
+dup3
+duplocale
+endmntent
+endpwent
+endservent
+endusershell
+endutent
+epoll_create
+epoll_create1
+epoll_ctl
+epoll_pwait
+epoll_wait
+erand48
+err
+errx
+ether_aton
+ether_aton_r
+ether_ntoa
+ether_ntoa_r
+eventfd
+eventfd_read
+eventfd_write
+execl
+execle
+execlp
+execv
+execve
+execvp
+execvpe
+exit
+faccessat
+fallocate
+fallocate64
+fchdir
+fchmod
+fchmodat
+fchown
+fchownat
+fclose
+fcntl
+fdatasync
+fdopen
+fdopendir
+feof
+ferror
+fflush
+ffs
+fgetc
+fgetln
+fgetpos
+fgets
+fgetwc
+fgetws
+fgetxattr
+fileno
+flistxattr
+flock
+flockfile
+fnmatch
+fopen
+fork
+fpathconf
+fprintf
+fpurge
+fputc
+fputs
+fputwc
+fputws
+fread
+free
+freeaddrinfo
+freelocale
+fremovexattr
+freopen
+fscanf
+fseek
+fseeko
+fsetpos
+fsetxattr
+fstat
+fstat64
+fstatat
+fstatat64
+fstatfs
+fstatfs64
+fstatvfs
+fstatvfs64
+fsync
+ftell
+ftello
+ftok
+ftruncate
+ftruncate64
+ftrylockfile
+fts_children
+fts_close
+fts_open
+fts_read
+fts_set
+ftw
+ftw64
+funlockfile
+funopen
+futimens
+fwide
+fwprintf
+fwrite
+fwscanf
+gai_strerror
+get_malloc_leak_info
+getaddrinfo
+getauxval
+getc
+getc_unlocked
+getchar
+getchar_unlocked
+getcwd
+getdelim
+getegid
+getenv
+geteuid
+getgid
+getgrgid
+getgrnam
+getgrouplist
+getgroups
+gethostbyaddr
+gethostbyname
+gethostbyname2
+gethostbyname_r
+gethostent
+gethostname
+getitimer
+getline
+getlogin
+getmntent
+getmntent_r
+getnameinfo
+getnetbyaddr
+getnetbyname
+getopt
+getopt_long
+getopt_long_only
+getpagesize
+getpeername
+getpgid
+getpgrp
+getpid
+getppid
+getpriority
+getprogname
+getprotobyname
+getprotobynumber
+getpt
+getpwnam
+getpwnam_r
+getpwuid
+getpwuid_r
+getresgid
+getresuid
+getrlimit
+getrlimit64
+getrusage
+gets
+getservbyname
+getservbyport
+getservent
+getsid
+getsockname
+getsockopt
+gettid
+gettimeofday
+getuid
+getusershell
+getutent
+getwc
+getwchar
+getxattr
+gmtime
+gmtime_r
+herror
+hstrerror
+htonl
+htons
+if_indextoname
+if_nametoindex
+imaxabs
+imaxdiv
+inet_addr
+inet_aton
+inet_lnaof
+inet_makeaddr
+inet_netof
+inet_network
+inet_ntoa
+inet_ntop
+inet_pton
+init_module
+initgroups
+initstate
+inotify_add_watch
+inotify_init
+inotify_init1
+inotify_rm_watch
+ioctl
+isalnum
+isalpha
+isascii
+isatty
+isblank
+iscntrl
+isdigit
+isfinite
+isfinitef
+isfinitel
+isgraph
+isinf
+isinff
+isinfl
+islower
+isnan
+isnanf
+isnanl
+isnormal
+isnormalf
+isnormall
+isprint
+ispunct
+isspace
+isupper
+iswalnum
+iswalpha
+iswblank
+iswcntrl
+iswctype
+iswdigit
+iswgraph
+iswlower
+iswprint
+iswpunct
+iswspace
+iswupper
+iswxdigit
+isxdigit
+jrand48
+kill
+killpg
+klogctl
+labs
+lchown
+ldexp
+ldiv
+lfind
+lgetxattr
+link
+linkat
+listen
+listxattr
+llabs
+lldiv
+llistxattr
+localeconv
+localtime
+localtime_r
+localtime_tz
+longjmp
+lrand48
+lremovexattr
+lsearch
+lseek
+lseek64
+lsetxattr
+lstat
+lstat64
+madvise
+mallinfo
+malloc
+malloc_usable_size
+mbrlen
+mbrtoc16
+mbrtoc32
+mbrtowc
+mbsinit
+mbsnrtowcs
+mbsrtowcs
+mbstowcs
+mbtowc
+memalign
+memccpy
+memchr
+memcmp
+memcpy
+memmem
+memmove
+memrchr
+memset
+mincore
+mkdir
+mkdirat
+mkdtemp
+mkfifo
+mknod
+mknodat
+mkstemp
+mkstemp64
+mkstemps
+mktemp
+mktime
+mktime_tz
+mlock
+mlockall
+mmap
+mmap64
+mount
+mprotect
+mrand48
+mremap
+msync
+munlock
+munlockall
+munmap
+nanosleep
+newlocale
+nftw
+nftw64
+nice
+nrand48
+ntohl
+ntohs
+open
+open64
+openat
+openat64
+opendir
+openlog
+pathconf
+pause
+pclose
+perror
+personality
+pipe
+pipe2
+poll
+popen
+posix_fallocate
+posix_fallocate64
+posix_memalign
+ppoll
+prctl
+pread
+pread64
+printf
+prlimit
+prlimit64
+pselect
+psiginfo
+psignal
+pthread_atfork
+pthread_attr_destroy
+pthread_attr_getdetachstate
+pthread_attr_getguardsize
+pthread_attr_getschedparam
+pthread_attr_getschedpolicy
+pthread_attr_getscope
+pthread_attr_getstack
+pthread_attr_getstacksize
+pthread_attr_init
+pthread_attr_setdetachstate
+pthread_attr_setguardsize
+pthread_attr_setschedparam
+pthread_attr_setschedpolicy
+pthread_attr_setscope
+pthread_attr_setstack
+pthread_attr_setstacksize
+pthread_cond_broadcast
+pthread_cond_destroy
+pthread_cond_init
+pthread_cond_signal
+pthread_cond_timedwait
+pthread_cond_wait
+pthread_condattr_destroy
+pthread_condattr_getclock
+pthread_condattr_getpshared
+pthread_condattr_init
+pthread_condattr_setclock
+pthread_condattr_setpshared
+pthread_create
+pthread_detach
+pthread_equal
+pthread_exit
+pthread_getattr_np
+pthread_getcpuclockid
+pthread_getschedparam
+pthread_getspecific
+pthread_join
+pthread_key_create
+pthread_key_delete
+pthread_kill
+pthread_mutex_destroy
+pthread_mutex_init
+pthread_mutex_lock
+pthread_mutex_timedlock
+pthread_mutex_trylock
+pthread_mutex_unlock
+pthread_mutexattr_destroy
+pthread_mutexattr_getpshared
+pthread_mutexattr_gettype
+pthread_mutexattr_init
+pthread_mutexattr_setpshared
+pthread_mutexattr_settype
+pthread_once
+pthread_rwlock_destroy
+pthread_rwlock_init
+pthread_rwlock_rdlock
+pthread_rwlock_timedrdlock
+pthread_rwlock_timedwrlock
+pthread_rwlock_tryrdlock
+pthread_rwlock_trywrlock
+pthread_rwlock_unlock
+pthread_rwlock_wrlock
+pthread_rwlockattr_destroy
+pthread_rwlockattr_getpshared
+pthread_rwlockattr_init
+pthread_rwlockattr_setpshared
+pthread_self
+pthread_setname_np
+pthread_setschedparam
+pthread_setspecific
+pthread_sigmask
+ptrace
+ptsname
+ptsname_r
+putc
+putc_unlocked
+putchar
+putchar_unlocked
+putenv
+puts
+pututline
+putwc
+putwchar
+pwrite
+pwrite64
+qsort
+quick_exit
+raise
+rand
+rand_r
+random
+read
+readahead
+readdir
+readdir64
+readdir64_r
+readdir_r
+readlink
+readlinkat
+readv
+realloc
+realpath
+reboot
+recv
+recvfrom
+recvmmsg
+recvmsg
+regcomp
+regerror
+regexec
+regfree
+remove
+removexattr
+rename
+renameat
+res_init
+res_mkquery
+res_query
+res_search
+rewind
+rewinddir
+rmdir
+sbrk
+scandir
+scandir64
+scanf
+sched_get_priority_max
+sched_get_priority_min
+sched_getaffinity
+sched_getcpu
+sched_getparam
+sched_getscheduler
+sched_rr_get_interval
+sched_setaffinity
+sched_setparam
+sched_setscheduler
+sched_yield
+seed48
+select
+sem_close
+sem_destroy
+sem_getvalue
+sem_init
+sem_open
+sem_post
+sem_timedwait
+sem_trywait
+sem_unlink
+sem_wait
+send
+sendfile
+sendfile64
+sendmmsg
+sendmsg
+sendto
+setbuf
+setbuffer
+setegid
+setenv
+seteuid
+setgid
+setgroups
+setitimer
+setjmp
+setlinebuf
+setlocale
+setlogmask
+setmntent
+setns
+setpgid
+setpgrp
+setpriority
+setprogname
+setregid
+setresgid
+setresuid
+setreuid
+setrlimit
+setrlimit64
+setservent
+setsid
+setsockopt
+setstate
+settimeofday
+setuid
+setusershell
+setutent
+setvbuf
+setxattr
+shutdown
+sigaction
+sigaddset
+sigaltstack
+sigblock
+sigdelset
+sigemptyset
+sigfillset
+siginterrupt
+sigismember
+siglongjmp
+signal
+signalfd
+sigpending
+sigprocmask
+sigsetjmp
+sigsetmask
+sigsuspend
+sigwait
+sleep
+snprintf
+socket
+socketpair
+sprintf
+srand
+srand48
+srandom
+sscanf
+stat
+stat64
+statfs
+statfs64
+statvfs
+statvfs64
+stpcpy
+stpncpy
+strcasecmp
+strcasestr
+strcat
+strchr
+strcmp
+strcoll
+strcpy
+strcspn
+strdup
+strerror
+strerror_r
+strftime
+strftime_tz
+strlcat
+strlcpy
+strlen
+strncasecmp
+strncat
+strncmp
+strncpy
+strndup
+strnlen
+strpbrk
+strptime
+strrchr
+strsep
+strsignal
+strspn
+strstr
+strtod
+strtof
+strtoimax
+strtok
+strtok_r
+strtol
+strtold
+strtoll
+strtoq
+strtoul
+strtoull
+strtoumax
+strtouq
+strxfrm
+swapoff
+swapon
+swprintf
+swscanf
+symlink
+symlinkat
+sync
+syscall
+sysconf
+sysinfo
+syslog
+system
+tcdrain
+tcflow
+tcflush
+tcgetattr
+tcgetpgrp
+tcgetsid
+tcsendbreak
+tcsetattr
+tcsetpgrp
+tdelete
+tdestroy
+tempnam
+tfind
+tgkill
+time
+timegm
+timelocal
+timer_create
+timer_delete
+timer_getoverrun
+timer_gettime
+timer_settime
+timerfd_create
+timerfd_gettime
+timerfd_settime
+times
+tmpfile
+tmpnam
+toascii
+tolower
+toupper
+towlower
+towupper
+truncate
+truncate64
+tsearch
+ttyname
+ttyname_r
+tzset
+umask
+umount
+umount2
+uname
+ungetc
+ungetwc
+unlink
+unlinkat
+unlockpt
+unsetenv
+unshare
+uselocale
+usleep
+utime
+utimensat
+utimes
+utmpname
+vasprintf
+vdprintf
+verr
+verrx
+vfork
+vfprintf
+vfscanf
+vfwprintf
+vfwscanf
+vprintf
+vscanf
+vsnprintf
+vsprintf
+vsscanf
+vswprintf
+vswscanf
+vsyslog
+vwarn
+vwarnx
+vwprintf
+vwscanf
+wait
+wait4
+waitid
+waitpid
+warn
+warnx
+wcpcpy
+wcpncpy
+wcrtomb
+wcscasecmp
+wcscat
+wcschr
+wcscmp
+wcscoll
+wcscpy
+wcscspn
+wcsdup
+wcsftime
+wcslcat
+wcslcpy
+wcslen
+wcsncasecmp
+wcsncat
+wcsncmp
+wcsncpy
+wcsnlen
+wcsnrtombs
+wcspbrk
+wcsrchr
+wcsrtombs
+wcsspn
+wcsstr
+wcstod
+wcstof
+wcstoimax
+wcstok
+wcstol
+wcstold
+wcstoll
+wcstombs
+wcstoul
+wcstoull
+wcstoumax
+wcswidth
+wcsxfrm
+wctob
+wctomb
+wctype
+wcwidth
+wmemchr
+wmemcmp
+wmemcpy
+wmemmove
+wmemset
+wprintf
+write
+writev
+wscanf
diff --git a/ndk/platforms/android-L/arch-arm64/symbols/libc.so.variables.txt b/ndk/platforms/android-L/arch-arm64/symbols/libc.so.variables.txt
new file mode 100644
index 0000000..8115363
--- /dev/null
+++ b/ndk/platforms/android-L/arch-arm64/symbols/libc.so.variables.txt
@@ -0,0 +1,26 @@
+_C_ctype_
+_C_tolower_
+_C_toupper_
+_ZSt7nothrow
+__isthreaded
+__libc_malloc_dispatch
+__p_class_syms
+__p_type_syms
+__progname
+__sF
+__stack_chk_guard
+__system_property_area__
+_ctype_
+_tolower_tab_
+_toupper_tab_
+daylight
+environ
+optarg
+opterr
+optind
+optopt
+optreset
+sys_siglist
+sys_signame
+timezone
+tzname
diff --git a/ndk/platforms/android-20/arch-arm64/symbols/libdl.so.functions.txt b/ndk/platforms/android-L/arch-arm64/symbols/libdl.so.functions.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-arm64/symbols/libdl.so.functions.txt
rename to ndk/platforms/android-L/arch-arm64/symbols/libdl.so.functions.txt
diff --git a/ndk/platforms/android-20/arch-arm64/symbols/libdl.so.variables.txt b/ndk/platforms/android-L/arch-arm64/symbols/libdl.so.variables.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-arm64/symbols/libdl.so.variables.txt
rename to ndk/platforms/android-L/arch-arm64/symbols/libdl.so.variables.txt
diff --git a/ndk/platforms/android-20/arch-arm64/symbols/libjnigraphics.so.functions.txt b/ndk/platforms/android-L/arch-arm64/symbols/libjnigraphics.so.functions.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-arm64/symbols/libjnigraphics.so.functions.txt
rename to ndk/platforms/android-L/arch-arm64/symbols/libjnigraphics.so.functions.txt
diff --git a/ndk/platforms/android-20/arch-arm64/symbols/libjnigraphics.so.variables.txt b/ndk/platforms/android-L/arch-arm64/symbols/libjnigraphics.so.variables.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-arm64/symbols/libjnigraphics.so.variables.txt
rename to ndk/platforms/android-L/arch-arm64/symbols/libjnigraphics.so.variables.txt
diff --git a/ndk/platforms/android-20/arch-arm64/symbols/liblog.so.functions.txt b/ndk/platforms/android-L/arch-arm64/symbols/liblog.so.functions.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-arm64/symbols/liblog.so.functions.txt
rename to ndk/platforms/android-L/arch-arm64/symbols/liblog.so.functions.txt
diff --git a/ndk/platforms/android-20/arch-arm64/symbols/liblog.so.variables.txt b/ndk/platforms/android-L/arch-arm64/symbols/liblog.so.variables.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-arm64/symbols/liblog.so.variables.txt
rename to ndk/platforms/android-L/arch-arm64/symbols/liblog.so.variables.txt
diff --git a/ndk/platforms/android-L/arch-arm64/symbols/libm.so.functions.txt b/ndk/platforms/android-L/arch-arm64/symbols/libm.so.functions.txt
new file mode 100644
index 0000000..82e7a57
--- /dev/null
+++ b/ndk/platforms/android-L/arch-arm64/symbols/libm.so.functions.txt
@@ -0,0 +1,233 @@
+__addtf3
+__divtf3
+__eqtf2
+__extenddftf2
+__extendsftf2
+__fixtfdi
+__fixtfsi
+__floatsitf
+__getf2
+__gttf2
+__letf2
+__lttf2
+__netf2
+__signbit
+__signbitf
+__signbitl
+__subtf3
+__trunctfdf2
+__trunctfsf2
+acos
+acosf
+acosh
+acoshf
+acoshl
+acosl
+asin
+asinf
+asinh
+asinhf
+asinhl
+asinl
+atan
+atan2
+atan2f
+atan2l
+atanf
+atanh
+atanhf
+atanhl
+atanl
+cbrt
+cbrtf
+cbrtl
+ceil
+ceilf
+ceill
+copysign
+copysignf
+copysignl
+cos
+cosf
+cosh
+coshf
+coshl
+cosl
+drem
+dremf
+erf
+erfc
+erfcf
+erfcl
+erff
+erfl
+exp
+exp2
+exp2f
+exp2l
+expf
+expl
+expm1
+expm1f
+expm1l
+fabs
+fabsf
+fabsl
+fdim
+fdimf
+fdiml
+feclearexcept
+fedisableexcept
+feenableexcept
+fegetenv
+fegetexcept
+fegetexceptflag
+fegetround
+feholdexcept
+feraiseexcept
+fesetenv
+fesetexceptflag
+fesetround
+fetestexcept
+feupdateenv
+finite
+finitef
+floor
+floorf
+floorl
+fma
+fmaf
+fmal
+fmax
+fmaxf
+fmaxl
+fmin
+fminf
+fminl
+fmod
+fmodf
+fmodl
+frexp
+frexpf
+frexpl
+gamma
+gamma_r
+gammaf
+gammaf_r
+hypot
+hypotf
+hypotl
+ilogb
+ilogbf
+ilogbl
+j0
+j0f
+j1
+j1f
+jn
+jnf
+ldexpf
+ldexpl
+lgamma
+lgamma_r
+lgammaf
+lgammaf_r
+lgammal
+llrint
+llrintf
+llrintl
+llround
+llroundf
+llroundl
+log
+log10
+log10f
+log10l
+log1p
+log1pf
+log1pl
+log2
+log2f
+log2l
+logb
+logbf
+logbl
+logf
+logl
+lrint
+lrintf
+lrintl
+lround
+lroundf
+lroundl
+modf
+modff
+modfl
+nan
+nanf
+nanl
+nearbyint
+nearbyintf
+nearbyintl
+nextafter
+nextafterf
+nextafterl
+nexttoward
+nexttowardf
+nexttowardl
+pow
+powf
+powl
+remainder
+remainderf
+remainderl
+remquo
+remquof
+remquol
+rint
+rintf
+rintl
+round
+roundf
+roundl
+scalb
+scalbf
+scalbln
+scalblnf
+scalblnl
+scalbn
+scalbnf
+scalbnl
+significand
+significandf
+significandl
+sin
+sincos
+sincosf
+sincosl
+sinf
+sinh
+sinhf
+sinhl
+sinl
+sqrt
+sqrtf
+sqrtl
+tan
+tanf
+tanh
+tanhf
+tanhl
+tanl
+tgamma
+tgammaf
+tgammal
+trunc
+truncf
+truncl
+y0
+y0f
+y1
+y1f
+yn
+ynf
diff --git a/ndk/platforms/android-20/arch-arm/symbols/libm.so.variables.txt b/ndk/platforms/android-L/arch-arm64/symbols/libm.so.variables.txt
similarity index 100%
copy from ndk/platforms/android-20/arch-arm/symbols/libm.so.variables.txt
copy to ndk/platforms/android-L/arch-arm64/symbols/libm.so.variables.txt
diff --git a/ndk/platforms/android-L/arch-arm64/symbols/libstdc++.so.functions.txt b/ndk/platforms/android-L/arch-arm64/symbols/libstdc++.so.functions.txt
new file mode 100644
index 0000000..7e337ad
--- /dev/null
+++ b/ndk/platforms/android-L/arch-arm64/symbols/libstdc++.so.functions.txt
@@ -0,0 +1 @@
+__this_library_is_now_part_of_libc
diff --git a/ndk/platforms/android-20/arch-arm64/symbols/libEGL.so.variables.txt b/ndk/platforms/android-L/arch-arm64/symbols/libstdc++.so.variables.txt
similarity index 100%
copy from ndk/platforms/android-20/arch-arm64/symbols/libEGL.so.variables.txt
copy to ndk/platforms/android-L/arch-arm64/symbols/libstdc++.so.variables.txt
diff --git a/ndk/platforms/android-L/arch-arm64/symbols/libz.so.functions.txt b/ndk/platforms/android-L/arch-arm64/symbols/libz.so.functions.txt
new file mode 100644
index 0000000..bbd634e
--- /dev/null
+++ b/ndk/platforms/android-L/arch-arm64/symbols/libz.so.functions.txt
@@ -0,0 +1,88 @@
+_tr_align
+_tr_flush_bits
+_tr_flush_block
+_tr_init
+_tr_stored_block
+_tr_tally
+adler32
+adler32_combine
+adler32_combine64
+compress
+compress2
+compressBound
+crc32
+crc32_combine
+crc32_combine64
+deflate
+deflateBound
+deflateCopy
+deflateEnd
+deflateInit2_
+deflateInit_
+deflateParams
+deflatePending
+deflatePrime
+deflateReset
+deflateResetKeep
+deflateSetDictionary
+deflateSetHeader
+deflateTune
+get_crc_table
+gz_error
+gzbuffer
+gzclearerr
+gzclose
+gzclose_r
+gzclose_w
+gzdirect
+gzdopen
+gzeof
+gzerror
+gzflush
+gzgetc
+gzgetc_
+gzgets
+gzoffset
+gzoffset64
+gzopen
+gzopen64
+gzprintf
+gzputc
+gzputs
+gzread
+gzrewind
+gzseek
+gzseek64
+gzsetparams
+gztell
+gztell64
+gzungetc
+gzvprintf
+gzwrite
+inflate
+inflateBack
+inflateBackEnd
+inflateBackInit_
+inflateCopy
+inflateEnd
+inflateGetDictionary
+inflateGetHeader
+inflateInit2_
+inflateInit_
+inflateMark
+inflatePrime
+inflateReset
+inflateReset2
+inflateResetKeep
+inflateSetDictionary
+inflateSync
+inflateSyncPoint
+inflateUndermine
+inflate_fast
+inflate_table
+uncompress
+zError
+zcalloc
+zcfree
+zlibCompileFlags
+zlibVersion
diff --git a/ndk/platforms/android-L/arch-arm64/symbols/libz.so.variables.txt b/ndk/platforms/android-L/arch-arm64/symbols/libz.so.variables.txt
new file mode 100644
index 0000000..c653ee5
--- /dev/null
+++ b/ndk/platforms/android-L/arch-arm64/symbols/libz.so.variables.txt
@@ -0,0 +1,5 @@
+_dist_code
+_length_code
+deflate_copyright
+inflate_copyright
+z_errmsg
diff --git a/ndk/platforms/android-20/arch-mips/include/asm/auxvec.h b/ndk/platforms/android-L/arch-mips/include/asm/auxvec.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips/include/asm/auxvec.h
rename to ndk/platforms/android-L/arch-mips/include/asm/auxvec.h
diff --git a/ndk/platforms/android-20/arch-mips/include/asm/bitsperlong.h b/ndk/platforms/android-L/arch-mips/include/asm/bitsperlong.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips/include/asm/bitsperlong.h
rename to ndk/platforms/android-L/arch-mips/include/asm/bitsperlong.h
diff --git a/ndk/platforms/android-20/arch-mips/include/asm/break.h b/ndk/platforms/android-L/arch-mips/include/asm/break.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips/include/asm/break.h
rename to ndk/platforms/android-L/arch-mips/include/asm/break.h
diff --git a/ndk/platforms/android-20/arch-mips/include/asm/byteorder.h b/ndk/platforms/android-L/arch-mips/include/asm/byteorder.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips/include/asm/byteorder.h
rename to ndk/platforms/android-L/arch-mips/include/asm/byteorder.h
diff --git a/ndk/platforms/android-20/arch-mips/include/asm/cachectl.h b/ndk/platforms/android-L/arch-mips/include/asm/cachectl.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips/include/asm/cachectl.h
rename to ndk/platforms/android-L/arch-mips/include/asm/cachectl.h
diff --git a/ndk/platforms/android-20/arch-mips/include/asm/errno.h b/ndk/platforms/android-L/arch-mips/include/asm/errno.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips/include/asm/errno.h
rename to ndk/platforms/android-L/arch-mips/include/asm/errno.h
diff --git a/ndk/platforms/android-20/arch-mips/include/asm/fcntl.h b/ndk/platforms/android-L/arch-mips/include/asm/fcntl.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips/include/asm/fcntl.h
rename to ndk/platforms/android-L/arch-mips/include/asm/fcntl.h
diff --git a/ndk/platforms/android-20/arch-mips/include/asm/inst.h b/ndk/platforms/android-L/arch-mips/include/asm/inst.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips/include/asm/inst.h
rename to ndk/platforms/android-L/arch-mips/include/asm/inst.h
diff --git a/ndk/platforms/android-20/arch-mips/include/asm/ioctl.h b/ndk/platforms/android-L/arch-mips/include/asm/ioctl.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips/include/asm/ioctl.h
rename to ndk/platforms/android-L/arch-mips/include/asm/ioctl.h
diff --git a/ndk/platforms/android-20/arch-mips/include/asm/ioctls.h b/ndk/platforms/android-L/arch-mips/include/asm/ioctls.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips/include/asm/ioctls.h
rename to ndk/platforms/android-L/arch-mips/include/asm/ioctls.h
diff --git a/ndk/platforms/android-20/arch-mips/include/asm/ipcbuf.h b/ndk/platforms/android-L/arch-mips/include/asm/ipcbuf.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips/include/asm/ipcbuf.h
rename to ndk/platforms/android-L/arch-mips/include/asm/ipcbuf.h
diff --git a/ndk/platforms/android-20/arch-mips/include/asm/kvm.h b/ndk/platforms/android-L/arch-mips/include/asm/kvm.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips/include/asm/kvm.h
rename to ndk/platforms/android-L/arch-mips/include/asm/kvm.h
diff --git a/ndk/platforms/android-20/arch-mips/include/asm/kvm_para.h b/ndk/platforms/android-L/arch-mips/include/asm/kvm_para.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips/include/asm/kvm_para.h
rename to ndk/platforms/android-L/arch-mips/include/asm/kvm_para.h
diff --git a/ndk/platforms/android-20/arch-mips/include/asm/mman.h b/ndk/platforms/android-L/arch-mips/include/asm/mman.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips/include/asm/mman.h
rename to ndk/platforms/android-L/arch-mips/include/asm/mman.h
diff --git a/ndk/platforms/android-20/arch-mips/include/asm/msgbuf.h b/ndk/platforms/android-L/arch-mips/include/asm/msgbuf.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips/include/asm/msgbuf.h
rename to ndk/platforms/android-L/arch-mips/include/asm/msgbuf.h
diff --git a/ndk/platforms/android-20/arch-mips/include/asm/param.h b/ndk/platforms/android-L/arch-mips/include/asm/param.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips/include/asm/param.h
rename to ndk/platforms/android-L/arch-mips/include/asm/param.h
diff --git a/ndk/platforms/android-20/arch-mips/include/asm/poll.h b/ndk/platforms/android-L/arch-mips/include/asm/poll.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips/include/asm/poll.h
rename to ndk/platforms/android-L/arch-mips/include/asm/poll.h
diff --git a/ndk/platforms/android-20/arch-mips/include/asm/posix_types.h b/ndk/platforms/android-L/arch-mips/include/asm/posix_types.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips/include/asm/posix_types.h
rename to ndk/platforms/android-L/arch-mips/include/asm/posix_types.h
diff --git a/ndk/platforms/android-20/arch-mips/include/asm/ptrace.h b/ndk/platforms/android-L/arch-mips/include/asm/ptrace.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips/include/asm/ptrace.h
rename to ndk/platforms/android-L/arch-mips/include/asm/ptrace.h
diff --git a/ndk/platforms/android-20/arch-mips/include/asm/resource.h b/ndk/platforms/android-L/arch-mips/include/asm/resource.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips/include/asm/resource.h
rename to ndk/platforms/android-L/arch-mips/include/asm/resource.h
diff --git a/ndk/platforms/android-20/arch-mips/include/asm/sembuf.h b/ndk/platforms/android-L/arch-mips/include/asm/sembuf.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips/include/asm/sembuf.h
rename to ndk/platforms/android-L/arch-mips/include/asm/sembuf.h
diff --git a/ndk/platforms/android-20/arch-mips/include/asm/setup.h b/ndk/platforms/android-L/arch-mips/include/asm/setup.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips/include/asm/setup.h
rename to ndk/platforms/android-L/arch-mips/include/asm/setup.h
diff --git a/ndk/platforms/android-20/arch-mips/include/asm/sgidefs.h b/ndk/platforms/android-L/arch-mips/include/asm/sgidefs.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips/include/asm/sgidefs.h
rename to ndk/platforms/android-L/arch-mips/include/asm/sgidefs.h
diff --git a/ndk/platforms/android-20/arch-mips/include/asm/shmbuf.h b/ndk/platforms/android-L/arch-mips/include/asm/shmbuf.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips/include/asm/shmbuf.h
rename to ndk/platforms/android-L/arch-mips/include/asm/shmbuf.h
diff --git a/ndk/platforms/android-20/arch-mips/include/asm/sigcontext.h b/ndk/platforms/android-L/arch-mips/include/asm/sigcontext.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips/include/asm/sigcontext.h
rename to ndk/platforms/android-L/arch-mips/include/asm/sigcontext.h
diff --git a/ndk/platforms/android-20/arch-mips/include/asm/siginfo.h b/ndk/platforms/android-L/arch-mips/include/asm/siginfo.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips/include/asm/siginfo.h
rename to ndk/platforms/android-L/arch-mips/include/asm/siginfo.h
diff --git a/ndk/platforms/android-20/arch-mips/include/asm/signal.h b/ndk/platforms/android-L/arch-mips/include/asm/signal.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips/include/asm/signal.h
rename to ndk/platforms/android-L/arch-mips/include/asm/signal.h
diff --git a/ndk/platforms/android-20/arch-mips/include/asm/socket.h b/ndk/platforms/android-L/arch-mips/include/asm/socket.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips/include/asm/socket.h
rename to ndk/platforms/android-L/arch-mips/include/asm/socket.h
diff --git a/ndk/platforms/android-20/arch-mips/include/asm/sockios.h b/ndk/platforms/android-L/arch-mips/include/asm/sockios.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips/include/asm/sockios.h
rename to ndk/platforms/android-L/arch-mips/include/asm/sockios.h
diff --git a/ndk/platforms/android-20/arch-mips/include/asm/stat.h b/ndk/platforms/android-L/arch-mips/include/asm/stat.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips/include/asm/stat.h
rename to ndk/platforms/android-L/arch-mips/include/asm/stat.h
diff --git a/ndk/platforms/android-20/arch-mips/include/asm/statfs.h b/ndk/platforms/android-L/arch-mips/include/asm/statfs.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips/include/asm/statfs.h
rename to ndk/platforms/android-L/arch-mips/include/asm/statfs.h
diff --git a/ndk/platforms/android-20/arch-mips/include/asm/swab.h b/ndk/platforms/android-L/arch-mips/include/asm/swab.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips/include/asm/swab.h
rename to ndk/platforms/android-L/arch-mips/include/asm/swab.h
diff --git a/ndk/platforms/android-20/arch-mips/include/asm/sysmips.h b/ndk/platforms/android-L/arch-mips/include/asm/sysmips.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips/include/asm/sysmips.h
rename to ndk/platforms/android-L/arch-mips/include/asm/sysmips.h
diff --git a/ndk/platforms/android-20/arch-mips/include/asm/termbits.h b/ndk/platforms/android-L/arch-mips/include/asm/termbits.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips/include/asm/termbits.h
rename to ndk/platforms/android-L/arch-mips/include/asm/termbits.h
diff --git a/ndk/platforms/android-20/arch-mips/include/asm/termios.h b/ndk/platforms/android-L/arch-mips/include/asm/termios.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips/include/asm/termios.h
rename to ndk/platforms/android-L/arch-mips/include/asm/termios.h
diff --git a/ndk/platforms/android-20/arch-mips/include/asm/types.h b/ndk/platforms/android-L/arch-mips/include/asm/types.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips/include/asm/types.h
rename to ndk/platforms/android-L/arch-mips/include/asm/types.h
diff --git a/ndk/platforms/android-20/arch-mips/include/asm/unistd.h b/ndk/platforms/android-L/arch-mips/include/asm/unistd.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips/include/asm/unistd.h
rename to ndk/platforms/android-L/arch-mips/include/asm/unistd.h
diff --git a/ndk/platforms/android-20/arch-mips/include/machine/asm.h b/ndk/platforms/android-L/arch-mips/include/machine/asm.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips/include/machine/asm.h
rename to ndk/platforms/android-L/arch-mips/include/machine/asm.h
diff --git a/ndk/platforms/android-20/arch-mips/include/machine/elf_machdep.h b/ndk/platforms/android-L/arch-mips/include/machine/elf_machdep.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips/include/machine/elf_machdep.h
rename to ndk/platforms/android-L/arch-mips/include/machine/elf_machdep.h
diff --git a/ndk/platforms/android-20/arch-mips/include/machine/endian.h b/ndk/platforms/android-L/arch-mips/include/machine/endian.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips/include/machine/endian.h
rename to ndk/platforms/android-L/arch-mips/include/machine/endian.h
diff --git a/ndk/platforms/android-20/arch-mips/include/machine/exec.h b/ndk/platforms/android-L/arch-mips/include/machine/exec.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips/include/machine/exec.h
rename to ndk/platforms/android-L/arch-mips/include/machine/exec.h
diff --git a/ndk/platforms/android-L/arch-mips/include/machine/fenv.h b/ndk/platforms/android-L/arch-mips/include/machine/fenv.h
new file mode 100644
index 0000000..689e1cb
--- /dev/null
+++ b/ndk/platforms/android-L/arch-mips/include/machine/fenv.h
@@ -0,0 +1,98 @@
+/*-
+ * Copyright (c) 2004-2005 David Schultz <das@FreeBSD.ORG>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD: src/lib/msun/arm/fenv.h,v 1.5 2005/03/16 19:03:45 das Exp $
+ */
+
+/*
+   Rewritten for Android.
+*/
+
+/* MIPS FPU floating point control register bits.
+ *
+ * 31-25  -> floating point conditions code bits set by FP compare
+ *           instructions
+ * 24     -> flush denormalized results to zero instead of
+ *           causing unimplemented operation exception.
+ * 23     -> Condition bit
+ * 22     -> In conjunction with FS detects denormalized
+ *           operands and replaces them internally with 0.
+ * 21     -> In conjunction with FS forces denormalized operands
+ *           to the closest normalized value.
+ * 20-18  -> reserved (read as 0, write with 0)
+ * 17     -> cause bit for unimplemented operation
+ * 16     -> cause bit for invalid exception
+ * 15     -> cause bit for division by zero exception
+ * 14     -> cause bit for overflow exception
+ * 13     -> cause bit for underflow exception
+ * 12     -> cause bit for inexact exception
+ * 11     -> enable exception for invalid exception
+ * 10     -> enable exception for division by zero exception
+ *  9     -> enable exception for overflow exception
+ *  8     -> enable exception for underflow exception
+ *  7     -> enable exception for inexact exception
+ *  6     -> flag invalid exception
+ *  5     -> flag division by zero exception
+ *  4     -> flag overflow exception
+ *  3     -> flag underflow exception
+ *  2     -> flag inexact exception
+ *  1-0   -> rounding control
+ *
+ *
+ * Rounding Control:
+ * 00 - rounding to nearest (RN)
+ * 01 - rounding toward zero (RZ)
+ * 10 - rounding (up) toward plus infinity (RP)
+ * 11 - rounding (down)toward minus infinity (RM)
+ */
+
+#ifndef _MIPS_FENV_H_
+#define _MIPS_FENV_H_
+
+#include <sys/types.h>
+
+__BEGIN_DECLS
+
+typedef __uint32_t fenv_t;
+typedef __uint32_t fexcept_t;
+
+/* Exception flags */
+#define FE_INVALID    0x40
+#define FE_DIVBYZERO  0x20
+#define FE_OVERFLOW   0x10
+#define FE_UNDERFLOW  0x08
+#define FE_INEXACT    0x04
+#define FE_ALL_EXCEPT (FE_DIVBYZERO | FE_INEXACT | \
+                       FE_INVALID | FE_OVERFLOW | FE_UNDERFLOW)
+
+/* Rounding modes */
+#define FE_TONEAREST  0x0000
+#define FE_TOWARDZERO 0x0001
+#define FE_UPWARD     0x0002
+#define FE_DOWNWARD   0x0003
+
+__END_DECLS
+
+#endif /* !_MIPS_FENV_H_ */
diff --git a/ndk/platforms/android-20/arch-mips/include/machine/regdef.h b/ndk/platforms/android-L/arch-mips/include/machine/regdef.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips/include/machine/regdef.h
rename to ndk/platforms/android-L/arch-mips/include/machine/regdef.h
diff --git a/ndk/platforms/android-20/arch-mips/include/machine/regnum.h b/ndk/platforms/android-L/arch-mips/include/machine/regnum.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips/include/machine/regnum.h
rename to ndk/platforms/android-L/arch-mips/include/machine/regnum.h
diff --git a/ndk/platforms/android-20/arch-mips/include/machine/setjmp.h b/ndk/platforms/android-L/arch-mips/include/machine/setjmp.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips/include/machine/setjmp.h
rename to ndk/platforms/android-L/arch-mips/include/machine/setjmp.h
diff --git a/ndk/platforms/android-20/arch-mips/include/machine/signal.h b/ndk/platforms/android-L/arch-mips/include/machine/signal.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips/include/machine/signal.h
rename to ndk/platforms/android-L/arch-mips/include/machine/signal.h
diff --git a/ndk/platforms/android-L/arch-mips/lib/libc.a b/ndk/platforms/android-L/arch-mips/lib/libc.a
new file mode 100644
index 0000000..fa74c92
--- /dev/null
+++ b/ndk/platforms/android-L/arch-mips/lib/libc.a
Binary files differ
diff --git a/ndk/platforms/android-L/arch-mips/lib/libm.a b/ndk/platforms/android-L/arch-mips/lib/libm.a
new file mode 100644
index 0000000..bd6fe98
--- /dev/null
+++ b/ndk/platforms/android-L/arch-mips/lib/libm.a
Binary files differ
diff --git a/ndk/platforms/android-L/arch-mips/lib/libstdc++.a b/ndk/platforms/android-L/arch-mips/lib/libstdc++.a
new file mode 100644
index 0000000..b9d7450
--- /dev/null
+++ b/ndk/platforms/android-L/arch-mips/lib/libstdc++.a
Binary files differ
diff --git a/ndk/platforms/android-L/arch-mips/lib/libz.a b/ndk/platforms/android-L/arch-mips/lib/libz.a
new file mode 100644
index 0000000..19ecf3f
--- /dev/null
+++ b/ndk/platforms/android-L/arch-mips/lib/libz.a
Binary files differ
diff --git a/ndk/platforms/android-20/arch-mips/symbols/libOpenMAXAL.so.functions.txt b/ndk/platforms/android-L/arch-mips/symbols/libOpenMAXAL.so.functions.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-mips/symbols/libOpenMAXAL.so.functions.txt
rename to ndk/platforms/android-L/arch-mips/symbols/libOpenMAXAL.so.functions.txt
diff --git a/ndk/platforms/android-20/arch-mips/symbols/libOpenMAXAL.so.variables.txt b/ndk/platforms/android-L/arch-mips/symbols/libOpenMAXAL.so.variables.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-mips/symbols/libOpenMAXAL.so.variables.txt
rename to ndk/platforms/android-L/arch-mips/symbols/libOpenMAXAL.so.variables.txt
diff --git a/ndk/platforms/android-20/arch-mips/symbols/libOpenSLES.so.functions.txt b/ndk/platforms/android-L/arch-mips/symbols/libOpenSLES.so.functions.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-mips/symbols/libOpenSLES.so.functions.txt
rename to ndk/platforms/android-L/arch-mips/symbols/libOpenSLES.so.functions.txt
diff --git a/ndk/platforms/android-20/arch-mips/symbols/libOpenSLES.so.variables.txt b/ndk/platforms/android-L/arch-mips/symbols/libOpenSLES.so.variables.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-mips/symbols/libOpenSLES.so.variables.txt
rename to ndk/platforms/android-L/arch-mips/symbols/libOpenSLES.so.variables.txt
diff --git a/ndk/platforms/android-20/arch-mips/symbols/libandroid.so.functions.txt b/ndk/platforms/android-L/arch-mips/symbols/libandroid.so.functions.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-mips/symbols/libandroid.so.functions.txt
rename to ndk/platforms/android-L/arch-mips/symbols/libandroid.so.functions.txt
diff --git a/ndk/platforms/android-20/arch-mips/symbols/libandroid.so.variables.txt b/ndk/platforms/android-L/arch-mips/symbols/libandroid.so.variables.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-mips/symbols/libandroid.so.variables.txt
rename to ndk/platforms/android-L/arch-mips/symbols/libandroid.so.variables.txt
diff --git a/ndk/platforms/android-L/arch-mips/symbols/libc.so.functions.txt b/ndk/platforms/android-L/arch-mips/symbols/libc.so.functions.txt
new file mode 100644
index 0000000..61e1429
--- /dev/null
+++ b/ndk/platforms/android-L/arch-mips/symbols/libc.so.functions.txt
@@ -0,0 +1,1128 @@
+SHA1Final
+SHA1Init
+SHA1Transform
+SHA1Update
+_Exit
+_Unwind_Backtrace
+_Unwind_DeleteException
+_Unwind_FindEnclosingFunction
+_Unwind_Find_FDE
+_Unwind_ForcedUnwind
+_Unwind_GetCFA
+_Unwind_GetDataRelBase
+_Unwind_GetGR
+_Unwind_GetIP
+_Unwind_GetIPInfo
+_Unwind_GetLanguageSpecificData
+_Unwind_GetRegionStart
+_Unwind_GetTextRelBase
+_Unwind_RaiseException
+_Unwind_Resume
+_Unwind_Resume_or_Rethrow
+_Unwind_SetGR
+_Unwind_SetIP
+_ZdaPv
+_ZdaPvRKSt9nothrow_t
+_ZdlPv
+_ZdlPvRKSt9nothrow_t
+_Znaj
+_ZnajRKSt9nothrow_t
+_Znwj
+_ZnwjRKSt9nothrow_t
+__FD_CLR_chk
+__FD_ISSET_chk
+__FD_SET_chk
+__accept4
+__android_set_abort_message
+__assert
+__assert2
+__b64_ntop
+__b64_pton
+__bionic_name_mem
+__brk
+__connect
+__cxa_atexit
+__cxa_finalize
+__cxa_guard_abort
+__cxa_guard_acquire
+__cxa_guard_release
+__cxa_pure_virtual
+__deregister_frame
+__deregister_frame_info
+__deregister_frame_info_bases
+__divdi3
+__dn_comp
+__dn_count_labels
+__dn_skipname
+__epoll_pwait
+__errno
+__exit
+__fcntl64
+__fgets_chk
+__findenv
+__fp_nquery
+__fp_query
+__fpclassify
+__fpclassifyd
+__fpclassifyf
+__fpclassifyl
+__frame_state_for
+__fstatfs64
+__futex_wait
+__futex_wake
+__get_h_errno
+__get_tls
+__getcpu
+__getcwd
+__getdents64
+__getpriority
+__hostalias
+__ioctl
+__isfinite
+__isfinitef
+__isfinitel
+__isinf
+__isinff
+__isinfl
+__isnan
+__isnanf
+__isnanl
+__isnormal
+__isnormalf
+__isnormall
+__libc_current_sigrtmax
+__libc_current_sigrtmin
+__libc_init
+__llseek
+__loc_aton
+__loc_ntoa
+__memcpy_chk
+__memmove_chk
+__memset_chk
+__mmap2
+__moddi3
+__open
+__open_2
+__openat
+__openat_2
+__p_cdname
+__p_cdnname
+__p_class
+__p_fqname
+__p_fqnname
+__p_option
+__p_query
+__p_rcode
+__p_secstodate
+__p_time
+__p_type
+__popcountsi2
+__ppoll
+__pselect6
+__pthread_cleanup_pop
+__pthread_cleanup_push
+__pthread_gettid
+__ptrace
+__putlong
+__putshort
+__read_chk
+__reboot
+__recvfrom_chk
+__register_frame
+__register_frame_info
+__register_frame_info_bases
+__register_frame_info_table
+__register_frame_info_table_bases
+__register_frame_table
+__res_close
+__res_dnok
+__res_hnok
+__res_hostalias
+__res_isourserver
+__res_mailok
+__res_nameinquery
+__res_nclose
+__res_ninit
+__res_nmkquery
+__res_nquery
+__res_nquerydomain
+__res_nsearch
+__res_nsend
+__res_ownok
+__res_queriesmatch
+__res_querydomain
+__res_randomid
+__res_send
+__res_send_setqhook
+__res_send_setrhook
+__rt_sigaction
+__rt_sigpending
+__rt_sigprocmask
+__rt_sigsuspend
+__rt_sigtimedwait
+__sched_cpualloc
+__sched_cpucount
+__sched_cpufree
+__sched_getaffinity
+__set_errno
+__set_tid_address
+__set_tls
+__sigaction
+__signalfd4
+__snprintf_chk
+__socket
+__sprintf_chk
+__srefill
+__srget
+__stack_chk_fail
+__statfs64
+__stpcpy_chk
+__stpncpy_chk
+__stpncpy_chk2
+__strcat_chk
+__strchr_chk
+__strcpy_chk
+__strlcat_chk
+__strlcpy_chk
+__strlen_chk
+__strncat_chk
+__strncpy_chk
+__strncpy_chk2
+__strrchr_chk
+__swbuf
+__sym_ntop
+__sym_ntos
+__sym_ston
+__system_properties_init
+__system_property_add
+__system_property_area_init
+__system_property_find
+__system_property_find_nth
+__system_property_foreach
+__system_property_get
+__system_property_read
+__system_property_serial
+__system_property_set
+__system_property_set_filename
+__system_property_update
+__system_property_wait_any
+__timer_create
+__timer_delete
+__timer_getoverrun
+__timer_gettime
+__timer_settime
+__udivdi3
+__umask_chk
+__umoddi3
+__vsnprintf_chk
+__vsprintf_chk
+__wait4
+__waitid
+_exit
+_flush_cache
+_getlong
+_getshort
+_longjmp
+_memset16
+_memset32
+_resolv_flush_cache_for_net
+_resolv_set_nameservers_for_net
+_setjmp
+_thread_created_hook
+_tolower
+_toupper
+abort
+abs
+accept
+accept4
+access
+acct
+alarm
+alphasort
+alphasort64
+android_getaddrinfofornet
+android_gethostbyaddrfornet
+android_gethostbynamefornet
+arc4random
+arc4random_addrandom
+arc4random_buf
+arc4random_stir
+arc4random_uniform
+asctime
+asctime64
+asctime64_r
+asctime_r
+asprintf
+at_quick_exit
+atof
+atoi
+atol
+atoll
+basename
+basename_r
+bcopy
+bind
+bindresvport
+brk
+bsd_signal
+bsearch
+btowc
+bzero
+c16rtomb
+c32rtomb
+cacheflush
+calloc
+capget
+capset
+cfgetispeed
+cfgetospeed
+cfmakeraw
+cfsetispeed
+cfsetospeed
+cfsetspeed
+chdir
+chmod
+chown
+chroot
+clearenv
+clearerr
+clock
+clock_getres
+clock_gettime
+clock_nanosleep
+clock_settime
+clone
+close
+closedir
+closelog
+closelog_r
+cmsg_nxthdr
+connect
+creat
+creat64
+ctime
+ctime64
+ctime64_r
+ctime_r
+daemon
+delete_module
+difftime
+dirfd
+dirname
+dirname_r
+div
+dlmalloc_inspect_all
+dlmalloc_trim
+dn_expand
+dprintf
+drand48
+dup
+dup2
+dup3
+duplocale
+endmntent
+endpwent
+endservent
+endusershell
+endutent
+epoll_create
+epoll_create1
+epoll_ctl
+epoll_pwait
+epoll_wait
+erand48
+err
+errx
+ether_aton
+ether_aton_r
+ether_ntoa
+ether_ntoa_r
+eventfd
+eventfd_read
+eventfd_write
+execl
+execle
+execlp
+execv
+execve
+execvp
+execvpe
+exit
+faccessat
+fallocate
+fallocate64
+fchdir
+fchmod
+fchmodat
+fchown
+fchownat
+fclose
+fcntl
+fdatasync
+fdopen
+fdopendir
+fdprintf
+feof
+ferror
+fflush
+ffs
+fgetc
+fgetln
+fgetpos
+fgets
+fgetwc
+fgetws
+fgetxattr
+fileno
+flistxattr
+flock
+flockfile
+fnmatch
+fopen
+fork
+fpathconf
+fprintf
+fpurge
+fputc
+fputs
+fputwc
+fputws
+fread
+free
+freeaddrinfo
+freelocale
+fremovexattr
+freopen
+fscanf
+fseek
+fseeko
+fsetpos
+fsetxattr
+fstat
+fstat64
+fstatat
+fstatat64
+fstatfs
+fstatfs64
+fstatvfs
+fstatvfs64
+fsync
+ftell
+ftello
+ftime
+ftok
+ftruncate
+ftruncate64
+ftrylockfile
+fts_children
+fts_close
+fts_open
+fts_read
+fts_set
+ftw
+ftw64
+funlockfile
+funopen
+futimens
+fwide
+fwprintf
+fwrite
+fwscanf
+gai_strerror
+get_malloc_leak_info
+getaddrinfo
+getauxval
+getc
+getc_unlocked
+getchar
+getchar_unlocked
+getcwd
+getdelim
+getdents
+getdtablesize
+getegid
+getenv
+geteuid
+getgid
+getgrgid
+getgrnam
+getgrouplist
+getgroups
+gethostbyaddr
+gethostbyname
+gethostbyname2
+gethostbyname_r
+gethostent
+gethostname
+getitimer
+getline
+getlogin
+getmntent
+getmntent_r
+getnameinfo
+getnetbyaddr
+getnetbyname
+getopt
+getopt_long
+getopt_long_only
+getpagesize
+getpeername
+getpgid
+getpgrp
+getpid
+getppid
+getpriority
+getprogname
+getprotobyname
+getprotobynumber
+getpt
+getpwnam
+getpwnam_r
+getpwuid
+getpwuid_r
+getresgid
+getresuid
+getrlimit
+getrlimit64
+getrusage
+gets
+getservbyname
+getservbyport
+getservent
+getsid
+getsockname
+getsockopt
+gettid
+gettimeofday
+getuid
+getusershell
+getutent
+getwc
+getwchar
+getxattr
+gmtime
+gmtime64
+gmtime64_r
+gmtime_r
+herror
+hstrerror
+htonl
+htons
+if_indextoname
+if_nametoindex
+imaxabs
+imaxdiv
+index
+inet_addr
+inet_aton
+inet_lnaof
+inet_makeaddr
+inet_netof
+inet_network
+inet_ntoa
+inet_ntop
+inet_pton
+init_module
+initgroups
+initstate
+inotify_add_watch
+inotify_init
+inotify_init1
+inotify_rm_watch
+ioctl
+isalnum
+isalpha
+isascii
+isatty
+isblank
+iscntrl
+isdigit
+isfinite
+isfinitef
+isfinitel
+isgraph
+isinf
+isinff
+isinfl
+islower
+isnan
+isnanf
+isnanl
+isnormal
+isnormalf
+isnormall
+isprint
+ispunct
+issetugid
+isspace
+isupper
+iswalnum
+iswalpha
+iswblank
+iswcntrl
+iswctype
+iswdigit
+iswgraph
+iswlower
+iswprint
+iswpunct
+iswspace
+iswupper
+iswxdigit
+isxdigit
+jrand48
+kill
+killpg
+klogctl
+labs
+lchown
+ldexp
+ldiv
+lfind
+lgetxattr
+link
+linkat
+listen
+listxattr
+llabs
+lldiv
+llistxattr
+localeconv
+localtime
+localtime64
+localtime64_r
+localtime_r
+localtime_tz
+longjmp
+lrand48
+lremovexattr
+lsearch
+lseek
+lseek64
+lsetxattr
+lstat
+lstat64
+madvise
+mallinfo
+malloc
+malloc_usable_size
+mbrlen
+mbrtoc16
+mbrtoc32
+mbrtowc
+mbsinit
+mbsnrtowcs
+mbsrtowcs
+mbstowcs
+mbtowc
+memalign
+memccpy
+memchr
+memcmp
+memcpy
+memmem
+memmove
+memrchr
+memset
+memswap
+mincore
+mkdir
+mkdirat
+mkdtemp
+mkfifo
+mknod
+mknodat
+mkstemp
+mkstemp64
+mkstemps
+mktemp
+mktime
+mktime64
+mktime_tz
+mlock
+mlockall
+mmap
+mmap64
+mount
+mprotect
+mrand48
+mremap
+msync
+munlock
+munlockall
+munmap
+nanosleep
+newlocale
+nftw
+nftw64
+nice
+nrand48
+ntohl
+ntohs
+open
+open64
+openat
+openat64
+opendir
+openlog
+openlog_r
+pathconf
+pause
+pclose
+perror
+personality
+pipe
+pipe2
+poll
+popen
+posix_fallocate
+posix_fallocate64
+posix_memalign
+ppoll
+prctl
+pread
+pread64
+printf
+prlimit64
+pselect
+psiginfo
+psignal
+pthread_atfork
+pthread_attr_destroy
+pthread_attr_getdetachstate
+pthread_attr_getguardsize
+pthread_attr_getschedparam
+pthread_attr_getschedpolicy
+pthread_attr_getscope
+pthread_attr_getstack
+pthread_attr_getstackaddr
+pthread_attr_getstacksize
+pthread_attr_init
+pthread_attr_setdetachstate
+pthread_attr_setguardsize
+pthread_attr_setschedparam
+pthread_attr_setschedpolicy
+pthread_attr_setscope
+pthread_attr_setstack
+pthread_attr_setstackaddr
+pthread_attr_setstacksize
+pthread_cond_broadcast
+pthread_cond_destroy
+pthread_cond_init
+pthread_cond_signal
+pthread_cond_timedwait
+pthread_cond_timedwait_monotonic
+pthread_cond_timedwait_monotonic_np
+pthread_cond_timedwait_relative_np
+pthread_cond_timeout_np
+pthread_cond_wait
+pthread_condattr_destroy
+pthread_condattr_getclock
+pthread_condattr_getpshared
+pthread_condattr_init
+pthread_condattr_setclock
+pthread_condattr_setpshared
+pthread_create
+pthread_detach
+pthread_equal
+pthread_exit
+pthread_getattr_np
+pthread_getcpuclockid
+pthread_getschedparam
+pthread_getspecific
+pthread_join
+pthread_key_create
+pthread_key_delete
+pthread_kill
+pthread_mutex_destroy
+pthread_mutex_init
+pthread_mutex_lock
+pthread_mutex_lock_timeout_np
+pthread_mutex_timedlock
+pthread_mutex_trylock
+pthread_mutex_unlock
+pthread_mutexattr_destroy
+pthread_mutexattr_getpshared
+pthread_mutexattr_gettype
+pthread_mutexattr_init
+pthread_mutexattr_setpshared
+pthread_mutexattr_settype
+pthread_once
+pthread_rwlock_destroy
+pthread_rwlock_init
+pthread_rwlock_rdlock
+pthread_rwlock_timedrdlock
+pthread_rwlock_timedwrlock
+pthread_rwlock_tryrdlock
+pthread_rwlock_trywrlock
+pthread_rwlock_unlock
+pthread_rwlock_wrlock
+pthread_rwlockattr_destroy
+pthread_rwlockattr_getpshared
+pthread_rwlockattr_init
+pthread_rwlockattr_setpshared
+pthread_self
+pthread_setname_np
+pthread_setschedparam
+pthread_setspecific
+pthread_sigmask
+ptrace
+ptsname
+ptsname_r
+putc
+putc_unlocked
+putchar
+putchar_unlocked
+putenv
+puts
+pututline
+putw
+putwc
+putwchar
+pvalloc
+pwrite
+pwrite64
+qsort
+quick_exit
+raise
+rand
+rand_r
+random
+read
+readahead
+readdir
+readdir64
+readdir64_r
+readdir_r
+readlink
+readlinkat
+readv
+realloc
+realpath
+reboot
+recv
+recvfrom
+recvmmsg
+recvmsg
+regcomp
+regerror
+regexec
+regfree
+remove
+removexattr
+rename
+renameat
+res_init
+res_mkquery
+res_query
+res_search
+rewind
+rewinddir
+rmdir
+sbrk
+scandir
+scandir64
+scanf
+sched_get_priority_max
+sched_get_priority_min
+sched_getaffinity
+sched_getcpu
+sched_getparam
+sched_getscheduler
+sched_rr_get_interval
+sched_setaffinity
+sched_setparam
+sched_setscheduler
+sched_yield
+seed48
+select
+sem_close
+sem_destroy
+sem_getvalue
+sem_init
+sem_open
+sem_post
+sem_timedwait
+sem_trywait
+sem_unlink
+sem_wait
+send
+sendfile
+sendfile64
+sendmmsg
+sendmsg
+sendto
+setbuf
+setbuffer
+setegid
+setenv
+seteuid
+setgid
+setgroups
+setitimer
+setjmp
+setlinebuf
+setlocale
+setlogmask
+setlogmask_r
+setmntent
+setns
+setpgid
+setpgrp
+setpriority
+setprogname
+setregid
+setresgid
+setresuid
+setreuid
+setrlimit
+setrlimit64
+setservent
+setsid
+setsockopt
+setstate
+settimeofday
+setuid
+setusershell
+setutent
+setvbuf
+setxattr
+shutdown
+sigaction
+sigaddset
+sigaltstack
+sigblock
+sigdelset
+sigemptyset
+sigfillset
+siginterrupt
+sigismember
+siglongjmp
+signal
+signalfd
+sigpending
+sigprocmask
+sigsetjmp
+sigsetmask
+sigsuspend
+sigwait
+sleep
+snprintf
+socket
+socketpair
+sprintf
+srand
+srand48
+srandom
+sscanf
+stat
+stat64
+statfs
+statfs64
+statvfs
+statvfs64
+stpcpy
+stpncpy
+strcasecmp
+strcasestr
+strcat
+strchr
+strcmp
+strcoll
+strcpy
+strcspn
+strdup
+strerror
+strerror_r
+strftime
+strftime_tz
+strlcat
+strlcpy
+strlen
+strncasecmp
+strncat
+strncmp
+strncpy
+strndup
+strnlen
+strntoimax
+strntoumax
+strpbrk
+strptime
+strrchr
+strsep
+strsignal
+strspn
+strstr
+strtod
+strtof
+strtoimax
+strtok
+strtok_r
+strtol
+strtold
+strtoll
+strtoq
+strtotimeval
+strtoul
+strtoull
+strtoumax
+strtouq
+strxfrm
+swapoff
+swapon
+swprintf
+swscanf
+symlink
+symlinkat
+sync
+syscall
+sysconf
+sysinfo
+syslog
+syslog_r
+system
+sysv_signal
+tcdrain
+tcflow
+tcflush
+tcgetattr
+tcgetpgrp
+tcgetsid
+tcsendbreak
+tcsetattr
+tcsetpgrp
+tdelete
+tdestroy
+tempnam
+tfind
+tgkill
+time
+timegm
+timegm64
+timelocal
+timelocal64
+timer_create
+timer_delete
+timer_getoverrun
+timer_gettime
+timer_settime
+timerfd_create
+timerfd_gettime
+timerfd_settime
+times
+tkill
+tmpfile
+tmpnam
+toascii
+tolower
+toupper
+towlower
+towupper
+truncate
+truncate64
+tsearch
+ttyname
+ttyname_r
+tzset
+umask
+umount
+umount2
+uname
+ungetc
+ungetwc
+unlink
+unlinkat
+unlockpt
+unsetenv
+unshare
+uselocale
+usleep
+utime
+utimensat
+utimes
+utmpname
+valloc
+vasprintf
+vdprintf
+verr
+verrx
+vfdprintf
+vfork
+vfprintf
+vfscanf
+vfwprintf
+vfwscanf
+vprintf
+vscanf
+vsnprintf
+vsprintf
+vsscanf
+vswprintf
+vswscanf
+vsyslog
+vsyslog_r
+vwarn
+vwarnx
+vwprintf
+vwscanf
+wait
+wait3
+wait4
+waitid
+waitpid
+warn
+warnx
+wcpcpy
+wcpncpy
+wcrtomb
+wcscasecmp
+wcscat
+wcschr
+wcscmp
+wcscoll
+wcscpy
+wcscspn
+wcsdup
+wcsftime
+wcslcat
+wcslcpy
+wcslen
+wcsncasecmp
+wcsncat
+wcsncmp
+wcsncpy
+wcsnlen
+wcsnrtombs
+wcspbrk
+wcsrchr
+wcsrtombs
+wcsspn
+wcsstr
+wcstod
+wcstof
+wcstoimax
+wcstok
+wcstol
+wcstold
+wcstoll
+wcstombs
+wcstoul
+wcstoull
+wcstoumax
+wcswcs
+wcswidth
+wcsxfrm
+wctob
+wctomb
+wctype
+wcwidth
+wmemchr
+wmemcmp
+wmemcpy
+wmemmove
+wmemset
+wprintf
+write
+writev
+wscanf
diff --git a/ndk/platforms/android-L/arch-mips/symbols/libc.so.variables.txt b/ndk/platforms/android-L/arch-mips/symbols/libc.so.variables.txt
new file mode 100644
index 0000000..785e924
--- /dev/null
+++ b/ndk/platforms/android-L/arch-mips/symbols/libc.so.variables.txt
@@ -0,0 +1,30 @@
+_C_ctype_
+_C_tolower_
+_C_toupper_
+_ZSt7nothrow
+__bionic_brk
+__isthreaded
+__libc_malloc_dispatch
+__p_class_syms
+__p_type_syms
+__page_shift
+__page_size
+__popcount_tab
+__progname
+__sF
+__stack_chk_guard
+__system_property_area__
+_ctype_
+_tolower_tab_
+_toupper_tab_
+daylight
+environ
+optarg
+opterr
+optind
+optopt
+optreset
+sys_siglist
+sys_signame
+timezone
+tzname
diff --git a/ndk/platforms/android-20/arch-mips/symbols/libdl.so.functions.txt b/ndk/platforms/android-L/arch-mips/symbols/libdl.so.functions.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-mips/symbols/libdl.so.functions.txt
rename to ndk/platforms/android-L/arch-mips/symbols/libdl.so.functions.txt
diff --git a/ndk/platforms/android-20/arch-mips/symbols/libdl.so.variables.txt b/ndk/platforms/android-L/arch-mips/symbols/libdl.so.variables.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-mips/symbols/libdl.so.variables.txt
rename to ndk/platforms/android-L/arch-mips/symbols/libdl.so.variables.txt
diff --git a/ndk/platforms/android-20/arch-mips/symbols/libjnigraphics.so.functions.txt b/ndk/platforms/android-L/arch-mips/symbols/libjnigraphics.so.functions.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-mips/symbols/libjnigraphics.so.functions.txt
rename to ndk/platforms/android-L/arch-mips/symbols/libjnigraphics.so.functions.txt
diff --git a/ndk/platforms/android-20/arch-mips/symbols/libjnigraphics.so.variables.txt b/ndk/platforms/android-L/arch-mips/symbols/libjnigraphics.so.variables.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-mips/symbols/libjnigraphics.so.variables.txt
rename to ndk/platforms/android-L/arch-mips/symbols/libjnigraphics.so.variables.txt
diff --git a/ndk/platforms/android-20/arch-mips/symbols/liblog.so.functions.txt b/ndk/platforms/android-L/arch-mips/symbols/liblog.so.functions.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-mips/symbols/liblog.so.functions.txt
rename to ndk/platforms/android-L/arch-mips/symbols/liblog.so.functions.txt
diff --git a/ndk/platforms/android-20/arch-mips/symbols/liblog.so.variables.txt b/ndk/platforms/android-L/arch-mips/symbols/liblog.so.variables.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-mips/symbols/liblog.so.variables.txt
rename to ndk/platforms/android-L/arch-mips/symbols/liblog.so.variables.txt
diff --git a/ndk/platforms/android-L/arch-mips/symbols/libm.so.functions.txt b/ndk/platforms/android-L/arch-mips/symbols/libm.so.functions.txt
new file mode 100644
index 0000000..8c3ccda
--- /dev/null
+++ b/ndk/platforms/android-L/arch-mips/symbols/libm.so.functions.txt
@@ -0,0 +1,224 @@
+__fixdfdi
+__fixsfdi
+__fixunsdfdi
+__fixunssfdi
+__signbit
+__signbitf
+__signbitl
+acos
+acosf
+acosh
+acoshf
+acoshl
+acosl
+asin
+asinf
+asinh
+asinhf
+asinhl
+asinl
+atan
+atan2
+atan2f
+atan2l
+atanf
+atanh
+atanhf
+atanhl
+atanl
+cabsl
+cbrt
+cbrtf
+cbrtl
+ceil
+ceilf
+ceill
+copysign
+copysignf
+copysignl
+cos
+cosf
+cosh
+coshf
+coshl
+cosl
+cprojl
+csqrtl
+drem
+dremf
+erf
+erfc
+erfcf
+erfcl
+erff
+erfl
+exp
+exp2
+exp2f
+exp2l
+expf
+expl
+expm1
+expm1f
+expm1l
+fabs
+fabsf
+fabsl
+fdim
+fdimf
+fdiml
+feclearexcept
+fedisableexcept
+feenableexcept
+fegetenv
+fegetexcept
+fegetexceptflag
+fegetround
+feholdexcept
+feraiseexcept
+fesetenv
+fesetexceptflag
+fesetround
+fetestexcept
+feupdateenv
+finite
+finitef
+floor
+floorf
+floorl
+fma
+fmaf
+fmal
+fmax
+fmaxf
+fmaxl
+fmin
+fminf
+fminl
+fmod
+fmodf
+fmodl
+frexp
+frexpf
+frexpl
+gamma
+gamma_r
+gammaf
+gammaf_r
+hypot
+hypotf
+hypotl
+ilogb
+ilogbf
+ilogbl
+j0
+j0f
+j1
+j1f
+jn
+jnf
+ldexpf
+ldexpl
+lgamma
+lgamma_r
+lgammaf
+lgammaf_r
+lgammal
+llrint
+llrintf
+llrintl
+llround
+llroundf
+llroundl
+log
+log10
+log10f
+log10l
+log1p
+log1pf
+log1pl
+log2
+log2f
+log2l
+logb
+logbf
+logbl
+logf
+logl
+lrint
+lrintf
+lrintl
+lround
+lroundf
+lroundl
+modf
+modff
+modfl
+nan
+nanf
+nanl
+nearbyint
+nearbyintf
+nearbyintl
+nextafter
+nextafterf
+nextafterl
+nexttoward
+nexttowardf
+nexttowardl
+pow
+powf
+powl
+remainder
+remainderf
+remainderl
+remquo
+remquof
+remquol
+rint
+rintf
+rintl
+round
+roundf
+roundl
+scalb
+scalbf
+scalbln
+scalblnf
+scalblnl
+scalbn
+scalbnf
+scalbnl
+significand
+significandf
+significandl
+sin
+sincos
+sincosf
+sincosl
+sinf
+sinh
+sinhf
+sinhl
+sinl
+sqrt
+sqrtf
+sqrtl
+tan
+tanf
+tanh
+tanhf
+tanhl
+tanl
+tgamma
+tgammaf
+tgammal
+trunc
+truncf
+truncl
+y0
+y0f
+y1
+y1f
+yn
+ynf
diff --git a/ndk/platforms/android-20/arch-mips/symbols/libm.so.variables.txt b/ndk/platforms/android-L/arch-mips/symbols/libm.so.variables.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-mips/symbols/libm.so.variables.txt
rename to ndk/platforms/android-L/arch-mips/symbols/libm.so.variables.txt
diff --git a/ndk/platforms/android-L/arch-mips/symbols/libstdc++.so.functions.txt b/ndk/platforms/android-L/arch-mips/symbols/libstdc++.so.functions.txt
new file mode 100644
index 0000000..7e337ad
--- /dev/null
+++ b/ndk/platforms/android-L/arch-mips/symbols/libstdc++.so.functions.txt
@@ -0,0 +1 @@
+__this_library_is_now_part_of_libc
diff --git a/ndk/platforms/android-20/arch-mips/symbols/libdl.so.variables.txt b/ndk/platforms/android-L/arch-mips/symbols/libstdc++.so.variables.txt
similarity index 100%
copy from ndk/platforms/android-20/arch-mips/symbols/libdl.so.variables.txt
copy to ndk/platforms/android-L/arch-mips/symbols/libstdc++.so.variables.txt
diff --git a/ndk/platforms/android-L/arch-mips/symbols/libz.so.functions.txt b/ndk/platforms/android-L/arch-mips/symbols/libz.so.functions.txt
new file mode 100644
index 0000000..bbd634e
--- /dev/null
+++ b/ndk/platforms/android-L/arch-mips/symbols/libz.so.functions.txt
@@ -0,0 +1,88 @@
+_tr_align
+_tr_flush_bits
+_tr_flush_block
+_tr_init
+_tr_stored_block
+_tr_tally
+adler32
+adler32_combine
+adler32_combine64
+compress
+compress2
+compressBound
+crc32
+crc32_combine
+crc32_combine64
+deflate
+deflateBound
+deflateCopy
+deflateEnd
+deflateInit2_
+deflateInit_
+deflateParams
+deflatePending
+deflatePrime
+deflateReset
+deflateResetKeep
+deflateSetDictionary
+deflateSetHeader
+deflateTune
+get_crc_table
+gz_error
+gzbuffer
+gzclearerr
+gzclose
+gzclose_r
+gzclose_w
+gzdirect
+gzdopen
+gzeof
+gzerror
+gzflush
+gzgetc
+gzgetc_
+gzgets
+gzoffset
+gzoffset64
+gzopen
+gzopen64
+gzprintf
+gzputc
+gzputs
+gzread
+gzrewind
+gzseek
+gzseek64
+gzsetparams
+gztell
+gztell64
+gzungetc
+gzvprintf
+gzwrite
+inflate
+inflateBack
+inflateBackEnd
+inflateBackInit_
+inflateCopy
+inflateEnd
+inflateGetDictionary
+inflateGetHeader
+inflateInit2_
+inflateInit_
+inflateMark
+inflatePrime
+inflateReset
+inflateReset2
+inflateResetKeep
+inflateSetDictionary
+inflateSync
+inflateSyncPoint
+inflateUndermine
+inflate_fast
+inflate_table
+uncompress
+zError
+zcalloc
+zcfree
+zlibCompileFlags
+zlibVersion
diff --git a/ndk/platforms/android-L/arch-mips/symbols/libz.so.variables.txt b/ndk/platforms/android-L/arch-mips/symbols/libz.so.variables.txt
new file mode 100644
index 0000000..c653ee5
--- /dev/null
+++ b/ndk/platforms/android-L/arch-mips/symbols/libz.so.variables.txt
@@ -0,0 +1,5 @@
+_dist_code
+_length_code
+deflate_copyright
+inflate_copyright
+z_errmsg
diff --git a/ndk/platforms/android-20/arch-mips64/include/asm/auxvec.h b/ndk/platforms/android-L/arch-mips64/include/asm/auxvec.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/include/asm/auxvec.h
rename to ndk/platforms/android-L/arch-mips64/include/asm/auxvec.h
diff --git a/ndk/platforms/android-20/arch-mips64/include/asm/bitsperlong.h b/ndk/platforms/android-L/arch-mips64/include/asm/bitsperlong.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/include/asm/bitsperlong.h
rename to ndk/platforms/android-L/arch-mips64/include/asm/bitsperlong.h
diff --git a/ndk/platforms/android-20/arch-mips64/include/asm/break.h b/ndk/platforms/android-L/arch-mips64/include/asm/break.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/include/asm/break.h
rename to ndk/platforms/android-L/arch-mips64/include/asm/break.h
diff --git a/ndk/platforms/android-20/arch-mips64/include/asm/byteorder.h b/ndk/platforms/android-L/arch-mips64/include/asm/byteorder.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/include/asm/byteorder.h
rename to ndk/platforms/android-L/arch-mips64/include/asm/byteorder.h
diff --git a/ndk/platforms/android-20/arch-mips64/include/asm/cachectl.h b/ndk/platforms/android-L/arch-mips64/include/asm/cachectl.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/include/asm/cachectl.h
rename to ndk/platforms/android-L/arch-mips64/include/asm/cachectl.h
diff --git a/ndk/platforms/android-20/arch-mips64/include/asm/errno.h b/ndk/platforms/android-L/arch-mips64/include/asm/errno.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/include/asm/errno.h
rename to ndk/platforms/android-L/arch-mips64/include/asm/errno.h
diff --git a/ndk/platforms/android-20/arch-mips64/include/asm/fcntl.h b/ndk/platforms/android-L/arch-mips64/include/asm/fcntl.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/include/asm/fcntl.h
rename to ndk/platforms/android-L/arch-mips64/include/asm/fcntl.h
diff --git a/ndk/platforms/android-20/arch-mips64/include/asm/inst.h b/ndk/platforms/android-L/arch-mips64/include/asm/inst.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/include/asm/inst.h
rename to ndk/platforms/android-L/arch-mips64/include/asm/inst.h
diff --git a/ndk/platforms/android-20/arch-mips64/include/asm/ioctl.h b/ndk/platforms/android-L/arch-mips64/include/asm/ioctl.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/include/asm/ioctl.h
rename to ndk/platforms/android-L/arch-mips64/include/asm/ioctl.h
diff --git a/ndk/platforms/android-20/arch-mips64/include/asm/ioctls.h b/ndk/platforms/android-L/arch-mips64/include/asm/ioctls.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/include/asm/ioctls.h
rename to ndk/platforms/android-L/arch-mips64/include/asm/ioctls.h
diff --git a/ndk/platforms/android-20/arch-mips64/include/asm/ipcbuf.h b/ndk/platforms/android-L/arch-mips64/include/asm/ipcbuf.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/include/asm/ipcbuf.h
rename to ndk/platforms/android-L/arch-mips64/include/asm/ipcbuf.h
diff --git a/ndk/platforms/android-20/arch-mips64/include/asm/kvm.h b/ndk/platforms/android-L/arch-mips64/include/asm/kvm.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/include/asm/kvm.h
rename to ndk/platforms/android-L/arch-mips64/include/asm/kvm.h
diff --git a/ndk/platforms/android-20/arch-mips64/include/asm/kvm_para.h b/ndk/platforms/android-L/arch-mips64/include/asm/kvm_para.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/include/asm/kvm_para.h
rename to ndk/platforms/android-L/arch-mips64/include/asm/kvm_para.h
diff --git a/ndk/platforms/android-20/arch-mips64/include/asm/mman.h b/ndk/platforms/android-L/arch-mips64/include/asm/mman.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/include/asm/mman.h
rename to ndk/platforms/android-L/arch-mips64/include/asm/mman.h
diff --git a/ndk/platforms/android-20/arch-mips64/include/asm/msgbuf.h b/ndk/platforms/android-L/arch-mips64/include/asm/msgbuf.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/include/asm/msgbuf.h
rename to ndk/platforms/android-L/arch-mips64/include/asm/msgbuf.h
diff --git a/ndk/platforms/android-20/arch-mips64/include/asm/param.h b/ndk/platforms/android-L/arch-mips64/include/asm/param.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/include/asm/param.h
rename to ndk/platforms/android-L/arch-mips64/include/asm/param.h
diff --git a/ndk/platforms/android-20/arch-mips64/include/asm/poll.h b/ndk/platforms/android-L/arch-mips64/include/asm/poll.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/include/asm/poll.h
rename to ndk/platforms/android-L/arch-mips64/include/asm/poll.h
diff --git a/ndk/platforms/android-20/arch-mips64/include/asm/posix_types.h b/ndk/platforms/android-L/arch-mips64/include/asm/posix_types.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/include/asm/posix_types.h
rename to ndk/platforms/android-L/arch-mips64/include/asm/posix_types.h
diff --git a/ndk/platforms/android-20/arch-mips64/include/asm/ptrace.h b/ndk/platforms/android-L/arch-mips64/include/asm/ptrace.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/include/asm/ptrace.h
rename to ndk/platforms/android-L/arch-mips64/include/asm/ptrace.h
diff --git a/ndk/platforms/android-20/arch-mips64/include/asm/resource.h b/ndk/platforms/android-L/arch-mips64/include/asm/resource.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/include/asm/resource.h
rename to ndk/platforms/android-L/arch-mips64/include/asm/resource.h
diff --git a/ndk/platforms/android-20/arch-mips64/include/asm/sembuf.h b/ndk/platforms/android-L/arch-mips64/include/asm/sembuf.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/include/asm/sembuf.h
rename to ndk/platforms/android-L/arch-mips64/include/asm/sembuf.h
diff --git a/ndk/platforms/android-20/arch-mips64/include/asm/setup.h b/ndk/platforms/android-L/arch-mips64/include/asm/setup.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/include/asm/setup.h
rename to ndk/platforms/android-L/arch-mips64/include/asm/setup.h
diff --git a/ndk/platforms/android-20/arch-mips64/include/asm/sgidefs.h b/ndk/platforms/android-L/arch-mips64/include/asm/sgidefs.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/include/asm/sgidefs.h
rename to ndk/platforms/android-L/arch-mips64/include/asm/sgidefs.h
diff --git a/ndk/platforms/android-20/arch-mips64/include/asm/shmbuf.h b/ndk/platforms/android-L/arch-mips64/include/asm/shmbuf.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/include/asm/shmbuf.h
rename to ndk/platforms/android-L/arch-mips64/include/asm/shmbuf.h
diff --git a/ndk/platforms/android-20/arch-mips64/include/asm/sigcontext.h b/ndk/platforms/android-L/arch-mips64/include/asm/sigcontext.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/include/asm/sigcontext.h
rename to ndk/platforms/android-L/arch-mips64/include/asm/sigcontext.h
diff --git a/ndk/platforms/android-20/arch-mips64/include/asm/siginfo.h b/ndk/platforms/android-L/arch-mips64/include/asm/siginfo.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/include/asm/siginfo.h
rename to ndk/platforms/android-L/arch-mips64/include/asm/siginfo.h
diff --git a/ndk/platforms/android-20/arch-mips64/include/asm/signal.h b/ndk/platforms/android-L/arch-mips64/include/asm/signal.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/include/asm/signal.h
rename to ndk/platforms/android-L/arch-mips64/include/asm/signal.h
diff --git a/ndk/platforms/android-20/arch-mips64/include/asm/socket.h b/ndk/platforms/android-L/arch-mips64/include/asm/socket.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/include/asm/socket.h
rename to ndk/platforms/android-L/arch-mips64/include/asm/socket.h
diff --git a/ndk/platforms/android-20/arch-mips64/include/asm/sockios.h b/ndk/platforms/android-L/arch-mips64/include/asm/sockios.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/include/asm/sockios.h
rename to ndk/platforms/android-L/arch-mips64/include/asm/sockios.h
diff --git a/ndk/platforms/android-20/arch-mips64/include/asm/stat.h b/ndk/platforms/android-L/arch-mips64/include/asm/stat.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/include/asm/stat.h
rename to ndk/platforms/android-L/arch-mips64/include/asm/stat.h
diff --git a/ndk/platforms/android-20/arch-mips64/include/asm/statfs.h b/ndk/platforms/android-L/arch-mips64/include/asm/statfs.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/include/asm/statfs.h
rename to ndk/platforms/android-L/arch-mips64/include/asm/statfs.h
diff --git a/ndk/platforms/android-20/arch-mips64/include/asm/swab.h b/ndk/platforms/android-L/arch-mips64/include/asm/swab.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/include/asm/swab.h
rename to ndk/platforms/android-L/arch-mips64/include/asm/swab.h
diff --git a/ndk/platforms/android-20/arch-mips64/include/asm/sysmips.h b/ndk/platforms/android-L/arch-mips64/include/asm/sysmips.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/include/asm/sysmips.h
rename to ndk/platforms/android-L/arch-mips64/include/asm/sysmips.h
diff --git a/ndk/platforms/android-20/arch-mips64/include/asm/termbits.h b/ndk/platforms/android-L/arch-mips64/include/asm/termbits.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/include/asm/termbits.h
rename to ndk/platforms/android-L/arch-mips64/include/asm/termbits.h
diff --git a/ndk/platforms/android-20/arch-mips64/include/asm/termios.h b/ndk/platforms/android-L/arch-mips64/include/asm/termios.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/include/asm/termios.h
rename to ndk/platforms/android-L/arch-mips64/include/asm/termios.h
diff --git a/ndk/platforms/android-20/arch-mips64/include/asm/types.h b/ndk/platforms/android-L/arch-mips64/include/asm/types.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/include/asm/types.h
rename to ndk/platforms/android-L/arch-mips64/include/asm/types.h
diff --git a/ndk/platforms/android-20/arch-mips64/include/asm/unistd.h b/ndk/platforms/android-L/arch-mips64/include/asm/unistd.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/include/asm/unistd.h
rename to ndk/platforms/android-L/arch-mips64/include/asm/unistd.h
diff --git a/ndk/platforms/android-20/arch-mips64/include/machine/asm.h b/ndk/platforms/android-L/arch-mips64/include/machine/asm.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/include/machine/asm.h
rename to ndk/platforms/android-L/arch-mips64/include/machine/asm.h
diff --git a/ndk/platforms/android-20/arch-mips64/include/machine/elf_machdep.h b/ndk/platforms/android-L/arch-mips64/include/machine/elf_machdep.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/include/machine/elf_machdep.h
rename to ndk/platforms/android-L/arch-mips64/include/machine/elf_machdep.h
diff --git a/ndk/platforms/android-20/arch-mips64/include/machine/endian.h b/ndk/platforms/android-L/arch-mips64/include/machine/endian.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/include/machine/endian.h
rename to ndk/platforms/android-L/arch-mips64/include/machine/endian.h
diff --git a/ndk/platforms/android-20/arch-mips64/include/machine/exec.h b/ndk/platforms/android-L/arch-mips64/include/machine/exec.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/include/machine/exec.h
rename to ndk/platforms/android-L/arch-mips64/include/machine/exec.h
diff --git a/ndk/platforms/android-L/arch-mips64/include/machine/fenv.h b/ndk/platforms/android-L/arch-mips64/include/machine/fenv.h
new file mode 100644
index 0000000..689e1cb
--- /dev/null
+++ b/ndk/platforms/android-L/arch-mips64/include/machine/fenv.h
@@ -0,0 +1,98 @@
+/*-
+ * Copyright (c) 2004-2005 David Schultz <das@FreeBSD.ORG>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD: src/lib/msun/arm/fenv.h,v 1.5 2005/03/16 19:03:45 das Exp $
+ */
+
+/*
+   Rewritten for Android.
+*/
+
+/* MIPS FPU floating point control register bits.
+ *
+ * 31-25  -> floating point conditions code bits set by FP compare
+ *           instructions
+ * 24     -> flush denormalized results to zero instead of
+ *           causing unimplemented operation exception.
+ * 23     -> Condition bit
+ * 22     -> In conjunction with FS detects denormalized
+ *           operands and replaces them internally with 0.
+ * 21     -> In conjunction with FS forces denormalized operands
+ *           to the closest normalized value.
+ * 20-18  -> reserved (read as 0, write with 0)
+ * 17     -> cause bit for unimplemented operation
+ * 16     -> cause bit for invalid exception
+ * 15     -> cause bit for division by zero exception
+ * 14     -> cause bit for overflow exception
+ * 13     -> cause bit for underflow exception
+ * 12     -> cause bit for inexact exception
+ * 11     -> enable exception for invalid exception
+ * 10     -> enable exception for division by zero exception
+ *  9     -> enable exception for overflow exception
+ *  8     -> enable exception for underflow exception
+ *  7     -> enable exception for inexact exception
+ *  6     -> flag invalid exception
+ *  5     -> flag division by zero exception
+ *  4     -> flag overflow exception
+ *  3     -> flag underflow exception
+ *  2     -> flag inexact exception
+ *  1-0   -> rounding control
+ *
+ *
+ * Rounding Control:
+ * 00 - rounding to nearest (RN)
+ * 01 - rounding toward zero (RZ)
+ * 10 - rounding (up) toward plus infinity (RP)
+ * 11 - rounding (down)toward minus infinity (RM)
+ */
+
+#ifndef _MIPS_FENV_H_
+#define _MIPS_FENV_H_
+
+#include <sys/types.h>
+
+__BEGIN_DECLS
+
+typedef __uint32_t fenv_t;
+typedef __uint32_t fexcept_t;
+
+/* Exception flags */
+#define FE_INVALID    0x40
+#define FE_DIVBYZERO  0x20
+#define FE_OVERFLOW   0x10
+#define FE_UNDERFLOW  0x08
+#define FE_INEXACT    0x04
+#define FE_ALL_EXCEPT (FE_DIVBYZERO | FE_INEXACT | \
+                       FE_INVALID | FE_OVERFLOW | FE_UNDERFLOW)
+
+/* Rounding modes */
+#define FE_TONEAREST  0x0000
+#define FE_TOWARDZERO 0x0001
+#define FE_UPWARD     0x0002
+#define FE_DOWNWARD   0x0003
+
+__END_DECLS
+
+#endif /* !_MIPS_FENV_H_ */
diff --git a/ndk/platforms/android-20/arch-mips64/include/machine/regdef.h b/ndk/platforms/android-L/arch-mips64/include/machine/regdef.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/include/machine/regdef.h
rename to ndk/platforms/android-L/arch-mips64/include/machine/regdef.h
diff --git a/ndk/platforms/android-20/arch-mips64/include/machine/regnum.h b/ndk/platforms/android-L/arch-mips64/include/machine/regnum.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/include/machine/regnum.h
rename to ndk/platforms/android-L/arch-mips64/include/machine/regnum.h
diff --git a/ndk/platforms/android-20/arch-mips64/include/machine/setjmp.h b/ndk/platforms/android-L/arch-mips64/include/machine/setjmp.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/include/machine/setjmp.h
rename to ndk/platforms/android-L/arch-mips64/include/machine/setjmp.h
diff --git a/ndk/platforms/android-20/arch-mips64/include/machine/signal.h b/ndk/platforms/android-L/arch-mips64/include/machine/signal.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/include/machine/signal.h
rename to ndk/platforms/android-L/arch-mips64/include/machine/signal.h
diff --git a/ndk/platforms/android-L/arch-mips64/lib b/ndk/platforms/android-L/arch-mips64/lib
new file mode 120000
index 0000000..94053f7
--- /dev/null
+++ b/ndk/platforms/android-L/arch-mips64/lib
@@ -0,0 +1 @@
+../arch-mips/lib
\ No newline at end of file
diff --git a/ndk/platforms/android-L/arch-mips64/lib-bootstrap b/ndk/platforms/android-L/arch-mips64/lib-bootstrap
new file mode 120000
index 0000000..7c180e0
--- /dev/null
+++ b/ndk/platforms/android-L/arch-mips64/lib-bootstrap
@@ -0,0 +1 @@
+../../android-9/arch-mips/lib-bootstrap
\ No newline at end of file
diff --git a/ndk/platforms/android-L/arch-mips64/lib64/libc.a b/ndk/platforms/android-L/arch-mips64/lib64/libc.a
new file mode 100644
index 0000000..a9a58d2
--- /dev/null
+++ b/ndk/platforms/android-L/arch-mips64/lib64/libc.a
Binary files differ
diff --git a/ndk/platforms/android-L/arch-mips64/lib64/libm.a b/ndk/platforms/android-L/arch-mips64/lib64/libm.a
new file mode 100644
index 0000000..747dc76
--- /dev/null
+++ b/ndk/platforms/android-L/arch-mips64/lib64/libm.a
Binary files differ
diff --git a/ndk/platforms/android-L/arch-mips64/lib64/libstdc++.a b/ndk/platforms/android-L/arch-mips64/lib64/libstdc++.a
new file mode 100644
index 0000000..59b6a85
--- /dev/null
+++ b/ndk/platforms/android-L/arch-mips64/lib64/libstdc++.a
Binary files differ
diff --git a/ndk/platforms/android-L/arch-mips64/lib64/libz.a b/ndk/platforms/android-L/arch-mips64/lib64/libz.a
new file mode 100644
index 0000000..8c25fff
--- /dev/null
+++ b/ndk/platforms/android-L/arch-mips64/lib64/libz.a
Binary files differ
diff --git a/ndk/platforms/android-20/arch-mips64/src/atexit.h b/ndk/platforms/android-L/arch-mips64/src/atexit.h
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/src/atexit.h
rename to ndk/platforms/android-L/arch-mips64/src/atexit.h
diff --git a/ndk/platforms/android-20/arch-mips64/src/crtbegin.c b/ndk/platforms/android-L/arch-mips64/src/crtbegin.c
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/src/crtbegin.c
rename to ndk/platforms/android-L/arch-mips64/src/crtbegin.c
diff --git a/ndk/platforms/android-20/arch-mips64/src/crtbegin_so.c b/ndk/platforms/android-L/arch-mips64/src/crtbegin_so.c
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/src/crtbegin_so.c
rename to ndk/platforms/android-L/arch-mips64/src/crtbegin_so.c
diff --git a/ndk/platforms/android-20/arch-mips64/src/crtend_android.S b/ndk/platforms/android-L/arch-mips64/src/crtend_android.S
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/src/crtend_android.S
rename to ndk/platforms/android-L/arch-mips64/src/crtend_android.S
diff --git a/ndk/platforms/android-20/arch-mips64/src/crtend_so.S b/ndk/platforms/android-L/arch-mips64/src/crtend_so.S
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/src/crtend_so.S
rename to ndk/platforms/android-L/arch-mips64/src/crtend_so.S
diff --git a/ndk/platforms/android-20/arch-mips64/symbols/libEGL.so.functions.txt b/ndk/platforms/android-L/arch-mips64/symbols/libEGL.so.functions.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/symbols/libEGL.so.functions.txt
rename to ndk/platforms/android-L/arch-mips64/symbols/libEGL.so.functions.txt
diff --git a/ndk/platforms/android-20/arch-mips64/symbols/libEGL.so.variables.txt b/ndk/platforms/android-L/arch-mips64/symbols/libEGL.so.variables.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/symbols/libEGL.so.variables.txt
rename to ndk/platforms/android-L/arch-mips64/symbols/libEGL.so.variables.txt
diff --git a/ndk/platforms/android-20/arch-mips64/symbols/libGLESv1_CM.so.functions.txt b/ndk/platforms/android-L/arch-mips64/symbols/libGLESv1_CM.so.functions.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/symbols/libGLESv1_CM.so.functions.txt
rename to ndk/platforms/android-L/arch-mips64/symbols/libGLESv1_CM.so.functions.txt
diff --git a/ndk/platforms/android-20/arch-mips64/symbols/libGLESv1_CM.so.variables.txt b/ndk/platforms/android-L/arch-mips64/symbols/libGLESv1_CM.so.variables.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/symbols/libGLESv1_CM.so.variables.txt
rename to ndk/platforms/android-L/arch-mips64/symbols/libGLESv1_CM.so.variables.txt
diff --git a/ndk/platforms/android-20/arch-mips64/symbols/libGLESv2.so.functions.txt b/ndk/platforms/android-L/arch-mips64/symbols/libGLESv2.so.functions.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/symbols/libGLESv2.so.functions.txt
rename to ndk/platforms/android-L/arch-mips64/symbols/libGLESv2.so.functions.txt
diff --git a/ndk/platforms/android-20/arch-mips64/symbols/libGLESv2.so.variables.txt b/ndk/platforms/android-L/arch-mips64/symbols/libGLESv2.so.variables.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/symbols/libGLESv2.so.variables.txt
rename to ndk/platforms/android-L/arch-mips64/symbols/libGLESv2.so.variables.txt
diff --git a/ndk/platforms/android-20/arch-mips64/symbols/libGLESv3.so.functions.txt b/ndk/platforms/android-L/arch-mips64/symbols/libGLESv3.so.functions.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/symbols/libGLESv3.so.functions.txt
rename to ndk/platforms/android-L/arch-mips64/symbols/libGLESv3.so.functions.txt
diff --git a/ndk/platforms/android-20/arch-mips64/symbols/libGLESv3.so.variables.txt b/ndk/platforms/android-L/arch-mips64/symbols/libGLESv3.so.variables.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/symbols/libGLESv3.so.variables.txt
rename to ndk/platforms/android-L/arch-mips64/symbols/libGLESv3.so.variables.txt
diff --git a/ndk/platforms/android-20/arch-mips64/symbols/libOpenMAXAL.so.functions.txt b/ndk/platforms/android-L/arch-mips64/symbols/libOpenMAXAL.so.functions.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/symbols/libOpenMAXAL.so.functions.txt
rename to ndk/platforms/android-L/arch-mips64/symbols/libOpenMAXAL.so.functions.txt
diff --git a/ndk/platforms/android-20/arch-mips64/symbols/libOpenMAXAL.so.variables.txt b/ndk/platforms/android-L/arch-mips64/symbols/libOpenMAXAL.so.variables.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/symbols/libOpenMAXAL.so.variables.txt
rename to ndk/platforms/android-L/arch-mips64/symbols/libOpenMAXAL.so.variables.txt
diff --git a/ndk/platforms/android-20/arch-mips64/symbols/libOpenSLES.so.functions.txt b/ndk/platforms/android-L/arch-mips64/symbols/libOpenSLES.so.functions.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/symbols/libOpenSLES.so.functions.txt
rename to ndk/platforms/android-L/arch-mips64/symbols/libOpenSLES.so.functions.txt
diff --git a/ndk/platforms/android-20/arch-mips64/symbols/libOpenSLES.so.variables.txt b/ndk/platforms/android-L/arch-mips64/symbols/libOpenSLES.so.variables.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/symbols/libOpenSLES.so.variables.txt
rename to ndk/platforms/android-L/arch-mips64/symbols/libOpenSLES.so.variables.txt
diff --git a/ndk/platforms/android-20/arch-mips64/symbols/libandroid.so.functions.txt b/ndk/platforms/android-L/arch-mips64/symbols/libandroid.so.functions.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/symbols/libandroid.so.functions.txt
rename to ndk/platforms/android-L/arch-mips64/symbols/libandroid.so.functions.txt
diff --git a/ndk/platforms/android-20/arch-mips64/symbols/libandroid.so.variables.txt b/ndk/platforms/android-L/arch-mips64/symbols/libandroid.so.variables.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/symbols/libandroid.so.variables.txt
rename to ndk/platforms/android-L/arch-mips64/symbols/libandroid.so.variables.txt
diff --git a/ndk/platforms/android-L/arch-mips64/symbols/libc.so.functions.txt b/ndk/platforms/android-L/arch-mips64/symbols/libc.so.functions.txt
new file mode 100644
index 0000000..aca418c
--- /dev/null
+++ b/ndk/platforms/android-L/arch-mips64/symbols/libc.so.functions.txt
@@ -0,0 +1,1034 @@
+SHA1Final
+SHA1Init
+SHA1Transform
+SHA1Update
+_Exit
+_Unwind_Backtrace
+_Unwind_DeleteException
+_Unwind_FindEnclosingFunction
+_Unwind_Find_FDE
+_Unwind_ForcedUnwind
+_Unwind_GetCFA
+_Unwind_GetDataRelBase
+_Unwind_GetGR
+_Unwind_GetIP
+_Unwind_GetIPInfo
+_Unwind_GetLanguageSpecificData
+_Unwind_GetRegionStart
+_Unwind_GetTextRelBase
+_Unwind_RaiseException
+_Unwind_Resume
+_Unwind_Resume_or_Rethrow
+_Unwind_SetGR
+_Unwind_SetIP
+_ZdaPv
+_ZdaPvRKSt9nothrow_t
+_ZdlPv
+_ZdlPvRKSt9nothrow_t
+_Znam
+_ZnamRKSt9nothrow_t
+_Znwm
+_ZnwmRKSt9nothrow_t
+__FD_CLR_chk
+__FD_ISSET_chk
+__FD_SET_chk
+__android_set_abort_message
+__assert
+__assert2
+__b64_ntop
+__b64_pton
+__bionic_name_mem
+__cxa_atexit
+__cxa_finalize
+__cxa_guard_abort
+__cxa_guard_acquire
+__cxa_guard_release
+__cxa_pure_virtual
+__deregister_frame
+__deregister_frame_info
+__deregister_frame_info_bases
+__dn_comp
+__dn_count_labels
+__dn_skipname
+__errno
+__fgets_chk
+__findenv
+__fp_nquery
+__fp_query
+__fpclassify
+__fpclassifyd
+__fpclassifyf
+__fpclassifyl
+__frame_state_for
+__get_h_errno
+__hostalias
+__isfinite
+__isfinitef
+__isfinitel
+__isinf
+__isinff
+__isinfl
+__isnan
+__isnanf
+__isnanl
+__isnormal
+__isnormalf
+__isnormall
+__libc_current_sigrtmax
+__libc_current_sigrtmin
+__libc_init
+__loc_aton
+__loc_ntoa
+__memcpy_chk
+__memmove_chk
+__memset_chk
+__multf3
+__open_2
+__openat_2
+__p_cdname
+__p_cdnname
+__p_class
+__p_fqname
+__p_fqnname
+__p_option
+__p_query
+__p_rcode
+__p_secstodate
+__p_time
+__p_type
+__popcountdi2
+__pthread_cleanup_pop
+__pthread_cleanup_push
+__pthread_gettid
+__putlong
+__putshort
+__read_chk
+__recvfrom_chk
+__register_frame
+__register_frame_info
+__register_frame_info_bases
+__register_frame_info_table
+__register_frame_info_table_bases
+__register_frame_table
+__res_close
+__res_dnok
+__res_hnok
+__res_hostalias
+__res_isourserver
+__res_mailok
+__res_nameinquery
+__res_nclose
+__res_ninit
+__res_nmkquery
+__res_nquery
+__res_nquerydomain
+__res_nsearch
+__res_nsend
+__res_ownok
+__res_queriesmatch
+__res_querydomain
+__res_randomid
+__res_send
+__res_send_setqhook
+__res_send_setrhook
+__sched_cpualloc
+__sched_cpucount
+__sched_cpufree
+__snprintf_chk
+__sprintf_chk
+__srefill
+__stack_chk_fail
+__stpcpy_chk
+__stpncpy_chk
+__stpncpy_chk2
+__strcat_chk
+__strchr_chk
+__strcpy_chk
+__strlcat_chk
+__strlcpy_chk
+__strlen_chk
+__strncat_chk
+__strncpy_chk
+__strncpy_chk2
+__strrchr_chk
+__sym_ntop
+__sym_ntos
+__sym_ston
+__system_properties_init
+__system_property_add
+__system_property_area_init
+__system_property_find
+__system_property_find_nth
+__system_property_foreach
+__system_property_get
+__system_property_read
+__system_property_serial
+__system_property_set
+__system_property_set_filename
+__system_property_update
+__system_property_wait_any
+__umask_chk
+__vsnprintf_chk
+__vsprintf_chk
+_exit
+_flush_cache
+_getlong
+_getshort
+_longjmp
+_resolv_flush_cache_for_net
+_resolv_set_nameservers_for_net
+_setjmp
+_thread_created_hook
+_tolower
+_toupper
+abort
+abs
+accept
+accept4
+access
+acct
+alarm
+alphasort
+alphasort64
+android_getaddrinfofornet
+android_gethostbyaddrfornet
+android_gethostbynamefornet
+arc4random
+arc4random_addrandom
+arc4random_buf
+arc4random_stir
+arc4random_uniform
+asctime
+asctime_r
+asprintf
+at_quick_exit
+atof
+atoi
+atol
+atoll
+basename
+basename_r
+bind
+bindresvport
+brk
+bsearch
+btowc
+c16rtomb
+c32rtomb
+calloc
+capget
+capset
+cfgetispeed
+cfgetospeed
+cfmakeraw
+cfsetispeed
+cfsetospeed
+cfsetspeed
+chdir
+chmod
+chown
+chroot
+clearenv
+clearerr
+clock
+clock_getres
+clock_gettime
+clock_nanosleep
+clock_settime
+clone
+close
+closedir
+closelog
+cmsg_nxthdr
+connect
+creat
+creat64
+ctime
+ctime_r
+daemon
+delete_module
+difftime
+dirfd
+dirname
+dirname_r
+div
+dlmalloc_inspect_all
+dlmalloc_trim
+dn_expand
+dprintf
+drand48
+dup
+dup2
+dup3
+duplocale
+endmntent
+endpwent
+endservent
+endusershell
+endutent
+epoll_create
+epoll_create1
+epoll_ctl
+epoll_pwait
+epoll_wait
+erand48
+err
+errx
+ether_aton
+ether_aton_r
+ether_ntoa
+ether_ntoa_r
+eventfd
+eventfd_read
+eventfd_write
+execl
+execle
+execlp
+execv
+execve
+execvp
+execvpe
+exit
+faccessat
+fallocate
+fallocate64
+fchdir
+fchmod
+fchmodat
+fchown
+fchownat
+fclose
+fcntl
+fdatasync
+fdopen
+fdopendir
+feof
+ferror
+fflush
+ffs
+fgetc
+fgetln
+fgetpos
+fgets
+fgetwc
+fgetws
+fgetxattr
+fileno
+flistxattr
+flock
+flockfile
+fnmatch
+fopen
+fork
+fpathconf
+fprintf
+fpurge
+fputc
+fputs
+fputwc
+fputws
+fread
+free
+freeaddrinfo
+freelocale
+fremovexattr
+freopen
+fscanf
+fseek
+fseeko
+fsetpos
+fsetxattr
+fstat
+fstat64
+fstatat
+fstatat64
+fstatfs
+fstatfs64
+fstatvfs
+fstatvfs64
+fsync
+ftell
+ftello
+ftok
+ftruncate
+ftruncate64
+ftrylockfile
+fts_children
+fts_close
+fts_open
+fts_read
+fts_set
+ftw
+ftw64
+funlockfile
+funopen
+futimens
+fwide
+fwprintf
+fwrite
+fwscanf
+gai_strerror
+get_malloc_leak_info
+getaddrinfo
+getauxval
+getc
+getc_unlocked
+getchar
+getchar_unlocked
+getcwd
+getdelim
+getegid
+getenv
+geteuid
+getgid
+getgrgid
+getgrnam
+getgrouplist
+getgroups
+gethostbyaddr
+gethostbyname
+gethostbyname2
+gethostbyname_r
+gethostent
+gethostname
+getitimer
+getline
+getlogin
+getmntent
+getmntent_r
+getnameinfo
+getnetbyaddr
+getnetbyname
+getopt
+getopt_long
+getopt_long_only
+getpagesize
+getpeername
+getpgid
+getpgrp
+getpid
+getppid
+getpriority
+getprogname
+getprotobyname
+getprotobynumber
+getpt
+getpwnam
+getpwnam_r
+getpwuid
+getpwuid_r
+getresgid
+getresuid
+getrlimit
+getrlimit64
+getrusage
+gets
+getservbyname
+getservbyport
+getservent
+getsid
+getsockname
+getsockopt
+gettid
+gettimeofday
+getuid
+getusershell
+getutent
+getwc
+getwchar
+getxattr
+gmtime
+gmtime_r
+herror
+hstrerror
+htonl
+htons
+if_indextoname
+if_nametoindex
+imaxabs
+imaxdiv
+inet_addr
+inet_aton
+inet_lnaof
+inet_makeaddr
+inet_netof
+inet_network
+inet_ntoa
+inet_ntop
+inet_pton
+init_module
+initgroups
+initstate
+inotify_add_watch
+inotify_init
+inotify_init1
+inotify_rm_watch
+ioctl
+isalnum
+isalpha
+isascii
+isatty
+isblank
+iscntrl
+isdigit
+isfinite
+isfinitef
+isfinitel
+isgraph
+isinf
+isinff
+isinfl
+islower
+isnan
+isnanf
+isnanl
+isnormal
+isnormalf
+isnormall
+isprint
+ispunct
+isspace
+isupper
+iswalnum
+iswalpha
+iswblank
+iswcntrl
+iswctype
+iswdigit
+iswgraph
+iswlower
+iswprint
+iswpunct
+iswspace
+iswupper
+iswxdigit
+isxdigit
+jrand48
+kill
+killpg
+klogctl
+labs
+lchown
+ldexp
+ldiv
+lfind
+lgetxattr
+link
+linkat
+listen
+listxattr
+llabs
+lldiv
+llistxattr
+localeconv
+localtime
+localtime_r
+localtime_tz
+longjmp
+lrand48
+lremovexattr
+lsearch
+lseek
+lseek64
+lsetxattr
+lstat
+lstat64
+madvise
+mallinfo
+malloc
+malloc_usable_size
+mbrlen
+mbrtoc16
+mbrtoc32
+mbrtowc
+mbsinit
+mbsnrtowcs
+mbsrtowcs
+mbstowcs
+mbtowc
+memalign
+memccpy
+memchr
+memcmp
+memcpy
+memmem
+memmove
+memrchr
+memset
+mincore
+mkdir
+mkdirat
+mkdtemp
+mkfifo
+mknod
+mknodat
+mkstemp
+mkstemp64
+mkstemps
+mktemp
+mktime
+mktime_tz
+mlock
+mlockall
+mmap
+mmap64
+mount
+mprotect
+mrand48
+mremap
+msync
+munlock
+munlockall
+munmap
+nanosleep
+newlocale
+nftw
+nftw64
+nice
+nrand48
+ntohl
+ntohs
+open
+open64
+openat
+openat64
+opendir
+openlog
+pathconf
+pause
+pclose
+perror
+personality
+pipe
+pipe2
+poll
+popen
+posix_fallocate
+posix_fallocate64
+posix_memalign
+ppoll
+prctl
+pread
+pread64
+printf
+prlimit
+prlimit64
+pselect
+psiginfo
+psignal
+pthread_atfork
+pthread_attr_destroy
+pthread_attr_getdetachstate
+pthread_attr_getguardsize
+pthread_attr_getschedparam
+pthread_attr_getschedpolicy
+pthread_attr_getscope
+pthread_attr_getstack
+pthread_attr_getstacksize
+pthread_attr_init
+pthread_attr_setdetachstate
+pthread_attr_setguardsize
+pthread_attr_setschedparam
+pthread_attr_setschedpolicy
+pthread_attr_setscope
+pthread_attr_setstack
+pthread_attr_setstacksize
+pthread_cond_broadcast
+pthread_cond_destroy
+pthread_cond_init
+pthread_cond_signal
+pthread_cond_timedwait
+pthread_cond_wait
+pthread_condattr_destroy
+pthread_condattr_getclock
+pthread_condattr_getpshared
+pthread_condattr_init
+pthread_condattr_setclock
+pthread_condattr_setpshared
+pthread_create
+pthread_detach
+pthread_equal
+pthread_exit
+pthread_getattr_np
+pthread_getcpuclockid
+pthread_getschedparam
+pthread_getspecific
+pthread_join
+pthread_key_create
+pthread_key_delete
+pthread_kill
+pthread_mutex_destroy
+pthread_mutex_init
+pthread_mutex_lock
+pthread_mutex_timedlock
+pthread_mutex_trylock
+pthread_mutex_unlock
+pthread_mutexattr_destroy
+pthread_mutexattr_getpshared
+pthread_mutexattr_gettype
+pthread_mutexattr_init
+pthread_mutexattr_setpshared
+pthread_mutexattr_settype
+pthread_once
+pthread_rwlock_destroy
+pthread_rwlock_init
+pthread_rwlock_rdlock
+pthread_rwlock_timedrdlock
+pthread_rwlock_timedwrlock
+pthread_rwlock_tryrdlock
+pthread_rwlock_trywrlock
+pthread_rwlock_unlock
+pthread_rwlock_wrlock
+pthread_rwlockattr_destroy
+pthread_rwlockattr_getpshared
+pthread_rwlockattr_init
+pthread_rwlockattr_setpshared
+pthread_self
+pthread_setname_np
+pthread_setschedparam
+pthread_setspecific
+pthread_sigmask
+ptrace
+ptsname
+ptsname_r
+putc
+putc_unlocked
+putchar
+putchar_unlocked
+putenv
+puts
+pututline
+putwc
+putwchar
+pwrite
+pwrite64
+qsort
+quick_exit
+raise
+rand
+rand_r
+random
+read
+readahead
+readdir
+readdir64
+readdir64_r
+readdir_r
+readlink
+readlinkat
+readv
+realloc
+realpath
+reboot
+recv
+recvfrom
+recvmmsg
+recvmsg
+regcomp
+regerror
+regexec
+regfree
+remove
+removexattr
+rename
+renameat
+res_init
+res_mkquery
+res_query
+res_search
+rewind
+rewinddir
+rmdir
+sbrk
+scandir
+scandir64
+scanf
+sched_get_priority_max
+sched_get_priority_min
+sched_getaffinity
+sched_getcpu
+sched_getparam
+sched_getscheduler
+sched_rr_get_interval
+sched_setaffinity
+sched_setparam
+sched_setscheduler
+sched_yield
+seed48
+select
+sem_close
+sem_destroy
+sem_getvalue
+sem_init
+sem_open
+sem_post
+sem_timedwait
+sem_trywait
+sem_unlink
+sem_wait
+send
+sendfile
+sendfile64
+sendmmsg
+sendmsg
+sendto
+setbuf
+setbuffer
+setegid
+setenv
+seteuid
+setgid
+setgroups
+setitimer
+setjmp
+setlinebuf
+setlocale
+setlogmask
+setmntent
+setns
+setpgid
+setpgrp
+setpriority
+setprogname
+setregid
+setresgid
+setresuid
+setreuid
+setrlimit
+setrlimit64
+setservent
+setsid
+setsockopt
+setstate
+settimeofday
+setuid
+setusershell
+setutent
+setvbuf
+setxattr
+shutdown
+sigaction
+sigaddset
+sigaltstack
+sigblock
+sigdelset
+sigemptyset
+sigfillset
+siginterrupt
+sigismember
+siglongjmp
+signal
+signalfd
+sigpending
+sigprocmask
+sigsetjmp
+sigsetmask
+sigsuspend
+sigwait
+sleep
+snprintf
+socket
+socketpair
+sprintf
+srand
+srand48
+srandom
+sscanf
+stat
+stat64
+statfs
+statfs64
+statvfs
+statvfs64
+stpcpy
+stpncpy
+strcasecmp
+strcasestr
+strcat
+strchr
+strcmp
+strcoll
+strcpy
+strcspn
+strdup
+strerror
+strerror_r
+strftime
+strftime_tz
+strlcat
+strlcpy
+strlen
+strncasecmp
+strncat
+strncmp
+strncpy
+strndup
+strnlen
+strpbrk
+strptime
+strrchr
+strsep
+strsignal
+strspn
+strstr
+strtod
+strtof
+strtoimax
+strtok
+strtok_r
+strtol
+strtold
+strtoll
+strtoq
+strtoul
+strtoull
+strtoumax
+strtouq
+strxfrm
+swapoff
+swapon
+swprintf
+swscanf
+symlink
+symlinkat
+sync
+syscall
+sysconf
+sysinfo
+syslog
+system
+tcdrain
+tcflow
+tcflush
+tcgetattr
+tcgetpgrp
+tcgetsid
+tcsendbreak
+tcsetattr
+tcsetpgrp
+tdelete
+tdestroy
+tempnam
+tfind
+tgkill
+time
+timegm
+timelocal
+timer_create
+timer_delete
+timer_getoverrun
+timer_gettime
+timer_settime
+timerfd_create
+timerfd_gettime
+timerfd_settime
+times
+tmpfile
+tmpnam
+toascii
+tolower
+toupper
+towlower
+towupper
+truncate
+truncate64
+tsearch
+ttyname
+ttyname_r
+tzset
+umask
+umount
+umount2
+uname
+ungetc
+ungetwc
+unlink
+unlinkat
+unlockpt
+unsetenv
+unshare
+uselocale
+usleep
+utime
+utimensat
+utimes
+utmpname
+vasprintf
+vdprintf
+verr
+verrx
+vfork
+vfprintf
+vfscanf
+vfwprintf
+vfwscanf
+vprintf
+vscanf
+vsnprintf
+vsprintf
+vsscanf
+vswprintf
+vswscanf
+vsyslog
+vwarn
+vwarnx
+vwprintf
+vwscanf
+wait
+wait4
+waitid
+waitpid
+warn
+warnx
+wcpcpy
+wcpncpy
+wcrtomb
+wcscasecmp
+wcscat
+wcschr
+wcscmp
+wcscoll
+wcscpy
+wcscspn
+wcsdup
+wcsftime
+wcslcat
+wcslcpy
+wcslen
+wcsncasecmp
+wcsncat
+wcsncmp
+wcsncpy
+wcsnlen
+wcsnrtombs
+wcspbrk
+wcsrchr
+wcsrtombs
+wcsspn
+wcsstr
+wcstod
+wcstof
+wcstoimax
+wcstok
+wcstol
+wcstold
+wcstoll
+wcstombs
+wcstoul
+wcstoull
+wcstoumax
+wcswidth
+wcsxfrm
+wctob
+wctomb
+wctype
+wcwidth
+wmemchr
+wmemcmp
+wmemcpy
+wmemmove
+wmemset
+wprintf
+write
+writev
+wscanf
diff --git a/ndk/platforms/android-L/arch-mips64/symbols/libc.so.variables.txt b/ndk/platforms/android-L/arch-mips64/symbols/libc.so.variables.txt
new file mode 100644
index 0000000..8115363
--- /dev/null
+++ b/ndk/platforms/android-L/arch-mips64/symbols/libc.so.variables.txt
@@ -0,0 +1,26 @@
+_C_ctype_
+_C_tolower_
+_C_toupper_
+_ZSt7nothrow
+__isthreaded
+__libc_malloc_dispatch
+__p_class_syms
+__p_type_syms
+__progname
+__sF
+__stack_chk_guard
+__system_property_area__
+_ctype_
+_tolower_tab_
+_toupper_tab_
+daylight
+environ
+optarg
+opterr
+optind
+optopt
+optreset
+sys_siglist
+sys_signame
+timezone
+tzname
diff --git a/ndk/platforms/android-20/arch-mips64/symbols/libdl.so.functions.txt b/ndk/platforms/android-L/arch-mips64/symbols/libdl.so.functions.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/symbols/libdl.so.functions.txt
rename to ndk/platforms/android-L/arch-mips64/symbols/libdl.so.functions.txt
diff --git a/ndk/platforms/android-20/arch-mips64/symbols/libdl.so.variables.txt b/ndk/platforms/android-L/arch-mips64/symbols/libdl.so.variables.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/symbols/libdl.so.variables.txt
rename to ndk/platforms/android-L/arch-mips64/symbols/libdl.so.variables.txt
diff --git a/ndk/platforms/android-20/arch-mips64/symbols/libjnigraphics.so.functions.txt b/ndk/platforms/android-L/arch-mips64/symbols/libjnigraphics.so.functions.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/symbols/libjnigraphics.so.functions.txt
rename to ndk/platforms/android-L/arch-mips64/symbols/libjnigraphics.so.functions.txt
diff --git a/ndk/platforms/android-20/arch-mips64/symbols/libjnigraphics.so.variables.txt b/ndk/platforms/android-L/arch-mips64/symbols/libjnigraphics.so.variables.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/symbols/libjnigraphics.so.variables.txt
rename to ndk/platforms/android-L/arch-mips64/symbols/libjnigraphics.so.variables.txt
diff --git a/ndk/platforms/android-20/arch-mips64/symbols/liblog.so.functions.txt b/ndk/platforms/android-L/arch-mips64/symbols/liblog.so.functions.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/symbols/liblog.so.functions.txt
rename to ndk/platforms/android-L/arch-mips64/symbols/liblog.so.functions.txt
diff --git a/ndk/platforms/android-20/arch-mips64/symbols/liblog.so.variables.txt b/ndk/platforms/android-L/arch-mips64/symbols/liblog.so.variables.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-mips64/symbols/liblog.so.variables.txt
rename to ndk/platforms/android-L/arch-mips64/symbols/liblog.so.variables.txt
diff --git a/ndk/platforms/android-L/arch-mips64/symbols/libm.so.functions.txt b/ndk/platforms/android-L/arch-mips64/symbols/libm.so.functions.txt
new file mode 100644
index 0000000..82e7a57
--- /dev/null
+++ b/ndk/platforms/android-L/arch-mips64/symbols/libm.so.functions.txt
@@ -0,0 +1,233 @@
+__addtf3
+__divtf3
+__eqtf2
+__extenddftf2
+__extendsftf2
+__fixtfdi
+__fixtfsi
+__floatsitf
+__getf2
+__gttf2
+__letf2
+__lttf2
+__netf2
+__signbit
+__signbitf
+__signbitl
+__subtf3
+__trunctfdf2
+__trunctfsf2
+acos
+acosf
+acosh
+acoshf
+acoshl
+acosl
+asin
+asinf
+asinh
+asinhf
+asinhl
+asinl
+atan
+atan2
+atan2f
+atan2l
+atanf
+atanh
+atanhf
+atanhl
+atanl
+cbrt
+cbrtf
+cbrtl
+ceil
+ceilf
+ceill
+copysign
+copysignf
+copysignl
+cos
+cosf
+cosh
+coshf
+coshl
+cosl
+drem
+dremf
+erf
+erfc
+erfcf
+erfcl
+erff
+erfl
+exp
+exp2
+exp2f
+exp2l
+expf
+expl
+expm1
+expm1f
+expm1l
+fabs
+fabsf
+fabsl
+fdim
+fdimf
+fdiml
+feclearexcept
+fedisableexcept
+feenableexcept
+fegetenv
+fegetexcept
+fegetexceptflag
+fegetround
+feholdexcept
+feraiseexcept
+fesetenv
+fesetexceptflag
+fesetround
+fetestexcept
+feupdateenv
+finite
+finitef
+floor
+floorf
+floorl
+fma
+fmaf
+fmal
+fmax
+fmaxf
+fmaxl
+fmin
+fminf
+fminl
+fmod
+fmodf
+fmodl
+frexp
+frexpf
+frexpl
+gamma
+gamma_r
+gammaf
+gammaf_r
+hypot
+hypotf
+hypotl
+ilogb
+ilogbf
+ilogbl
+j0
+j0f
+j1
+j1f
+jn
+jnf
+ldexpf
+ldexpl
+lgamma
+lgamma_r
+lgammaf
+lgammaf_r
+lgammal
+llrint
+llrintf
+llrintl
+llround
+llroundf
+llroundl
+log
+log10
+log10f
+log10l
+log1p
+log1pf
+log1pl
+log2
+log2f
+log2l
+logb
+logbf
+logbl
+logf
+logl
+lrint
+lrintf
+lrintl
+lround
+lroundf
+lroundl
+modf
+modff
+modfl
+nan
+nanf
+nanl
+nearbyint
+nearbyintf
+nearbyintl
+nextafter
+nextafterf
+nextafterl
+nexttoward
+nexttowardf
+nexttowardl
+pow
+powf
+powl
+remainder
+remainderf
+remainderl
+remquo
+remquof
+remquol
+rint
+rintf
+rintl
+round
+roundf
+roundl
+scalb
+scalbf
+scalbln
+scalblnf
+scalblnl
+scalbn
+scalbnf
+scalbnl
+significand
+significandf
+significandl
+sin
+sincos
+sincosf
+sincosl
+sinf
+sinh
+sinhf
+sinhl
+sinl
+sqrt
+sqrtf
+sqrtl
+tan
+tanf
+tanh
+tanhf
+tanhl
+tanl
+tgamma
+tgammaf
+tgammal
+trunc
+truncf
+truncl
+y0
+y0f
+y1
+y1f
+yn
+ynf
diff --git a/ndk/platforms/android-20/arch-arm/symbols/libm.so.variables.txt b/ndk/platforms/android-L/arch-mips64/symbols/libm.so.variables.txt
similarity index 100%
copy from ndk/platforms/android-20/arch-arm/symbols/libm.so.variables.txt
copy to ndk/platforms/android-L/arch-mips64/symbols/libm.so.variables.txt
diff --git a/ndk/platforms/android-L/arch-mips64/symbols/libstdc++.so.functions.txt b/ndk/platforms/android-L/arch-mips64/symbols/libstdc++.so.functions.txt
new file mode 100644
index 0000000..7e337ad
--- /dev/null
+++ b/ndk/platforms/android-L/arch-mips64/symbols/libstdc++.so.functions.txt
@@ -0,0 +1 @@
+__this_library_is_now_part_of_libc
diff --git a/ndk/platforms/android-20/arch-mips64/symbols/libEGL.so.variables.txt b/ndk/platforms/android-L/arch-mips64/symbols/libstdc++.so.variables.txt
similarity index 100%
copy from ndk/platforms/android-20/arch-mips64/symbols/libEGL.so.variables.txt
copy to ndk/platforms/android-L/arch-mips64/symbols/libstdc++.so.variables.txt
diff --git a/ndk/platforms/android-L/arch-mips64/symbols/libz.so.functions.txt b/ndk/platforms/android-L/arch-mips64/symbols/libz.so.functions.txt
new file mode 100644
index 0000000..bbd634e
--- /dev/null
+++ b/ndk/platforms/android-L/arch-mips64/symbols/libz.so.functions.txt
@@ -0,0 +1,88 @@
+_tr_align
+_tr_flush_bits
+_tr_flush_block
+_tr_init
+_tr_stored_block
+_tr_tally
+adler32
+adler32_combine
+adler32_combine64
+compress
+compress2
+compressBound
+crc32
+crc32_combine
+crc32_combine64
+deflate
+deflateBound
+deflateCopy
+deflateEnd
+deflateInit2_
+deflateInit_
+deflateParams
+deflatePending
+deflatePrime
+deflateReset
+deflateResetKeep
+deflateSetDictionary
+deflateSetHeader
+deflateTune
+get_crc_table
+gz_error
+gzbuffer
+gzclearerr
+gzclose
+gzclose_r
+gzclose_w
+gzdirect
+gzdopen
+gzeof
+gzerror
+gzflush
+gzgetc
+gzgetc_
+gzgets
+gzoffset
+gzoffset64
+gzopen
+gzopen64
+gzprintf
+gzputc
+gzputs
+gzread
+gzrewind
+gzseek
+gzseek64
+gzsetparams
+gztell
+gztell64
+gzungetc
+gzvprintf
+gzwrite
+inflate
+inflateBack
+inflateBackEnd
+inflateBackInit_
+inflateCopy
+inflateEnd
+inflateGetDictionary
+inflateGetHeader
+inflateInit2_
+inflateInit_
+inflateMark
+inflatePrime
+inflateReset
+inflateReset2
+inflateResetKeep
+inflateSetDictionary
+inflateSync
+inflateSyncPoint
+inflateUndermine
+inflate_fast
+inflate_table
+uncompress
+zError
+zcalloc
+zcfree
+zlibCompileFlags
+zlibVersion
diff --git a/ndk/platforms/android-L/arch-mips64/symbols/libz.so.variables.txt b/ndk/platforms/android-L/arch-mips64/symbols/libz.so.variables.txt
new file mode 100644
index 0000000..c653ee5
--- /dev/null
+++ b/ndk/platforms/android-L/arch-mips64/symbols/libz.so.variables.txt
@@ -0,0 +1,5 @@
+_dist_code
+_length_code
+deflate_copyright
+inflate_copyright
+z_errmsg
diff --git a/ndk/platforms/android-20/arch-x86/include/asm/a.out.h b/ndk/platforms/android-L/arch-x86/include/asm/a.out.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/include/asm/a.out.h
rename to ndk/platforms/android-L/arch-x86/include/asm/a.out.h
diff --git a/ndk/platforms/android-20/arch-x86/include/asm/auxvec.h b/ndk/platforms/android-L/arch-x86/include/asm/auxvec.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/include/asm/auxvec.h
rename to ndk/platforms/android-L/arch-x86/include/asm/auxvec.h
diff --git a/ndk/platforms/android-20/arch-x86/include/asm/bitsperlong.h b/ndk/platforms/android-L/arch-x86/include/asm/bitsperlong.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/include/asm/bitsperlong.h
rename to ndk/platforms/android-L/arch-x86/include/asm/bitsperlong.h
diff --git a/ndk/platforms/android-20/arch-x86/include/asm/boot.h b/ndk/platforms/android-L/arch-x86/include/asm/boot.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/include/asm/boot.h
rename to ndk/platforms/android-L/arch-x86/include/asm/boot.h
diff --git a/ndk/platforms/android-20/arch-x86/include/asm/bootparam.h b/ndk/platforms/android-L/arch-x86/include/asm/bootparam.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/include/asm/bootparam.h
rename to ndk/platforms/android-L/arch-x86/include/asm/bootparam.h
diff --git a/ndk/platforms/android-20/arch-x86/include/asm/byteorder.h b/ndk/platforms/android-L/arch-x86/include/asm/byteorder.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/include/asm/byteorder.h
rename to ndk/platforms/android-L/arch-x86/include/asm/byteorder.h
diff --git a/ndk/platforms/android-20/arch-x86/include/asm/debugreg.h b/ndk/platforms/android-L/arch-x86/include/asm/debugreg.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/include/asm/debugreg.h
rename to ndk/platforms/android-L/arch-x86/include/asm/debugreg.h
diff --git a/ndk/platforms/android-20/arch-x86/include/asm/e820.h b/ndk/platforms/android-L/arch-x86/include/asm/e820.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/include/asm/e820.h
rename to ndk/platforms/android-L/arch-x86/include/asm/e820.h
diff --git a/ndk/platforms/android-20/arch-x86/include/asm/errno.h b/ndk/platforms/android-L/arch-x86/include/asm/errno.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/include/asm/errno.h
rename to ndk/platforms/android-L/arch-x86/include/asm/errno.h
diff --git a/ndk/platforms/android-20/arch-x86/include/asm/fcntl.h b/ndk/platforms/android-L/arch-x86/include/asm/fcntl.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/include/asm/fcntl.h
rename to ndk/platforms/android-L/arch-x86/include/asm/fcntl.h
diff --git a/ndk/platforms/android-20/arch-x86/include/asm/hw_breakpoint.h b/ndk/platforms/android-L/arch-x86/include/asm/hw_breakpoint.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/include/asm/hw_breakpoint.h
rename to ndk/platforms/android-L/arch-x86/include/asm/hw_breakpoint.h
diff --git a/ndk/platforms/android-20/arch-x86/include/asm/hyperv.h b/ndk/platforms/android-L/arch-x86/include/asm/hyperv.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/include/asm/hyperv.h
rename to ndk/platforms/android-L/arch-x86/include/asm/hyperv.h
diff --git a/ndk/platforms/android-20/arch-x86/include/asm/ioctl.h b/ndk/platforms/android-L/arch-x86/include/asm/ioctl.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/include/asm/ioctl.h
rename to ndk/platforms/android-L/arch-x86/include/asm/ioctl.h
diff --git a/ndk/platforms/android-20/arch-x86/include/asm/ioctls.h b/ndk/platforms/android-L/arch-x86/include/asm/ioctls.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/include/asm/ioctls.h
rename to ndk/platforms/android-L/arch-x86/include/asm/ioctls.h
diff --git a/ndk/platforms/android-20/arch-x86/include/asm/ipcbuf.h b/ndk/platforms/android-L/arch-x86/include/asm/ipcbuf.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/include/asm/ipcbuf.h
rename to ndk/platforms/android-L/arch-x86/include/asm/ipcbuf.h
diff --git a/ndk/platforms/android-20/arch-x86/include/asm/ist.h b/ndk/platforms/android-L/arch-x86/include/asm/ist.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/include/asm/ist.h
rename to ndk/platforms/android-L/arch-x86/include/asm/ist.h
diff --git a/ndk/platforms/android-20/arch-x86/include/asm/kvm.h b/ndk/platforms/android-L/arch-x86/include/asm/kvm.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/include/asm/kvm.h
rename to ndk/platforms/android-L/arch-x86/include/asm/kvm.h
diff --git a/ndk/platforms/android-20/arch-x86/include/asm/kvm_para.h b/ndk/platforms/android-L/arch-x86/include/asm/kvm_para.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/include/asm/kvm_para.h
rename to ndk/platforms/android-L/arch-x86/include/asm/kvm_para.h
diff --git a/ndk/platforms/android-20/arch-x86/include/asm/ldt.h b/ndk/platforms/android-L/arch-x86/include/asm/ldt.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/include/asm/ldt.h
rename to ndk/platforms/android-L/arch-x86/include/asm/ldt.h
diff --git a/ndk/platforms/android-20/arch-x86/include/asm/mce.h b/ndk/platforms/android-L/arch-x86/include/asm/mce.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/include/asm/mce.h
rename to ndk/platforms/android-L/arch-x86/include/asm/mce.h
diff --git a/ndk/platforms/android-20/arch-x86/include/asm/mman.h b/ndk/platforms/android-L/arch-x86/include/asm/mman.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/include/asm/mman.h
rename to ndk/platforms/android-L/arch-x86/include/asm/mman.h
diff --git a/ndk/platforms/android-20/arch-x86/include/asm/msgbuf.h b/ndk/platforms/android-L/arch-x86/include/asm/msgbuf.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/include/asm/msgbuf.h
rename to ndk/platforms/android-L/arch-x86/include/asm/msgbuf.h
diff --git a/ndk/platforms/android-20/arch-x86/include/asm/msr-index.h b/ndk/platforms/android-L/arch-x86/include/asm/msr-index.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/include/asm/msr-index.h
rename to ndk/platforms/android-L/arch-x86/include/asm/msr-index.h
diff --git a/ndk/platforms/android-20/arch-x86/include/asm/msr.h b/ndk/platforms/android-L/arch-x86/include/asm/msr.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/include/asm/msr.h
rename to ndk/platforms/android-L/arch-x86/include/asm/msr.h
diff --git a/ndk/platforms/android-20/arch-x86/include/asm/mtrr.h b/ndk/platforms/android-L/arch-x86/include/asm/mtrr.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/include/asm/mtrr.h
rename to ndk/platforms/android-L/arch-x86/include/asm/mtrr.h
diff --git a/ndk/platforms/android-20/arch-x86/include/asm/param.h b/ndk/platforms/android-L/arch-x86/include/asm/param.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/include/asm/param.h
rename to ndk/platforms/android-L/arch-x86/include/asm/param.h
diff --git a/ndk/platforms/android-20/arch-x86/include/asm/perf_regs.h b/ndk/platforms/android-L/arch-x86/include/asm/perf_regs.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/include/asm/perf_regs.h
rename to ndk/platforms/android-L/arch-x86/include/asm/perf_regs.h
diff --git a/ndk/platforms/android-20/arch-x86/include/asm/poll.h b/ndk/platforms/android-L/arch-x86/include/asm/poll.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/include/asm/poll.h
rename to ndk/platforms/android-L/arch-x86/include/asm/poll.h
diff --git a/ndk/platforms/android-20/arch-x86/include/asm/posix_types.h b/ndk/platforms/android-L/arch-x86/include/asm/posix_types.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/include/asm/posix_types.h
rename to ndk/platforms/android-L/arch-x86/include/asm/posix_types.h
diff --git a/ndk/platforms/android-20/arch-x86/include/asm/posix_types_32.h b/ndk/platforms/android-L/arch-x86/include/asm/posix_types_32.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/include/asm/posix_types_32.h
rename to ndk/platforms/android-L/arch-x86/include/asm/posix_types_32.h
diff --git a/ndk/platforms/android-20/arch-x86/include/asm/posix_types_64.h b/ndk/platforms/android-L/arch-x86/include/asm/posix_types_64.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/include/asm/posix_types_64.h
rename to ndk/platforms/android-L/arch-x86/include/asm/posix_types_64.h
diff --git a/ndk/platforms/android-20/arch-x86/include/asm/posix_types_x32.h b/ndk/platforms/android-L/arch-x86/include/asm/posix_types_x32.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/include/asm/posix_types_x32.h
rename to ndk/platforms/android-L/arch-x86/include/asm/posix_types_x32.h
diff --git a/ndk/platforms/android-20/arch-x86/include/asm/prctl.h b/ndk/platforms/android-L/arch-x86/include/asm/prctl.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/include/asm/prctl.h
rename to ndk/platforms/android-L/arch-x86/include/asm/prctl.h
diff --git a/ndk/platforms/android-20/arch-x86/include/asm/processor-flags.h b/ndk/platforms/android-L/arch-x86/include/asm/processor-flags.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/include/asm/processor-flags.h
rename to ndk/platforms/android-L/arch-x86/include/asm/processor-flags.h
diff --git a/ndk/platforms/android-20/arch-x86/include/asm/ptrace-abi.h b/ndk/platforms/android-L/arch-x86/include/asm/ptrace-abi.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/include/asm/ptrace-abi.h
rename to ndk/platforms/android-L/arch-x86/include/asm/ptrace-abi.h
diff --git a/ndk/platforms/android-20/arch-x86/include/asm/ptrace.h b/ndk/platforms/android-L/arch-x86/include/asm/ptrace.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/include/asm/ptrace.h
rename to ndk/platforms/android-L/arch-x86/include/asm/ptrace.h
diff --git a/ndk/platforms/android-20/arch-x86/include/asm/resource.h b/ndk/platforms/android-L/arch-x86/include/asm/resource.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/include/asm/resource.h
rename to ndk/platforms/android-L/arch-x86/include/asm/resource.h
diff --git a/ndk/platforms/android-20/arch-x86/include/asm/sembuf.h b/ndk/platforms/android-L/arch-x86/include/asm/sembuf.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/include/asm/sembuf.h
rename to ndk/platforms/android-L/arch-x86/include/asm/sembuf.h
diff --git a/ndk/platforms/android-20/arch-x86/include/asm/setup.h b/ndk/platforms/android-L/arch-x86/include/asm/setup.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/include/asm/setup.h
rename to ndk/platforms/android-L/arch-x86/include/asm/setup.h
diff --git a/ndk/platforms/android-20/arch-x86/include/asm/shmbuf.h b/ndk/platforms/android-L/arch-x86/include/asm/shmbuf.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/include/asm/shmbuf.h
rename to ndk/platforms/android-L/arch-x86/include/asm/shmbuf.h
diff --git a/ndk/platforms/android-20/arch-x86/include/asm/sigcontext.h b/ndk/platforms/android-L/arch-x86/include/asm/sigcontext.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/include/asm/sigcontext.h
rename to ndk/platforms/android-L/arch-x86/include/asm/sigcontext.h
diff --git a/ndk/platforms/android-20/arch-x86/include/asm/sigcontext32.h b/ndk/platforms/android-L/arch-x86/include/asm/sigcontext32.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/include/asm/sigcontext32.h
rename to ndk/platforms/android-L/arch-x86/include/asm/sigcontext32.h
diff --git a/ndk/platforms/android-20/arch-x86/include/asm/siginfo.h b/ndk/platforms/android-L/arch-x86/include/asm/siginfo.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/include/asm/siginfo.h
rename to ndk/platforms/android-L/arch-x86/include/asm/siginfo.h
diff --git a/ndk/platforms/android-20/arch-x86/include/asm/signal.h b/ndk/platforms/android-L/arch-x86/include/asm/signal.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/include/asm/signal.h
rename to ndk/platforms/android-L/arch-x86/include/asm/signal.h
diff --git a/ndk/platforms/android-20/arch-x86/include/asm/socket.h b/ndk/platforms/android-L/arch-x86/include/asm/socket.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/include/asm/socket.h
rename to ndk/platforms/android-L/arch-x86/include/asm/socket.h
diff --git a/ndk/platforms/android-20/arch-x86/include/asm/sockios.h b/ndk/platforms/android-L/arch-x86/include/asm/sockios.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/include/asm/sockios.h
rename to ndk/platforms/android-L/arch-x86/include/asm/sockios.h
diff --git a/ndk/platforms/android-20/arch-x86/include/asm/stat.h b/ndk/platforms/android-L/arch-x86/include/asm/stat.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/include/asm/stat.h
rename to ndk/platforms/android-L/arch-x86/include/asm/stat.h
diff --git a/ndk/platforms/android-20/arch-x86/include/asm/statfs.h b/ndk/platforms/android-L/arch-x86/include/asm/statfs.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/include/asm/statfs.h
rename to ndk/platforms/android-L/arch-x86/include/asm/statfs.h
diff --git a/ndk/platforms/android-20/arch-x86/include/asm/svm.h b/ndk/platforms/android-L/arch-x86/include/asm/svm.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/include/asm/svm.h
rename to ndk/platforms/android-L/arch-x86/include/asm/svm.h
diff --git a/ndk/platforms/android-20/arch-x86/include/asm/swab.h b/ndk/platforms/android-L/arch-x86/include/asm/swab.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/include/asm/swab.h
rename to ndk/platforms/android-L/arch-x86/include/asm/swab.h
diff --git a/ndk/platforms/android-20/arch-x86/include/asm/termbits.h b/ndk/platforms/android-L/arch-x86/include/asm/termbits.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/include/asm/termbits.h
rename to ndk/platforms/android-L/arch-x86/include/asm/termbits.h
diff --git a/ndk/platforms/android-20/arch-x86/include/asm/termios.h b/ndk/platforms/android-L/arch-x86/include/asm/termios.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/include/asm/termios.h
rename to ndk/platforms/android-L/arch-x86/include/asm/termios.h
diff --git a/ndk/platforms/android-20/arch-x86/include/asm/types.h b/ndk/platforms/android-L/arch-x86/include/asm/types.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/include/asm/types.h
rename to ndk/platforms/android-L/arch-x86/include/asm/types.h
diff --git a/ndk/platforms/android-20/arch-x86/include/asm/ucontext.h b/ndk/platforms/android-L/arch-x86/include/asm/ucontext.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/include/asm/ucontext.h
rename to ndk/platforms/android-L/arch-x86/include/asm/ucontext.h
diff --git a/ndk/platforms/android-20/arch-x86/include/asm/unistd.h b/ndk/platforms/android-L/arch-x86/include/asm/unistd.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/include/asm/unistd.h
rename to ndk/platforms/android-L/arch-x86/include/asm/unistd.h
diff --git a/ndk/platforms/android-20/arch-x86/include/asm/unistd_32.h b/ndk/platforms/android-L/arch-x86/include/asm/unistd_32.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/include/asm/unistd_32.h
rename to ndk/platforms/android-L/arch-x86/include/asm/unistd_32.h
diff --git a/ndk/platforms/android-20/arch-x86/include/asm/unistd_64.h b/ndk/platforms/android-L/arch-x86/include/asm/unistd_64.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/include/asm/unistd_64.h
rename to ndk/platforms/android-L/arch-x86/include/asm/unistd_64.h
diff --git a/ndk/platforms/android-20/arch-x86/include/asm/unistd_x32.h b/ndk/platforms/android-L/arch-x86/include/asm/unistd_x32.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/include/asm/unistd_x32.h
rename to ndk/platforms/android-L/arch-x86/include/asm/unistd_x32.h
diff --git a/ndk/platforms/android-20/arch-x86/include/asm/vm86.h b/ndk/platforms/android-L/arch-x86/include/asm/vm86.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/include/asm/vm86.h
rename to ndk/platforms/android-L/arch-x86/include/asm/vm86.h
diff --git a/ndk/platforms/android-20/arch-x86/include/asm/vmx.h b/ndk/platforms/android-L/arch-x86/include/asm/vmx.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/include/asm/vmx.h
rename to ndk/platforms/android-L/arch-x86/include/asm/vmx.h
diff --git a/ndk/platforms/android-20/arch-x86/include/asm/vsyscall.h b/ndk/platforms/android-L/arch-x86/include/asm/vsyscall.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/include/asm/vsyscall.h
rename to ndk/platforms/android-L/arch-x86/include/asm/vsyscall.h
diff --git a/ndk/platforms/android-20/arch-x86/include/i386/elf_machdep.h b/ndk/platforms/android-L/arch-x86/include/i386/elf_machdep.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/include/i386/elf_machdep.h
rename to ndk/platforms/android-L/arch-x86/include/i386/elf_machdep.h
diff --git a/ndk/platforms/android-20/arch-x86/include/machine/asm.h b/ndk/platforms/android-L/arch-x86/include/machine/asm.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/include/machine/asm.h
rename to ndk/platforms/android-L/arch-x86/include/machine/asm.h
diff --git a/ndk/platforms/android-20/arch-x86/include/machine/elf_machdep.h b/ndk/platforms/android-L/arch-x86/include/machine/elf_machdep.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/include/machine/elf_machdep.h
rename to ndk/platforms/android-L/arch-x86/include/machine/elf_machdep.h
diff --git a/ndk/platforms/android-20/arch-x86/include/machine/endian.h b/ndk/platforms/android-L/arch-x86/include/machine/endian.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/include/machine/endian.h
rename to ndk/platforms/android-L/arch-x86/include/machine/endian.h
diff --git a/ndk/platforms/android-20/arch-x86/include/machine/exec.h b/ndk/platforms/android-L/arch-x86/include/machine/exec.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/include/machine/exec.h
rename to ndk/platforms/android-L/arch-x86/include/machine/exec.h
diff --git a/ndk/platforms/android-L/arch-x86/include/machine/fenv.h b/ndk/platforms/android-L/arch-x86/include/machine/fenv.h
new file mode 100644
index 0000000..de45add
--- /dev/null
+++ b/ndk/platforms/android-L/arch-x86/include/machine/fenv.h
@@ -0,0 +1,69 @@
+/*-
+ * Copyright (c) 2004-2005 David Schultz <das@FreeBSD.ORG>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD: src/lib/msun/i387/fenv.h,v 1.4 2005/03/17 22:21:46 das Exp $
+ */
+
+#ifndef _I387_FENV_H_
+#define _I387_FENV_H_
+
+#include <sys/types.h>
+
+__BEGIN_DECLS
+
+/*
+ * To preserve binary compatibility with FreeBSD 5.3, we pack the
+ * mxcsr into some reserved fields, rather than changing sizeof(fenv_t).
+ */
+typedef struct {
+  __uint16_t __control;
+  __uint16_t __mxcsr_hi;
+  __uint16_t __status;
+  __uint16_t __mxcsr_lo;
+  __uint32_t __tag;
+  char       __other[16];
+} fenv_t;
+
+typedef __uint16_t fexcept_t;
+
+/* Exception flags */
+#define FE_INVALID    0x01
+#define FE_DENORMAL   0x02
+#define FE_DIVBYZERO  0x04
+#define FE_OVERFLOW   0x08
+#define FE_UNDERFLOW  0x10
+#define FE_INEXACT    0x20
+#define FE_ALL_EXCEPT (FE_DIVBYZERO | FE_DENORMAL | FE_INEXACT | \
+                       FE_INVALID | FE_OVERFLOW | FE_UNDERFLOW)
+
+/* Rounding modes */
+#define FE_TONEAREST  0x0000
+#define FE_DOWNWARD   0x0400
+#define FE_UPWARD     0x0800
+#define FE_TOWARDZERO 0x0c00
+
+__END_DECLS
+
+#endif /* !I387_FENV_H_ */
diff --git a/ndk/platforms/android-20/arch-x86/include/machine/setjmp.h b/ndk/platforms/android-L/arch-x86/include/machine/setjmp.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/include/machine/setjmp.h
rename to ndk/platforms/android-L/arch-x86/include/machine/setjmp.h
diff --git a/ndk/platforms/android-L/arch-x86/lib/libc.a b/ndk/platforms/android-L/arch-x86/lib/libc.a
new file mode 100644
index 0000000..648dd66
--- /dev/null
+++ b/ndk/platforms/android-L/arch-x86/lib/libc.a
Binary files differ
diff --git a/ndk/platforms/android-L/arch-x86/lib/libm.a b/ndk/platforms/android-L/arch-x86/lib/libm.a
new file mode 100644
index 0000000..5b75f1d
--- /dev/null
+++ b/ndk/platforms/android-L/arch-x86/lib/libm.a
Binary files differ
diff --git a/ndk/platforms/android-L/arch-x86/lib/libstdc++.a b/ndk/platforms/android-L/arch-x86/lib/libstdc++.a
new file mode 100644
index 0000000..73adc5f
--- /dev/null
+++ b/ndk/platforms/android-L/arch-x86/lib/libstdc++.a
Binary files differ
diff --git a/ndk/platforms/android-L/arch-x86/lib/libz.a b/ndk/platforms/android-L/arch-x86/lib/libz.a
new file mode 100644
index 0000000..75ae50e
--- /dev/null
+++ b/ndk/platforms/android-L/arch-x86/lib/libz.a
Binary files differ
diff --git a/ndk/platforms/android-20/arch-x86/symbols/libOpenMAXAL.so.functions.txt b/ndk/platforms/android-L/arch-x86/symbols/libOpenMAXAL.so.functions.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/symbols/libOpenMAXAL.so.functions.txt
rename to ndk/platforms/android-L/arch-x86/symbols/libOpenMAXAL.so.functions.txt
diff --git a/ndk/platforms/android-20/arch-x86/symbols/libOpenMAXAL.so.variables.txt b/ndk/platforms/android-L/arch-x86/symbols/libOpenMAXAL.so.variables.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/symbols/libOpenMAXAL.so.variables.txt
rename to ndk/platforms/android-L/arch-x86/symbols/libOpenMAXAL.so.variables.txt
diff --git a/ndk/platforms/android-20/arch-x86/symbols/libOpenSLES.so.functions.txt b/ndk/platforms/android-L/arch-x86/symbols/libOpenSLES.so.functions.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/symbols/libOpenSLES.so.functions.txt
rename to ndk/platforms/android-L/arch-x86/symbols/libOpenSLES.so.functions.txt
diff --git a/ndk/platforms/android-20/arch-x86/symbols/libOpenSLES.so.variables.txt b/ndk/platforms/android-L/arch-x86/symbols/libOpenSLES.so.variables.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/symbols/libOpenSLES.so.variables.txt
rename to ndk/platforms/android-L/arch-x86/symbols/libOpenSLES.so.variables.txt
diff --git a/ndk/platforms/android-20/arch-x86/symbols/libandroid.so.functions.txt b/ndk/platforms/android-L/arch-x86/symbols/libandroid.so.functions.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/symbols/libandroid.so.functions.txt
rename to ndk/platforms/android-L/arch-x86/symbols/libandroid.so.functions.txt
diff --git a/ndk/platforms/android-20/arch-x86/symbols/libandroid.so.variables.txt b/ndk/platforms/android-L/arch-x86/symbols/libandroid.so.variables.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/symbols/libandroid.so.variables.txt
rename to ndk/platforms/android-L/arch-x86/symbols/libandroid.so.variables.txt
diff --git a/ndk/platforms/android-L/arch-x86/symbols/libc.so.functions.txt b/ndk/platforms/android-L/arch-x86/symbols/libc.so.functions.txt
new file mode 100644
index 0000000..5e02c50
--- /dev/null
+++ b/ndk/platforms/android-L/arch-x86/symbols/libc.so.functions.txt
@@ -0,0 +1,1124 @@
+SHA1Final
+SHA1Init
+SHA1Transform
+SHA1Update
+_Exit
+_Unwind_Backtrace
+_Unwind_DeleteException
+_Unwind_FindEnclosingFunction
+_Unwind_Find_FDE
+_Unwind_ForcedUnwind
+_Unwind_GetCFA
+_Unwind_GetDataRelBase
+_Unwind_GetGR
+_Unwind_GetIP
+_Unwind_GetIPInfo
+_Unwind_GetLanguageSpecificData
+_Unwind_GetRegionStart
+_Unwind_GetTextRelBase
+_Unwind_RaiseException
+_Unwind_Resume
+_Unwind_Resume_or_Rethrow
+_Unwind_SetGR
+_Unwind_SetIP
+_ZdaPv
+_ZdaPvRKSt9nothrow_t
+_ZdlPv
+_ZdlPvRKSt9nothrow_t
+_Znaj
+_ZnajRKSt9nothrow_t
+_Znwj
+_ZnwjRKSt9nothrow_t
+__FD_CLR_chk
+__FD_ISSET_chk
+__FD_SET_chk
+__accept4
+__android_set_abort_message
+__assert
+__assert2
+__b64_ntop
+__b64_pton
+__bionic_name_mem
+__brk
+__connect
+__cxa_atexit
+__cxa_finalize
+__cxa_guard_abort
+__cxa_guard_acquire
+__cxa_guard_release
+__cxa_pure_virtual
+__deregister_frame
+__deregister_frame_info
+__deregister_frame_info_bases
+__divdi3
+__dn_comp
+__dn_count_labels
+__dn_skipname
+__epoll_pwait
+__errno
+__exit
+__fcntl64
+__fgets_chk
+__findenv
+__fp_nquery
+__fp_query
+__fpclassify
+__fpclassifyd
+__fpclassifyf
+__fpclassifyl
+__frame_state_for
+__fstatfs64
+__futex_wait
+__futex_wake
+__get_h_errno
+__get_tls
+__getcpu
+__getcwd
+__getdents64
+__getpriority
+__hostalias
+__ioctl
+__isfinite
+__isfinitef
+__isfinitel
+__isinf
+__isinff
+__isinfl
+__isnan
+__isnanf
+__isnanl
+__isnormal
+__isnormalf
+__isnormall
+__libc_current_sigrtmax
+__libc_current_sigrtmin
+__libc_init
+__llseek
+__loc_aton
+__loc_ntoa
+__memcpy_chk
+__memmove_chk
+__memset_chk
+__mmap2
+__moddi3
+__open
+__open_2
+__openat
+__openat_2
+__p_cdname
+__p_cdnname
+__p_class
+__p_fqname
+__p_fqnname
+__p_option
+__p_query
+__p_rcode
+__p_secstodate
+__p_time
+__p_type
+__popcountsi2
+__ppoll
+__pselect6
+__pthread_cleanup_pop
+__pthread_cleanup_push
+__pthread_gettid
+__ptrace
+__putlong
+__putshort
+__read_chk
+__reboot
+__recvfrom_chk
+__register_frame
+__register_frame_info
+__register_frame_info_bases
+__register_frame_info_table
+__register_frame_info_table_bases
+__register_frame_table
+__res_close
+__res_dnok
+__res_hnok
+__res_hostalias
+__res_isourserver
+__res_mailok
+__res_nameinquery
+__res_nclose
+__res_ninit
+__res_nmkquery
+__res_nquery
+__res_nquerydomain
+__res_nsearch
+__res_nsend
+__res_ownok
+__res_queriesmatch
+__res_querydomain
+__res_randomid
+__res_send
+__res_send_setqhook
+__res_send_setrhook
+__rt_sigaction
+__rt_sigpending
+__rt_sigprocmask
+__rt_sigsuspend
+__rt_sigtimedwait
+__sched_cpualloc
+__sched_cpucount
+__sched_cpufree
+__sched_getaffinity
+__set_errno
+__set_thread_area
+__set_tid_address
+__sigaction
+__signalfd4
+__snprintf_chk
+__socket
+__sprintf_chk
+__srefill
+__srget
+__stack_chk_fail
+__statfs64
+__stpcpy_chk
+__stpncpy_chk
+__stpncpy_chk2
+__strcat_chk
+__strchr_chk
+__strcpy_chk
+__strlcat_chk
+__strlcpy_chk
+__strlen_chk
+__strncat_chk
+__strncpy_chk
+__strncpy_chk2
+__strrchr_chk
+__swbuf
+__sym_ntop
+__sym_ntos
+__sym_ston
+__system_properties_init
+__system_property_add
+__system_property_area_init
+__system_property_find
+__system_property_find_nth
+__system_property_foreach
+__system_property_get
+__system_property_read
+__system_property_serial
+__system_property_set
+__system_property_set_filename
+__system_property_update
+__system_property_wait_any
+__timer_create
+__timer_delete
+__timer_getoverrun
+__timer_gettime
+__timer_settime
+__udivdi3
+__umask_chk
+__umoddi3
+__vsnprintf_chk
+__vsprintf_chk
+__wait4
+__waitid
+_exit
+_getlong
+_getshort
+_longjmp
+_resolv_flush_cache_for_net
+_resolv_set_nameservers_for_net
+_setjmp
+_thread_created_hook
+_tolower
+_toupper
+abort
+abs
+accept
+accept4
+access
+acct
+alarm
+alphasort
+alphasort64
+android_getaddrinfofornet
+android_gethostbyaddrfornet
+android_gethostbynamefornet
+arc4random
+arc4random_addrandom
+arc4random_buf
+arc4random_stir
+arc4random_uniform
+asctime
+asctime64
+asctime64_r
+asctime_r
+asprintf
+at_quick_exit
+atof
+atoi
+atol
+atoll
+basename
+basename_r
+bcopy
+bind
+bindresvport
+brk
+bsd_signal
+bsearch
+btowc
+bzero
+c16rtomb
+c32rtomb
+calloc
+capget
+capset
+cfgetispeed
+cfgetospeed
+cfmakeraw
+cfsetispeed
+cfsetospeed
+cfsetspeed
+chdir
+chmod
+chown
+chroot
+clearenv
+clearerr
+clock
+clock_getres
+clock_gettime
+clock_nanosleep
+clock_settime
+clone
+close
+closedir
+closelog
+closelog_r
+cmsg_nxthdr
+connect
+creat
+creat64
+ctime
+ctime64
+ctime64_r
+ctime_r
+daemon
+delete_module
+difftime
+dirfd
+dirname
+dirname_r
+div
+dlmalloc_inspect_all
+dlmalloc_trim
+dn_expand
+dprintf
+drand48
+dup
+dup2
+dup3
+duplocale
+endmntent
+endpwent
+endservent
+endusershell
+endutent
+epoll_create
+epoll_create1
+epoll_ctl
+epoll_pwait
+epoll_wait
+erand48
+err
+errx
+ether_aton
+ether_aton_r
+ether_ntoa
+ether_ntoa_r
+eventfd
+eventfd_read
+eventfd_write
+execl
+execle
+execlp
+execv
+execve
+execvp
+execvpe
+exit
+faccessat
+fallocate
+fallocate64
+fchdir
+fchmod
+fchmodat
+fchown
+fchownat
+fclose
+fcntl
+fdatasync
+fdopen
+fdopendir
+fdprintf
+feof
+ferror
+fflush
+ffs
+fgetc
+fgetln
+fgetpos
+fgets
+fgetwc
+fgetws
+fgetxattr
+fileno
+flistxattr
+flock
+flockfile
+fnmatch
+fopen
+fork
+fpathconf
+fprintf
+fpurge
+fputc
+fputs
+fputwc
+fputws
+fread
+free
+freeaddrinfo
+freelocale
+fremovexattr
+freopen
+fscanf
+fseek
+fseeko
+fsetpos
+fsetxattr
+fstat
+fstat64
+fstatat
+fstatat64
+fstatfs
+fstatfs64
+fstatvfs
+fstatvfs64
+fsync
+ftell
+ftello
+ftime
+ftok
+ftruncate
+ftruncate64
+ftrylockfile
+fts_children
+fts_close
+fts_open
+fts_read
+fts_set
+ftw
+ftw64
+funlockfile
+funopen
+futimens
+fwide
+fwprintf
+fwrite
+fwscanf
+gai_strerror
+get_malloc_leak_info
+getaddrinfo
+getauxval
+getc
+getc_unlocked
+getchar
+getchar_unlocked
+getcwd
+getdelim
+getdents
+getdtablesize
+getegid
+getenv
+geteuid
+getgid
+getgrgid
+getgrnam
+getgrouplist
+getgroups
+gethostbyaddr
+gethostbyname
+gethostbyname2
+gethostbyname_r
+gethostent
+gethostname
+getitimer
+getline
+getlogin
+getmntent
+getmntent_r
+getnameinfo
+getnetbyaddr
+getnetbyname
+getopt
+getopt_long
+getopt_long_only
+getpagesize
+getpeername
+getpgid
+getpgrp
+getpid
+getppid
+getpriority
+getprogname
+getprotobyname
+getprotobynumber
+getpt
+getpwnam
+getpwnam_r
+getpwuid
+getpwuid_r
+getresgid
+getresuid
+getrlimit
+getrlimit64
+getrusage
+gets
+getservbyname
+getservbyport
+getservent
+getsid
+getsockname
+getsockopt
+gettid
+gettimeofday
+getuid
+getusershell
+getutent
+getwc
+getwchar
+getxattr
+gmtime
+gmtime64
+gmtime64_r
+gmtime_r
+herror
+hstrerror
+htonl
+htons
+if_indextoname
+if_nametoindex
+imaxabs
+imaxdiv
+index
+inet_addr
+inet_aton
+inet_lnaof
+inet_makeaddr
+inet_netof
+inet_network
+inet_ntoa
+inet_ntop
+inet_pton
+init_module
+initgroups
+initstate
+inotify_add_watch
+inotify_init
+inotify_init1
+inotify_rm_watch
+ioctl
+isalnum
+isalpha
+isascii
+isatty
+isblank
+iscntrl
+isdigit
+isfinite
+isfinitef
+isfinitel
+isgraph
+isinf
+isinff
+isinfl
+islower
+isnan
+isnanf
+isnanl
+isnormal
+isnormalf
+isnormall
+isprint
+ispunct
+issetugid
+isspace
+isupper
+iswalnum
+iswalpha
+iswblank
+iswcntrl
+iswctype
+iswdigit
+iswgraph
+iswlower
+iswprint
+iswpunct
+iswspace
+iswupper
+iswxdigit
+isxdigit
+jrand48
+kill
+killpg
+klogctl
+labs
+lchown
+ldexp
+ldiv
+lfind
+lgetxattr
+link
+linkat
+listen
+listxattr
+llabs
+lldiv
+llistxattr
+localeconv
+localtime
+localtime64
+localtime64_r
+localtime_r
+localtime_tz
+longjmp
+lrand48
+lremovexattr
+lsearch
+lseek
+lseek64
+lsetxattr
+lstat
+lstat64
+madvise
+mallinfo
+malloc
+malloc_usable_size
+mbrlen
+mbrtoc16
+mbrtoc32
+mbrtowc
+mbsinit
+mbsnrtowcs
+mbsrtowcs
+mbstowcs
+mbtowc
+memalign
+memccpy
+memchr
+memcmp
+memcpy
+memmem
+memmove
+memrchr
+memset
+memswap
+mincore
+mkdir
+mkdirat
+mkdtemp
+mkfifo
+mknod
+mknodat
+mkstemp
+mkstemp64
+mkstemps
+mktemp
+mktime
+mktime64
+mktime_tz
+mlock
+mlockall
+mmap
+mmap64
+mount
+mprotect
+mrand48
+mremap
+msync
+munlock
+munlockall
+munmap
+nanosleep
+newlocale
+nftw
+nftw64
+nice
+nrand48
+ntohl
+ntohs
+open
+open64
+openat
+openat64
+opendir
+openlog
+openlog_r
+pathconf
+pause
+pclose
+perror
+personality
+pipe
+pipe2
+poll
+popen
+posix_fallocate
+posix_fallocate64
+posix_memalign
+ppoll
+prctl
+pread
+pread64
+printf
+prlimit64
+pselect
+psiginfo
+psignal
+pthread_atfork
+pthread_attr_destroy
+pthread_attr_getdetachstate
+pthread_attr_getguardsize
+pthread_attr_getschedparam
+pthread_attr_getschedpolicy
+pthread_attr_getscope
+pthread_attr_getstack
+pthread_attr_getstackaddr
+pthread_attr_getstacksize
+pthread_attr_init
+pthread_attr_setdetachstate
+pthread_attr_setguardsize
+pthread_attr_setschedparam
+pthread_attr_setschedpolicy
+pthread_attr_setscope
+pthread_attr_setstack
+pthread_attr_setstackaddr
+pthread_attr_setstacksize
+pthread_cond_broadcast
+pthread_cond_destroy
+pthread_cond_init
+pthread_cond_signal
+pthread_cond_timedwait
+pthread_cond_timedwait_monotonic
+pthread_cond_timedwait_monotonic_np
+pthread_cond_timedwait_relative_np
+pthread_cond_timeout_np
+pthread_cond_wait
+pthread_condattr_destroy
+pthread_condattr_getclock
+pthread_condattr_getpshared
+pthread_condattr_init
+pthread_condattr_setclock
+pthread_condattr_setpshared
+pthread_create
+pthread_detach
+pthread_equal
+pthread_exit
+pthread_getattr_np
+pthread_getcpuclockid
+pthread_getschedparam
+pthread_getspecific
+pthread_join
+pthread_key_create
+pthread_key_delete
+pthread_kill
+pthread_mutex_destroy
+pthread_mutex_init
+pthread_mutex_lock
+pthread_mutex_lock_timeout_np
+pthread_mutex_timedlock
+pthread_mutex_trylock
+pthread_mutex_unlock
+pthread_mutexattr_destroy
+pthread_mutexattr_getpshared
+pthread_mutexattr_gettype
+pthread_mutexattr_init
+pthread_mutexattr_setpshared
+pthread_mutexattr_settype
+pthread_once
+pthread_rwlock_destroy
+pthread_rwlock_init
+pthread_rwlock_rdlock
+pthread_rwlock_timedrdlock
+pthread_rwlock_timedwrlock
+pthread_rwlock_tryrdlock
+pthread_rwlock_trywrlock
+pthread_rwlock_unlock
+pthread_rwlock_wrlock
+pthread_rwlockattr_destroy
+pthread_rwlockattr_getpshared
+pthread_rwlockattr_init
+pthread_rwlockattr_setpshared
+pthread_self
+pthread_setname_np
+pthread_setschedparam
+pthread_setspecific
+pthread_sigmask
+ptrace
+ptsname
+ptsname_r
+putc
+putc_unlocked
+putchar
+putchar_unlocked
+putenv
+puts
+pututline
+putw
+putwc
+putwchar
+pvalloc
+pwrite
+pwrite64
+qsort
+quick_exit
+raise
+rand
+rand_r
+random
+read
+readahead
+readdir
+readdir64
+readdir64_r
+readdir_r
+readlink
+readlinkat
+readv
+realloc
+realpath
+reboot
+recv
+recvfrom
+recvmmsg
+recvmsg
+regcomp
+regerror
+regexec
+regfree
+remove
+removexattr
+rename
+renameat
+res_init
+res_mkquery
+res_query
+res_search
+rewind
+rewinddir
+rmdir
+sbrk
+scandir
+scandir64
+scanf
+sched_get_priority_max
+sched_get_priority_min
+sched_getaffinity
+sched_getcpu
+sched_getparam
+sched_getscheduler
+sched_rr_get_interval
+sched_setaffinity
+sched_setparam
+sched_setscheduler
+sched_yield
+seed48
+select
+sem_close
+sem_destroy
+sem_getvalue
+sem_init
+sem_open
+sem_post
+sem_timedwait
+sem_trywait
+sem_unlink
+sem_wait
+send
+sendfile
+sendfile64
+sendmmsg
+sendmsg
+sendto
+setbuf
+setbuffer
+setegid
+setenv
+seteuid
+setgid
+setgroups
+setitimer
+setjmp
+setlinebuf
+setlocale
+setlogmask
+setlogmask_r
+setmntent
+setns
+setpgid
+setpgrp
+setpriority
+setprogname
+setregid
+setresgid
+setresuid
+setreuid
+setrlimit
+setrlimit64
+setservent
+setsid
+setsockopt
+setstate
+settimeofday
+setuid
+setusershell
+setutent
+setvbuf
+setxattr
+shutdown
+sigaction
+sigaddset
+sigaltstack
+sigblock
+sigdelset
+sigemptyset
+sigfillset
+siginterrupt
+sigismember
+siglongjmp
+signal
+signalfd
+sigpending
+sigprocmask
+sigsetjmp
+sigsetmask
+sigsuspend
+sigwait
+sleep
+snprintf
+socket
+socketpair
+sprintf
+srand
+srand48
+srandom
+sscanf
+stat
+stat64
+statfs
+statfs64
+statvfs
+statvfs64
+stpcpy
+stpncpy
+strcasecmp
+strcasestr
+strcat
+strchr
+strcmp
+strcoll
+strcpy
+strcspn
+strdup
+strerror
+strerror_r
+strftime
+strftime_tz
+strlcat
+strlcpy
+strlen
+strncasecmp
+strncat
+strncmp
+strncpy
+strndup
+strnlen
+strntoimax
+strntoumax
+strpbrk
+strptime
+strrchr
+strsep
+strsignal
+strspn
+strstr
+strtod
+strtof
+strtoimax
+strtok
+strtok_r
+strtol
+strtold
+strtoll
+strtoq
+strtotimeval
+strtoul
+strtoull
+strtoumax
+strtouq
+strxfrm
+swapoff
+swapon
+swprintf
+swscanf
+symlink
+symlinkat
+sync
+syscall
+sysconf
+sysinfo
+syslog
+syslog_r
+system
+sysv_signal
+tcdrain
+tcflow
+tcflush
+tcgetattr
+tcgetpgrp
+tcgetsid
+tcsendbreak
+tcsetattr
+tcsetpgrp
+tdelete
+tdestroy
+tempnam
+tfind
+tgkill
+time
+timegm
+timegm64
+timelocal
+timelocal64
+timer_create
+timer_delete
+timer_getoverrun
+timer_gettime
+timer_settime
+timerfd_create
+timerfd_gettime
+timerfd_settime
+times
+tkill
+tmpfile
+tmpnam
+toascii
+tolower
+toupper
+towlower
+towupper
+truncate
+truncate64
+tsearch
+ttyname
+ttyname_r
+tzset
+umask
+umount
+umount2
+uname
+ungetc
+ungetwc
+unlink
+unlinkat
+unlockpt
+unsetenv
+unshare
+uselocale
+usleep
+utime
+utimensat
+utimes
+utmpname
+valloc
+vasprintf
+vdprintf
+verr
+verrx
+vfdprintf
+vfork
+vfprintf
+vfscanf
+vfwprintf
+vfwscanf
+vprintf
+vscanf
+vsnprintf
+vsprintf
+vsscanf
+vswprintf
+vswscanf
+vsyslog
+vsyslog_r
+vwarn
+vwarnx
+vwprintf
+vwscanf
+wait
+wait3
+wait4
+waitid
+waitpid
+warn
+warnx
+wcpcpy
+wcpncpy
+wcrtomb
+wcscasecmp
+wcscat
+wcschr
+wcscmp
+wcscoll
+wcscpy
+wcscspn
+wcsdup
+wcsftime
+wcslcat
+wcslcpy
+wcslen
+wcsncasecmp
+wcsncat
+wcsncmp
+wcsncpy
+wcsnlen
+wcsnrtombs
+wcspbrk
+wcsrchr
+wcsrtombs
+wcsspn
+wcsstr
+wcstod
+wcstof
+wcstoimax
+wcstok
+wcstol
+wcstold
+wcstoll
+wcstombs
+wcstoul
+wcstoull
+wcstoumax
+wcswcs
+wcswidth
+wcsxfrm
+wctob
+wctomb
+wctype
+wcwidth
+wmemchr
+wmemcmp
+wmemcpy
+wmemmove
+wmemset
+wprintf
+write
+writev
+wscanf
diff --git a/ndk/platforms/android-L/arch-x86/symbols/libc.so.variables.txt b/ndk/platforms/android-L/arch-x86/symbols/libc.so.variables.txt
new file mode 100644
index 0000000..785e924
--- /dev/null
+++ b/ndk/platforms/android-L/arch-x86/symbols/libc.so.variables.txt
@@ -0,0 +1,30 @@
+_C_ctype_
+_C_tolower_
+_C_toupper_
+_ZSt7nothrow
+__bionic_brk
+__isthreaded
+__libc_malloc_dispatch
+__p_class_syms
+__p_type_syms
+__page_shift
+__page_size
+__popcount_tab
+__progname
+__sF
+__stack_chk_guard
+__system_property_area__
+_ctype_
+_tolower_tab_
+_toupper_tab_
+daylight
+environ
+optarg
+opterr
+optind
+optopt
+optreset
+sys_siglist
+sys_signame
+timezone
+tzname
diff --git a/ndk/platforms/android-20/arch-x86/symbols/libdl.so.functions.txt b/ndk/platforms/android-L/arch-x86/symbols/libdl.so.functions.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/symbols/libdl.so.functions.txt
rename to ndk/platforms/android-L/arch-x86/symbols/libdl.so.functions.txt
diff --git a/ndk/platforms/android-20/arch-x86/symbols/libdl.so.variables.txt b/ndk/platforms/android-L/arch-x86/symbols/libdl.so.variables.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/symbols/libdl.so.variables.txt
rename to ndk/platforms/android-L/arch-x86/symbols/libdl.so.variables.txt
diff --git a/ndk/platforms/android-20/arch-x86/symbols/libjnigraphics.so.functions.txt b/ndk/platforms/android-L/arch-x86/symbols/libjnigraphics.so.functions.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/symbols/libjnigraphics.so.functions.txt
rename to ndk/platforms/android-L/arch-x86/symbols/libjnigraphics.so.functions.txt
diff --git a/ndk/platforms/android-20/arch-x86/symbols/libjnigraphics.so.variables.txt b/ndk/platforms/android-L/arch-x86/symbols/libjnigraphics.so.variables.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/symbols/libjnigraphics.so.variables.txt
rename to ndk/platforms/android-L/arch-x86/symbols/libjnigraphics.so.variables.txt
diff --git a/ndk/platforms/android-20/arch-x86/symbols/liblog.so.functions.txt b/ndk/platforms/android-L/arch-x86/symbols/liblog.so.functions.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/symbols/liblog.so.functions.txt
rename to ndk/platforms/android-L/arch-x86/symbols/liblog.so.functions.txt
diff --git a/ndk/platforms/android-20/arch-x86/symbols/liblog.so.variables.txt b/ndk/platforms/android-L/arch-x86/symbols/liblog.so.variables.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-x86/symbols/liblog.so.variables.txt
rename to ndk/platforms/android-L/arch-x86/symbols/liblog.so.variables.txt
diff --git a/ndk/platforms/android-L/arch-x86/symbols/libm.so.functions.txt b/ndk/platforms/android-L/arch-x86/symbols/libm.so.functions.txt
new file mode 100644
index 0000000..787bec3
--- /dev/null
+++ b/ndk/platforms/android-L/arch-x86/symbols/libm.so.functions.txt
@@ -0,0 +1,220 @@
+__signbit
+__signbitf
+__signbitl
+acos
+acosf
+acosh
+acoshf
+acoshl
+acosl
+asin
+asinf
+asinh
+asinhf
+asinhl
+asinl
+atan
+atan2
+atan2f
+atan2l
+atanf
+atanh
+atanhf
+atanhl
+atanl
+cabsl
+cbrt
+cbrtf
+cbrtl
+ceil
+ceilf
+ceill
+copysign
+copysignf
+copysignl
+cos
+cosf
+cosh
+coshf
+coshl
+cosl
+cprojl
+csqrtl
+drem
+dremf
+erf
+erfc
+erfcf
+erfcl
+erff
+erfl
+exp
+exp2
+exp2f
+exp2l
+expf
+expl
+expm1
+expm1f
+expm1l
+fabs
+fabsf
+fabsl
+fdim
+fdimf
+fdiml
+feclearexcept
+fedisableexcept
+feenableexcept
+fegetenv
+fegetexcept
+fegetexceptflag
+fegetround
+feholdexcept
+feraiseexcept
+fesetenv
+fesetexceptflag
+fesetround
+fetestexcept
+feupdateenv
+finite
+finitef
+floor
+floorf
+floorl
+fma
+fmaf
+fmal
+fmax
+fmaxf
+fmaxl
+fmin
+fminf
+fminl
+fmod
+fmodf
+fmodl
+frexp
+frexpf
+frexpl
+gamma
+gamma_r
+gammaf
+gammaf_r
+hypot
+hypotf
+hypotl
+ilogb
+ilogbf
+ilogbl
+j0
+j0f
+j1
+j1f
+jn
+jnf
+ldexpf
+ldexpl
+lgamma
+lgamma_r
+lgammaf
+lgammaf_r
+lgammal
+llrint
+llrintf
+llrintl
+llround
+llroundf
+llroundl
+log
+log10
+log10f
+log10l
+log1p
+log1pf
+log1pl
+log2
+log2f
+log2l
+logb
+logbf
+logbl
+logf
+logl
+lrint
+lrintf
+lrintl
+lround
+lroundf
+lroundl
+modf
+modff
+modfl
+nan
+nanf
+nanl
+nearbyint
+nearbyintf
+nearbyintl
+nextafter
+nextafterf
+nextafterl
+nexttoward
+nexttowardf
+nexttowardl
+pow
+powf
+powl
+remainder
+remainderf
+remainderl
+remquo
+remquof
+remquol
+rint
+rintf
+rintl
+round
+roundf
+roundl
+scalb
+scalbf
+scalbln
+scalblnf
+scalblnl
+scalbn
+scalbnf
+scalbnl
+significand
+significandf
+significandl
+sin
+sincos
+sincosf
+sincosl
+sinf
+sinh
+sinhf
+sinhl
+sinl
+sqrt
+sqrtf
+sqrtl
+tan
+tanf
+tanh
+tanhf
+tanhl
+tanl
+tgamma
+tgammaf
+tgammal
+trunc
+truncf
+truncl
+y0
+y0f
+y1
+y1f
+yn
+ynf
diff --git a/ndk/platforms/android-20/arch-arm/symbols/libm.so.variables.txt b/ndk/platforms/android-L/arch-x86/symbols/libm.so.variables.txt
similarity index 100%
copy from ndk/platforms/android-20/arch-arm/symbols/libm.so.variables.txt
copy to ndk/platforms/android-L/arch-x86/symbols/libm.so.variables.txt
diff --git a/ndk/platforms/android-L/arch-x86/symbols/libstdc++.so.functions.txt b/ndk/platforms/android-L/arch-x86/symbols/libstdc++.so.functions.txt
new file mode 100644
index 0000000..7e337ad
--- /dev/null
+++ b/ndk/platforms/android-L/arch-x86/symbols/libstdc++.so.functions.txt
@@ -0,0 +1 @@
+__this_library_is_now_part_of_libc
diff --git a/ndk/platforms/android-20/arch-x86/symbols/libdl.so.variables.txt b/ndk/platforms/android-L/arch-x86/symbols/libstdc++.so.variables.txt
similarity index 100%
copy from ndk/platforms/android-20/arch-x86/symbols/libdl.so.variables.txt
copy to ndk/platforms/android-L/arch-x86/symbols/libstdc++.so.variables.txt
diff --git a/ndk/platforms/android-L/arch-x86/symbols/libz.so.functions.txt b/ndk/platforms/android-L/arch-x86/symbols/libz.so.functions.txt
new file mode 100644
index 0000000..bbd634e
--- /dev/null
+++ b/ndk/platforms/android-L/arch-x86/symbols/libz.so.functions.txt
@@ -0,0 +1,88 @@
+_tr_align
+_tr_flush_bits
+_tr_flush_block
+_tr_init
+_tr_stored_block
+_tr_tally
+adler32
+adler32_combine
+adler32_combine64
+compress
+compress2
+compressBound
+crc32
+crc32_combine
+crc32_combine64
+deflate
+deflateBound
+deflateCopy
+deflateEnd
+deflateInit2_
+deflateInit_
+deflateParams
+deflatePending
+deflatePrime
+deflateReset
+deflateResetKeep
+deflateSetDictionary
+deflateSetHeader
+deflateTune
+get_crc_table
+gz_error
+gzbuffer
+gzclearerr
+gzclose
+gzclose_r
+gzclose_w
+gzdirect
+gzdopen
+gzeof
+gzerror
+gzflush
+gzgetc
+gzgetc_
+gzgets
+gzoffset
+gzoffset64
+gzopen
+gzopen64
+gzprintf
+gzputc
+gzputs
+gzread
+gzrewind
+gzseek
+gzseek64
+gzsetparams
+gztell
+gztell64
+gzungetc
+gzvprintf
+gzwrite
+inflate
+inflateBack
+inflateBackEnd
+inflateBackInit_
+inflateCopy
+inflateEnd
+inflateGetDictionary
+inflateGetHeader
+inflateInit2_
+inflateInit_
+inflateMark
+inflatePrime
+inflateReset
+inflateReset2
+inflateResetKeep
+inflateSetDictionary
+inflateSync
+inflateSyncPoint
+inflateUndermine
+inflate_fast
+inflate_table
+uncompress
+zError
+zcalloc
+zcfree
+zlibCompileFlags
+zlibVersion
diff --git a/ndk/platforms/android-L/arch-x86/symbols/libz.so.variables.txt b/ndk/platforms/android-L/arch-x86/symbols/libz.so.variables.txt
new file mode 100644
index 0000000..c653ee5
--- /dev/null
+++ b/ndk/platforms/android-L/arch-x86/symbols/libz.so.variables.txt
@@ -0,0 +1,5 @@
+_dist_code
+_length_code
+deflate_copyright
+inflate_copyright
+z_errmsg
diff --git a/ndk/platforms/android-20/arch-x86_64/include/asm/a.out.h b/ndk/platforms/android-L/arch-x86_64/include/asm/a.out.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/include/asm/a.out.h
rename to ndk/platforms/android-L/arch-x86_64/include/asm/a.out.h
diff --git a/ndk/platforms/android-20/arch-x86_64/include/asm/auxvec.h b/ndk/platforms/android-L/arch-x86_64/include/asm/auxvec.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/include/asm/auxvec.h
rename to ndk/platforms/android-L/arch-x86_64/include/asm/auxvec.h
diff --git a/ndk/platforms/android-20/arch-x86_64/include/asm/bitsperlong.h b/ndk/platforms/android-L/arch-x86_64/include/asm/bitsperlong.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/include/asm/bitsperlong.h
rename to ndk/platforms/android-L/arch-x86_64/include/asm/bitsperlong.h
diff --git a/ndk/platforms/android-20/arch-x86_64/include/asm/boot.h b/ndk/platforms/android-L/arch-x86_64/include/asm/boot.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/include/asm/boot.h
rename to ndk/platforms/android-L/arch-x86_64/include/asm/boot.h
diff --git a/ndk/platforms/android-20/arch-x86_64/include/asm/bootparam.h b/ndk/platforms/android-L/arch-x86_64/include/asm/bootparam.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/include/asm/bootparam.h
rename to ndk/platforms/android-L/arch-x86_64/include/asm/bootparam.h
diff --git a/ndk/platforms/android-20/arch-x86_64/include/asm/byteorder.h b/ndk/platforms/android-L/arch-x86_64/include/asm/byteorder.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/include/asm/byteorder.h
rename to ndk/platforms/android-L/arch-x86_64/include/asm/byteorder.h
diff --git a/ndk/platforms/android-20/arch-x86_64/include/asm/debugreg.h b/ndk/platforms/android-L/arch-x86_64/include/asm/debugreg.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/include/asm/debugreg.h
rename to ndk/platforms/android-L/arch-x86_64/include/asm/debugreg.h
diff --git a/ndk/platforms/android-20/arch-x86_64/include/asm/e820.h b/ndk/platforms/android-L/arch-x86_64/include/asm/e820.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/include/asm/e820.h
rename to ndk/platforms/android-L/arch-x86_64/include/asm/e820.h
diff --git a/ndk/platforms/android-20/arch-x86_64/include/asm/errno.h b/ndk/platforms/android-L/arch-x86_64/include/asm/errno.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/include/asm/errno.h
rename to ndk/platforms/android-L/arch-x86_64/include/asm/errno.h
diff --git a/ndk/platforms/android-20/arch-x86_64/include/asm/fcntl.h b/ndk/platforms/android-L/arch-x86_64/include/asm/fcntl.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/include/asm/fcntl.h
rename to ndk/platforms/android-L/arch-x86_64/include/asm/fcntl.h
diff --git a/ndk/platforms/android-20/arch-x86_64/include/asm/hw_breakpoint.h b/ndk/platforms/android-L/arch-x86_64/include/asm/hw_breakpoint.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/include/asm/hw_breakpoint.h
rename to ndk/platforms/android-L/arch-x86_64/include/asm/hw_breakpoint.h
diff --git a/ndk/platforms/android-20/arch-x86_64/include/asm/hyperv.h b/ndk/platforms/android-L/arch-x86_64/include/asm/hyperv.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/include/asm/hyperv.h
rename to ndk/platforms/android-L/arch-x86_64/include/asm/hyperv.h
diff --git a/ndk/platforms/android-20/arch-x86_64/include/asm/ioctl.h b/ndk/platforms/android-L/arch-x86_64/include/asm/ioctl.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/include/asm/ioctl.h
rename to ndk/platforms/android-L/arch-x86_64/include/asm/ioctl.h
diff --git a/ndk/platforms/android-20/arch-x86_64/include/asm/ioctls.h b/ndk/platforms/android-L/arch-x86_64/include/asm/ioctls.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/include/asm/ioctls.h
rename to ndk/platforms/android-L/arch-x86_64/include/asm/ioctls.h
diff --git a/ndk/platforms/android-20/arch-x86_64/include/asm/ipcbuf.h b/ndk/platforms/android-L/arch-x86_64/include/asm/ipcbuf.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/include/asm/ipcbuf.h
rename to ndk/platforms/android-L/arch-x86_64/include/asm/ipcbuf.h
diff --git a/ndk/platforms/android-20/arch-x86_64/include/asm/ist.h b/ndk/platforms/android-L/arch-x86_64/include/asm/ist.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/include/asm/ist.h
rename to ndk/platforms/android-L/arch-x86_64/include/asm/ist.h
diff --git a/ndk/platforms/android-20/arch-x86_64/include/asm/kvm.h b/ndk/platforms/android-L/arch-x86_64/include/asm/kvm.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/include/asm/kvm.h
rename to ndk/platforms/android-L/arch-x86_64/include/asm/kvm.h
diff --git a/ndk/platforms/android-20/arch-x86_64/include/asm/kvm_para.h b/ndk/platforms/android-L/arch-x86_64/include/asm/kvm_para.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/include/asm/kvm_para.h
rename to ndk/platforms/android-L/arch-x86_64/include/asm/kvm_para.h
diff --git a/ndk/platforms/android-20/arch-x86_64/include/asm/ldt.h b/ndk/platforms/android-L/arch-x86_64/include/asm/ldt.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/include/asm/ldt.h
rename to ndk/platforms/android-L/arch-x86_64/include/asm/ldt.h
diff --git a/ndk/platforms/android-20/arch-x86_64/include/asm/mce.h b/ndk/platforms/android-L/arch-x86_64/include/asm/mce.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/include/asm/mce.h
rename to ndk/platforms/android-L/arch-x86_64/include/asm/mce.h
diff --git a/ndk/platforms/android-20/arch-x86_64/include/asm/mman.h b/ndk/platforms/android-L/arch-x86_64/include/asm/mman.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/include/asm/mman.h
rename to ndk/platforms/android-L/arch-x86_64/include/asm/mman.h
diff --git a/ndk/platforms/android-20/arch-x86_64/include/asm/msgbuf.h b/ndk/platforms/android-L/arch-x86_64/include/asm/msgbuf.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/include/asm/msgbuf.h
rename to ndk/platforms/android-L/arch-x86_64/include/asm/msgbuf.h
diff --git a/ndk/platforms/android-20/arch-x86_64/include/asm/msr-index.h b/ndk/platforms/android-L/arch-x86_64/include/asm/msr-index.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/include/asm/msr-index.h
rename to ndk/platforms/android-L/arch-x86_64/include/asm/msr-index.h
diff --git a/ndk/platforms/android-20/arch-x86_64/include/asm/msr.h b/ndk/platforms/android-L/arch-x86_64/include/asm/msr.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/include/asm/msr.h
rename to ndk/platforms/android-L/arch-x86_64/include/asm/msr.h
diff --git a/ndk/platforms/android-20/arch-x86_64/include/asm/mtrr.h b/ndk/platforms/android-L/arch-x86_64/include/asm/mtrr.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/include/asm/mtrr.h
rename to ndk/platforms/android-L/arch-x86_64/include/asm/mtrr.h
diff --git a/ndk/platforms/android-20/arch-x86_64/include/asm/param.h b/ndk/platforms/android-L/arch-x86_64/include/asm/param.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/include/asm/param.h
rename to ndk/platforms/android-L/arch-x86_64/include/asm/param.h
diff --git a/ndk/platforms/android-20/arch-x86_64/include/asm/perf_regs.h b/ndk/platforms/android-L/arch-x86_64/include/asm/perf_regs.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/include/asm/perf_regs.h
rename to ndk/platforms/android-L/arch-x86_64/include/asm/perf_regs.h
diff --git a/ndk/platforms/android-20/arch-x86_64/include/asm/poll.h b/ndk/platforms/android-L/arch-x86_64/include/asm/poll.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/include/asm/poll.h
rename to ndk/platforms/android-L/arch-x86_64/include/asm/poll.h
diff --git a/ndk/platforms/android-20/arch-x86_64/include/asm/posix_types.h b/ndk/platforms/android-L/arch-x86_64/include/asm/posix_types.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/include/asm/posix_types.h
rename to ndk/platforms/android-L/arch-x86_64/include/asm/posix_types.h
diff --git a/ndk/platforms/android-20/arch-x86_64/include/asm/posix_types_32.h b/ndk/platforms/android-L/arch-x86_64/include/asm/posix_types_32.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/include/asm/posix_types_32.h
rename to ndk/platforms/android-L/arch-x86_64/include/asm/posix_types_32.h
diff --git a/ndk/platforms/android-20/arch-x86_64/include/asm/posix_types_64.h b/ndk/platforms/android-L/arch-x86_64/include/asm/posix_types_64.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/include/asm/posix_types_64.h
rename to ndk/platforms/android-L/arch-x86_64/include/asm/posix_types_64.h
diff --git a/ndk/platforms/android-20/arch-x86_64/include/asm/posix_types_x32.h b/ndk/platforms/android-L/arch-x86_64/include/asm/posix_types_x32.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/include/asm/posix_types_x32.h
rename to ndk/platforms/android-L/arch-x86_64/include/asm/posix_types_x32.h
diff --git a/ndk/platforms/android-20/arch-x86_64/include/asm/prctl.h b/ndk/platforms/android-L/arch-x86_64/include/asm/prctl.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/include/asm/prctl.h
rename to ndk/platforms/android-L/arch-x86_64/include/asm/prctl.h
diff --git a/ndk/platforms/android-20/arch-x86_64/include/asm/processor-flags.h b/ndk/platforms/android-L/arch-x86_64/include/asm/processor-flags.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/include/asm/processor-flags.h
rename to ndk/platforms/android-L/arch-x86_64/include/asm/processor-flags.h
diff --git a/ndk/platforms/android-20/arch-x86_64/include/asm/ptrace-abi.h b/ndk/platforms/android-L/arch-x86_64/include/asm/ptrace-abi.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/include/asm/ptrace-abi.h
rename to ndk/platforms/android-L/arch-x86_64/include/asm/ptrace-abi.h
diff --git a/ndk/platforms/android-20/arch-x86_64/include/asm/ptrace.h b/ndk/platforms/android-L/arch-x86_64/include/asm/ptrace.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/include/asm/ptrace.h
rename to ndk/platforms/android-L/arch-x86_64/include/asm/ptrace.h
diff --git a/ndk/platforms/android-20/arch-x86_64/include/asm/resource.h b/ndk/platforms/android-L/arch-x86_64/include/asm/resource.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/include/asm/resource.h
rename to ndk/platforms/android-L/arch-x86_64/include/asm/resource.h
diff --git a/ndk/platforms/android-20/arch-x86_64/include/asm/sembuf.h b/ndk/platforms/android-L/arch-x86_64/include/asm/sembuf.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/include/asm/sembuf.h
rename to ndk/platforms/android-L/arch-x86_64/include/asm/sembuf.h
diff --git a/ndk/platforms/android-20/arch-x86_64/include/asm/setup.h b/ndk/platforms/android-L/arch-x86_64/include/asm/setup.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/include/asm/setup.h
rename to ndk/platforms/android-L/arch-x86_64/include/asm/setup.h
diff --git a/ndk/platforms/android-20/arch-x86_64/include/asm/shmbuf.h b/ndk/platforms/android-L/arch-x86_64/include/asm/shmbuf.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/include/asm/shmbuf.h
rename to ndk/platforms/android-L/arch-x86_64/include/asm/shmbuf.h
diff --git a/ndk/platforms/android-20/arch-x86_64/include/asm/sigcontext.h b/ndk/platforms/android-L/arch-x86_64/include/asm/sigcontext.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/include/asm/sigcontext.h
rename to ndk/platforms/android-L/arch-x86_64/include/asm/sigcontext.h
diff --git a/ndk/platforms/android-20/arch-x86_64/include/asm/sigcontext32.h b/ndk/platforms/android-L/arch-x86_64/include/asm/sigcontext32.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/include/asm/sigcontext32.h
rename to ndk/platforms/android-L/arch-x86_64/include/asm/sigcontext32.h
diff --git a/ndk/platforms/android-20/arch-x86_64/include/asm/siginfo.h b/ndk/platforms/android-L/arch-x86_64/include/asm/siginfo.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/include/asm/siginfo.h
rename to ndk/platforms/android-L/arch-x86_64/include/asm/siginfo.h
diff --git a/ndk/platforms/android-20/arch-x86_64/include/asm/signal.h b/ndk/platforms/android-L/arch-x86_64/include/asm/signal.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/include/asm/signal.h
rename to ndk/platforms/android-L/arch-x86_64/include/asm/signal.h
diff --git a/ndk/platforms/android-20/arch-x86_64/include/asm/socket.h b/ndk/platforms/android-L/arch-x86_64/include/asm/socket.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/include/asm/socket.h
rename to ndk/platforms/android-L/arch-x86_64/include/asm/socket.h
diff --git a/ndk/platforms/android-20/arch-x86_64/include/asm/sockios.h b/ndk/platforms/android-L/arch-x86_64/include/asm/sockios.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/include/asm/sockios.h
rename to ndk/platforms/android-L/arch-x86_64/include/asm/sockios.h
diff --git a/ndk/platforms/android-20/arch-x86_64/include/asm/stat.h b/ndk/platforms/android-L/arch-x86_64/include/asm/stat.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/include/asm/stat.h
rename to ndk/platforms/android-L/arch-x86_64/include/asm/stat.h
diff --git a/ndk/platforms/android-20/arch-x86_64/include/asm/statfs.h b/ndk/platforms/android-L/arch-x86_64/include/asm/statfs.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/include/asm/statfs.h
rename to ndk/platforms/android-L/arch-x86_64/include/asm/statfs.h
diff --git a/ndk/platforms/android-20/arch-x86_64/include/asm/svm.h b/ndk/platforms/android-L/arch-x86_64/include/asm/svm.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/include/asm/svm.h
rename to ndk/platforms/android-L/arch-x86_64/include/asm/svm.h
diff --git a/ndk/platforms/android-20/arch-x86_64/include/asm/swab.h b/ndk/platforms/android-L/arch-x86_64/include/asm/swab.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/include/asm/swab.h
rename to ndk/platforms/android-L/arch-x86_64/include/asm/swab.h
diff --git a/ndk/platforms/android-20/arch-x86_64/include/asm/termbits.h b/ndk/platforms/android-L/arch-x86_64/include/asm/termbits.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/include/asm/termbits.h
rename to ndk/platforms/android-L/arch-x86_64/include/asm/termbits.h
diff --git a/ndk/platforms/android-20/arch-x86_64/include/asm/termios.h b/ndk/platforms/android-L/arch-x86_64/include/asm/termios.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/include/asm/termios.h
rename to ndk/platforms/android-L/arch-x86_64/include/asm/termios.h
diff --git a/ndk/platforms/android-20/arch-x86_64/include/asm/types.h b/ndk/platforms/android-L/arch-x86_64/include/asm/types.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/include/asm/types.h
rename to ndk/platforms/android-L/arch-x86_64/include/asm/types.h
diff --git a/ndk/platforms/android-20/arch-x86_64/include/asm/ucontext.h b/ndk/platforms/android-L/arch-x86_64/include/asm/ucontext.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/include/asm/ucontext.h
rename to ndk/platforms/android-L/arch-x86_64/include/asm/ucontext.h
diff --git a/ndk/platforms/android-20/arch-x86_64/include/asm/unistd.h b/ndk/platforms/android-L/arch-x86_64/include/asm/unistd.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/include/asm/unistd.h
rename to ndk/platforms/android-L/arch-x86_64/include/asm/unistd.h
diff --git a/ndk/platforms/android-20/arch-x86_64/include/asm/unistd_32.h b/ndk/platforms/android-L/arch-x86_64/include/asm/unistd_32.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/include/asm/unistd_32.h
rename to ndk/platforms/android-L/arch-x86_64/include/asm/unistd_32.h
diff --git a/ndk/platforms/android-20/arch-x86_64/include/asm/unistd_64.h b/ndk/platforms/android-L/arch-x86_64/include/asm/unistd_64.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/include/asm/unistd_64.h
rename to ndk/platforms/android-L/arch-x86_64/include/asm/unistd_64.h
diff --git a/ndk/platforms/android-20/arch-x86_64/include/asm/unistd_x32.h b/ndk/platforms/android-L/arch-x86_64/include/asm/unistd_x32.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/include/asm/unistd_x32.h
rename to ndk/platforms/android-L/arch-x86_64/include/asm/unistd_x32.h
diff --git a/ndk/platforms/android-20/arch-x86_64/include/asm/vm86.h b/ndk/platforms/android-L/arch-x86_64/include/asm/vm86.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/include/asm/vm86.h
rename to ndk/platforms/android-L/arch-x86_64/include/asm/vm86.h
diff --git a/ndk/platforms/android-20/arch-x86_64/include/asm/vmx.h b/ndk/platforms/android-L/arch-x86_64/include/asm/vmx.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/include/asm/vmx.h
rename to ndk/platforms/android-L/arch-x86_64/include/asm/vmx.h
diff --git a/ndk/platforms/android-20/arch-x86_64/include/asm/vsyscall.h b/ndk/platforms/android-L/arch-x86_64/include/asm/vsyscall.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/include/asm/vsyscall.h
rename to ndk/platforms/android-L/arch-x86_64/include/asm/vsyscall.h
diff --git a/ndk/platforms/android-20/arch-x86_64/include/i386/elf_machdep.h b/ndk/platforms/android-L/arch-x86_64/include/i386/elf_machdep.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/include/i386/elf_machdep.h
rename to ndk/platforms/android-L/arch-x86_64/include/i386/elf_machdep.h
diff --git a/ndk/platforms/android-20/arch-x86_64/include/machine/asm.h b/ndk/platforms/android-L/arch-x86_64/include/machine/asm.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/include/machine/asm.h
rename to ndk/platforms/android-L/arch-x86_64/include/machine/asm.h
diff --git a/ndk/platforms/android-20/arch-x86_64/include/machine/elf_machdep.h b/ndk/platforms/android-L/arch-x86_64/include/machine/elf_machdep.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/include/machine/elf_machdep.h
rename to ndk/platforms/android-L/arch-x86_64/include/machine/elf_machdep.h
diff --git a/ndk/platforms/android-20/arch-x86_64/include/machine/endian.h b/ndk/platforms/android-L/arch-x86_64/include/machine/endian.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/include/machine/endian.h
rename to ndk/platforms/android-L/arch-x86_64/include/machine/endian.h
diff --git a/ndk/platforms/android-20/arch-x86_64/include/machine/exec.h b/ndk/platforms/android-L/arch-x86_64/include/machine/exec.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/include/machine/exec.h
rename to ndk/platforms/android-L/arch-x86_64/include/machine/exec.h
diff --git a/ndk/platforms/android-L/arch-x86_64/include/machine/fenv.h b/ndk/platforms/android-L/arch-x86_64/include/machine/fenv.h
new file mode 100644
index 0000000..c2b25ed
--- /dev/null
+++ b/ndk/platforms/android-L/arch-x86_64/include/machine/fenv.h
@@ -0,0 +1,95 @@
+/*-
+ * Copyright (c) 2004-2005 David Schultz <das (at) FreeBSD.ORG>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#ifndef _AMD64_FENV_H_
+#define _AMD64_FENV_H_
+
+#include <sys/types.h>
+
+__BEGIN_DECLS
+
+/*
+ * Each symbol representing a floating point exception expands to an integer
+ * constant expression with values, such that bitwise-inclusive ORs of _all
+ * combinations_ of the constants result in distinct values.
+ *
+ * We use such values that allow direct bitwise operations on FPU/SSE registers.
+ */
+#define FE_INVALID    0x01
+#define FE_DENORMAL   0x02
+#define FE_DIVBYZERO  0x04
+#define FE_OVERFLOW   0x08
+#define FE_UNDERFLOW  0x10
+#define FE_INEXACT    0x20
+
+/*
+ * The following symbol is simply the bitwise-inclusive OR of all floating-point
+ * exception constants defined above.
+ */
+#define FE_ALL_EXCEPT   (FE_INVALID | FE_DENORMAL | FE_DIVBYZERO | \
+                         FE_OVERFLOW | FE_UNDERFLOW | FE_INEXACT)
+
+/*
+ * Each symbol representing the rounding direction, expands to an integer
+ * constant expression whose value is distinct non-negative value.
+ *
+ * We use such values that allow direct bitwise operations on FPU/SSE registers.
+ */
+#define FE_TONEAREST  0x000
+#define FE_DOWNWARD   0x400
+#define FE_UPWARD     0x800
+#define FE_TOWARDZERO 0xc00
+
+/*
+ * fenv_t represents the entire floating-point environment.
+ */
+typedef struct {
+  struct {
+    __uint32_t __control;   /* Control word register */
+    __uint32_t __status;    /* Status word register */
+    __uint32_t __tag;       /* Tag word register */
+    __uint32_t __others[4]; /* EIP, Pointer Selector, etc */
+  } __x87;
+  __uint32_t __mxcsr;       /* Control, status register */
+} fenv_t;
+
+/*
+ * fexcept_t represents the floating-point status flags collectively, including
+ * any status the implementation associates with the flags.
+ *
+ * A floating-point status flag is a system variable whose value is set (but
+ * never cleared) when a floating-point exception is raised, which occurs as a
+ * side effect of exceptional floating-point arithmetic to provide auxiliary
+ * information.
+ *
+ * A floating-point control mode is a system variable whose value may be set by
+ * the user to affect the subsequent behavior of floating-point arithmetic.
+ */
+typedef __uint32_t fexcept_t;
+
+__END_DECLS
+
+#endif /* !_AMD64_FENV_H_ */
diff --git a/ndk/platforms/android-20/arch-x86_64/include/machine/fpu.h b/ndk/platforms/android-L/arch-x86_64/include/machine/fpu.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/include/machine/fpu.h
rename to ndk/platforms/android-L/arch-x86_64/include/machine/fpu.h
diff --git a/ndk/platforms/android-20/arch-x86_64/include/machine/setjmp.h b/ndk/platforms/android-L/arch-x86_64/include/machine/setjmp.h
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/include/machine/setjmp.h
rename to ndk/platforms/android-L/arch-x86_64/include/machine/setjmp.h
diff --git a/ndk/platforms/android-L/arch-x86_64/lib b/ndk/platforms/android-L/arch-x86_64/lib
new file mode 120000
index 0000000..c01c3e2
--- /dev/null
+++ b/ndk/platforms/android-L/arch-x86_64/lib
@@ -0,0 +1 @@
+../arch-x86/lib
\ No newline at end of file
diff --git a/ndk/platforms/android-20/arch-x86_64/lib-bootstrap b/ndk/platforms/android-L/arch-x86_64/lib-bootstrap
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/lib-bootstrap
rename to ndk/platforms/android-L/arch-x86_64/lib-bootstrap
diff --git a/ndk/platforms/android-L/arch-x86_64/lib64/libc.a b/ndk/platforms/android-L/arch-x86_64/lib64/libc.a
new file mode 100644
index 0000000..559e23a
--- /dev/null
+++ b/ndk/platforms/android-L/arch-x86_64/lib64/libc.a
Binary files differ
diff --git a/ndk/platforms/android-L/arch-x86_64/lib64/libm.a b/ndk/platforms/android-L/arch-x86_64/lib64/libm.a
new file mode 100644
index 0000000..05f19b6
--- /dev/null
+++ b/ndk/platforms/android-L/arch-x86_64/lib64/libm.a
Binary files differ
diff --git a/ndk/platforms/android-L/arch-x86_64/lib64/libstdc++.a b/ndk/platforms/android-L/arch-x86_64/lib64/libstdc++.a
new file mode 100644
index 0000000..ace8279
--- /dev/null
+++ b/ndk/platforms/android-L/arch-x86_64/lib64/libstdc++.a
Binary files differ
diff --git a/ndk/platforms/android-L/arch-x86_64/lib64/libz.a b/ndk/platforms/android-L/arch-x86_64/lib64/libz.a
new file mode 100644
index 0000000..6faf419
--- /dev/null
+++ b/ndk/platforms/android-L/arch-x86_64/lib64/libz.a
Binary files differ
diff --git a/ndk/platforms/android-20/arch-x86_64/src b/ndk/platforms/android-L/arch-x86_64/src
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/src
rename to ndk/platforms/android-L/arch-x86_64/src
diff --git a/ndk/platforms/android-20/arch-x86_64/symbols/libEGL.so.functions.txt b/ndk/platforms/android-L/arch-x86_64/symbols/libEGL.so.functions.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/symbols/libEGL.so.functions.txt
rename to ndk/platforms/android-L/arch-x86_64/symbols/libEGL.so.functions.txt
diff --git a/ndk/platforms/android-20/arch-x86_64/symbols/libEGL.so.variables.txt b/ndk/platforms/android-L/arch-x86_64/symbols/libEGL.so.variables.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/symbols/libEGL.so.variables.txt
rename to ndk/platforms/android-L/arch-x86_64/symbols/libEGL.so.variables.txt
diff --git a/ndk/platforms/android-20/arch-x86_64/symbols/libGLESv1_CM.so.functions.txt b/ndk/platforms/android-L/arch-x86_64/symbols/libGLESv1_CM.so.functions.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/symbols/libGLESv1_CM.so.functions.txt
rename to ndk/platforms/android-L/arch-x86_64/symbols/libGLESv1_CM.so.functions.txt
diff --git a/ndk/platforms/android-20/arch-x86_64/symbols/libGLESv1_CM.so.variables.txt b/ndk/platforms/android-L/arch-x86_64/symbols/libGLESv1_CM.so.variables.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/symbols/libGLESv1_CM.so.variables.txt
rename to ndk/platforms/android-L/arch-x86_64/symbols/libGLESv1_CM.so.variables.txt
diff --git a/ndk/platforms/android-20/arch-x86_64/symbols/libGLESv2.so.functions.txt b/ndk/platforms/android-L/arch-x86_64/symbols/libGLESv2.so.functions.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/symbols/libGLESv2.so.functions.txt
rename to ndk/platforms/android-L/arch-x86_64/symbols/libGLESv2.so.functions.txt
diff --git a/ndk/platforms/android-20/arch-x86_64/symbols/libGLESv2.so.variables.txt b/ndk/platforms/android-L/arch-x86_64/symbols/libGLESv2.so.variables.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/symbols/libGLESv2.so.variables.txt
rename to ndk/platforms/android-L/arch-x86_64/symbols/libGLESv2.so.variables.txt
diff --git a/ndk/platforms/android-20/arch-x86_64/symbols/libGLESv3.so.functions.txt b/ndk/platforms/android-L/arch-x86_64/symbols/libGLESv3.so.functions.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/symbols/libGLESv3.so.functions.txt
rename to ndk/platforms/android-L/arch-x86_64/symbols/libGLESv3.so.functions.txt
diff --git a/ndk/platforms/android-20/arch-x86_64/symbols/libGLESv3.so.variables.txt b/ndk/platforms/android-L/arch-x86_64/symbols/libGLESv3.so.variables.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/symbols/libGLESv3.so.variables.txt
rename to ndk/platforms/android-L/arch-x86_64/symbols/libGLESv3.so.variables.txt
diff --git a/ndk/platforms/android-20/arch-x86_64/symbols/libOpenMAXAL.so.functions.txt b/ndk/platforms/android-L/arch-x86_64/symbols/libOpenMAXAL.so.functions.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/symbols/libOpenMAXAL.so.functions.txt
rename to ndk/platforms/android-L/arch-x86_64/symbols/libOpenMAXAL.so.functions.txt
diff --git a/ndk/platforms/android-20/arch-x86_64/symbols/libOpenMAXAL.so.variables.txt b/ndk/platforms/android-L/arch-x86_64/symbols/libOpenMAXAL.so.variables.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/symbols/libOpenMAXAL.so.variables.txt
rename to ndk/platforms/android-L/arch-x86_64/symbols/libOpenMAXAL.so.variables.txt
diff --git a/ndk/platforms/android-20/arch-x86_64/symbols/libOpenSLES.so.functions.txt b/ndk/platforms/android-L/arch-x86_64/symbols/libOpenSLES.so.functions.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/symbols/libOpenSLES.so.functions.txt
rename to ndk/platforms/android-L/arch-x86_64/symbols/libOpenSLES.so.functions.txt
diff --git a/ndk/platforms/android-20/arch-x86_64/symbols/libOpenSLES.so.variables.txt b/ndk/platforms/android-L/arch-x86_64/symbols/libOpenSLES.so.variables.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/symbols/libOpenSLES.so.variables.txt
rename to ndk/platforms/android-L/arch-x86_64/symbols/libOpenSLES.so.variables.txt
diff --git a/ndk/platforms/android-20/arch-x86_64/symbols/libandroid.so.functions.txt b/ndk/platforms/android-L/arch-x86_64/symbols/libandroid.so.functions.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/symbols/libandroid.so.functions.txt
rename to ndk/platforms/android-L/arch-x86_64/symbols/libandroid.so.functions.txt
diff --git a/ndk/platforms/android-20/arch-x86_64/symbols/libandroid.so.variables.txt b/ndk/platforms/android-L/arch-x86_64/symbols/libandroid.so.variables.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/symbols/libandroid.so.variables.txt
rename to ndk/platforms/android-L/arch-x86_64/symbols/libandroid.so.variables.txt
diff --git a/ndk/platforms/android-L/arch-x86_64/symbols/libc.so.functions.txt b/ndk/platforms/android-L/arch-x86_64/symbols/libc.so.functions.txt
new file mode 100644
index 0000000..3ac1f02
--- /dev/null
+++ b/ndk/platforms/android-L/arch-x86_64/symbols/libc.so.functions.txt
@@ -0,0 +1,1034 @@
+SHA1Final
+SHA1Init
+SHA1Transform
+SHA1Update
+_Exit
+_Unwind_Backtrace
+_Unwind_DeleteException
+_Unwind_FindEnclosingFunction
+_Unwind_Find_FDE
+_Unwind_ForcedUnwind
+_Unwind_GetCFA
+_Unwind_GetDataRelBase
+_Unwind_GetGR
+_Unwind_GetIP
+_Unwind_GetIPInfo
+_Unwind_GetLanguageSpecificData
+_Unwind_GetRegionStart
+_Unwind_GetTextRelBase
+_Unwind_RaiseException
+_Unwind_Resume
+_Unwind_Resume_or_Rethrow
+_Unwind_SetGR
+_Unwind_SetIP
+_ZdaPv
+_ZdaPvRKSt9nothrow_t
+_ZdlPv
+_ZdlPvRKSt9nothrow_t
+_Znam
+_ZnamRKSt9nothrow_t
+_Znwm
+_ZnwmRKSt9nothrow_t
+__FD_CLR_chk
+__FD_ISSET_chk
+__FD_SET_chk
+__android_set_abort_message
+__assert
+__assert2
+__b64_ntop
+__b64_pton
+__bionic_name_mem
+__cxa_atexit
+__cxa_finalize
+__cxa_guard_abort
+__cxa_guard_acquire
+__cxa_guard_release
+__cxa_pure_virtual
+__deregister_frame
+__deregister_frame_info
+__deregister_frame_info_bases
+__dn_comp
+__dn_count_labels
+__dn_skipname
+__errno
+__fgets_chk
+__findenv
+__fp_nquery
+__fp_query
+__fpclassify
+__fpclassifyd
+__fpclassifyf
+__fpclassifyl
+__frame_state_for
+__get_h_errno
+__hostalias
+__isfinite
+__isfinitef
+__isfinitel
+__isinf
+__isinff
+__isinfl
+__isnan
+__isnanf
+__isnanl
+__isnormal
+__isnormalf
+__isnormall
+__libc_current_sigrtmax
+__libc_current_sigrtmin
+__libc_init
+__loc_aton
+__loc_ntoa
+__memcpy_chk
+__memmove_chk
+__memset_chk
+__multf3
+__open_2
+__openat_2
+__p_cdname
+__p_cdnname
+__p_class
+__p_fqname
+__p_fqnname
+__p_option
+__p_query
+__p_rcode
+__p_secstodate
+__p_time
+__p_type
+__popcountdi2
+__pthread_cleanup_pop
+__pthread_cleanup_push
+__pthread_gettid
+__putlong
+__putshort
+__read_chk
+__recvfrom_chk
+__register_frame
+__register_frame_info
+__register_frame_info_bases
+__register_frame_info_table
+__register_frame_info_table_bases
+__register_frame_table
+__res_close
+__res_dnok
+__res_hnok
+__res_hostalias
+__res_isourserver
+__res_mailok
+__res_nameinquery
+__res_nclose
+__res_ninit
+__res_nmkquery
+__res_nquery
+__res_nquerydomain
+__res_nsearch
+__res_nsend
+__res_ownok
+__res_queriesmatch
+__res_querydomain
+__res_randomid
+__res_send
+__res_send_setqhook
+__res_send_setrhook
+__sched_cpualloc
+__sched_cpucount
+__sched_cpufree
+__sfp_handle_exceptions
+__snprintf_chk
+__sprintf_chk
+__srefill
+__stack_chk_fail
+__stpcpy_chk
+__stpncpy_chk
+__stpncpy_chk2
+__strcat_chk
+__strchr_chk
+__strcpy_chk
+__strlcat_chk
+__strlcpy_chk
+__strlen_chk
+__strncat_chk
+__strncpy_chk
+__strncpy_chk2
+__strrchr_chk
+__sym_ntop
+__sym_ntos
+__sym_ston
+__system_properties_init
+__system_property_add
+__system_property_area_init
+__system_property_find
+__system_property_find_nth
+__system_property_foreach
+__system_property_get
+__system_property_read
+__system_property_serial
+__system_property_set
+__system_property_set_filename
+__system_property_update
+__system_property_wait_any
+__umask_chk
+__vsnprintf_chk
+__vsprintf_chk
+_exit
+_getlong
+_getshort
+_longjmp
+_resolv_flush_cache_for_net
+_resolv_set_nameservers_for_net
+_setjmp
+_thread_created_hook
+_tolower
+_toupper
+abort
+abs
+accept
+accept4
+access
+acct
+alarm
+alphasort
+alphasort64
+android_getaddrinfofornet
+android_gethostbyaddrfornet
+android_gethostbynamefornet
+arc4random
+arc4random_addrandom
+arc4random_buf
+arc4random_stir
+arc4random_uniform
+asctime
+asctime_r
+asprintf
+at_quick_exit
+atof
+atoi
+atol
+atoll
+basename
+basename_r
+bind
+bindresvport
+brk
+bsearch
+btowc
+c16rtomb
+c32rtomb
+calloc
+capget
+capset
+cfgetispeed
+cfgetospeed
+cfmakeraw
+cfsetispeed
+cfsetospeed
+cfsetspeed
+chdir
+chmod
+chown
+chroot
+clearenv
+clearerr
+clock
+clock_getres
+clock_gettime
+clock_nanosleep
+clock_settime
+clone
+close
+closedir
+closelog
+cmsg_nxthdr
+connect
+creat
+creat64
+ctime
+ctime_r
+daemon
+delete_module
+difftime
+dirfd
+dirname
+dirname_r
+div
+dlmalloc_inspect_all
+dlmalloc_trim
+dn_expand
+dprintf
+drand48
+dup
+dup2
+dup3
+duplocale
+endmntent
+endpwent
+endservent
+endusershell
+endutent
+epoll_create
+epoll_create1
+epoll_ctl
+epoll_pwait
+epoll_wait
+erand48
+err
+errx
+ether_aton
+ether_aton_r
+ether_ntoa
+ether_ntoa_r
+eventfd
+eventfd_read
+eventfd_write
+execl
+execle
+execlp
+execv
+execve
+execvp
+execvpe
+exit
+faccessat
+fallocate
+fallocate64
+fchdir
+fchmod
+fchmodat
+fchown
+fchownat
+fclose
+fcntl
+fdatasync
+fdopen
+fdopendir
+feof
+ferror
+fflush
+ffs
+fgetc
+fgetln
+fgetpos
+fgets
+fgetwc
+fgetws
+fgetxattr
+fileno
+flistxattr
+flock
+flockfile
+fnmatch
+fopen
+fork
+fpathconf
+fprintf
+fpurge
+fputc
+fputs
+fputwc
+fputws
+fread
+free
+freeaddrinfo
+freelocale
+fremovexattr
+freopen
+fscanf
+fseek
+fseeko
+fsetpos
+fsetxattr
+fstat
+fstat64
+fstatat
+fstatat64
+fstatfs
+fstatfs64
+fstatvfs
+fstatvfs64
+fsync
+ftell
+ftello
+ftok
+ftruncate
+ftruncate64
+ftrylockfile
+fts_children
+fts_close
+fts_open
+fts_read
+fts_set
+ftw
+ftw64
+funlockfile
+funopen
+futimens
+fwide
+fwprintf
+fwrite
+fwscanf
+gai_strerror
+get_malloc_leak_info
+getaddrinfo
+getauxval
+getc
+getc_unlocked
+getchar
+getchar_unlocked
+getcwd
+getdelim
+getegid
+getenv
+geteuid
+getgid
+getgrgid
+getgrnam
+getgrouplist
+getgroups
+gethostbyaddr
+gethostbyname
+gethostbyname2
+gethostbyname_r
+gethostent
+gethostname
+getitimer
+getline
+getlogin
+getmntent
+getmntent_r
+getnameinfo
+getnetbyaddr
+getnetbyname
+getopt
+getopt_long
+getopt_long_only
+getpagesize
+getpeername
+getpgid
+getpgrp
+getpid
+getppid
+getpriority
+getprogname
+getprotobyname
+getprotobynumber
+getpt
+getpwnam
+getpwnam_r
+getpwuid
+getpwuid_r
+getresgid
+getresuid
+getrlimit
+getrlimit64
+getrusage
+gets
+getservbyname
+getservbyport
+getservent
+getsid
+getsockname
+getsockopt
+gettid
+gettimeofday
+getuid
+getusershell
+getutent
+getwc
+getwchar
+getxattr
+gmtime
+gmtime_r
+herror
+hstrerror
+htonl
+htons
+if_indextoname
+if_nametoindex
+imaxabs
+imaxdiv
+inet_addr
+inet_aton
+inet_lnaof
+inet_makeaddr
+inet_netof
+inet_network
+inet_ntoa
+inet_ntop
+inet_pton
+init_module
+initgroups
+initstate
+inotify_add_watch
+inotify_init
+inotify_init1
+inotify_rm_watch
+ioctl
+isalnum
+isalpha
+isascii
+isatty
+isblank
+iscntrl
+isdigit
+isfinite
+isfinitef
+isfinitel
+isgraph
+isinf
+isinff
+isinfl
+islower
+isnan
+isnanf
+isnanl
+isnormal
+isnormalf
+isnormall
+isprint
+ispunct
+isspace
+isupper
+iswalnum
+iswalpha
+iswblank
+iswcntrl
+iswctype
+iswdigit
+iswgraph
+iswlower
+iswprint
+iswpunct
+iswspace
+iswupper
+iswxdigit
+isxdigit
+jrand48
+kill
+killpg
+klogctl
+labs
+lchown
+ldexp
+ldiv
+lfind
+lgetxattr
+link
+linkat
+listen
+listxattr
+llabs
+lldiv
+llistxattr
+localeconv
+localtime
+localtime_r
+localtime_tz
+longjmp
+lrand48
+lremovexattr
+lsearch
+lseek
+lseek64
+lsetxattr
+lstat
+lstat64
+madvise
+mallinfo
+malloc
+malloc_usable_size
+mbrlen
+mbrtoc16
+mbrtoc32
+mbrtowc
+mbsinit
+mbsnrtowcs
+mbsrtowcs
+mbstowcs
+mbtowc
+memalign
+memccpy
+memchr
+memcmp
+memcpy
+memmem
+memmove
+memrchr
+memset
+mincore
+mkdir
+mkdirat
+mkdtemp
+mkfifo
+mknod
+mknodat
+mkstemp
+mkstemp64
+mkstemps
+mktemp
+mktime
+mktime_tz
+mlock
+mlockall
+mmap
+mmap64
+mount
+mprotect
+mrand48
+mremap
+msync
+munlock
+munlockall
+munmap
+nanosleep
+newlocale
+nftw
+nftw64
+nice
+nrand48
+ntohl
+ntohs
+open
+open64
+openat
+openat64
+opendir
+openlog
+pathconf
+pause
+pclose
+perror
+personality
+pipe
+pipe2
+poll
+popen
+posix_fallocate
+posix_fallocate64
+posix_memalign
+ppoll
+prctl
+pread
+pread64
+printf
+prlimit
+prlimit64
+pselect
+psiginfo
+psignal
+pthread_atfork
+pthread_attr_destroy
+pthread_attr_getdetachstate
+pthread_attr_getguardsize
+pthread_attr_getschedparam
+pthread_attr_getschedpolicy
+pthread_attr_getscope
+pthread_attr_getstack
+pthread_attr_getstacksize
+pthread_attr_init
+pthread_attr_setdetachstate
+pthread_attr_setguardsize
+pthread_attr_setschedparam
+pthread_attr_setschedpolicy
+pthread_attr_setscope
+pthread_attr_setstack
+pthread_attr_setstacksize
+pthread_cond_broadcast
+pthread_cond_destroy
+pthread_cond_init
+pthread_cond_signal
+pthread_cond_timedwait
+pthread_cond_wait
+pthread_condattr_destroy
+pthread_condattr_getclock
+pthread_condattr_getpshared
+pthread_condattr_init
+pthread_condattr_setclock
+pthread_condattr_setpshared
+pthread_create
+pthread_detach
+pthread_equal
+pthread_exit
+pthread_getattr_np
+pthread_getcpuclockid
+pthread_getschedparam
+pthread_getspecific
+pthread_join
+pthread_key_create
+pthread_key_delete
+pthread_kill
+pthread_mutex_destroy
+pthread_mutex_init
+pthread_mutex_lock
+pthread_mutex_timedlock
+pthread_mutex_trylock
+pthread_mutex_unlock
+pthread_mutexattr_destroy
+pthread_mutexattr_getpshared
+pthread_mutexattr_gettype
+pthread_mutexattr_init
+pthread_mutexattr_setpshared
+pthread_mutexattr_settype
+pthread_once
+pthread_rwlock_destroy
+pthread_rwlock_init
+pthread_rwlock_rdlock
+pthread_rwlock_timedrdlock
+pthread_rwlock_timedwrlock
+pthread_rwlock_tryrdlock
+pthread_rwlock_trywrlock
+pthread_rwlock_unlock
+pthread_rwlock_wrlock
+pthread_rwlockattr_destroy
+pthread_rwlockattr_getpshared
+pthread_rwlockattr_init
+pthread_rwlockattr_setpshared
+pthread_self
+pthread_setname_np
+pthread_setschedparam
+pthread_setspecific
+pthread_sigmask
+ptrace
+ptsname
+ptsname_r
+putc
+putc_unlocked
+putchar
+putchar_unlocked
+putenv
+puts
+pututline
+putwc
+putwchar
+pwrite
+pwrite64
+qsort
+quick_exit
+raise
+rand
+rand_r
+random
+read
+readahead
+readdir
+readdir64
+readdir64_r
+readdir_r
+readlink
+readlinkat
+readv
+realloc
+realpath
+reboot
+recv
+recvfrom
+recvmmsg
+recvmsg
+regcomp
+regerror
+regexec
+regfree
+remove
+removexattr
+rename
+renameat
+res_init
+res_mkquery
+res_query
+res_search
+rewind
+rewinddir
+rmdir
+sbrk
+scandir
+scandir64
+scanf
+sched_get_priority_max
+sched_get_priority_min
+sched_getaffinity
+sched_getcpu
+sched_getparam
+sched_getscheduler
+sched_rr_get_interval
+sched_setaffinity
+sched_setparam
+sched_setscheduler
+sched_yield
+seed48
+select
+sem_close
+sem_destroy
+sem_getvalue
+sem_init
+sem_open
+sem_post
+sem_timedwait
+sem_trywait
+sem_unlink
+sem_wait
+send
+sendfile
+sendfile64
+sendmmsg
+sendmsg
+sendto
+setbuf
+setbuffer
+setegid
+setenv
+seteuid
+setgid
+setgroups
+setitimer
+setjmp
+setlinebuf
+setlocale
+setlogmask
+setmntent
+setns
+setpgid
+setpgrp
+setpriority
+setprogname
+setregid
+setresgid
+setresuid
+setreuid
+setrlimit
+setrlimit64
+setservent
+setsid
+setsockopt
+setstate
+settimeofday
+setuid
+setusershell
+setutent
+setvbuf
+setxattr
+shutdown
+sigaction
+sigaddset
+sigaltstack
+sigblock
+sigdelset
+sigemptyset
+sigfillset
+siginterrupt
+sigismember
+siglongjmp
+signal
+signalfd
+sigpending
+sigprocmask
+sigsetjmp
+sigsetmask
+sigsuspend
+sigwait
+sleep
+snprintf
+socket
+socketpair
+sprintf
+srand
+srand48
+srandom
+sscanf
+stat
+stat64
+statfs
+statfs64
+statvfs
+statvfs64
+stpcpy
+stpncpy
+strcasecmp
+strcasestr
+strcat
+strchr
+strcmp
+strcoll
+strcpy
+strcspn
+strdup
+strerror
+strerror_r
+strftime
+strftime_tz
+strlcat
+strlcpy
+strlen
+strncasecmp
+strncat
+strncmp
+strncpy
+strndup
+strnlen
+strpbrk
+strptime
+strrchr
+strsep
+strsignal
+strspn
+strstr
+strtod
+strtof
+strtoimax
+strtok
+strtok_r
+strtol
+strtold
+strtoll
+strtoq
+strtoul
+strtoull
+strtoumax
+strtouq
+strxfrm
+swapoff
+swapon
+swprintf
+swscanf
+symlink
+symlinkat
+sync
+syscall
+sysconf
+sysinfo
+syslog
+system
+tcdrain
+tcflow
+tcflush
+tcgetattr
+tcgetpgrp
+tcgetsid
+tcsendbreak
+tcsetattr
+tcsetpgrp
+tdelete
+tdestroy
+tempnam
+tfind
+tgkill
+time
+timegm
+timelocal
+timer_create
+timer_delete
+timer_getoverrun
+timer_gettime
+timer_settime
+timerfd_create
+timerfd_gettime
+timerfd_settime
+times
+tmpfile
+tmpnam
+toascii
+tolower
+toupper
+towlower
+towupper
+truncate
+truncate64
+tsearch
+ttyname
+ttyname_r
+tzset
+umask
+umount
+umount2
+uname
+ungetc
+ungetwc
+unlink
+unlinkat
+unlockpt
+unsetenv
+unshare
+uselocale
+usleep
+utime
+utimensat
+utimes
+utmpname
+vasprintf
+vdprintf
+verr
+verrx
+vfork
+vfprintf
+vfscanf
+vfwprintf
+vfwscanf
+vprintf
+vscanf
+vsnprintf
+vsprintf
+vsscanf
+vswprintf
+vswscanf
+vsyslog
+vwarn
+vwarnx
+vwprintf
+vwscanf
+wait
+wait4
+waitid
+waitpid
+warn
+warnx
+wcpcpy
+wcpncpy
+wcrtomb
+wcscasecmp
+wcscat
+wcschr
+wcscmp
+wcscoll
+wcscpy
+wcscspn
+wcsdup
+wcsftime
+wcslcat
+wcslcpy
+wcslen
+wcsncasecmp
+wcsncat
+wcsncmp
+wcsncpy
+wcsnlen
+wcsnrtombs
+wcspbrk
+wcsrchr
+wcsrtombs
+wcsspn
+wcsstr
+wcstod
+wcstof
+wcstoimax
+wcstok
+wcstol
+wcstold
+wcstoll
+wcstombs
+wcstoul
+wcstoull
+wcstoumax
+wcswidth
+wcsxfrm
+wctob
+wctomb
+wctype
+wcwidth
+wmemchr
+wmemcmp
+wmemcpy
+wmemmove
+wmemset
+wprintf
+write
+writev
+wscanf
diff --git a/ndk/platforms/android-L/arch-x86_64/symbols/libc.so.variables.txt b/ndk/platforms/android-L/arch-x86_64/symbols/libc.so.variables.txt
new file mode 100644
index 0000000..4e8b2d8
--- /dev/null
+++ b/ndk/platforms/android-L/arch-x86_64/symbols/libc.so.variables.txt
@@ -0,0 +1,27 @@
+_C_ctype_
+_C_tolower_
+_C_toupper_
+_ZSt7nothrow
+__isthreaded
+__libc_malloc_dispatch
+__p_class_syms
+__p_type_syms
+__popcount_tab
+__progname
+__sF
+__stack_chk_guard
+__system_property_area__
+_ctype_
+_tolower_tab_
+_toupper_tab_
+daylight
+environ
+optarg
+opterr
+optind
+optopt
+optreset
+sys_siglist
+sys_signame
+timezone
+tzname
diff --git a/ndk/platforms/android-20/arch-x86_64/symbols/libdl.so.functions.txt b/ndk/platforms/android-L/arch-x86_64/symbols/libdl.so.functions.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/symbols/libdl.so.functions.txt
rename to ndk/platforms/android-L/arch-x86_64/symbols/libdl.so.functions.txt
diff --git a/ndk/platforms/android-20/arch-x86_64/symbols/libdl.so.variables.txt b/ndk/platforms/android-L/arch-x86_64/symbols/libdl.so.variables.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/symbols/libdl.so.variables.txt
rename to ndk/platforms/android-L/arch-x86_64/symbols/libdl.so.variables.txt
diff --git a/ndk/platforms/android-20/arch-x86_64/symbols/libjnigraphics.so.functions.txt b/ndk/platforms/android-L/arch-x86_64/symbols/libjnigraphics.so.functions.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/symbols/libjnigraphics.so.functions.txt
rename to ndk/platforms/android-L/arch-x86_64/symbols/libjnigraphics.so.functions.txt
diff --git a/ndk/platforms/android-20/arch-x86_64/symbols/libjnigraphics.so.variables.txt b/ndk/platforms/android-L/arch-x86_64/symbols/libjnigraphics.so.variables.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/symbols/libjnigraphics.so.variables.txt
rename to ndk/platforms/android-L/arch-x86_64/symbols/libjnigraphics.so.variables.txt
diff --git a/ndk/platforms/android-20/arch-x86_64/symbols/liblog.so.functions.txt b/ndk/platforms/android-L/arch-x86_64/symbols/liblog.so.functions.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/symbols/liblog.so.functions.txt
rename to ndk/platforms/android-L/arch-x86_64/symbols/liblog.so.functions.txt
diff --git a/ndk/platforms/android-20/arch-x86_64/symbols/liblog.so.variables.txt b/ndk/platforms/android-L/arch-x86_64/symbols/liblog.so.variables.txt
similarity index 100%
rename from ndk/platforms/android-20/arch-x86_64/symbols/liblog.so.variables.txt
rename to ndk/platforms/android-L/arch-x86_64/symbols/liblog.so.variables.txt
diff --git a/ndk/platforms/android-L/arch-x86_64/symbols/libm.so.functions.txt b/ndk/platforms/android-L/arch-x86_64/symbols/libm.so.functions.txt
new file mode 100644
index 0000000..82e7a57
--- /dev/null
+++ b/ndk/platforms/android-L/arch-x86_64/symbols/libm.so.functions.txt
@@ -0,0 +1,233 @@
+__addtf3
+__divtf3
+__eqtf2
+__extenddftf2
+__extendsftf2
+__fixtfdi
+__fixtfsi
+__floatsitf
+__getf2
+__gttf2
+__letf2
+__lttf2
+__netf2
+__signbit
+__signbitf
+__signbitl
+__subtf3
+__trunctfdf2
+__trunctfsf2
+acos
+acosf
+acosh
+acoshf
+acoshl
+acosl
+asin
+asinf
+asinh
+asinhf
+asinhl
+asinl
+atan
+atan2
+atan2f
+atan2l
+atanf
+atanh
+atanhf
+atanhl
+atanl
+cbrt
+cbrtf
+cbrtl
+ceil
+ceilf
+ceill
+copysign
+copysignf
+copysignl
+cos
+cosf
+cosh
+coshf
+coshl
+cosl
+drem
+dremf
+erf
+erfc
+erfcf
+erfcl
+erff
+erfl
+exp
+exp2
+exp2f
+exp2l
+expf
+expl
+expm1
+expm1f
+expm1l
+fabs
+fabsf
+fabsl
+fdim
+fdimf
+fdiml
+feclearexcept
+fedisableexcept
+feenableexcept
+fegetenv
+fegetexcept
+fegetexceptflag
+fegetround
+feholdexcept
+feraiseexcept
+fesetenv
+fesetexceptflag
+fesetround
+fetestexcept
+feupdateenv
+finite
+finitef
+floor
+floorf
+floorl
+fma
+fmaf
+fmal
+fmax
+fmaxf
+fmaxl
+fmin
+fminf
+fminl
+fmod
+fmodf
+fmodl
+frexp
+frexpf
+frexpl
+gamma
+gamma_r
+gammaf
+gammaf_r
+hypot
+hypotf
+hypotl
+ilogb
+ilogbf
+ilogbl
+j0
+j0f
+j1
+j1f
+jn
+jnf
+ldexpf
+ldexpl
+lgamma
+lgamma_r
+lgammaf
+lgammaf_r
+lgammal
+llrint
+llrintf
+llrintl
+llround
+llroundf
+llroundl
+log
+log10
+log10f
+log10l
+log1p
+log1pf
+log1pl
+log2
+log2f
+log2l
+logb
+logbf
+logbl
+logf
+logl
+lrint
+lrintf
+lrintl
+lround
+lroundf
+lroundl
+modf
+modff
+modfl
+nan
+nanf
+nanl
+nearbyint
+nearbyintf
+nearbyintl
+nextafter
+nextafterf
+nextafterl
+nexttoward
+nexttowardf
+nexttowardl
+pow
+powf
+powl
+remainder
+remainderf
+remainderl
+remquo
+remquof
+remquol
+rint
+rintf
+rintl
+round
+roundf
+roundl
+scalb
+scalbf
+scalbln
+scalblnf
+scalblnl
+scalbn
+scalbnf
+scalbnl
+significand
+significandf
+significandl
+sin
+sincos
+sincosf
+sincosl
+sinf
+sinh
+sinhf
+sinhl
+sinl
+sqrt
+sqrtf
+sqrtl
+tan
+tanf
+tanh
+tanhf
+tanhl
+tanl
+tgamma
+tgammaf
+tgammal
+trunc
+truncf
+truncl
+y0
+y0f
+y1
+y1f
+yn
+ynf
diff --git a/ndk/platforms/android-20/arch-arm/symbols/libm.so.variables.txt b/ndk/platforms/android-L/arch-x86_64/symbols/libm.so.variables.txt
similarity index 100%
copy from ndk/platforms/android-20/arch-arm/symbols/libm.so.variables.txt
copy to ndk/platforms/android-L/arch-x86_64/symbols/libm.so.variables.txt
diff --git a/ndk/platforms/android-L/arch-x86_64/symbols/libstdc++.so.functions.txt b/ndk/platforms/android-L/arch-x86_64/symbols/libstdc++.so.functions.txt
new file mode 100644
index 0000000..7e337ad
--- /dev/null
+++ b/ndk/platforms/android-L/arch-x86_64/symbols/libstdc++.so.functions.txt
@@ -0,0 +1 @@
+__this_library_is_now_part_of_libc
diff --git a/ndk/platforms/android-20/arch-x86_64/symbols/libEGL.so.variables.txt b/ndk/platforms/android-L/arch-x86_64/symbols/libstdc++.so.variables.txt
similarity index 100%
copy from ndk/platforms/android-20/arch-x86_64/symbols/libEGL.so.variables.txt
copy to ndk/platforms/android-L/arch-x86_64/symbols/libstdc++.so.variables.txt
diff --git a/ndk/platforms/android-L/arch-x86_64/symbols/libz.so.functions.txt b/ndk/platforms/android-L/arch-x86_64/symbols/libz.so.functions.txt
new file mode 100644
index 0000000..bbd634e
--- /dev/null
+++ b/ndk/platforms/android-L/arch-x86_64/symbols/libz.so.functions.txt
@@ -0,0 +1,88 @@
+_tr_align
+_tr_flush_bits
+_tr_flush_block
+_tr_init
+_tr_stored_block
+_tr_tally
+adler32
+adler32_combine
+adler32_combine64
+compress
+compress2
+compressBound
+crc32
+crc32_combine
+crc32_combine64
+deflate
+deflateBound
+deflateCopy
+deflateEnd
+deflateInit2_
+deflateInit_
+deflateParams
+deflatePending
+deflatePrime
+deflateReset
+deflateResetKeep
+deflateSetDictionary
+deflateSetHeader
+deflateTune
+get_crc_table
+gz_error
+gzbuffer
+gzclearerr
+gzclose
+gzclose_r
+gzclose_w
+gzdirect
+gzdopen
+gzeof
+gzerror
+gzflush
+gzgetc
+gzgetc_
+gzgets
+gzoffset
+gzoffset64
+gzopen
+gzopen64
+gzprintf
+gzputc
+gzputs
+gzread
+gzrewind
+gzseek
+gzseek64
+gzsetparams
+gztell
+gztell64
+gzungetc
+gzvprintf
+gzwrite
+inflate
+inflateBack
+inflateBackEnd
+inflateBackInit_
+inflateCopy
+inflateEnd
+inflateGetDictionary
+inflateGetHeader
+inflateInit2_
+inflateInit_
+inflateMark
+inflatePrime
+inflateReset
+inflateReset2
+inflateResetKeep
+inflateSetDictionary
+inflateSync
+inflateSyncPoint
+inflateUndermine
+inflate_fast
+inflate_table
+uncompress
+zError
+zcalloc
+zcfree
+zlibCompileFlags
+zlibVersion
diff --git a/ndk/platforms/android-L/arch-x86_64/symbols/libz.so.variables.txt b/ndk/platforms/android-L/arch-x86_64/symbols/libz.so.variables.txt
new file mode 100644
index 0000000..c653ee5
--- /dev/null
+++ b/ndk/platforms/android-L/arch-x86_64/symbols/libz.so.variables.txt
@@ -0,0 +1,5 @@
+_dist_code
+_length_code
+deflate_copyright
+inflate_copyright
+z_errmsg
diff --git a/ndk/platforms/android-20/include/alloca.h b/ndk/platforms/android-L/include/alloca.h
similarity index 100%
rename from ndk/platforms/android-20/include/alloca.h
rename to ndk/platforms/android-L/include/alloca.h
diff --git a/ndk/platforms/android-20/include/android/api-level.h b/ndk/platforms/android-L/include/android/api-level.h
similarity index 100%
rename from ndk/platforms/android-20/include/android/api-level.h
rename to ndk/platforms/android-L/include/android/api-level.h
diff --git a/ndk/platforms/android-20/include/android/dlext.h b/ndk/platforms/android-L/include/android/dlext.h
similarity index 100%
rename from ndk/platforms/android-20/include/android/dlext.h
rename to ndk/platforms/android-L/include/android/dlext.h
diff --git a/ndk/platforms/android-20/include/ar.h b/ndk/platforms/android-L/include/ar.h
similarity index 100%
rename from ndk/platforms/android-20/include/ar.h
rename to ndk/platforms/android-L/include/ar.h
diff --git a/ndk/platforms/android-20/include/arpa/inet.h b/ndk/platforms/android-L/include/arpa/inet.h
similarity index 100%
rename from ndk/platforms/android-20/include/arpa/inet.h
rename to ndk/platforms/android-L/include/arpa/inet.h
diff --git a/ndk/platforms/android-20/include/arpa/nameser.h b/ndk/platforms/android-L/include/arpa/nameser.h
similarity index 100%
rename from ndk/platforms/android-20/include/arpa/nameser.h
rename to ndk/platforms/android-L/include/arpa/nameser.h
diff --git a/ndk/platforms/android-20/include/arpa/nameser_compat.h b/ndk/platforms/android-L/include/arpa/nameser_compat.h
similarity index 100%
rename from ndk/platforms/android-20/include/arpa/nameser_compat.h
rename to ndk/platforms/android-L/include/arpa/nameser_compat.h
diff --git a/ndk/platforms/android-20/include/arpa/telnet.h b/ndk/platforms/android-L/include/arpa/telnet.h
similarity index 100%
rename from ndk/platforms/android-20/include/arpa/telnet.h
rename to ndk/platforms/android-L/include/arpa/telnet.h
diff --git a/ndk/platforms/android-20/include/asm-generic/auxvec.h b/ndk/platforms/android-L/include/asm-generic/auxvec.h
similarity index 100%
rename from ndk/platforms/android-20/include/asm-generic/auxvec.h
rename to ndk/platforms/android-L/include/asm-generic/auxvec.h
diff --git a/ndk/platforms/android-20/include/asm-generic/bitsperlong.h b/ndk/platforms/android-L/include/asm-generic/bitsperlong.h
similarity index 100%
rename from ndk/platforms/android-20/include/asm-generic/bitsperlong.h
rename to ndk/platforms/android-L/include/asm-generic/bitsperlong.h
diff --git a/ndk/platforms/android-20/include/asm-generic/errno-base.h b/ndk/platforms/android-L/include/asm-generic/errno-base.h
similarity index 100%
rename from ndk/platforms/android-20/include/asm-generic/errno-base.h
rename to ndk/platforms/android-L/include/asm-generic/errno-base.h
diff --git a/ndk/platforms/android-20/include/asm-generic/errno.h b/ndk/platforms/android-L/include/asm-generic/errno.h
similarity index 100%
rename from ndk/platforms/android-20/include/asm-generic/errno.h
rename to ndk/platforms/android-L/include/asm-generic/errno.h
diff --git a/ndk/platforms/android-20/include/asm-generic/fcntl.h b/ndk/platforms/android-L/include/asm-generic/fcntl.h
similarity index 100%
rename from ndk/platforms/android-20/include/asm-generic/fcntl.h
rename to ndk/platforms/android-L/include/asm-generic/fcntl.h
diff --git a/ndk/platforms/android-20/include/asm-generic/int-l64.h b/ndk/platforms/android-L/include/asm-generic/int-l64.h
similarity index 100%
rename from ndk/platforms/android-20/include/asm-generic/int-l64.h
rename to ndk/platforms/android-L/include/asm-generic/int-l64.h
diff --git a/ndk/platforms/android-20/include/asm-generic/int-ll64.h b/ndk/platforms/android-L/include/asm-generic/int-ll64.h
similarity index 100%
rename from ndk/platforms/android-20/include/asm-generic/int-ll64.h
rename to ndk/platforms/android-L/include/asm-generic/int-ll64.h
diff --git a/ndk/platforms/android-20/include/asm-generic/ioctl.h b/ndk/platforms/android-L/include/asm-generic/ioctl.h
similarity index 100%
rename from ndk/platforms/android-20/include/asm-generic/ioctl.h
rename to ndk/platforms/android-L/include/asm-generic/ioctl.h
diff --git a/ndk/platforms/android-20/include/asm-generic/ioctls.h b/ndk/platforms/android-L/include/asm-generic/ioctls.h
similarity index 100%
rename from ndk/platforms/android-20/include/asm-generic/ioctls.h
rename to ndk/platforms/android-L/include/asm-generic/ioctls.h
diff --git a/ndk/platforms/android-20/include/asm-generic/ipcbuf.h b/ndk/platforms/android-L/include/asm-generic/ipcbuf.h
similarity index 100%
rename from ndk/platforms/android-20/include/asm-generic/ipcbuf.h
rename to ndk/platforms/android-L/include/asm-generic/ipcbuf.h
diff --git a/ndk/platforms/android-20/include/asm-generic/kvm_para.h b/ndk/platforms/android-L/include/asm-generic/kvm_para.h
similarity index 100%
rename from ndk/platforms/android-20/include/asm-generic/kvm_para.h
rename to ndk/platforms/android-L/include/asm-generic/kvm_para.h
diff --git a/ndk/platforms/android-20/include/asm-generic/mman-common.h b/ndk/platforms/android-L/include/asm-generic/mman-common.h
similarity index 100%
rename from ndk/platforms/android-20/include/asm-generic/mman-common.h
rename to ndk/platforms/android-L/include/asm-generic/mman-common.h
diff --git a/ndk/platforms/android-20/include/asm-generic/mman.h b/ndk/platforms/android-L/include/asm-generic/mman.h
similarity index 100%
rename from ndk/platforms/android-20/include/asm-generic/mman.h
rename to ndk/platforms/android-L/include/asm-generic/mman.h
diff --git a/ndk/platforms/android-20/include/asm-generic/msgbuf.h b/ndk/platforms/android-L/include/asm-generic/msgbuf.h
similarity index 100%
rename from ndk/platforms/android-20/include/asm-generic/msgbuf.h
rename to ndk/platforms/android-L/include/asm-generic/msgbuf.h
diff --git a/ndk/platforms/android-20/include/asm-generic/param.h b/ndk/platforms/android-L/include/asm-generic/param.h
similarity index 100%
rename from ndk/platforms/android-20/include/asm-generic/param.h
rename to ndk/platforms/android-L/include/asm-generic/param.h
diff --git a/ndk/platforms/android-20/include/asm-generic/poll.h b/ndk/platforms/android-L/include/asm-generic/poll.h
similarity index 100%
rename from ndk/platforms/android-20/include/asm-generic/poll.h
rename to ndk/platforms/android-L/include/asm-generic/poll.h
diff --git a/ndk/platforms/android-20/include/asm-generic/posix_types.h b/ndk/platforms/android-L/include/asm-generic/posix_types.h
similarity index 100%
rename from ndk/platforms/android-20/include/asm-generic/posix_types.h
rename to ndk/platforms/android-L/include/asm-generic/posix_types.h
diff --git a/ndk/platforms/android-20/include/asm-generic/resource.h b/ndk/platforms/android-L/include/asm-generic/resource.h
similarity index 100%
rename from ndk/platforms/android-20/include/asm-generic/resource.h
rename to ndk/platforms/android-L/include/asm-generic/resource.h
diff --git a/ndk/platforms/android-20/include/asm-generic/sembuf.h b/ndk/platforms/android-L/include/asm-generic/sembuf.h
similarity index 100%
rename from ndk/platforms/android-20/include/asm-generic/sembuf.h
rename to ndk/platforms/android-L/include/asm-generic/sembuf.h
diff --git a/ndk/platforms/android-20/include/asm-generic/setup.h b/ndk/platforms/android-L/include/asm-generic/setup.h
similarity index 100%
rename from ndk/platforms/android-20/include/asm-generic/setup.h
rename to ndk/platforms/android-L/include/asm-generic/setup.h
diff --git a/ndk/platforms/android-20/include/asm-generic/shmbuf.h b/ndk/platforms/android-L/include/asm-generic/shmbuf.h
similarity index 100%
rename from ndk/platforms/android-20/include/asm-generic/shmbuf.h
rename to ndk/platforms/android-L/include/asm-generic/shmbuf.h
diff --git a/ndk/platforms/android-20/include/asm-generic/shmparam.h b/ndk/platforms/android-L/include/asm-generic/shmparam.h
similarity index 100%
rename from ndk/platforms/android-20/include/asm-generic/shmparam.h
rename to ndk/platforms/android-L/include/asm-generic/shmparam.h
diff --git a/ndk/platforms/android-20/include/asm-generic/siginfo.h b/ndk/platforms/android-L/include/asm-generic/siginfo.h
similarity index 100%
rename from ndk/platforms/android-20/include/asm-generic/siginfo.h
rename to ndk/platforms/android-L/include/asm-generic/siginfo.h
diff --git a/ndk/platforms/android-20/include/asm-generic/signal-defs.h b/ndk/platforms/android-L/include/asm-generic/signal-defs.h
similarity index 100%
rename from ndk/platforms/android-20/include/asm-generic/signal-defs.h
rename to ndk/platforms/android-L/include/asm-generic/signal-defs.h
diff --git a/ndk/platforms/android-20/include/asm-generic/signal.h b/ndk/platforms/android-L/include/asm-generic/signal.h
similarity index 100%
rename from ndk/platforms/android-20/include/asm-generic/signal.h
rename to ndk/platforms/android-L/include/asm-generic/signal.h
diff --git a/ndk/platforms/android-20/include/asm-generic/socket.h b/ndk/platforms/android-L/include/asm-generic/socket.h
similarity index 100%
rename from ndk/platforms/android-20/include/asm-generic/socket.h
rename to ndk/platforms/android-L/include/asm-generic/socket.h
diff --git a/ndk/platforms/android-20/include/asm-generic/sockios.h b/ndk/platforms/android-L/include/asm-generic/sockios.h
similarity index 100%
rename from ndk/platforms/android-20/include/asm-generic/sockios.h
rename to ndk/platforms/android-L/include/asm-generic/sockios.h
diff --git a/ndk/platforms/android-20/include/asm-generic/stat.h b/ndk/platforms/android-L/include/asm-generic/stat.h
similarity index 100%
rename from ndk/platforms/android-20/include/asm-generic/stat.h
rename to ndk/platforms/android-L/include/asm-generic/stat.h
diff --git a/ndk/platforms/android-20/include/asm-generic/statfs.h b/ndk/platforms/android-L/include/asm-generic/statfs.h
similarity index 100%
rename from ndk/platforms/android-20/include/asm-generic/statfs.h
rename to ndk/platforms/android-L/include/asm-generic/statfs.h
diff --git a/ndk/platforms/android-20/include/asm-generic/swab.h b/ndk/platforms/android-L/include/asm-generic/swab.h
similarity index 100%
rename from ndk/platforms/android-20/include/asm-generic/swab.h
rename to ndk/platforms/android-L/include/asm-generic/swab.h
diff --git a/ndk/platforms/android-20/include/asm-generic/termbits.h b/ndk/platforms/android-L/include/asm-generic/termbits.h
similarity index 100%
rename from ndk/platforms/android-20/include/asm-generic/termbits.h
rename to ndk/platforms/android-L/include/asm-generic/termbits.h
diff --git a/ndk/platforms/android-20/include/asm-generic/termios.h b/ndk/platforms/android-L/include/asm-generic/termios.h
similarity index 100%
rename from ndk/platforms/android-20/include/asm-generic/termios.h
rename to ndk/platforms/android-L/include/asm-generic/termios.h
diff --git a/ndk/platforms/android-20/include/asm-generic/types.h b/ndk/platforms/android-L/include/asm-generic/types.h
similarity index 100%
rename from ndk/platforms/android-20/include/asm-generic/types.h
rename to ndk/platforms/android-L/include/asm-generic/types.h
diff --git a/ndk/platforms/android-20/include/asm-generic/ucontext.h b/ndk/platforms/android-L/include/asm-generic/ucontext.h
similarity index 100%
rename from ndk/platforms/android-20/include/asm-generic/ucontext.h
rename to ndk/platforms/android-L/include/asm-generic/ucontext.h
diff --git a/ndk/platforms/android-20/include/asm-generic/unistd.h b/ndk/platforms/android-L/include/asm-generic/unistd.h
similarity index 100%
rename from ndk/platforms/android-20/include/asm-generic/unistd.h
rename to ndk/platforms/android-L/include/asm-generic/unistd.h
diff --git a/ndk/platforms/android-20/include/assert.h b/ndk/platforms/android-L/include/assert.h
similarity index 100%
rename from ndk/platforms/android-20/include/assert.h
rename to ndk/platforms/android-L/include/assert.h
diff --git a/ndk/platforms/android-20/include/byteswap.h b/ndk/platforms/android-L/include/byteswap.h
similarity index 100%
rename from ndk/platforms/android-20/include/byteswap.h
rename to ndk/platforms/android-L/include/byteswap.h
diff --git a/ndk/platforms/android-20/include/complex.h b/ndk/platforms/android-L/include/complex.h
similarity index 100%
rename from ndk/platforms/android-20/include/complex.h
rename to ndk/platforms/android-L/include/complex.h
diff --git a/ndk/platforms/android-20/include/ctype.h b/ndk/platforms/android-L/include/ctype.h
similarity index 100%
rename from ndk/platforms/android-20/include/ctype.h
rename to ndk/platforms/android-L/include/ctype.h
diff --git a/ndk/platforms/android-L/include/dirent.h b/ndk/platforms/android-L/include/dirent.h
new file mode 100644
index 0000000..a849a61
--- /dev/null
+++ b/ndk/platforms/android-L/include/dirent.h
@@ -0,0 +1,81 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#ifndef _DIRENT_H_
+#define _DIRENT_H_
+
+#include <stdint.h>
+#include <sys/cdefs.h>
+
+__BEGIN_DECLS
+
+#ifndef DT_UNKNOWN
+#define DT_UNKNOWN 0
+#define DT_FIFO 1
+#define DT_CHR 2
+#define DT_DIR 4
+#define DT_BLK 6
+#define DT_REG 8
+#define DT_LNK 10
+#define DT_SOCK 12
+#define DT_WHT 14
+#endif
+
+#define __DIRENT64_BODY \
+    uint64_t         d_ino; \
+    int64_t          d_off; \
+    unsigned short   d_reclen; \
+    unsigned char    d_type; \
+    char             d_name[256]; \
+
+struct dirent { __DIRENT64_BODY };
+struct dirent64 { __DIRENT64_BODY };
+
+#undef __DIRENT64_BODY
+
+#define d_fileno d_ino
+
+typedef struct DIR DIR;
+
+extern DIR* opendir(const char*);
+extern DIR* fdopendir(int);
+extern struct dirent* readdir(DIR*);
+extern struct dirent64* readdir64(DIR*);
+extern int readdir_r(DIR*, struct dirent*, struct dirent**);
+extern int readdir64_r(DIR*, struct dirent64*, struct dirent64**);
+extern int closedir(DIR*);
+extern void rewinddir(DIR*);
+extern int dirfd(DIR*);
+extern int alphasort(const struct dirent**, const struct dirent**);
+extern int alphasort64(const struct dirent64**, const struct dirent64**);
+extern int scandir(const char*, struct dirent***, int (*)(const struct dirent*), int (*)(const struct dirent**, const struct dirent**));
+extern int scandir64(const char*, struct dirent64***, int (*)(const struct dirent64*), int (*)(const struct dirent64**, const struct dirent64**));
+
+__END_DECLS
+
+#endif /* _DIRENT_H_ */
diff --git a/ndk/platforms/android-L/include/dlfcn.h b/ndk/platforms/android-L/include/dlfcn.h
new file mode 100644
index 0000000..8dde08c
--- /dev/null
+++ b/ndk/platforms/android-L/include/dlfcn.h
@@ -0,0 +1,81 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+#ifndef __DLFCN_H__
+#define __DLFCN_H__
+
+#include <sys/cdefs.h>
+
+__BEGIN_DECLS
+
+typedef struct {
+    const char *dli_fname;  /* Pathname of shared object that
+                               contains address */
+    void       *dli_fbase;  /* Address at which shared object
+                               is loaded */
+    const char *dli_sname;  /* Name of nearest symbol with address
+                               lower than addr */
+    void       *dli_saddr;  /* Exact address of symbol named
+                               in dli_sname */
+} Dl_info;
+
+extern void*        dlopen(const char*  filename, int flag);
+extern int          dlclose(void*  handle);
+extern const char*  dlerror(void);
+extern void*        dlsym(void*  handle, const char*  symbol);
+extern int          dladdr(const void* addr, Dl_info *info);
+
+enum {
+#if defined(__LP64__)
+  RTLD_NOW  = 2,
+#else
+  RTLD_NOW  = 0,
+#endif
+  RTLD_LAZY = 1,
+
+  RTLD_LOCAL  = 0,
+#if defined(__LP64__)
+  RTLD_GLOBAL = 0x00100,
+#else
+  RTLD_GLOBAL = 2,
+#endif
+  RTLD_NOLOAD = 4,
+};
+
+#if defined (__LP64__)
+#define RTLD_DEFAULT  ((void*) 0)
+#define RTLD_NEXT     ((void*) -1L)
+#else
+#define RTLD_DEFAULT  ((void*) 0xffffffff)
+#define RTLD_NEXT     ((void*) 0xfffffffe)
+#endif
+
+__END_DECLS
+
+#endif /* __DLFCN_H */
+
+
diff --git a/ndk/platforms/android-20/include/elf.h b/ndk/platforms/android-L/include/elf.h
similarity index 100%
rename from ndk/platforms/android-20/include/elf.h
rename to ndk/platforms/android-L/include/elf.h
diff --git a/ndk/platforms/android-20/include/endian.h b/ndk/platforms/android-L/include/endian.h
similarity index 100%
rename from ndk/platforms/android-20/include/endian.h
rename to ndk/platforms/android-L/include/endian.h
diff --git a/ndk/platforms/android-20/include/err.h b/ndk/platforms/android-L/include/err.h
similarity index 100%
rename from ndk/platforms/android-20/include/err.h
rename to ndk/platforms/android-L/include/err.h
diff --git a/ndk/platforms/android-L/include/errno.h b/ndk/platforms/android-L/include/errno.h
new file mode 100644
index 0000000..1a36b7a
--- /dev/null
+++ b/ndk/platforms/android-L/include/errno.h
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+#ifndef _ERRNO_H
+#define _ERRNO_H
+
+#include <sys/cdefs.h>
+#include <linux/errno.h>
+
+__BEGIN_DECLS
+
+/* on Linux, ENOTSUP and EOPNOTSUPP are defined as the same error code
+ * even if 1000.3 states that they should be different
+ */
+#ifndef  ENOTSUP
+#define  ENOTSUP  EOPNOTSUPP
+#endif
+
+/* internal function returning the address of the thread-specific errno */
+extern volatile int* __errno(void) __pure2;
+
+/* a macro expanding to the errno l-value */
+#define  errno   (*__errno())
+
+__END_DECLS
+
+#endif /* _ERRNO_H */
diff --git a/ndk/platforms/android-20/include/fcntl.h b/ndk/platforms/android-L/include/fcntl.h
similarity index 100%
rename from ndk/platforms/android-20/include/fcntl.h
rename to ndk/platforms/android-L/include/fcntl.h
diff --git a/ndk/platforms/android-20/include/features.h b/ndk/platforms/android-L/include/features.h
similarity index 100%
rename from ndk/platforms/android-20/include/features.h
rename to ndk/platforms/android-L/include/features.h
diff --git a/ndk/platforms/android-L/include/fenv.h b/ndk/platforms/android-L/include/fenv.h
new file mode 100644
index 0000000..73ecc80
--- /dev/null
+++ b/ndk/platforms/android-L/include/fenv.h
@@ -0,0 +1,71 @@
+/*  $OpenBSD: fenv.h,v 1.2 2011/05/25 21:46:49 martynas Exp $ */
+/*  $NetBSD: fenv.h,v 1.2.4.1 2011/02/08 16:18:55 bouyer Exp $  */
+
+/*
+ * Copyright (c) 2010 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef _FENV_H_
+#define _FENV_H_
+
+#include <sys/cdefs.h>
+#include <machine/fenv.h>
+
+__BEGIN_DECLS
+#pragma GCC visibility push(default)
+
+int feclearexcept(int);
+int fegetexceptflag(fexcept_t *, int);
+int feraiseexcept(int);
+int fesetexceptflag(const fexcept_t *, int);
+int fetestexcept(int);
+
+int fegetround(void);
+int fesetround(int);
+
+int fegetenv(fenv_t *);
+int feholdexcept(fenv_t *);
+int fesetenv(const fenv_t *);
+int feupdateenv(const fenv_t *);
+
+int feenableexcept(int);
+int fedisableexcept(int);
+int fegetexcept(void);
+
+/*
+ * The following constant represents the default floating-point environment
+ * (that is, the one installed at program startup) and has type pointer to
+ * const-qualified fenv_t.
+ *
+ * It can be used as an argument to the functions that manage the floating-point
+ * environment, namely fesetenv() and feupdateenv().
+ */
+extern const fenv_t __fe_dfl_env;
+#define FE_DFL_ENV  (&__fe_dfl_env)
+
+#pragma GCC visibility pop
+__END_DECLS
+
+#endif  /* ! _FENV_H_ */
diff --git a/ndk/platforms/android-20/include/fnmatch.h b/ndk/platforms/android-L/include/fnmatch.h
similarity index 100%
rename from ndk/platforms/android-20/include/fnmatch.h
rename to ndk/platforms/android-L/include/fnmatch.h
diff --git a/ndk/platforms/android-20/include/fts.h b/ndk/platforms/android-L/include/fts.h
similarity index 100%
rename from ndk/platforms/android-20/include/fts.h
rename to ndk/platforms/android-L/include/fts.h
diff --git a/ndk/platforms/android-20/include/ftw.h b/ndk/platforms/android-L/include/ftw.h
similarity index 100%
rename from ndk/platforms/android-20/include/ftw.h
rename to ndk/platforms/android-L/include/ftw.h
diff --git a/ndk/platforms/android-20/include/getopt.h b/ndk/platforms/android-L/include/getopt.h
similarity index 100%
rename from ndk/platforms/android-20/include/getopt.h
rename to ndk/platforms/android-L/include/getopt.h
diff --git a/ndk/platforms/android-20/include/grp.h b/ndk/platforms/android-L/include/grp.h
similarity index 100%
rename from ndk/platforms/android-20/include/grp.h
rename to ndk/platforms/android-L/include/grp.h
diff --git a/ndk/platforms/android-20/include/inttypes.h b/ndk/platforms/android-L/include/inttypes.h
similarity index 100%
rename from ndk/platforms/android-20/include/inttypes.h
rename to ndk/platforms/android-L/include/inttypes.h
diff --git a/ndk/platforms/android-20/include/lastlog.h b/ndk/platforms/android-L/include/lastlog.h
similarity index 100%
rename from ndk/platforms/android-20/include/lastlog.h
rename to ndk/platforms/android-L/include/lastlog.h
diff --git a/ndk/platforms/android-20/include/libgen.h b/ndk/platforms/android-L/include/libgen.h
similarity index 100%
rename from ndk/platforms/android-20/include/libgen.h
rename to ndk/platforms/android-L/include/libgen.h
diff --git a/ndk/platforms/android-L/include/limits.h b/ndk/platforms/android-L/include/limits.h
new file mode 100644
index 0000000..fb09657
--- /dev/null
+++ b/ndk/platforms/android-L/include/limits.h
@@ -0,0 +1,128 @@
+/*	$OpenBSD: limits.h,v 1.13 2005/12/31 19:29:38 millert Exp $	*/
+/*	$NetBSD: limits.h,v 1.7 1994/10/26 00:56:00 cgd Exp $	*/
+
+/*
+ * Copyright (c) 1988 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ *	@(#)limits.h	5.9 (Berkeley) 4/3/91
+ */
+
+#ifndef _LIMITS_H_
+#define	_LIMITS_H_
+
+#include <sys/cdefs.h>
+
+#if __POSIX_VISIBLE
+#define	_POSIX_ARG_MAX		4096
+#define	_POSIX_CHILD_MAX	25
+#define	_POSIX_LINK_MAX		8
+#define	_POSIX_MAX_CANON	255
+#define	_POSIX_MAX_INPUT	255
+#define	_POSIX_NAME_MAX		14
+#define	_POSIX_NGROUPS_MAX	0
+#define	_POSIX_OPEN_MAX		16
+#define	_POSIX_PATH_MAX		256
+#define _POSIX_PIPE_BUF		512
+#define	_POSIX_RE_DUP_MAX	255
+#define _POSIX_SSIZE_MAX	32767
+#define _POSIX_STREAM_MAX	8
+#define _POSIX_SYMLINK_MAX	255
+#define _POSIX_SYMLOOP_MAX	8
+#define _POSIX_TZNAME_MAX	3
+
+#define	_POSIX2_BC_BASE_MAX	99
+#define	_POSIX2_BC_DIM_MAX	2048
+#define	_POSIX2_BC_SCALE_MAX	99
+#define	_POSIX2_BC_STRING_MAX	1000
+#define	_POSIX2_COLL_WEIGHTS_MAX	2
+#define	_POSIX2_EXPR_NEST_MAX	32
+#define	_POSIX2_LINE_MAX	2048
+#define	_POSIX2_RE_DUP_MAX	_POSIX_RE_DUP_MAX
+
+#if __POSIX_VISIBLE >= 200112
+#define _POSIX_TTY_NAME_MAX	9	/* includes trailing NUL */
+#define _POSIX_LOGIN_NAME_MAX	9	/* includes trailing NUL */
+#endif /* __POSIX_VISIBLE >= 200112 */
+#endif /* __POSIX_VISIBLE */
+
+#if __XPG_VISIBLE
+#define PASS_MAX		128	/* _PASSWORD_LEN from <pwd.h> */
+
+#define NL_ARGMAX		9
+#define NL_LANGMAX		14
+#define NL_MSGMAX		32767
+#define NL_NMAX			1
+#define NL_SETMAX		255
+#define NL_TEXTMAX		255
+
+#define TMP_MAX                 308915776
+#endif /* __XPG_VISIBLE */
+
+#include <sys/limits.h>
+
+#if __POSIX_VISIBLE
+#include <sys/syslimits.h>
+#endif
+
+/* GLibc compatibility definitions.
+   Note that these are defined by GCC's <limits.h>
+   only when __GNU_LIBRARY__ is defined, i.e. when
+   targetting GLibc. */
+#ifndef LONG_LONG_MIN
+#define LONG_LONG_MIN  LLONG_MIN
+#endif
+
+#ifndef LONG_LONG_MAX
+#define LONG_LONG_MAX  LLONG_MAX
+#endif
+
+#ifndef ULONG_LONG_MAX
+#define ULONG_LONG_MAX  ULLONG_MAX
+#endif
+
+/* BSD compatibility definitions. */
+#if __BSD_VISIBLE
+#define SIZE_T_MAX ULONG_MAX
+#endif /* __BSD_VISIBLE */
+
+#define SSIZE_MAX LONG_MAX
+
+#define MB_LEN_MAX 4
+
+/* New code should use sysconf(_SC_PAGE_SIZE) instead. */
+#ifndef PAGE_SIZE
+#define PAGE_SIZE 4096
+#endif
+#ifndef PAGESIZE
+#define  PAGESIZE  PAGE_SIZE
+#endif
+
+/* glibc's PAGE_MASK is the bitwise negation of BSD's! TODO: remove? */
+#define PAGE_MASK (~(PAGE_SIZE - 1))
+
+#endif /* !_LIMITS_H_ */
diff --git a/ndk/platforms/android-20/include/link.h b/ndk/platforms/android-L/include/link.h
similarity index 100%
rename from ndk/platforms/android-20/include/link.h
rename to ndk/platforms/android-L/include/link.h
diff --git a/ndk/platforms/android-20/include/linux/a.out.h b/ndk/platforms/android-L/include/linux/a.out.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/a.out.h
rename to ndk/platforms/android-L/include/linux/a.out.h
diff --git a/ndk/platforms/android-20/include/linux/acct.h b/ndk/platforms/android-L/include/linux/acct.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/acct.h
rename to ndk/platforms/android-L/include/linux/acct.h
diff --git a/ndk/platforms/android-20/include/linux/adb.h b/ndk/platforms/android-L/include/linux/adb.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/adb.h
rename to ndk/platforms/android-L/include/linux/adb.h
diff --git a/ndk/platforms/android-20/include/linux/adfs_fs.h b/ndk/platforms/android-L/include/linux/adfs_fs.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/adfs_fs.h
rename to ndk/platforms/android-L/include/linux/adfs_fs.h
diff --git a/ndk/platforms/android-20/include/linux/affs_hardblocks.h b/ndk/platforms/android-L/include/linux/affs_hardblocks.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/affs_hardblocks.h
rename to ndk/platforms/android-L/include/linux/affs_hardblocks.h
diff --git a/ndk/platforms/android-20/include/linux/agpgart.h b/ndk/platforms/android-L/include/linux/agpgart.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/agpgart.h
rename to ndk/platforms/android-L/include/linux/agpgart.h
diff --git a/ndk/platforms/android-20/include/linux/aio_abi.h b/ndk/platforms/android-L/include/linux/aio_abi.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/aio_abi.h
rename to ndk/platforms/android-L/include/linux/aio_abi.h
diff --git a/ndk/platforms/android-20/include/linux/android_alarm.h b/ndk/platforms/android-L/include/linux/android_alarm.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/android_alarm.h
rename to ndk/platforms/android-L/include/linux/android_alarm.h
diff --git a/ndk/platforms/android-20/include/linux/apm_bios.h b/ndk/platforms/android-L/include/linux/apm_bios.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/apm_bios.h
rename to ndk/platforms/android-L/include/linux/apm_bios.h
diff --git a/ndk/platforms/android-20/include/linux/arcfb.h b/ndk/platforms/android-L/include/linux/arcfb.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/arcfb.h
rename to ndk/platforms/android-L/include/linux/arcfb.h
diff --git a/ndk/platforms/android-20/include/linux/ashmem.h b/ndk/platforms/android-L/include/linux/ashmem.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/ashmem.h
rename to ndk/platforms/android-L/include/linux/ashmem.h
diff --git a/ndk/platforms/android-20/include/linux/atalk.h b/ndk/platforms/android-L/include/linux/atalk.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/atalk.h
rename to ndk/platforms/android-L/include/linux/atalk.h
diff --git a/ndk/platforms/android-20/include/linux/atm.h b/ndk/platforms/android-L/include/linux/atm.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/atm.h
rename to ndk/platforms/android-L/include/linux/atm.h
diff --git a/ndk/platforms/android-20/include/linux/atm_eni.h b/ndk/platforms/android-L/include/linux/atm_eni.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/atm_eni.h
rename to ndk/platforms/android-L/include/linux/atm_eni.h
diff --git a/ndk/platforms/android-20/include/linux/atm_he.h b/ndk/platforms/android-L/include/linux/atm_he.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/atm_he.h
rename to ndk/platforms/android-L/include/linux/atm_he.h
diff --git a/ndk/platforms/android-20/include/linux/atm_idt77105.h b/ndk/platforms/android-L/include/linux/atm_idt77105.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/atm_idt77105.h
rename to ndk/platforms/android-L/include/linux/atm_idt77105.h
diff --git a/ndk/platforms/android-20/include/linux/atm_nicstar.h b/ndk/platforms/android-L/include/linux/atm_nicstar.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/atm_nicstar.h
rename to ndk/platforms/android-L/include/linux/atm_nicstar.h
diff --git a/ndk/platforms/android-20/include/linux/atm_tcp.h b/ndk/platforms/android-L/include/linux/atm_tcp.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/atm_tcp.h
rename to ndk/platforms/android-L/include/linux/atm_tcp.h
diff --git a/ndk/platforms/android-20/include/linux/atm_zatm.h b/ndk/platforms/android-L/include/linux/atm_zatm.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/atm_zatm.h
rename to ndk/platforms/android-L/include/linux/atm_zatm.h
diff --git a/ndk/platforms/android-20/include/linux/atmapi.h b/ndk/platforms/android-L/include/linux/atmapi.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/atmapi.h
rename to ndk/platforms/android-L/include/linux/atmapi.h
diff --git a/ndk/platforms/android-20/include/linux/atmarp.h b/ndk/platforms/android-L/include/linux/atmarp.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/atmarp.h
rename to ndk/platforms/android-L/include/linux/atmarp.h
diff --git a/ndk/platforms/android-20/include/linux/atmbr2684.h b/ndk/platforms/android-L/include/linux/atmbr2684.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/atmbr2684.h
rename to ndk/platforms/android-L/include/linux/atmbr2684.h
diff --git a/ndk/platforms/android-20/include/linux/atmclip.h b/ndk/platforms/android-L/include/linux/atmclip.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/atmclip.h
rename to ndk/platforms/android-L/include/linux/atmclip.h
diff --git a/ndk/platforms/android-20/include/linux/atmdev.h b/ndk/platforms/android-L/include/linux/atmdev.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/atmdev.h
rename to ndk/platforms/android-L/include/linux/atmdev.h
diff --git a/ndk/platforms/android-20/include/linux/atmioc.h b/ndk/platforms/android-L/include/linux/atmioc.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/atmioc.h
rename to ndk/platforms/android-L/include/linux/atmioc.h
diff --git a/ndk/platforms/android-20/include/linux/atmlec.h b/ndk/platforms/android-L/include/linux/atmlec.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/atmlec.h
rename to ndk/platforms/android-L/include/linux/atmlec.h
diff --git a/ndk/platforms/android-20/include/linux/atmmpc.h b/ndk/platforms/android-L/include/linux/atmmpc.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/atmmpc.h
rename to ndk/platforms/android-L/include/linux/atmmpc.h
diff --git a/ndk/platforms/android-20/include/linux/atmppp.h b/ndk/platforms/android-L/include/linux/atmppp.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/atmppp.h
rename to ndk/platforms/android-L/include/linux/atmppp.h
diff --git a/ndk/platforms/android-20/include/linux/atmsap.h b/ndk/platforms/android-L/include/linux/atmsap.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/atmsap.h
rename to ndk/platforms/android-L/include/linux/atmsap.h
diff --git a/ndk/platforms/android-20/include/linux/atmsvc.h b/ndk/platforms/android-L/include/linux/atmsvc.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/atmsvc.h
rename to ndk/platforms/android-L/include/linux/atmsvc.h
diff --git a/ndk/platforms/android-20/include/linux/audit.h b/ndk/platforms/android-L/include/linux/audit.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/audit.h
rename to ndk/platforms/android-L/include/linux/audit.h
diff --git a/ndk/platforms/android-20/include/linux/auto_fs.h b/ndk/platforms/android-L/include/linux/auto_fs.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/auto_fs.h
rename to ndk/platforms/android-L/include/linux/auto_fs.h
diff --git a/ndk/platforms/android-20/include/linux/auto_fs4.h b/ndk/platforms/android-L/include/linux/auto_fs4.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/auto_fs4.h
rename to ndk/platforms/android-L/include/linux/auto_fs4.h
diff --git a/ndk/platforms/android-20/include/linux/auxvec.h b/ndk/platforms/android-L/include/linux/auxvec.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/auxvec.h
rename to ndk/platforms/android-L/include/linux/auxvec.h
diff --git a/ndk/platforms/android-20/include/linux/ax25.h b/ndk/platforms/android-L/include/linux/ax25.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/ax25.h
rename to ndk/platforms/android-L/include/linux/ax25.h
diff --git a/ndk/platforms/android-20/include/linux/b1lli.h b/ndk/platforms/android-L/include/linux/b1lli.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/b1lli.h
rename to ndk/platforms/android-L/include/linux/b1lli.h
diff --git a/ndk/platforms/android-20/include/linux/baycom.h b/ndk/platforms/android-L/include/linux/baycom.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/baycom.h
rename to ndk/platforms/android-L/include/linux/baycom.h
diff --git a/ndk/platforms/android-20/include/linux/bcm933xx_hcs.h b/ndk/platforms/android-L/include/linux/bcm933xx_hcs.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/bcm933xx_hcs.h
rename to ndk/platforms/android-L/include/linux/bcm933xx_hcs.h
diff --git a/ndk/platforms/android-20/include/linux/bfs_fs.h b/ndk/platforms/android-L/include/linux/bfs_fs.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/bfs_fs.h
rename to ndk/platforms/android-L/include/linux/bfs_fs.h
diff --git a/ndk/platforms/android-20/include/linux/binder.h b/ndk/platforms/android-L/include/linux/binder.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/binder.h
rename to ndk/platforms/android-L/include/linux/binder.h
diff --git a/ndk/platforms/android-20/include/linux/binfmts.h b/ndk/platforms/android-L/include/linux/binfmts.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/binfmts.h
rename to ndk/platforms/android-L/include/linux/binfmts.h
diff --git a/ndk/platforms/android-20/include/linux/blkpg.h b/ndk/platforms/android-L/include/linux/blkpg.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/blkpg.h
rename to ndk/platforms/android-L/include/linux/blkpg.h
diff --git a/ndk/platforms/android-20/include/linux/blktrace_api.h b/ndk/platforms/android-L/include/linux/blktrace_api.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/blktrace_api.h
rename to ndk/platforms/android-L/include/linux/blktrace_api.h
diff --git a/ndk/platforms/android-20/include/linux/bpqether.h b/ndk/platforms/android-L/include/linux/bpqether.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/bpqether.h
rename to ndk/platforms/android-L/include/linux/bpqether.h
diff --git a/ndk/platforms/android-20/include/linux/bsg.h b/ndk/platforms/android-L/include/linux/bsg.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/bsg.h
rename to ndk/platforms/android-L/include/linux/bsg.h
diff --git a/ndk/platforms/android-20/include/linux/btrfs.h b/ndk/platforms/android-L/include/linux/btrfs.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/btrfs.h
rename to ndk/platforms/android-L/include/linux/btrfs.h
diff --git a/ndk/platforms/android-20/include/linux/byteorder/big_endian.h b/ndk/platforms/android-L/include/linux/byteorder/big_endian.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/byteorder/big_endian.h
rename to ndk/platforms/android-L/include/linux/byteorder/big_endian.h
diff --git a/ndk/platforms/android-20/include/linux/byteorder/little_endian.h b/ndk/platforms/android-L/include/linux/byteorder/little_endian.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/byteorder/little_endian.h
rename to ndk/platforms/android-L/include/linux/byteorder/little_endian.h
diff --git a/ndk/platforms/android-20/include/linux/caif/caif_socket.h b/ndk/platforms/android-L/include/linux/caif/caif_socket.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/caif/caif_socket.h
rename to ndk/platforms/android-L/include/linux/caif/caif_socket.h
diff --git a/ndk/platforms/android-20/include/linux/caif/if_caif.h b/ndk/platforms/android-L/include/linux/caif/if_caif.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/caif/if_caif.h
rename to ndk/platforms/android-L/include/linux/caif/if_caif.h
diff --git a/ndk/platforms/android-20/include/linux/can.h b/ndk/platforms/android-L/include/linux/can.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/can.h
rename to ndk/platforms/android-L/include/linux/can.h
diff --git a/ndk/platforms/android-20/include/linux/can/bcm.h b/ndk/platforms/android-L/include/linux/can/bcm.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/can/bcm.h
rename to ndk/platforms/android-L/include/linux/can/bcm.h
diff --git a/ndk/platforms/android-20/include/linux/can/error.h b/ndk/platforms/android-L/include/linux/can/error.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/can/error.h
rename to ndk/platforms/android-L/include/linux/can/error.h
diff --git a/ndk/platforms/android-20/include/linux/can/gw.h b/ndk/platforms/android-L/include/linux/can/gw.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/can/gw.h
rename to ndk/platforms/android-L/include/linux/can/gw.h
diff --git a/ndk/platforms/android-20/include/linux/can/netlink.h b/ndk/platforms/android-L/include/linux/can/netlink.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/can/netlink.h
rename to ndk/platforms/android-L/include/linux/can/netlink.h
diff --git a/ndk/platforms/android-20/include/linux/can/raw.h b/ndk/platforms/android-L/include/linux/can/raw.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/can/raw.h
rename to ndk/platforms/android-L/include/linux/can/raw.h
diff --git a/ndk/platforms/android-20/include/linux/capability.h b/ndk/platforms/android-L/include/linux/capability.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/capability.h
rename to ndk/platforms/android-L/include/linux/capability.h
diff --git a/ndk/platforms/android-20/include/linux/capi.h b/ndk/platforms/android-L/include/linux/capi.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/capi.h
rename to ndk/platforms/android-L/include/linux/capi.h
diff --git a/ndk/platforms/android-20/include/linux/cciss_defs.h b/ndk/platforms/android-L/include/linux/cciss_defs.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/cciss_defs.h
rename to ndk/platforms/android-L/include/linux/cciss_defs.h
diff --git a/ndk/platforms/android-20/include/linux/cciss_ioctl.h b/ndk/platforms/android-L/include/linux/cciss_ioctl.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/cciss_ioctl.h
rename to ndk/platforms/android-L/include/linux/cciss_ioctl.h
diff --git a/ndk/platforms/android-20/include/linux/cdrom.h b/ndk/platforms/android-L/include/linux/cdrom.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/cdrom.h
rename to ndk/platforms/android-L/include/linux/cdrom.h
diff --git a/ndk/platforms/android-20/include/linux/cgroupstats.h b/ndk/platforms/android-L/include/linux/cgroupstats.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/cgroupstats.h
rename to ndk/platforms/android-L/include/linux/cgroupstats.h
diff --git a/ndk/platforms/android-20/include/linux/chio.h b/ndk/platforms/android-L/include/linux/chio.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/chio.h
rename to ndk/platforms/android-L/include/linux/chio.h
diff --git a/ndk/platforms/android-20/include/linux/cm4000_cs.h b/ndk/platforms/android-L/include/linux/cm4000_cs.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/cm4000_cs.h
rename to ndk/platforms/android-L/include/linux/cm4000_cs.h
diff --git a/ndk/platforms/android-20/include/linux/cn_proc.h b/ndk/platforms/android-L/include/linux/cn_proc.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/cn_proc.h
rename to ndk/platforms/android-L/include/linux/cn_proc.h
diff --git a/ndk/platforms/android-20/include/linux/coda.h b/ndk/platforms/android-L/include/linux/coda.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/coda.h
rename to ndk/platforms/android-L/include/linux/coda.h
diff --git a/ndk/platforms/android-20/include/linux/coda_psdev.h b/ndk/platforms/android-L/include/linux/coda_psdev.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/coda_psdev.h
rename to ndk/platforms/android-L/include/linux/coda_psdev.h
diff --git a/ndk/platforms/android-20/include/linux/coff.h b/ndk/platforms/android-L/include/linux/coff.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/coff.h
rename to ndk/platforms/android-L/include/linux/coff.h
diff --git a/ndk/platforms/android-20/include/linux/compiler.h b/ndk/platforms/android-L/include/linux/compiler.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/compiler.h
rename to ndk/platforms/android-L/include/linux/compiler.h
diff --git a/ndk/platforms/android-20/include/linux/connector.h b/ndk/platforms/android-L/include/linux/connector.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/connector.h
rename to ndk/platforms/android-L/include/linux/connector.h
diff --git a/ndk/platforms/android-20/include/linux/const.h b/ndk/platforms/android-L/include/linux/const.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/const.h
rename to ndk/platforms/android-L/include/linux/const.h
diff --git a/ndk/platforms/android-20/include/linux/cramfs_fs.h b/ndk/platforms/android-L/include/linux/cramfs_fs.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/cramfs_fs.h
rename to ndk/platforms/android-L/include/linux/cramfs_fs.h
diff --git a/ndk/platforms/android-20/include/linux/cuda.h b/ndk/platforms/android-L/include/linux/cuda.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/cuda.h
rename to ndk/platforms/android-L/include/linux/cuda.h
diff --git a/ndk/platforms/android-20/include/linux/cyclades.h b/ndk/platforms/android-L/include/linux/cyclades.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/cyclades.h
rename to ndk/platforms/android-L/include/linux/cyclades.h
diff --git a/ndk/platforms/android-20/include/linux/cycx_cfm.h b/ndk/platforms/android-L/include/linux/cycx_cfm.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/cycx_cfm.h
rename to ndk/platforms/android-L/include/linux/cycx_cfm.h
diff --git a/ndk/platforms/android-20/include/linux/dcbnl.h b/ndk/platforms/android-L/include/linux/dcbnl.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/dcbnl.h
rename to ndk/platforms/android-L/include/linux/dcbnl.h
diff --git a/ndk/platforms/android-20/include/linux/dccp.h b/ndk/platforms/android-L/include/linux/dccp.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/dccp.h
rename to ndk/platforms/android-L/include/linux/dccp.h
diff --git a/ndk/platforms/android-20/include/linux/dlm.h b/ndk/platforms/android-L/include/linux/dlm.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/dlm.h
rename to ndk/platforms/android-L/include/linux/dlm.h
diff --git a/ndk/platforms/android-20/include/linux/dlm_device.h b/ndk/platforms/android-L/include/linux/dlm_device.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/dlm_device.h
rename to ndk/platforms/android-L/include/linux/dlm_device.h
diff --git a/ndk/platforms/android-20/include/linux/dlm_netlink.h b/ndk/platforms/android-L/include/linux/dlm_netlink.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/dlm_netlink.h
rename to ndk/platforms/android-L/include/linux/dlm_netlink.h
diff --git a/ndk/platforms/android-20/include/linux/dlm_plock.h b/ndk/platforms/android-L/include/linux/dlm_plock.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/dlm_plock.h
rename to ndk/platforms/android-L/include/linux/dlm_plock.h
diff --git a/ndk/platforms/android-20/include/linux/dlmconstants.h b/ndk/platforms/android-L/include/linux/dlmconstants.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/dlmconstants.h
rename to ndk/platforms/android-L/include/linux/dlmconstants.h
diff --git a/ndk/platforms/android-20/include/linux/dm-ioctl.h b/ndk/platforms/android-L/include/linux/dm-ioctl.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/dm-ioctl.h
rename to ndk/platforms/android-L/include/linux/dm-ioctl.h
diff --git a/ndk/platforms/android-20/include/linux/dm-log-userspace.h b/ndk/platforms/android-L/include/linux/dm-log-userspace.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/dm-log-userspace.h
rename to ndk/platforms/android-L/include/linux/dm-log-userspace.h
diff --git a/ndk/platforms/android-20/include/linux/dn.h b/ndk/platforms/android-L/include/linux/dn.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/dn.h
rename to ndk/platforms/android-L/include/linux/dn.h
diff --git a/ndk/platforms/android-20/include/linux/dqblk_xfs.h b/ndk/platforms/android-L/include/linux/dqblk_xfs.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/dqblk_xfs.h
rename to ndk/platforms/android-L/include/linux/dqblk_xfs.h
diff --git a/ndk/platforms/android-20/include/linux/dvb/audio.h b/ndk/platforms/android-L/include/linux/dvb/audio.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/dvb/audio.h
rename to ndk/platforms/android-L/include/linux/dvb/audio.h
diff --git a/ndk/platforms/android-20/include/linux/dvb/ca.h b/ndk/platforms/android-L/include/linux/dvb/ca.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/dvb/ca.h
rename to ndk/platforms/android-L/include/linux/dvb/ca.h
diff --git a/ndk/platforms/android-20/include/linux/dvb/dmx.h b/ndk/platforms/android-L/include/linux/dvb/dmx.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/dvb/dmx.h
rename to ndk/platforms/android-L/include/linux/dvb/dmx.h
diff --git a/ndk/platforms/android-20/include/linux/dvb/frontend.h b/ndk/platforms/android-L/include/linux/dvb/frontend.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/dvb/frontend.h
rename to ndk/platforms/android-L/include/linux/dvb/frontend.h
diff --git a/ndk/platforms/android-20/include/linux/dvb/net.h b/ndk/platforms/android-L/include/linux/dvb/net.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/dvb/net.h
rename to ndk/platforms/android-L/include/linux/dvb/net.h
diff --git a/ndk/platforms/android-20/include/linux/dvb/osd.h b/ndk/platforms/android-L/include/linux/dvb/osd.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/dvb/osd.h
rename to ndk/platforms/android-L/include/linux/dvb/osd.h
diff --git a/ndk/platforms/android-20/include/linux/dvb/version.h b/ndk/platforms/android-L/include/linux/dvb/version.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/dvb/version.h
rename to ndk/platforms/android-L/include/linux/dvb/version.h
diff --git a/ndk/platforms/android-20/include/linux/dvb/video.h b/ndk/platforms/android-L/include/linux/dvb/video.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/dvb/video.h
rename to ndk/platforms/android-L/include/linux/dvb/video.h
diff --git a/ndk/platforms/android-20/include/linux/edd.h b/ndk/platforms/android-L/include/linux/edd.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/edd.h
rename to ndk/platforms/android-L/include/linux/edd.h
diff --git a/ndk/platforms/android-20/include/linux/efs_fs_sb.h b/ndk/platforms/android-L/include/linux/efs_fs_sb.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/efs_fs_sb.h
rename to ndk/platforms/android-L/include/linux/efs_fs_sb.h
diff --git a/ndk/platforms/android-20/include/linux/elf-em.h b/ndk/platforms/android-L/include/linux/elf-em.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/elf-em.h
rename to ndk/platforms/android-L/include/linux/elf-em.h
diff --git a/ndk/platforms/android-20/include/linux/elf-fdpic.h b/ndk/platforms/android-L/include/linux/elf-fdpic.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/elf-fdpic.h
rename to ndk/platforms/android-L/include/linux/elf-fdpic.h
diff --git a/ndk/platforms/android-20/include/linux/elf.h b/ndk/platforms/android-L/include/linux/elf.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/elf.h
rename to ndk/platforms/android-L/include/linux/elf.h
diff --git a/ndk/platforms/android-20/include/linux/elfcore.h b/ndk/platforms/android-L/include/linux/elfcore.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/elfcore.h
rename to ndk/platforms/android-L/include/linux/elfcore.h
diff --git a/ndk/platforms/android-20/include/linux/errno.h b/ndk/platforms/android-L/include/linux/errno.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/errno.h
rename to ndk/platforms/android-L/include/linux/errno.h
diff --git a/ndk/platforms/android-20/include/linux/errqueue.h b/ndk/platforms/android-L/include/linux/errqueue.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/errqueue.h
rename to ndk/platforms/android-L/include/linux/errqueue.h
diff --git a/ndk/platforms/android-20/include/linux/ethtool.h b/ndk/platforms/android-L/include/linux/ethtool.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/ethtool.h
rename to ndk/platforms/android-L/include/linux/ethtool.h
diff --git a/ndk/platforms/android-20/include/linux/eventpoll.h b/ndk/platforms/android-L/include/linux/eventpoll.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/eventpoll.h
rename to ndk/platforms/android-L/include/linux/eventpoll.h
diff --git a/ndk/platforms/android-20/include/linux/fadvise.h b/ndk/platforms/android-L/include/linux/fadvise.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/fadvise.h
rename to ndk/platforms/android-L/include/linux/fadvise.h
diff --git a/ndk/platforms/android-20/include/linux/falloc.h b/ndk/platforms/android-L/include/linux/falloc.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/falloc.h
rename to ndk/platforms/android-L/include/linux/falloc.h
diff --git a/ndk/platforms/android-20/include/linux/fanotify.h b/ndk/platforms/android-L/include/linux/fanotify.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/fanotify.h
rename to ndk/platforms/android-L/include/linux/fanotify.h
diff --git a/ndk/platforms/android-20/include/linux/fb.h b/ndk/platforms/android-L/include/linux/fb.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/fb.h
rename to ndk/platforms/android-L/include/linux/fb.h
diff --git a/ndk/platforms/android-20/include/linux/fcntl.h b/ndk/platforms/android-L/include/linux/fcntl.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/fcntl.h
rename to ndk/platforms/android-L/include/linux/fcntl.h
diff --git a/ndk/platforms/android-20/include/linux/fd.h b/ndk/platforms/android-L/include/linux/fd.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/fd.h
rename to ndk/platforms/android-L/include/linux/fd.h
diff --git a/ndk/platforms/android-20/include/linux/fdreg.h b/ndk/platforms/android-L/include/linux/fdreg.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/fdreg.h
rename to ndk/platforms/android-L/include/linux/fdreg.h
diff --git a/ndk/platforms/android-20/include/linux/fib_rules.h b/ndk/platforms/android-L/include/linux/fib_rules.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/fib_rules.h
rename to ndk/platforms/android-L/include/linux/fib_rules.h
diff --git a/ndk/platforms/android-20/include/linux/fiemap.h b/ndk/platforms/android-L/include/linux/fiemap.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/fiemap.h
rename to ndk/platforms/android-L/include/linux/fiemap.h
diff --git a/ndk/platforms/android-20/include/linux/filter.h b/ndk/platforms/android-L/include/linux/filter.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/filter.h
rename to ndk/platforms/android-L/include/linux/filter.h
diff --git a/ndk/platforms/android-20/include/linux/firewire-cdev.h b/ndk/platforms/android-L/include/linux/firewire-cdev.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/firewire-cdev.h
rename to ndk/platforms/android-L/include/linux/firewire-cdev.h
diff --git a/ndk/platforms/android-20/include/linux/firewire-constants.h b/ndk/platforms/android-L/include/linux/firewire-constants.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/firewire-constants.h
rename to ndk/platforms/android-L/include/linux/firewire-constants.h
diff --git a/ndk/platforms/android-20/include/linux/flat.h b/ndk/platforms/android-L/include/linux/flat.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/flat.h
rename to ndk/platforms/android-L/include/linux/flat.h
diff --git a/ndk/platforms/android-20/include/linux/fs.h b/ndk/platforms/android-L/include/linux/fs.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/fs.h
rename to ndk/platforms/android-L/include/linux/fs.h
diff --git a/ndk/platforms/android-20/include/linux/fsl_hypervisor.h b/ndk/platforms/android-L/include/linux/fsl_hypervisor.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/fsl_hypervisor.h
rename to ndk/platforms/android-L/include/linux/fsl_hypervisor.h
diff --git a/ndk/platforms/android-20/include/linux/fuse.h b/ndk/platforms/android-L/include/linux/fuse.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/fuse.h
rename to ndk/platforms/android-L/include/linux/fuse.h
diff --git a/ndk/platforms/android-20/include/linux/futex.h b/ndk/platforms/android-L/include/linux/futex.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/futex.h
rename to ndk/platforms/android-L/include/linux/futex.h
diff --git a/ndk/platforms/android-20/include/linux/gameport.h b/ndk/platforms/android-L/include/linux/gameport.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/gameport.h
rename to ndk/platforms/android-L/include/linux/gameport.h
diff --git a/ndk/platforms/android-20/include/linux/gen_stats.h b/ndk/platforms/android-L/include/linux/gen_stats.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/gen_stats.h
rename to ndk/platforms/android-L/include/linux/gen_stats.h
diff --git a/ndk/platforms/android-20/include/linux/genetlink.h b/ndk/platforms/android-L/include/linux/genetlink.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/genetlink.h
rename to ndk/platforms/android-L/include/linux/genetlink.h
diff --git a/ndk/platforms/android-20/include/linux/gfs2_ondisk.h b/ndk/platforms/android-L/include/linux/gfs2_ondisk.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/gfs2_ondisk.h
rename to ndk/platforms/android-L/include/linux/gfs2_ondisk.h
diff --git a/ndk/platforms/android-20/include/linux/gigaset_dev.h b/ndk/platforms/android-L/include/linux/gigaset_dev.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/gigaset_dev.h
rename to ndk/platforms/android-L/include/linux/gigaset_dev.h
diff --git a/ndk/platforms/android-20/include/linux/hdlc.h b/ndk/platforms/android-L/include/linux/hdlc.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/hdlc.h
rename to ndk/platforms/android-L/include/linux/hdlc.h
diff --git a/ndk/platforms/android-20/include/linux/hdlc/ioctl.h b/ndk/platforms/android-L/include/linux/hdlc/ioctl.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/hdlc/ioctl.h
rename to ndk/platforms/android-L/include/linux/hdlc/ioctl.h
diff --git a/ndk/platforms/android-20/include/linux/hdlcdrv.h b/ndk/platforms/android-L/include/linux/hdlcdrv.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/hdlcdrv.h
rename to ndk/platforms/android-L/include/linux/hdlcdrv.h
diff --git a/ndk/platforms/android-20/include/linux/hdreg.h b/ndk/platforms/android-L/include/linux/hdreg.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/hdreg.h
rename to ndk/platforms/android-L/include/linux/hdreg.h
diff --git a/ndk/platforms/android-20/include/linux/hid.h b/ndk/platforms/android-L/include/linux/hid.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/hid.h
rename to ndk/platforms/android-L/include/linux/hid.h
diff --git a/ndk/platforms/android-20/include/linux/hiddev.h b/ndk/platforms/android-L/include/linux/hiddev.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/hiddev.h
rename to ndk/platforms/android-L/include/linux/hiddev.h
diff --git a/ndk/platforms/android-20/include/linux/hidraw.h b/ndk/platforms/android-L/include/linux/hidraw.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/hidraw.h
rename to ndk/platforms/android-L/include/linux/hidraw.h
diff --git a/ndk/platforms/android-20/include/linux/hpet.h b/ndk/platforms/android-L/include/linux/hpet.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/hpet.h
rename to ndk/platforms/android-L/include/linux/hpet.h
diff --git a/ndk/platforms/android-20/include/linux/hsi/hsi_char.h b/ndk/platforms/android-L/include/linux/hsi/hsi_char.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/hsi/hsi_char.h
rename to ndk/platforms/android-L/include/linux/hsi/hsi_char.h
diff --git a/ndk/platforms/android-20/include/linux/hw_breakpoint.h b/ndk/platforms/android-L/include/linux/hw_breakpoint.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/hw_breakpoint.h
rename to ndk/platforms/android-L/include/linux/hw_breakpoint.h
diff --git a/ndk/platforms/android-20/include/linux/hysdn_if.h b/ndk/platforms/android-L/include/linux/hysdn_if.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/hysdn_if.h
rename to ndk/platforms/android-L/include/linux/hysdn_if.h
diff --git a/ndk/platforms/android-20/include/linux/i2c-dev.h b/ndk/platforms/android-L/include/linux/i2c-dev.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/i2c-dev.h
rename to ndk/platforms/android-L/include/linux/i2c-dev.h
diff --git a/ndk/platforms/android-20/include/linux/i2c.h b/ndk/platforms/android-L/include/linux/i2c.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/i2c.h
rename to ndk/platforms/android-L/include/linux/i2c.h
diff --git a/ndk/platforms/android-20/include/linux/i2o-dev.h b/ndk/platforms/android-L/include/linux/i2o-dev.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/i2o-dev.h
rename to ndk/platforms/android-L/include/linux/i2o-dev.h
diff --git a/ndk/platforms/android-20/include/linux/i8k.h b/ndk/platforms/android-L/include/linux/i8k.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/i8k.h
rename to ndk/platforms/android-L/include/linux/i8k.h
diff --git a/ndk/platforms/android-20/include/linux/icmp.h b/ndk/platforms/android-L/include/linux/icmp.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/icmp.h
rename to ndk/platforms/android-L/include/linux/icmp.h
diff --git a/ndk/platforms/android-20/include/linux/icmpv6.h b/ndk/platforms/android-L/include/linux/icmpv6.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/icmpv6.h
rename to ndk/platforms/android-L/include/linux/icmpv6.h
diff --git a/ndk/platforms/android-20/include/linux/if.h b/ndk/platforms/android-L/include/linux/if.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/if.h
rename to ndk/platforms/android-L/include/linux/if.h
diff --git a/ndk/platforms/android-20/include/linux/if_addr.h b/ndk/platforms/android-L/include/linux/if_addr.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/if_addr.h
rename to ndk/platforms/android-L/include/linux/if_addr.h
diff --git a/ndk/platforms/android-20/include/linux/if_addrlabel.h b/ndk/platforms/android-L/include/linux/if_addrlabel.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/if_addrlabel.h
rename to ndk/platforms/android-L/include/linux/if_addrlabel.h
diff --git a/ndk/platforms/android-20/include/linux/if_alg.h b/ndk/platforms/android-L/include/linux/if_alg.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/if_alg.h
rename to ndk/platforms/android-L/include/linux/if_alg.h
diff --git a/ndk/platforms/android-20/include/linux/if_arcnet.h b/ndk/platforms/android-L/include/linux/if_arcnet.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/if_arcnet.h
rename to ndk/platforms/android-L/include/linux/if_arcnet.h
diff --git a/ndk/platforms/android-20/include/linux/if_arp.h b/ndk/platforms/android-L/include/linux/if_arp.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/if_arp.h
rename to ndk/platforms/android-L/include/linux/if_arp.h
diff --git a/ndk/platforms/android-20/include/linux/if_bonding.h b/ndk/platforms/android-L/include/linux/if_bonding.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/if_bonding.h
rename to ndk/platforms/android-L/include/linux/if_bonding.h
diff --git a/ndk/platforms/android-20/include/linux/if_bridge.h b/ndk/platforms/android-L/include/linux/if_bridge.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/if_bridge.h
rename to ndk/platforms/android-L/include/linux/if_bridge.h
diff --git a/ndk/platforms/android-20/include/linux/if_cablemodem.h b/ndk/platforms/android-L/include/linux/if_cablemodem.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/if_cablemodem.h
rename to ndk/platforms/android-L/include/linux/if_cablemodem.h
diff --git a/ndk/platforms/android-20/include/linux/if_eql.h b/ndk/platforms/android-L/include/linux/if_eql.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/if_eql.h
rename to ndk/platforms/android-L/include/linux/if_eql.h
diff --git a/ndk/platforms/android-20/include/linux/if_ether.h b/ndk/platforms/android-L/include/linux/if_ether.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/if_ether.h
rename to ndk/platforms/android-L/include/linux/if_ether.h
diff --git a/ndk/platforms/android-20/include/linux/if_fc.h b/ndk/platforms/android-L/include/linux/if_fc.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/if_fc.h
rename to ndk/platforms/android-L/include/linux/if_fc.h
diff --git a/ndk/platforms/android-20/include/linux/if_fddi.h b/ndk/platforms/android-L/include/linux/if_fddi.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/if_fddi.h
rename to ndk/platforms/android-L/include/linux/if_fddi.h
diff --git a/ndk/platforms/android-20/include/linux/if_frad.h b/ndk/platforms/android-L/include/linux/if_frad.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/if_frad.h
rename to ndk/platforms/android-L/include/linux/if_frad.h
diff --git a/ndk/platforms/android-20/include/linux/if_hippi.h b/ndk/platforms/android-L/include/linux/if_hippi.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/if_hippi.h
rename to ndk/platforms/android-L/include/linux/if_hippi.h
diff --git a/ndk/platforms/android-20/include/linux/if_infiniband.h b/ndk/platforms/android-L/include/linux/if_infiniband.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/if_infiniband.h
rename to ndk/platforms/android-L/include/linux/if_infiniband.h
diff --git a/ndk/platforms/android-20/include/linux/if_link.h b/ndk/platforms/android-L/include/linux/if_link.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/if_link.h
rename to ndk/platforms/android-L/include/linux/if_link.h
diff --git a/ndk/platforms/android-20/include/linux/if_ltalk.h b/ndk/platforms/android-L/include/linux/if_ltalk.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/if_ltalk.h
rename to ndk/platforms/android-L/include/linux/if_ltalk.h
diff --git a/ndk/platforms/android-20/include/linux/if_packet.h b/ndk/platforms/android-L/include/linux/if_packet.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/if_packet.h
rename to ndk/platforms/android-L/include/linux/if_packet.h
diff --git a/ndk/platforms/android-20/include/linux/if_phonet.h b/ndk/platforms/android-L/include/linux/if_phonet.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/if_phonet.h
rename to ndk/platforms/android-L/include/linux/if_phonet.h
diff --git a/ndk/platforms/android-20/include/linux/if_plip.h b/ndk/platforms/android-L/include/linux/if_plip.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/if_plip.h
rename to ndk/platforms/android-L/include/linux/if_plip.h
diff --git a/ndk/platforms/android-20/include/linux/if_ppp.h b/ndk/platforms/android-L/include/linux/if_ppp.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/if_ppp.h
rename to ndk/platforms/android-L/include/linux/if_ppp.h
diff --git a/ndk/platforms/android-20/include/linux/if_pppol2tp.h b/ndk/platforms/android-L/include/linux/if_pppol2tp.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/if_pppol2tp.h
rename to ndk/platforms/android-L/include/linux/if_pppol2tp.h
diff --git a/ndk/platforms/android-20/include/linux/if_pppolac.h b/ndk/platforms/android-L/include/linux/if_pppolac.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/if_pppolac.h
rename to ndk/platforms/android-L/include/linux/if_pppolac.h
diff --git a/ndk/platforms/android-20/include/linux/if_pppopns.h b/ndk/platforms/android-L/include/linux/if_pppopns.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/if_pppopns.h
rename to ndk/platforms/android-L/include/linux/if_pppopns.h
diff --git a/ndk/platforms/android-20/include/linux/if_pppox.h b/ndk/platforms/android-L/include/linux/if_pppox.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/if_pppox.h
rename to ndk/platforms/android-L/include/linux/if_pppox.h
diff --git a/ndk/platforms/android-20/include/linux/if_slip.h b/ndk/platforms/android-L/include/linux/if_slip.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/if_slip.h
rename to ndk/platforms/android-L/include/linux/if_slip.h
diff --git a/ndk/platforms/android-20/include/linux/if_team.h b/ndk/platforms/android-L/include/linux/if_team.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/if_team.h
rename to ndk/platforms/android-L/include/linux/if_team.h
diff --git a/ndk/platforms/android-20/include/linux/if_tun.h b/ndk/platforms/android-L/include/linux/if_tun.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/if_tun.h
rename to ndk/platforms/android-L/include/linux/if_tun.h
diff --git a/ndk/platforms/android-20/include/linux/if_tunnel.h b/ndk/platforms/android-L/include/linux/if_tunnel.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/if_tunnel.h
rename to ndk/platforms/android-L/include/linux/if_tunnel.h
diff --git a/ndk/platforms/android-20/include/linux/if_vlan.h b/ndk/platforms/android-L/include/linux/if_vlan.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/if_vlan.h
rename to ndk/platforms/android-L/include/linux/if_vlan.h
diff --git a/ndk/platforms/android-20/include/linux/if_x25.h b/ndk/platforms/android-L/include/linux/if_x25.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/if_x25.h
rename to ndk/platforms/android-L/include/linux/if_x25.h
diff --git a/ndk/platforms/android-20/include/linux/igmp.h b/ndk/platforms/android-L/include/linux/igmp.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/igmp.h
rename to ndk/platforms/android-L/include/linux/igmp.h
diff --git a/ndk/platforms/android-20/include/linux/in.h b/ndk/platforms/android-L/include/linux/in.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/in.h
rename to ndk/platforms/android-L/include/linux/in.h
diff --git a/ndk/platforms/android-20/include/linux/in6.h b/ndk/platforms/android-L/include/linux/in6.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/in6.h
rename to ndk/platforms/android-L/include/linux/in6.h
diff --git a/ndk/platforms/android-20/include/linux/in_route.h b/ndk/platforms/android-L/include/linux/in_route.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/in_route.h
rename to ndk/platforms/android-L/include/linux/in_route.h
diff --git a/ndk/platforms/android-20/include/linux/inet_diag.h b/ndk/platforms/android-L/include/linux/inet_diag.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/inet_diag.h
rename to ndk/platforms/android-L/include/linux/inet_diag.h
diff --git a/ndk/platforms/android-20/include/linux/inotify.h b/ndk/platforms/android-L/include/linux/inotify.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/inotify.h
rename to ndk/platforms/android-L/include/linux/inotify.h
diff --git a/ndk/platforms/android-20/include/linux/input.h b/ndk/platforms/android-L/include/linux/input.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/input.h
rename to ndk/platforms/android-L/include/linux/input.h
diff --git a/ndk/platforms/android-20/include/linux/ioctl.h b/ndk/platforms/android-L/include/linux/ioctl.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/ioctl.h
rename to ndk/platforms/android-L/include/linux/ioctl.h
diff --git a/ndk/platforms/android-20/include/linux/ion.h b/ndk/platforms/android-L/include/linux/ion.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/ion.h
rename to ndk/platforms/android-L/include/linux/ion.h
diff --git a/ndk/platforms/android-20/include/linux/ioprio.h b/ndk/platforms/android-L/include/linux/ioprio.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/ioprio.h
rename to ndk/platforms/android-L/include/linux/ioprio.h
diff --git a/ndk/platforms/android-20/include/linux/ip.h b/ndk/platforms/android-L/include/linux/ip.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/ip.h
rename to ndk/platforms/android-L/include/linux/ip.h
diff --git a/ndk/platforms/android-20/include/linux/ip6_tunnel.h b/ndk/platforms/android-L/include/linux/ip6_tunnel.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/ip6_tunnel.h
rename to ndk/platforms/android-L/include/linux/ip6_tunnel.h
diff --git a/ndk/platforms/android-20/include/linux/ip_vs.h b/ndk/platforms/android-L/include/linux/ip_vs.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/ip_vs.h
rename to ndk/platforms/android-L/include/linux/ip_vs.h
diff --git a/ndk/platforms/android-20/include/linux/ipc.h b/ndk/platforms/android-L/include/linux/ipc.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/ipc.h
rename to ndk/platforms/android-L/include/linux/ipc.h
diff --git a/ndk/platforms/android-20/include/linux/ipmi.h b/ndk/platforms/android-L/include/linux/ipmi.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/ipmi.h
rename to ndk/platforms/android-L/include/linux/ipmi.h
diff --git a/ndk/platforms/android-20/include/linux/ipmi_msgdefs.h b/ndk/platforms/android-L/include/linux/ipmi_msgdefs.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/ipmi_msgdefs.h
rename to ndk/platforms/android-L/include/linux/ipmi_msgdefs.h
diff --git a/ndk/platforms/android-20/include/linux/ipsec.h b/ndk/platforms/android-L/include/linux/ipsec.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/ipsec.h
rename to ndk/platforms/android-L/include/linux/ipsec.h
diff --git a/ndk/platforms/android-20/include/linux/ipv6.h b/ndk/platforms/android-L/include/linux/ipv6.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/ipv6.h
rename to ndk/platforms/android-L/include/linux/ipv6.h
diff --git a/ndk/platforms/android-20/include/linux/ipv6_route.h b/ndk/platforms/android-L/include/linux/ipv6_route.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/ipv6_route.h
rename to ndk/platforms/android-L/include/linux/ipv6_route.h
diff --git a/ndk/platforms/android-20/include/linux/ipx.h b/ndk/platforms/android-L/include/linux/ipx.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/ipx.h
rename to ndk/platforms/android-L/include/linux/ipx.h
diff --git a/ndk/platforms/android-20/include/linux/irda.h b/ndk/platforms/android-L/include/linux/irda.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/irda.h
rename to ndk/platforms/android-L/include/linux/irda.h
diff --git a/ndk/platforms/android-20/include/linux/irqnr.h b/ndk/platforms/android-L/include/linux/irqnr.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/irqnr.h
rename to ndk/platforms/android-L/include/linux/irqnr.h
diff --git a/ndk/platforms/android-20/include/linux/isdn.h b/ndk/platforms/android-L/include/linux/isdn.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/isdn.h
rename to ndk/platforms/android-L/include/linux/isdn.h
diff --git a/ndk/platforms/android-20/include/linux/isdn/capicmd.h b/ndk/platforms/android-L/include/linux/isdn/capicmd.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/isdn/capicmd.h
rename to ndk/platforms/android-L/include/linux/isdn/capicmd.h
diff --git a/ndk/platforms/android-20/include/linux/isdn_divertif.h b/ndk/platforms/android-L/include/linux/isdn_divertif.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/isdn_divertif.h
rename to ndk/platforms/android-L/include/linux/isdn_divertif.h
diff --git a/ndk/platforms/android-20/include/linux/isdn_ppp.h b/ndk/platforms/android-L/include/linux/isdn_ppp.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/isdn_ppp.h
rename to ndk/platforms/android-L/include/linux/isdn_ppp.h
diff --git a/ndk/platforms/android-20/include/linux/isdnif.h b/ndk/platforms/android-L/include/linux/isdnif.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/isdnif.h
rename to ndk/platforms/android-L/include/linux/isdnif.h
diff --git a/ndk/platforms/android-20/include/linux/iso_fs.h b/ndk/platforms/android-L/include/linux/iso_fs.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/iso_fs.h
rename to ndk/platforms/android-L/include/linux/iso_fs.h
diff --git a/ndk/platforms/android-20/include/linux/ivtv.h b/ndk/platforms/android-L/include/linux/ivtv.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/ivtv.h
rename to ndk/platforms/android-L/include/linux/ivtv.h
diff --git a/ndk/platforms/android-20/include/linux/ivtvfb.h b/ndk/platforms/android-L/include/linux/ivtvfb.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/ivtvfb.h
rename to ndk/platforms/android-L/include/linux/ivtvfb.h
diff --git a/ndk/platforms/android-20/include/linux/ixjuser.h b/ndk/platforms/android-L/include/linux/ixjuser.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/ixjuser.h
rename to ndk/platforms/android-L/include/linux/ixjuser.h
diff --git a/ndk/platforms/android-20/include/linux/jffs2.h b/ndk/platforms/android-L/include/linux/jffs2.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/jffs2.h
rename to ndk/platforms/android-L/include/linux/jffs2.h
diff --git a/ndk/platforms/android-20/include/linux/joystick.h b/ndk/platforms/android-L/include/linux/joystick.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/joystick.h
rename to ndk/platforms/android-L/include/linux/joystick.h
diff --git a/ndk/platforms/android-20/include/linux/kd.h b/ndk/platforms/android-L/include/linux/kd.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/kd.h
rename to ndk/platforms/android-L/include/linux/kd.h
diff --git a/ndk/platforms/android-20/include/linux/kdev_t.h b/ndk/platforms/android-L/include/linux/kdev_t.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/kdev_t.h
rename to ndk/platforms/android-L/include/linux/kdev_t.h
diff --git a/ndk/platforms/android-20/include/linux/kernel-page-flags.h b/ndk/platforms/android-L/include/linux/kernel-page-flags.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/kernel-page-flags.h
rename to ndk/platforms/android-L/include/linux/kernel-page-flags.h
diff --git a/ndk/platforms/android-20/include/linux/kernel.h b/ndk/platforms/android-L/include/linux/kernel.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/kernel.h
rename to ndk/platforms/android-L/include/linux/kernel.h
diff --git a/ndk/platforms/android-20/include/linux/kernelcapi.h b/ndk/platforms/android-L/include/linux/kernelcapi.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/kernelcapi.h
rename to ndk/platforms/android-L/include/linux/kernelcapi.h
diff --git a/ndk/platforms/android-20/include/linux/kexec.h b/ndk/platforms/android-L/include/linux/kexec.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/kexec.h
rename to ndk/platforms/android-L/include/linux/kexec.h
diff --git a/ndk/platforms/android-20/include/linux/keyboard.h b/ndk/platforms/android-L/include/linux/keyboard.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/keyboard.h
rename to ndk/platforms/android-L/include/linux/keyboard.h
diff --git a/ndk/platforms/android-20/include/linux/keychord.h b/ndk/platforms/android-L/include/linux/keychord.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/keychord.h
rename to ndk/platforms/android-L/include/linux/keychord.h
diff --git a/ndk/platforms/android-20/include/linux/keyctl.h b/ndk/platforms/android-L/include/linux/keyctl.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/keyctl.h
rename to ndk/platforms/android-L/include/linux/keyctl.h
diff --git a/ndk/platforms/android-20/include/linux/kvm.h b/ndk/platforms/android-L/include/linux/kvm.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/kvm.h
rename to ndk/platforms/android-L/include/linux/kvm.h
diff --git a/ndk/platforms/android-20/include/linux/kvm_para.h b/ndk/platforms/android-L/include/linux/kvm_para.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/kvm_para.h
rename to ndk/platforms/android-L/include/linux/kvm_para.h
diff --git a/ndk/platforms/android-20/include/linux/l2tp.h b/ndk/platforms/android-L/include/linux/l2tp.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/l2tp.h
rename to ndk/platforms/android-L/include/linux/l2tp.h
diff --git a/ndk/platforms/android-20/include/linux/limits.h b/ndk/platforms/android-L/include/linux/limits.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/limits.h
rename to ndk/platforms/android-L/include/linux/limits.h
diff --git a/ndk/platforms/android-20/include/linux/llc.h b/ndk/platforms/android-L/include/linux/llc.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/llc.h
rename to ndk/platforms/android-L/include/linux/llc.h
diff --git a/ndk/platforms/android-20/include/linux/loop.h b/ndk/platforms/android-L/include/linux/loop.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/loop.h
rename to ndk/platforms/android-L/include/linux/loop.h
diff --git a/ndk/platforms/android-20/include/linux/lp.h b/ndk/platforms/android-L/include/linux/lp.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/lp.h
rename to ndk/platforms/android-L/include/linux/lp.h
diff --git a/ndk/platforms/android-20/include/linux/magic.h b/ndk/platforms/android-L/include/linux/magic.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/magic.h
rename to ndk/platforms/android-L/include/linux/magic.h
diff --git a/ndk/platforms/android-20/include/linux/major.h b/ndk/platforms/android-L/include/linux/major.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/major.h
rename to ndk/platforms/android-L/include/linux/major.h
diff --git a/ndk/platforms/android-20/include/linux/map_to_7segment.h b/ndk/platforms/android-L/include/linux/map_to_7segment.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/map_to_7segment.h
rename to ndk/platforms/android-L/include/linux/map_to_7segment.h
diff --git a/ndk/platforms/android-20/include/linux/matroxfb.h b/ndk/platforms/android-L/include/linux/matroxfb.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/matroxfb.h
rename to ndk/platforms/android-L/include/linux/matroxfb.h
diff --git a/ndk/platforms/android-20/include/linux/mdio.h b/ndk/platforms/android-L/include/linux/mdio.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/mdio.h
rename to ndk/platforms/android-L/include/linux/mdio.h
diff --git a/ndk/platforms/android-20/include/linux/media.h b/ndk/platforms/android-L/include/linux/media.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/media.h
rename to ndk/platforms/android-L/include/linux/media.h
diff --git a/ndk/platforms/android-20/include/linux/mei.h b/ndk/platforms/android-L/include/linux/mei.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/mei.h
rename to ndk/platforms/android-L/include/linux/mei.h
diff --git a/ndk/platforms/android-20/include/linux/mempolicy.h b/ndk/platforms/android-L/include/linux/mempolicy.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/mempolicy.h
rename to ndk/platforms/android-L/include/linux/mempolicy.h
diff --git a/ndk/platforms/android-20/include/linux/meye.h b/ndk/platforms/android-L/include/linux/meye.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/meye.h
rename to ndk/platforms/android-L/include/linux/meye.h
diff --git a/ndk/platforms/android-20/include/linux/mii.h b/ndk/platforms/android-L/include/linux/mii.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/mii.h
rename to ndk/platforms/android-L/include/linux/mii.h
diff --git a/ndk/platforms/android-20/include/linux/minix_fs.h b/ndk/platforms/android-L/include/linux/minix_fs.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/minix_fs.h
rename to ndk/platforms/android-L/include/linux/minix_fs.h
diff --git a/ndk/platforms/android-20/include/linux/mman.h b/ndk/platforms/android-L/include/linux/mman.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/mman.h
rename to ndk/platforms/android-L/include/linux/mman.h
diff --git a/ndk/platforms/android-20/include/linux/mmc/ioctl.h b/ndk/platforms/android-L/include/linux/mmc/ioctl.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/mmc/ioctl.h
rename to ndk/platforms/android-L/include/linux/mmc/ioctl.h
diff --git a/ndk/platforms/android-20/include/linux/mmtimer.h b/ndk/platforms/android-L/include/linux/mmtimer.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/mmtimer.h
rename to ndk/platforms/android-L/include/linux/mmtimer.h
diff --git a/ndk/platforms/android-20/include/linux/module.h b/ndk/platforms/android-L/include/linux/module.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/module.h
rename to ndk/platforms/android-L/include/linux/module.h
diff --git a/ndk/platforms/android-20/include/linux/mqueue.h b/ndk/platforms/android-L/include/linux/mqueue.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/mqueue.h
rename to ndk/platforms/android-L/include/linux/mqueue.h
diff --git a/ndk/platforms/android-20/include/linux/mroute.h b/ndk/platforms/android-L/include/linux/mroute.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/mroute.h
rename to ndk/platforms/android-L/include/linux/mroute.h
diff --git a/ndk/platforms/android-20/include/linux/mroute6.h b/ndk/platforms/android-L/include/linux/mroute6.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/mroute6.h
rename to ndk/platforms/android-L/include/linux/mroute6.h
diff --git a/ndk/platforms/android-20/include/linux/msdos_fs.h b/ndk/platforms/android-L/include/linux/msdos_fs.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/msdos_fs.h
rename to ndk/platforms/android-L/include/linux/msdos_fs.h
diff --git a/ndk/platforms/android-20/include/linux/msg.h b/ndk/platforms/android-L/include/linux/msg.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/msg.h
rename to ndk/platforms/android-L/include/linux/msg.h
diff --git a/ndk/platforms/android-20/include/linux/mtio.h b/ndk/platforms/android-L/include/linux/mtio.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/mtio.h
rename to ndk/platforms/android-L/include/linux/mtio.h
diff --git a/ndk/platforms/android-20/include/linux/n_r3964.h b/ndk/platforms/android-L/include/linux/n_r3964.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/n_r3964.h
rename to ndk/platforms/android-L/include/linux/n_r3964.h
diff --git a/ndk/platforms/android-20/include/linux/nbd.h b/ndk/platforms/android-L/include/linux/nbd.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/nbd.h
rename to ndk/platforms/android-L/include/linux/nbd.h
diff --git a/ndk/platforms/android-20/include/linux/ncp.h b/ndk/platforms/android-L/include/linux/ncp.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/ncp.h
rename to ndk/platforms/android-L/include/linux/ncp.h
diff --git a/ndk/platforms/android-20/include/linux/ncp_fs.h b/ndk/platforms/android-L/include/linux/ncp_fs.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/ncp_fs.h
rename to ndk/platforms/android-L/include/linux/ncp_fs.h
diff --git a/ndk/platforms/android-20/include/linux/ncp_mount.h b/ndk/platforms/android-L/include/linux/ncp_mount.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/ncp_mount.h
rename to ndk/platforms/android-L/include/linux/ncp_mount.h
diff --git a/ndk/platforms/android-20/include/linux/ncp_no.h b/ndk/platforms/android-L/include/linux/ncp_no.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/ncp_no.h
rename to ndk/platforms/android-L/include/linux/ncp_no.h
diff --git a/ndk/platforms/android-20/include/linux/neighbour.h b/ndk/platforms/android-L/include/linux/neighbour.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/neighbour.h
rename to ndk/platforms/android-L/include/linux/neighbour.h
diff --git a/ndk/platforms/android-20/include/linux/net.h b/ndk/platforms/android-L/include/linux/net.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/net.h
rename to ndk/platforms/android-L/include/linux/net.h
diff --git a/ndk/platforms/android-20/include/linux/net_dropmon.h b/ndk/platforms/android-L/include/linux/net_dropmon.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/net_dropmon.h
rename to ndk/platforms/android-L/include/linux/net_dropmon.h
diff --git a/ndk/platforms/android-20/include/linux/net_tstamp.h b/ndk/platforms/android-L/include/linux/net_tstamp.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/net_tstamp.h
rename to ndk/platforms/android-L/include/linux/net_tstamp.h
diff --git a/ndk/platforms/android-20/include/linux/netconf.h b/ndk/platforms/android-L/include/linux/netconf.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netconf.h
rename to ndk/platforms/android-L/include/linux/netconf.h
diff --git a/ndk/platforms/android-20/include/linux/netdevice.h b/ndk/platforms/android-L/include/linux/netdevice.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netdevice.h
rename to ndk/platforms/android-L/include/linux/netdevice.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter.h b/ndk/platforms/android-L/include/linux/netfilter.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter.h
rename to ndk/platforms/android-L/include/linux/netfilter.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/ipset/ip_set.h b/ndk/platforms/android-L/include/linux/netfilter/ipset/ip_set.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/ipset/ip_set.h
rename to ndk/platforms/android-L/include/linux/netfilter/ipset/ip_set.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/ipset/ip_set_bitmap.h b/ndk/platforms/android-L/include/linux/netfilter/ipset/ip_set_bitmap.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/ipset/ip_set_bitmap.h
rename to ndk/platforms/android-L/include/linux/netfilter/ipset/ip_set_bitmap.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/ipset/ip_set_hash.h b/ndk/platforms/android-L/include/linux/netfilter/ipset/ip_set_hash.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/ipset/ip_set_hash.h
rename to ndk/platforms/android-L/include/linux/netfilter/ipset/ip_set_hash.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/ipset/ip_set_list.h b/ndk/platforms/android-L/include/linux/netfilter/ipset/ip_set_list.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/ipset/ip_set_list.h
rename to ndk/platforms/android-L/include/linux/netfilter/ipset/ip_set_list.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/nf_conntrack_common.h b/ndk/platforms/android-L/include/linux/netfilter/nf_conntrack_common.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/nf_conntrack_common.h
rename to ndk/platforms/android-L/include/linux/netfilter/nf_conntrack_common.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/nf_conntrack_ftp.h b/ndk/platforms/android-L/include/linux/netfilter/nf_conntrack_ftp.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/nf_conntrack_ftp.h
rename to ndk/platforms/android-L/include/linux/netfilter/nf_conntrack_ftp.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/nf_conntrack_sctp.h b/ndk/platforms/android-L/include/linux/netfilter/nf_conntrack_sctp.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/nf_conntrack_sctp.h
rename to ndk/platforms/android-L/include/linux/netfilter/nf_conntrack_sctp.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/nf_conntrack_tcp.h b/ndk/platforms/android-L/include/linux/netfilter/nf_conntrack_tcp.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/nf_conntrack_tcp.h
rename to ndk/platforms/android-L/include/linux/netfilter/nf_conntrack_tcp.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/nf_conntrack_tuple_common.h b/ndk/platforms/android-L/include/linux/netfilter/nf_conntrack_tuple_common.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/nf_conntrack_tuple_common.h
rename to ndk/platforms/android-L/include/linux/netfilter/nf_conntrack_tuple_common.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/nf_nat.h b/ndk/platforms/android-L/include/linux/netfilter/nf_nat.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/nf_nat.h
rename to ndk/platforms/android-L/include/linux/netfilter/nf_nat.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/nfnetlink.h b/ndk/platforms/android-L/include/linux/netfilter/nfnetlink.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/nfnetlink.h
rename to ndk/platforms/android-L/include/linux/netfilter/nfnetlink.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/nfnetlink_acct.h b/ndk/platforms/android-L/include/linux/netfilter/nfnetlink_acct.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/nfnetlink_acct.h
rename to ndk/platforms/android-L/include/linux/netfilter/nfnetlink_acct.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/nfnetlink_compat.h b/ndk/platforms/android-L/include/linux/netfilter/nfnetlink_compat.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/nfnetlink_compat.h
rename to ndk/platforms/android-L/include/linux/netfilter/nfnetlink_compat.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/nfnetlink_conntrack.h b/ndk/platforms/android-L/include/linux/netfilter/nfnetlink_conntrack.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/nfnetlink_conntrack.h
rename to ndk/platforms/android-L/include/linux/netfilter/nfnetlink_conntrack.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/nfnetlink_cthelper.h b/ndk/platforms/android-L/include/linux/netfilter/nfnetlink_cthelper.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/nfnetlink_cthelper.h
rename to ndk/platforms/android-L/include/linux/netfilter/nfnetlink_cthelper.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/nfnetlink_cttimeout.h b/ndk/platforms/android-L/include/linux/netfilter/nfnetlink_cttimeout.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/nfnetlink_cttimeout.h
rename to ndk/platforms/android-L/include/linux/netfilter/nfnetlink_cttimeout.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/nfnetlink_log.h b/ndk/platforms/android-L/include/linux/netfilter/nfnetlink_log.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/nfnetlink_log.h
rename to ndk/platforms/android-L/include/linux/netfilter/nfnetlink_log.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/nfnetlink_queue.h b/ndk/platforms/android-L/include/linux/netfilter/nfnetlink_queue.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/nfnetlink_queue.h
rename to ndk/platforms/android-L/include/linux/netfilter/nfnetlink_queue.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/x_tables.h b/ndk/platforms/android-L/include/linux/netfilter/x_tables.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/x_tables.h
rename to ndk/platforms/android-L/include/linux/netfilter/x_tables.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/xt_AUDIT.h b/ndk/platforms/android-L/include/linux/netfilter/xt_AUDIT.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/xt_AUDIT.h
rename to ndk/platforms/android-L/include/linux/netfilter/xt_AUDIT.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/xt_CHECKSUM.h b/ndk/platforms/android-L/include/linux/netfilter/xt_CHECKSUM.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/xt_CHECKSUM.h
rename to ndk/platforms/android-L/include/linux/netfilter/xt_CHECKSUM.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/xt_CLASSIFY.h b/ndk/platforms/android-L/include/linux/netfilter/xt_CLASSIFY.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/xt_CLASSIFY.h
rename to ndk/platforms/android-L/include/linux/netfilter/xt_CLASSIFY.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/xt_CONNMARK.h b/ndk/platforms/android-L/include/linux/netfilter/xt_CONNMARK.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/xt_CONNMARK.h
rename to ndk/platforms/android-L/include/linux/netfilter/xt_CONNMARK.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/xt_CONNSECMARK.h b/ndk/platforms/android-L/include/linux/netfilter/xt_CONNSECMARK.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/xt_CONNSECMARK.h
rename to ndk/platforms/android-L/include/linux/netfilter/xt_CONNSECMARK.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/xt_CT.h b/ndk/platforms/android-L/include/linux/netfilter/xt_CT.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/xt_CT.h
rename to ndk/platforms/android-L/include/linux/netfilter/xt_CT.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/xt_DSCP.h b/ndk/platforms/android-L/include/linux/netfilter/xt_DSCP.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/xt_DSCP.h
rename to ndk/platforms/android-L/include/linux/netfilter/xt_DSCP.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/xt_IDLETIMER.h b/ndk/platforms/android-L/include/linux/netfilter/xt_IDLETIMER.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/xt_IDLETIMER.h
rename to ndk/platforms/android-L/include/linux/netfilter/xt_IDLETIMER.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/xt_LED.h b/ndk/platforms/android-L/include/linux/netfilter/xt_LED.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/xt_LED.h
rename to ndk/platforms/android-L/include/linux/netfilter/xt_LED.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/xt_LOG.h b/ndk/platforms/android-L/include/linux/netfilter/xt_LOG.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/xt_LOG.h
rename to ndk/platforms/android-L/include/linux/netfilter/xt_LOG.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/xt_MARK.h b/ndk/platforms/android-L/include/linux/netfilter/xt_MARK.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/xt_MARK.h
rename to ndk/platforms/android-L/include/linux/netfilter/xt_MARK.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/xt_NFLOG.h b/ndk/platforms/android-L/include/linux/netfilter/xt_NFLOG.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/xt_NFLOG.h
rename to ndk/platforms/android-L/include/linux/netfilter/xt_NFLOG.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/xt_NFQUEUE.h b/ndk/platforms/android-L/include/linux/netfilter/xt_NFQUEUE.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/xt_NFQUEUE.h
rename to ndk/platforms/android-L/include/linux/netfilter/xt_NFQUEUE.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/xt_RATEEST.h b/ndk/platforms/android-L/include/linux/netfilter/xt_RATEEST.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/xt_RATEEST.h
rename to ndk/platforms/android-L/include/linux/netfilter/xt_RATEEST.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/xt_SECMARK.h b/ndk/platforms/android-L/include/linux/netfilter/xt_SECMARK.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/xt_SECMARK.h
rename to ndk/platforms/android-L/include/linux/netfilter/xt_SECMARK.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/xt_TCPMSS.h b/ndk/platforms/android-L/include/linux/netfilter/xt_TCPMSS.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/xt_TCPMSS.h
rename to ndk/platforms/android-L/include/linux/netfilter/xt_TCPMSS.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/xt_TCPOPTSTRIP.h b/ndk/platforms/android-L/include/linux/netfilter/xt_TCPOPTSTRIP.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/xt_TCPOPTSTRIP.h
rename to ndk/platforms/android-L/include/linux/netfilter/xt_TCPOPTSTRIP.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/xt_TEE.h b/ndk/platforms/android-L/include/linux/netfilter/xt_TEE.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/xt_TEE.h
rename to ndk/platforms/android-L/include/linux/netfilter/xt_TEE.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/xt_TPROXY.h b/ndk/platforms/android-L/include/linux/netfilter/xt_TPROXY.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/xt_TPROXY.h
rename to ndk/platforms/android-L/include/linux/netfilter/xt_TPROXY.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/xt_addrtype.h b/ndk/platforms/android-L/include/linux/netfilter/xt_addrtype.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/xt_addrtype.h
rename to ndk/platforms/android-L/include/linux/netfilter/xt_addrtype.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/xt_bpf.h b/ndk/platforms/android-L/include/linux/netfilter/xt_bpf.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/xt_bpf.h
rename to ndk/platforms/android-L/include/linux/netfilter/xt_bpf.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/xt_cluster.h b/ndk/platforms/android-L/include/linux/netfilter/xt_cluster.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/xt_cluster.h
rename to ndk/platforms/android-L/include/linux/netfilter/xt_cluster.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/xt_comment.h b/ndk/platforms/android-L/include/linux/netfilter/xt_comment.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/xt_comment.h
rename to ndk/platforms/android-L/include/linux/netfilter/xt_comment.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/xt_connbytes.h b/ndk/platforms/android-L/include/linux/netfilter/xt_connbytes.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/xt_connbytes.h
rename to ndk/platforms/android-L/include/linux/netfilter/xt_connbytes.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/xt_connlabel.h b/ndk/platforms/android-L/include/linux/netfilter/xt_connlabel.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/xt_connlabel.h
rename to ndk/platforms/android-L/include/linux/netfilter/xt_connlabel.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/xt_connlimit.h b/ndk/platforms/android-L/include/linux/netfilter/xt_connlimit.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/xt_connlimit.h
rename to ndk/platforms/android-L/include/linux/netfilter/xt_connlimit.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/xt_connmark.h b/ndk/platforms/android-L/include/linux/netfilter/xt_connmark.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/xt_connmark.h
rename to ndk/platforms/android-L/include/linux/netfilter/xt_connmark.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/xt_conntrack.h b/ndk/platforms/android-L/include/linux/netfilter/xt_conntrack.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/xt_conntrack.h
rename to ndk/platforms/android-L/include/linux/netfilter/xt_conntrack.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/xt_cpu.h b/ndk/platforms/android-L/include/linux/netfilter/xt_cpu.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/xt_cpu.h
rename to ndk/platforms/android-L/include/linux/netfilter/xt_cpu.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/xt_dccp.h b/ndk/platforms/android-L/include/linux/netfilter/xt_dccp.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/xt_dccp.h
rename to ndk/platforms/android-L/include/linux/netfilter/xt_dccp.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/xt_devgroup.h b/ndk/platforms/android-L/include/linux/netfilter/xt_devgroup.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/xt_devgroup.h
rename to ndk/platforms/android-L/include/linux/netfilter/xt_devgroup.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/xt_dscp.h b/ndk/platforms/android-L/include/linux/netfilter/xt_dscp.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/xt_dscp.h
rename to ndk/platforms/android-L/include/linux/netfilter/xt_dscp.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/xt_ecn.h b/ndk/platforms/android-L/include/linux/netfilter/xt_ecn.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/xt_ecn.h
rename to ndk/platforms/android-L/include/linux/netfilter/xt_ecn.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/xt_esp.h b/ndk/platforms/android-L/include/linux/netfilter/xt_esp.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/xt_esp.h
rename to ndk/platforms/android-L/include/linux/netfilter/xt_esp.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/xt_hashlimit.h b/ndk/platforms/android-L/include/linux/netfilter/xt_hashlimit.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/xt_hashlimit.h
rename to ndk/platforms/android-L/include/linux/netfilter/xt_hashlimit.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/xt_helper.h b/ndk/platforms/android-L/include/linux/netfilter/xt_helper.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/xt_helper.h
rename to ndk/platforms/android-L/include/linux/netfilter/xt_helper.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/xt_iprange.h b/ndk/platforms/android-L/include/linux/netfilter/xt_iprange.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/xt_iprange.h
rename to ndk/platforms/android-L/include/linux/netfilter/xt_iprange.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/xt_ipvs.h b/ndk/platforms/android-L/include/linux/netfilter/xt_ipvs.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/xt_ipvs.h
rename to ndk/platforms/android-L/include/linux/netfilter/xt_ipvs.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/xt_length.h b/ndk/platforms/android-L/include/linux/netfilter/xt_length.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/xt_length.h
rename to ndk/platforms/android-L/include/linux/netfilter/xt_length.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/xt_limit.h b/ndk/platforms/android-L/include/linux/netfilter/xt_limit.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/xt_limit.h
rename to ndk/platforms/android-L/include/linux/netfilter/xt_limit.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/xt_mac.h b/ndk/platforms/android-L/include/linux/netfilter/xt_mac.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/xt_mac.h
rename to ndk/platforms/android-L/include/linux/netfilter/xt_mac.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/xt_mark.h b/ndk/platforms/android-L/include/linux/netfilter/xt_mark.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/xt_mark.h
rename to ndk/platforms/android-L/include/linux/netfilter/xt_mark.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/xt_multiport.h b/ndk/platforms/android-L/include/linux/netfilter/xt_multiport.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/xt_multiport.h
rename to ndk/platforms/android-L/include/linux/netfilter/xt_multiport.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/xt_nfacct.h b/ndk/platforms/android-L/include/linux/netfilter/xt_nfacct.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/xt_nfacct.h
rename to ndk/platforms/android-L/include/linux/netfilter/xt_nfacct.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/xt_osf.h b/ndk/platforms/android-L/include/linux/netfilter/xt_osf.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/xt_osf.h
rename to ndk/platforms/android-L/include/linux/netfilter/xt_osf.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/xt_owner.h b/ndk/platforms/android-L/include/linux/netfilter/xt_owner.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/xt_owner.h
rename to ndk/platforms/android-L/include/linux/netfilter/xt_owner.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/xt_physdev.h b/ndk/platforms/android-L/include/linux/netfilter/xt_physdev.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/xt_physdev.h
rename to ndk/platforms/android-L/include/linux/netfilter/xt_physdev.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/xt_pkttype.h b/ndk/platforms/android-L/include/linux/netfilter/xt_pkttype.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/xt_pkttype.h
rename to ndk/platforms/android-L/include/linux/netfilter/xt_pkttype.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/xt_policy.h b/ndk/platforms/android-L/include/linux/netfilter/xt_policy.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/xt_policy.h
rename to ndk/platforms/android-L/include/linux/netfilter/xt_policy.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/xt_quota.h b/ndk/platforms/android-L/include/linux/netfilter/xt_quota.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/xt_quota.h
rename to ndk/platforms/android-L/include/linux/netfilter/xt_quota.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/xt_rateest.h b/ndk/platforms/android-L/include/linux/netfilter/xt_rateest.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/xt_rateest.h
rename to ndk/platforms/android-L/include/linux/netfilter/xt_rateest.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/xt_realm.h b/ndk/platforms/android-L/include/linux/netfilter/xt_realm.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/xt_realm.h
rename to ndk/platforms/android-L/include/linux/netfilter/xt_realm.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/xt_recent.h b/ndk/platforms/android-L/include/linux/netfilter/xt_recent.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/xt_recent.h
rename to ndk/platforms/android-L/include/linux/netfilter/xt_recent.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/xt_sctp.h b/ndk/platforms/android-L/include/linux/netfilter/xt_sctp.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/xt_sctp.h
rename to ndk/platforms/android-L/include/linux/netfilter/xt_sctp.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/xt_set.h b/ndk/platforms/android-L/include/linux/netfilter/xt_set.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/xt_set.h
rename to ndk/platforms/android-L/include/linux/netfilter/xt_set.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/xt_socket.h b/ndk/platforms/android-L/include/linux/netfilter/xt_socket.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/xt_socket.h
rename to ndk/platforms/android-L/include/linux/netfilter/xt_socket.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/xt_state.h b/ndk/platforms/android-L/include/linux/netfilter/xt_state.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/xt_state.h
rename to ndk/platforms/android-L/include/linux/netfilter/xt_state.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/xt_statistic.h b/ndk/platforms/android-L/include/linux/netfilter/xt_statistic.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/xt_statistic.h
rename to ndk/platforms/android-L/include/linux/netfilter/xt_statistic.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/xt_string.h b/ndk/platforms/android-L/include/linux/netfilter/xt_string.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/xt_string.h
rename to ndk/platforms/android-L/include/linux/netfilter/xt_string.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/xt_tcpmss.h b/ndk/platforms/android-L/include/linux/netfilter/xt_tcpmss.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/xt_tcpmss.h
rename to ndk/platforms/android-L/include/linux/netfilter/xt_tcpmss.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/xt_tcpudp.h b/ndk/platforms/android-L/include/linux/netfilter/xt_tcpudp.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/xt_tcpudp.h
rename to ndk/platforms/android-L/include/linux/netfilter/xt_tcpudp.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/xt_time.h b/ndk/platforms/android-L/include/linux/netfilter/xt_time.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/xt_time.h
rename to ndk/platforms/android-L/include/linux/netfilter/xt_time.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter/xt_u32.h b/ndk/platforms/android-L/include/linux/netfilter/xt_u32.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter/xt_u32.h
rename to ndk/platforms/android-L/include/linux/netfilter/xt_u32.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter_arp.h b/ndk/platforms/android-L/include/linux/netfilter_arp.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter_arp.h
rename to ndk/platforms/android-L/include/linux/netfilter_arp.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter_arp/arp_tables.h b/ndk/platforms/android-L/include/linux/netfilter_arp/arp_tables.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter_arp/arp_tables.h
rename to ndk/platforms/android-L/include/linux/netfilter_arp/arp_tables.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter_arp/arpt_mangle.h b/ndk/platforms/android-L/include/linux/netfilter_arp/arpt_mangle.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter_arp/arpt_mangle.h
rename to ndk/platforms/android-L/include/linux/netfilter_arp/arpt_mangle.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter_bridge.h b/ndk/platforms/android-L/include/linux/netfilter_bridge.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter_bridge.h
rename to ndk/platforms/android-L/include/linux/netfilter_bridge.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter_bridge/ebt_802_3.h b/ndk/platforms/android-L/include/linux/netfilter_bridge/ebt_802_3.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter_bridge/ebt_802_3.h
rename to ndk/platforms/android-L/include/linux/netfilter_bridge/ebt_802_3.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter_bridge/ebt_among.h b/ndk/platforms/android-L/include/linux/netfilter_bridge/ebt_among.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter_bridge/ebt_among.h
rename to ndk/platforms/android-L/include/linux/netfilter_bridge/ebt_among.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter_bridge/ebt_arp.h b/ndk/platforms/android-L/include/linux/netfilter_bridge/ebt_arp.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter_bridge/ebt_arp.h
rename to ndk/platforms/android-L/include/linux/netfilter_bridge/ebt_arp.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter_bridge/ebt_arpreply.h b/ndk/platforms/android-L/include/linux/netfilter_bridge/ebt_arpreply.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter_bridge/ebt_arpreply.h
rename to ndk/platforms/android-L/include/linux/netfilter_bridge/ebt_arpreply.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter_bridge/ebt_ip.h b/ndk/platforms/android-L/include/linux/netfilter_bridge/ebt_ip.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter_bridge/ebt_ip.h
rename to ndk/platforms/android-L/include/linux/netfilter_bridge/ebt_ip.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter_bridge/ebt_ip6.h b/ndk/platforms/android-L/include/linux/netfilter_bridge/ebt_ip6.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter_bridge/ebt_ip6.h
rename to ndk/platforms/android-L/include/linux/netfilter_bridge/ebt_ip6.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter_bridge/ebt_limit.h b/ndk/platforms/android-L/include/linux/netfilter_bridge/ebt_limit.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter_bridge/ebt_limit.h
rename to ndk/platforms/android-L/include/linux/netfilter_bridge/ebt_limit.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter_bridge/ebt_log.h b/ndk/platforms/android-L/include/linux/netfilter_bridge/ebt_log.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter_bridge/ebt_log.h
rename to ndk/platforms/android-L/include/linux/netfilter_bridge/ebt_log.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter_bridge/ebt_mark_m.h b/ndk/platforms/android-L/include/linux/netfilter_bridge/ebt_mark_m.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter_bridge/ebt_mark_m.h
rename to ndk/platforms/android-L/include/linux/netfilter_bridge/ebt_mark_m.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter_bridge/ebt_mark_t.h b/ndk/platforms/android-L/include/linux/netfilter_bridge/ebt_mark_t.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter_bridge/ebt_mark_t.h
rename to ndk/platforms/android-L/include/linux/netfilter_bridge/ebt_mark_t.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter_bridge/ebt_nat.h b/ndk/platforms/android-L/include/linux/netfilter_bridge/ebt_nat.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter_bridge/ebt_nat.h
rename to ndk/platforms/android-L/include/linux/netfilter_bridge/ebt_nat.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter_bridge/ebt_nflog.h b/ndk/platforms/android-L/include/linux/netfilter_bridge/ebt_nflog.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter_bridge/ebt_nflog.h
rename to ndk/platforms/android-L/include/linux/netfilter_bridge/ebt_nflog.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter_bridge/ebt_pkttype.h b/ndk/platforms/android-L/include/linux/netfilter_bridge/ebt_pkttype.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter_bridge/ebt_pkttype.h
rename to ndk/platforms/android-L/include/linux/netfilter_bridge/ebt_pkttype.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter_bridge/ebt_redirect.h b/ndk/platforms/android-L/include/linux/netfilter_bridge/ebt_redirect.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter_bridge/ebt_redirect.h
rename to ndk/platforms/android-L/include/linux/netfilter_bridge/ebt_redirect.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter_bridge/ebt_stp.h b/ndk/platforms/android-L/include/linux/netfilter_bridge/ebt_stp.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter_bridge/ebt_stp.h
rename to ndk/platforms/android-L/include/linux/netfilter_bridge/ebt_stp.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter_bridge/ebt_ulog.h b/ndk/platforms/android-L/include/linux/netfilter_bridge/ebt_ulog.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter_bridge/ebt_ulog.h
rename to ndk/platforms/android-L/include/linux/netfilter_bridge/ebt_ulog.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter_bridge/ebt_vlan.h b/ndk/platforms/android-L/include/linux/netfilter_bridge/ebt_vlan.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter_bridge/ebt_vlan.h
rename to ndk/platforms/android-L/include/linux/netfilter_bridge/ebt_vlan.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter_bridge/ebtables.h b/ndk/platforms/android-L/include/linux/netfilter_bridge/ebtables.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter_bridge/ebtables.h
rename to ndk/platforms/android-L/include/linux/netfilter_bridge/ebtables.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter_decnet.h b/ndk/platforms/android-L/include/linux/netfilter_decnet.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter_decnet.h
rename to ndk/platforms/android-L/include/linux/netfilter_decnet.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter_ipv4.h b/ndk/platforms/android-L/include/linux/netfilter_ipv4.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter_ipv4.h
rename to ndk/platforms/android-L/include/linux/netfilter_ipv4.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter_ipv4/ip_tables.h b/ndk/platforms/android-L/include/linux/netfilter_ipv4/ip_tables.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter_ipv4/ip_tables.h
rename to ndk/platforms/android-L/include/linux/netfilter_ipv4/ip_tables.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter_ipv4/ipt_CLUSTERIP.h b/ndk/platforms/android-L/include/linux/netfilter_ipv4/ipt_CLUSTERIP.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter_ipv4/ipt_CLUSTERIP.h
rename to ndk/platforms/android-L/include/linux/netfilter_ipv4/ipt_CLUSTERIP.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter_ipv4/ipt_ECN.h b/ndk/platforms/android-L/include/linux/netfilter_ipv4/ipt_ECN.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter_ipv4/ipt_ECN.h
rename to ndk/platforms/android-L/include/linux/netfilter_ipv4/ipt_ECN.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter_ipv4/ipt_LOG.h b/ndk/platforms/android-L/include/linux/netfilter_ipv4/ipt_LOG.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter_ipv4/ipt_LOG.h
rename to ndk/platforms/android-L/include/linux/netfilter_ipv4/ipt_LOG.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter_ipv4/ipt_REJECT.h b/ndk/platforms/android-L/include/linux/netfilter_ipv4/ipt_REJECT.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter_ipv4/ipt_REJECT.h
rename to ndk/platforms/android-L/include/linux/netfilter_ipv4/ipt_REJECT.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter_ipv4/ipt_TTL.h b/ndk/platforms/android-L/include/linux/netfilter_ipv4/ipt_TTL.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter_ipv4/ipt_TTL.h
rename to ndk/platforms/android-L/include/linux/netfilter_ipv4/ipt_TTL.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter_ipv4/ipt_ULOG.h b/ndk/platforms/android-L/include/linux/netfilter_ipv4/ipt_ULOG.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter_ipv4/ipt_ULOG.h
rename to ndk/platforms/android-L/include/linux/netfilter_ipv4/ipt_ULOG.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter_ipv4/ipt_ah.h b/ndk/platforms/android-L/include/linux/netfilter_ipv4/ipt_ah.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter_ipv4/ipt_ah.h
rename to ndk/platforms/android-L/include/linux/netfilter_ipv4/ipt_ah.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter_ipv4/ipt_ecn.h b/ndk/platforms/android-L/include/linux/netfilter_ipv4/ipt_ecn.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter_ipv4/ipt_ecn.h
rename to ndk/platforms/android-L/include/linux/netfilter_ipv4/ipt_ecn.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter_ipv4/ipt_ttl.h b/ndk/platforms/android-L/include/linux/netfilter_ipv4/ipt_ttl.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter_ipv4/ipt_ttl.h
rename to ndk/platforms/android-L/include/linux/netfilter_ipv4/ipt_ttl.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter_ipv6.h b/ndk/platforms/android-L/include/linux/netfilter_ipv6.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter_ipv6.h
rename to ndk/platforms/android-L/include/linux/netfilter_ipv6.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter_ipv6/ip6_tables.h b/ndk/platforms/android-L/include/linux/netfilter_ipv6/ip6_tables.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter_ipv6/ip6_tables.h
rename to ndk/platforms/android-L/include/linux/netfilter_ipv6/ip6_tables.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter_ipv6/ip6t_HL.h b/ndk/platforms/android-L/include/linux/netfilter_ipv6/ip6t_HL.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter_ipv6/ip6t_HL.h
rename to ndk/platforms/android-L/include/linux/netfilter_ipv6/ip6t_HL.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter_ipv6/ip6t_LOG.h b/ndk/platforms/android-L/include/linux/netfilter_ipv6/ip6t_LOG.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter_ipv6/ip6t_LOG.h
rename to ndk/platforms/android-L/include/linux/netfilter_ipv6/ip6t_LOG.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter_ipv6/ip6t_NPT.h b/ndk/platforms/android-L/include/linux/netfilter_ipv6/ip6t_NPT.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter_ipv6/ip6t_NPT.h
rename to ndk/platforms/android-L/include/linux/netfilter_ipv6/ip6t_NPT.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter_ipv6/ip6t_REJECT.h b/ndk/platforms/android-L/include/linux/netfilter_ipv6/ip6t_REJECT.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter_ipv6/ip6t_REJECT.h
rename to ndk/platforms/android-L/include/linux/netfilter_ipv6/ip6t_REJECT.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter_ipv6/ip6t_ah.h b/ndk/platforms/android-L/include/linux/netfilter_ipv6/ip6t_ah.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter_ipv6/ip6t_ah.h
rename to ndk/platforms/android-L/include/linux/netfilter_ipv6/ip6t_ah.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter_ipv6/ip6t_frag.h b/ndk/platforms/android-L/include/linux/netfilter_ipv6/ip6t_frag.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter_ipv6/ip6t_frag.h
rename to ndk/platforms/android-L/include/linux/netfilter_ipv6/ip6t_frag.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter_ipv6/ip6t_hl.h b/ndk/platforms/android-L/include/linux/netfilter_ipv6/ip6t_hl.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter_ipv6/ip6t_hl.h
rename to ndk/platforms/android-L/include/linux/netfilter_ipv6/ip6t_hl.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter_ipv6/ip6t_ipv6header.h b/ndk/platforms/android-L/include/linux/netfilter_ipv6/ip6t_ipv6header.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter_ipv6/ip6t_ipv6header.h
rename to ndk/platforms/android-L/include/linux/netfilter_ipv6/ip6t_ipv6header.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter_ipv6/ip6t_mh.h b/ndk/platforms/android-L/include/linux/netfilter_ipv6/ip6t_mh.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter_ipv6/ip6t_mh.h
rename to ndk/platforms/android-L/include/linux/netfilter_ipv6/ip6t_mh.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter_ipv6/ip6t_opts.h b/ndk/platforms/android-L/include/linux/netfilter_ipv6/ip6t_opts.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter_ipv6/ip6t_opts.h
rename to ndk/platforms/android-L/include/linux/netfilter_ipv6/ip6t_opts.h
diff --git a/ndk/platforms/android-20/include/linux/netfilter_ipv6/ip6t_rt.h b/ndk/platforms/android-L/include/linux/netfilter_ipv6/ip6t_rt.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netfilter_ipv6/ip6t_rt.h
rename to ndk/platforms/android-L/include/linux/netfilter_ipv6/ip6t_rt.h
diff --git a/ndk/platforms/android-20/include/linux/netlink.h b/ndk/platforms/android-L/include/linux/netlink.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netlink.h
rename to ndk/platforms/android-L/include/linux/netlink.h
diff --git a/ndk/platforms/android-20/include/linux/netlink_diag.h b/ndk/platforms/android-L/include/linux/netlink_diag.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netlink_diag.h
rename to ndk/platforms/android-L/include/linux/netlink_diag.h
diff --git a/ndk/platforms/android-20/include/linux/netrom.h b/ndk/platforms/android-L/include/linux/netrom.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/netrom.h
rename to ndk/platforms/android-L/include/linux/netrom.h
diff --git a/ndk/platforms/android-20/include/linux/nfc.h b/ndk/platforms/android-L/include/linux/nfc.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/nfc.h
rename to ndk/platforms/android-L/include/linux/nfc.h
diff --git a/ndk/platforms/android-20/include/linux/nfs.h b/ndk/platforms/android-L/include/linux/nfs.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/nfs.h
rename to ndk/platforms/android-L/include/linux/nfs.h
diff --git a/ndk/platforms/android-20/include/linux/nfs2.h b/ndk/platforms/android-L/include/linux/nfs2.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/nfs2.h
rename to ndk/platforms/android-L/include/linux/nfs2.h
diff --git a/ndk/platforms/android-20/include/linux/nfs3.h b/ndk/platforms/android-L/include/linux/nfs3.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/nfs3.h
rename to ndk/platforms/android-L/include/linux/nfs3.h
diff --git a/ndk/platforms/android-20/include/linux/nfs4.h b/ndk/platforms/android-L/include/linux/nfs4.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/nfs4.h
rename to ndk/platforms/android-L/include/linux/nfs4.h
diff --git a/ndk/platforms/android-20/include/linux/nfs4_mount.h b/ndk/platforms/android-L/include/linux/nfs4_mount.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/nfs4_mount.h
rename to ndk/platforms/android-L/include/linux/nfs4_mount.h
diff --git a/ndk/platforms/android-20/include/linux/nfs_fs.h b/ndk/platforms/android-L/include/linux/nfs_fs.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/nfs_fs.h
rename to ndk/platforms/android-L/include/linux/nfs_fs.h
diff --git a/ndk/platforms/android-20/include/linux/nfs_idmap.h b/ndk/platforms/android-L/include/linux/nfs_idmap.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/nfs_idmap.h
rename to ndk/platforms/android-L/include/linux/nfs_idmap.h
diff --git a/ndk/platforms/android-20/include/linux/nfs_mount.h b/ndk/platforms/android-L/include/linux/nfs_mount.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/nfs_mount.h
rename to ndk/platforms/android-L/include/linux/nfs_mount.h
diff --git a/ndk/platforms/android-20/include/linux/nfsacl.h b/ndk/platforms/android-L/include/linux/nfsacl.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/nfsacl.h
rename to ndk/platforms/android-L/include/linux/nfsacl.h
diff --git a/ndk/platforms/android-20/include/linux/nfsd/cld.h b/ndk/platforms/android-L/include/linux/nfsd/cld.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/nfsd/cld.h
rename to ndk/platforms/android-L/include/linux/nfsd/cld.h
diff --git a/ndk/platforms/android-20/include/linux/nfsd/debug.h b/ndk/platforms/android-L/include/linux/nfsd/debug.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/nfsd/debug.h
rename to ndk/platforms/android-L/include/linux/nfsd/debug.h
diff --git a/ndk/platforms/android-20/include/linux/nfsd/export.h b/ndk/platforms/android-L/include/linux/nfsd/export.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/nfsd/export.h
rename to ndk/platforms/android-L/include/linux/nfsd/export.h
diff --git a/ndk/platforms/android-20/include/linux/nfsd/nfsfh.h b/ndk/platforms/android-L/include/linux/nfsd/nfsfh.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/nfsd/nfsfh.h
rename to ndk/platforms/android-L/include/linux/nfsd/nfsfh.h
diff --git a/ndk/platforms/android-20/include/linux/nfsd/stats.h b/ndk/platforms/android-L/include/linux/nfsd/stats.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/nfsd/stats.h
rename to ndk/platforms/android-L/include/linux/nfsd/stats.h
diff --git a/ndk/platforms/android-20/include/linux/nl80211.h b/ndk/platforms/android-L/include/linux/nl80211.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/nl80211.h
rename to ndk/platforms/android-L/include/linux/nl80211.h
diff --git a/ndk/platforms/android-20/include/linux/nubus.h b/ndk/platforms/android-L/include/linux/nubus.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/nubus.h
rename to ndk/platforms/android-L/include/linux/nubus.h
diff --git a/ndk/platforms/android-20/include/linux/nvram.h b/ndk/platforms/android-L/include/linux/nvram.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/nvram.h
rename to ndk/platforms/android-L/include/linux/nvram.h
diff --git a/ndk/platforms/android-20/include/linux/omap3isp.h b/ndk/platforms/android-L/include/linux/omap3isp.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/omap3isp.h
rename to ndk/platforms/android-L/include/linux/omap3isp.h
diff --git a/ndk/platforms/android-20/include/linux/omapfb.h b/ndk/platforms/android-L/include/linux/omapfb.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/omapfb.h
rename to ndk/platforms/android-L/include/linux/omapfb.h
diff --git a/ndk/platforms/android-20/include/linux/oom.h b/ndk/platforms/android-L/include/linux/oom.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/oom.h
rename to ndk/platforms/android-L/include/linux/oom.h
diff --git a/ndk/platforms/android-20/include/linux/openvswitch.h b/ndk/platforms/android-L/include/linux/openvswitch.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/openvswitch.h
rename to ndk/platforms/android-L/include/linux/openvswitch.h
diff --git a/ndk/platforms/android-20/include/linux/packet_diag.h b/ndk/platforms/android-L/include/linux/packet_diag.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/packet_diag.h
rename to ndk/platforms/android-L/include/linux/packet_diag.h
diff --git a/ndk/platforms/android-20/include/linux/param.h b/ndk/platforms/android-L/include/linux/param.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/param.h
rename to ndk/platforms/android-L/include/linux/param.h
diff --git a/ndk/platforms/android-20/include/linux/parport.h b/ndk/platforms/android-L/include/linux/parport.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/parport.h
rename to ndk/platforms/android-L/include/linux/parport.h
diff --git a/ndk/platforms/android-20/include/linux/patchkey.h b/ndk/platforms/android-L/include/linux/patchkey.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/patchkey.h
rename to ndk/platforms/android-L/include/linux/patchkey.h
diff --git a/ndk/platforms/android-20/include/linux/pci.h b/ndk/platforms/android-L/include/linux/pci.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/pci.h
rename to ndk/platforms/android-L/include/linux/pci.h
diff --git a/ndk/platforms/android-20/include/linux/pci_regs.h b/ndk/platforms/android-L/include/linux/pci_regs.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/pci_regs.h
rename to ndk/platforms/android-L/include/linux/pci_regs.h
diff --git a/ndk/platforms/android-20/include/linux/perf_event.h b/ndk/platforms/android-L/include/linux/perf_event.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/perf_event.h
rename to ndk/platforms/android-L/include/linux/perf_event.h
diff --git a/ndk/platforms/android-20/include/linux/personality.h b/ndk/platforms/android-L/include/linux/personality.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/personality.h
rename to ndk/platforms/android-L/include/linux/personality.h
diff --git a/ndk/platforms/android-20/include/linux/pfkeyv2.h b/ndk/platforms/android-L/include/linux/pfkeyv2.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/pfkeyv2.h
rename to ndk/platforms/android-L/include/linux/pfkeyv2.h
diff --git a/ndk/platforms/android-20/include/linux/pg.h b/ndk/platforms/android-L/include/linux/pg.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/pg.h
rename to ndk/platforms/android-L/include/linux/pg.h
diff --git a/ndk/platforms/android-20/include/linux/phantom.h b/ndk/platforms/android-L/include/linux/phantom.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/phantom.h
rename to ndk/platforms/android-L/include/linux/phantom.h
diff --git a/ndk/platforms/android-20/include/linux/phonet.h b/ndk/platforms/android-L/include/linux/phonet.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/phonet.h
rename to ndk/platforms/android-L/include/linux/phonet.h
diff --git a/ndk/platforms/android-20/include/linux/pkt_cls.h b/ndk/platforms/android-L/include/linux/pkt_cls.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/pkt_cls.h
rename to ndk/platforms/android-L/include/linux/pkt_cls.h
diff --git a/ndk/platforms/android-20/include/linux/pkt_sched.h b/ndk/platforms/android-L/include/linux/pkt_sched.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/pkt_sched.h
rename to ndk/platforms/android-L/include/linux/pkt_sched.h
diff --git a/ndk/platforms/android-20/include/linux/pktcdvd.h b/ndk/platforms/android-L/include/linux/pktcdvd.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/pktcdvd.h
rename to ndk/platforms/android-L/include/linux/pktcdvd.h
diff --git a/ndk/platforms/android-20/include/linux/pmu.h b/ndk/platforms/android-L/include/linux/pmu.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/pmu.h
rename to ndk/platforms/android-L/include/linux/pmu.h
diff --git a/ndk/platforms/android-20/include/linux/poll.h b/ndk/platforms/android-L/include/linux/poll.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/poll.h
rename to ndk/platforms/android-L/include/linux/poll.h
diff --git a/ndk/platforms/android-20/include/linux/posix_types.h b/ndk/platforms/android-L/include/linux/posix_types.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/posix_types.h
rename to ndk/platforms/android-L/include/linux/posix_types.h
diff --git a/ndk/platforms/android-20/include/linux/ppdev.h b/ndk/platforms/android-L/include/linux/ppdev.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/ppdev.h
rename to ndk/platforms/android-L/include/linux/ppdev.h
diff --git a/ndk/platforms/android-20/include/linux/ppp-comp.h b/ndk/platforms/android-L/include/linux/ppp-comp.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/ppp-comp.h
rename to ndk/platforms/android-L/include/linux/ppp-comp.h
diff --git a/ndk/platforms/android-20/include/linux/ppp-ioctl.h b/ndk/platforms/android-L/include/linux/ppp-ioctl.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/ppp-ioctl.h
rename to ndk/platforms/android-L/include/linux/ppp-ioctl.h
diff --git a/ndk/platforms/android-20/include/linux/ppp_defs.h b/ndk/platforms/android-L/include/linux/ppp_defs.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/ppp_defs.h
rename to ndk/platforms/android-L/include/linux/ppp_defs.h
diff --git a/ndk/platforms/android-20/include/linux/pps.h b/ndk/platforms/android-L/include/linux/pps.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/pps.h
rename to ndk/platforms/android-L/include/linux/pps.h
diff --git a/ndk/platforms/android-20/include/linux/prctl.h b/ndk/platforms/android-L/include/linux/prctl.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/prctl.h
rename to ndk/platforms/android-L/include/linux/prctl.h
diff --git a/ndk/platforms/android-20/include/linux/ptp_clock.h b/ndk/platforms/android-L/include/linux/ptp_clock.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/ptp_clock.h
rename to ndk/platforms/android-L/include/linux/ptp_clock.h
diff --git a/ndk/platforms/android-20/include/linux/ptrace.h b/ndk/platforms/android-L/include/linux/ptrace.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/ptrace.h
rename to ndk/platforms/android-L/include/linux/ptrace.h
diff --git a/ndk/platforms/android-20/include/linux/qnx4_fs.h b/ndk/platforms/android-L/include/linux/qnx4_fs.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/qnx4_fs.h
rename to ndk/platforms/android-L/include/linux/qnx4_fs.h
diff --git a/ndk/platforms/android-20/include/linux/qnxtypes.h b/ndk/platforms/android-L/include/linux/qnxtypes.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/qnxtypes.h
rename to ndk/platforms/android-L/include/linux/qnxtypes.h
diff --git a/ndk/platforms/android-20/include/linux/quota.h b/ndk/platforms/android-L/include/linux/quota.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/quota.h
rename to ndk/platforms/android-L/include/linux/quota.h
diff --git a/ndk/platforms/android-20/include/linux/radeonfb.h b/ndk/platforms/android-L/include/linux/radeonfb.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/radeonfb.h
rename to ndk/platforms/android-L/include/linux/radeonfb.h
diff --git a/ndk/platforms/android-20/include/linux/raid/md_p.h b/ndk/platforms/android-L/include/linux/raid/md_p.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/raid/md_p.h
rename to ndk/platforms/android-L/include/linux/raid/md_p.h
diff --git a/ndk/platforms/android-20/include/linux/raid/md_u.h b/ndk/platforms/android-L/include/linux/raid/md_u.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/raid/md_u.h
rename to ndk/platforms/android-L/include/linux/raid/md_u.h
diff --git a/ndk/platforms/android-20/include/linux/random.h b/ndk/platforms/android-L/include/linux/random.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/random.h
rename to ndk/platforms/android-L/include/linux/random.h
diff --git a/ndk/platforms/android-20/include/linux/raw.h b/ndk/platforms/android-L/include/linux/raw.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/raw.h
rename to ndk/platforms/android-L/include/linux/raw.h
diff --git a/ndk/platforms/android-20/include/linux/rds.h b/ndk/platforms/android-L/include/linux/rds.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/rds.h
rename to ndk/platforms/android-L/include/linux/rds.h
diff --git a/ndk/platforms/android-20/include/linux/reboot.h b/ndk/platforms/android-L/include/linux/reboot.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/reboot.h
rename to ndk/platforms/android-L/include/linux/reboot.h
diff --git a/ndk/platforms/android-20/include/linux/reiserfs_fs.h b/ndk/platforms/android-L/include/linux/reiserfs_fs.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/reiserfs_fs.h
rename to ndk/platforms/android-L/include/linux/reiserfs_fs.h
diff --git a/ndk/platforms/android-20/include/linux/reiserfs_xattr.h b/ndk/platforms/android-L/include/linux/reiserfs_xattr.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/reiserfs_xattr.h
rename to ndk/platforms/android-L/include/linux/reiserfs_xattr.h
diff --git a/ndk/platforms/android-20/include/linux/resource.h b/ndk/platforms/android-L/include/linux/resource.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/resource.h
rename to ndk/platforms/android-L/include/linux/resource.h
diff --git a/ndk/platforms/android-20/include/linux/rfkill.h b/ndk/platforms/android-L/include/linux/rfkill.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/rfkill.h
rename to ndk/platforms/android-L/include/linux/rfkill.h
diff --git a/ndk/platforms/android-20/include/linux/romfs_fs.h b/ndk/platforms/android-L/include/linux/romfs_fs.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/romfs_fs.h
rename to ndk/platforms/android-L/include/linux/romfs_fs.h
diff --git a/ndk/platforms/android-20/include/linux/rose.h b/ndk/platforms/android-L/include/linux/rose.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/rose.h
rename to ndk/platforms/android-L/include/linux/rose.h
diff --git a/ndk/platforms/android-20/include/linux/route.h b/ndk/platforms/android-L/include/linux/route.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/route.h
rename to ndk/platforms/android-L/include/linux/route.h
diff --git a/ndk/platforms/android-20/include/linux/rtc.h b/ndk/platforms/android-L/include/linux/rtc.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/rtc.h
rename to ndk/platforms/android-L/include/linux/rtc.h
diff --git a/ndk/platforms/android-20/include/linux/rtnetlink.h b/ndk/platforms/android-L/include/linux/rtnetlink.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/rtnetlink.h
rename to ndk/platforms/android-L/include/linux/rtnetlink.h
diff --git a/ndk/platforms/android-20/include/linux/scc.h b/ndk/platforms/android-L/include/linux/scc.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/scc.h
rename to ndk/platforms/android-L/include/linux/scc.h
diff --git a/ndk/platforms/android-20/include/linux/sched.h b/ndk/platforms/android-L/include/linux/sched.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/sched.h
rename to ndk/platforms/android-L/include/linux/sched.h
diff --git a/ndk/platforms/android-20/include/linux/screen_info.h b/ndk/platforms/android-L/include/linux/screen_info.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/screen_info.h
rename to ndk/platforms/android-L/include/linux/screen_info.h
diff --git a/ndk/platforms/android-20/include/linux/sctp.h b/ndk/platforms/android-L/include/linux/sctp.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/sctp.h
rename to ndk/platforms/android-L/include/linux/sctp.h
diff --git a/ndk/platforms/android-20/include/linux/sdla.h b/ndk/platforms/android-L/include/linux/sdla.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/sdla.h
rename to ndk/platforms/android-L/include/linux/sdla.h
diff --git a/ndk/platforms/android-20/include/linux/seccomp.h b/ndk/platforms/android-L/include/linux/seccomp.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/seccomp.h
rename to ndk/platforms/android-L/include/linux/seccomp.h
diff --git a/ndk/platforms/android-20/include/linux/securebits.h b/ndk/platforms/android-L/include/linux/securebits.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/securebits.h
rename to ndk/platforms/android-L/include/linux/securebits.h
diff --git a/ndk/platforms/android-20/include/linux/selinux_netlink.h b/ndk/platforms/android-L/include/linux/selinux_netlink.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/selinux_netlink.h
rename to ndk/platforms/android-L/include/linux/selinux_netlink.h
diff --git a/ndk/platforms/android-20/include/linux/sem.h b/ndk/platforms/android-L/include/linux/sem.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/sem.h
rename to ndk/platforms/android-L/include/linux/sem.h
diff --git a/ndk/platforms/android-20/include/linux/serial.h b/ndk/platforms/android-L/include/linux/serial.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/serial.h
rename to ndk/platforms/android-L/include/linux/serial.h
diff --git a/ndk/platforms/android-20/include/linux/serial_core.h b/ndk/platforms/android-L/include/linux/serial_core.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/serial_core.h
rename to ndk/platforms/android-L/include/linux/serial_core.h
diff --git a/ndk/platforms/android-20/include/linux/serial_reg.h b/ndk/platforms/android-L/include/linux/serial_reg.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/serial_reg.h
rename to ndk/platforms/android-L/include/linux/serial_reg.h
diff --git a/ndk/platforms/android-20/include/linux/serio.h b/ndk/platforms/android-L/include/linux/serio.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/serio.h
rename to ndk/platforms/android-L/include/linux/serio.h
diff --git a/ndk/platforms/android-20/include/linux/shm.h b/ndk/platforms/android-L/include/linux/shm.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/shm.h
rename to ndk/platforms/android-L/include/linux/shm.h
diff --git a/ndk/platforms/android-20/include/linux/signal.h b/ndk/platforms/android-L/include/linux/signal.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/signal.h
rename to ndk/platforms/android-L/include/linux/signal.h
diff --git a/ndk/platforms/android-20/include/linux/signalfd.h b/ndk/platforms/android-L/include/linux/signalfd.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/signalfd.h
rename to ndk/platforms/android-L/include/linux/signalfd.h
diff --git a/ndk/platforms/android-20/include/linux/snmp.h b/ndk/platforms/android-L/include/linux/snmp.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/snmp.h
rename to ndk/platforms/android-L/include/linux/snmp.h
diff --git a/ndk/platforms/android-20/include/linux/sock_diag.h b/ndk/platforms/android-L/include/linux/sock_diag.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/sock_diag.h
rename to ndk/platforms/android-L/include/linux/sock_diag.h
diff --git a/ndk/platforms/android-20/include/linux/socket.h b/ndk/platforms/android-L/include/linux/socket.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/socket.h
rename to ndk/platforms/android-L/include/linux/socket.h
diff --git a/ndk/platforms/android-20/include/linux/sockios.h b/ndk/platforms/android-L/include/linux/sockios.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/sockios.h
rename to ndk/platforms/android-L/include/linux/sockios.h
diff --git a/ndk/platforms/android-20/include/linux/som.h b/ndk/platforms/android-L/include/linux/som.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/som.h
rename to ndk/platforms/android-L/include/linux/som.h
diff --git a/ndk/platforms/android-20/include/linux/sonet.h b/ndk/platforms/android-L/include/linux/sonet.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/sonet.h
rename to ndk/platforms/android-L/include/linux/sonet.h
diff --git a/ndk/platforms/android-20/include/linux/sonypi.h b/ndk/platforms/android-L/include/linux/sonypi.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/sonypi.h
rename to ndk/platforms/android-L/include/linux/sonypi.h
diff --git a/ndk/platforms/android-20/include/linux/sound.h b/ndk/platforms/android-L/include/linux/sound.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/sound.h
rename to ndk/platforms/android-L/include/linux/sound.h
diff --git a/ndk/platforms/android-20/include/linux/soundcard.h b/ndk/platforms/android-L/include/linux/soundcard.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/soundcard.h
rename to ndk/platforms/android-L/include/linux/soundcard.h
diff --git a/ndk/platforms/android-20/include/linux/spi/spidev.h b/ndk/platforms/android-L/include/linux/spi/spidev.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/spi/spidev.h
rename to ndk/platforms/android-L/include/linux/spi/spidev.h
diff --git a/ndk/platforms/android-20/include/linux/stat.h b/ndk/platforms/android-L/include/linux/stat.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/stat.h
rename to ndk/platforms/android-L/include/linux/stat.h
diff --git a/ndk/platforms/android-20/include/linux/stddef.h b/ndk/platforms/android-L/include/linux/stddef.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/stddef.h
rename to ndk/platforms/android-L/include/linux/stddef.h
diff --git a/ndk/platforms/android-20/include/linux/string.h b/ndk/platforms/android-L/include/linux/string.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/string.h
rename to ndk/platforms/android-L/include/linux/string.h
diff --git a/ndk/platforms/android-20/include/linux/sunrpc/debug.h b/ndk/platforms/android-L/include/linux/sunrpc/debug.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/sunrpc/debug.h
rename to ndk/platforms/android-L/include/linux/sunrpc/debug.h
diff --git a/ndk/platforms/android-20/include/linux/suspend_ioctls.h b/ndk/platforms/android-L/include/linux/suspend_ioctls.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/suspend_ioctls.h
rename to ndk/platforms/android-L/include/linux/suspend_ioctls.h
diff --git a/ndk/platforms/android-20/include/linux/sw_sync.h b/ndk/platforms/android-L/include/linux/sw_sync.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/sw_sync.h
rename to ndk/platforms/android-L/include/linux/sw_sync.h
diff --git a/ndk/platforms/android-20/include/linux/swab.h b/ndk/platforms/android-L/include/linux/swab.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/swab.h
rename to ndk/platforms/android-L/include/linux/swab.h
diff --git a/ndk/platforms/android-20/include/linux/sync.h b/ndk/platforms/android-L/include/linux/sync.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/sync.h
rename to ndk/platforms/android-L/include/linux/sync.h
diff --git a/ndk/platforms/android-20/include/linux/synclink.h b/ndk/platforms/android-L/include/linux/synclink.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/synclink.h
rename to ndk/platforms/android-L/include/linux/synclink.h
diff --git a/ndk/platforms/android-20/include/linux/sysctl.h b/ndk/platforms/android-L/include/linux/sysctl.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/sysctl.h
rename to ndk/platforms/android-L/include/linux/sysctl.h
diff --git a/ndk/platforms/android-20/include/linux/sysinfo.h b/ndk/platforms/android-L/include/linux/sysinfo.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/sysinfo.h
rename to ndk/platforms/android-L/include/linux/sysinfo.h
diff --git a/ndk/platforms/android-20/include/linux/taskstats.h b/ndk/platforms/android-L/include/linux/taskstats.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/taskstats.h
rename to ndk/platforms/android-L/include/linux/taskstats.h
diff --git a/ndk/platforms/android-20/include/linux/tc_act/tc_csum.h b/ndk/platforms/android-L/include/linux/tc_act/tc_csum.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/tc_act/tc_csum.h
rename to ndk/platforms/android-L/include/linux/tc_act/tc_csum.h
diff --git a/ndk/platforms/android-20/include/linux/tc_act/tc_gact.h b/ndk/platforms/android-L/include/linux/tc_act/tc_gact.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/tc_act/tc_gact.h
rename to ndk/platforms/android-L/include/linux/tc_act/tc_gact.h
diff --git a/ndk/platforms/android-20/include/linux/tc_act/tc_ipt.h b/ndk/platforms/android-L/include/linux/tc_act/tc_ipt.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/tc_act/tc_ipt.h
rename to ndk/platforms/android-L/include/linux/tc_act/tc_ipt.h
diff --git a/ndk/platforms/android-20/include/linux/tc_act/tc_mirred.h b/ndk/platforms/android-L/include/linux/tc_act/tc_mirred.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/tc_act/tc_mirred.h
rename to ndk/platforms/android-L/include/linux/tc_act/tc_mirred.h
diff --git a/ndk/platforms/android-20/include/linux/tc_act/tc_nat.h b/ndk/platforms/android-L/include/linux/tc_act/tc_nat.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/tc_act/tc_nat.h
rename to ndk/platforms/android-L/include/linux/tc_act/tc_nat.h
diff --git a/ndk/platforms/android-20/include/linux/tc_act/tc_pedit.h b/ndk/platforms/android-L/include/linux/tc_act/tc_pedit.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/tc_act/tc_pedit.h
rename to ndk/platforms/android-L/include/linux/tc_act/tc_pedit.h
diff --git a/ndk/platforms/android-20/include/linux/tc_act/tc_skbedit.h b/ndk/platforms/android-L/include/linux/tc_act/tc_skbedit.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/tc_act/tc_skbedit.h
rename to ndk/platforms/android-L/include/linux/tc_act/tc_skbedit.h
diff --git a/ndk/platforms/android-20/include/linux/tc_ematch/tc_em_cmp.h b/ndk/platforms/android-L/include/linux/tc_ematch/tc_em_cmp.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/tc_ematch/tc_em_cmp.h
rename to ndk/platforms/android-L/include/linux/tc_ematch/tc_em_cmp.h
diff --git a/ndk/platforms/android-20/include/linux/tc_ematch/tc_em_meta.h b/ndk/platforms/android-L/include/linux/tc_ematch/tc_em_meta.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/tc_ematch/tc_em_meta.h
rename to ndk/platforms/android-L/include/linux/tc_ematch/tc_em_meta.h
diff --git a/ndk/platforms/android-20/include/linux/tc_ematch/tc_em_nbyte.h b/ndk/platforms/android-L/include/linux/tc_ematch/tc_em_nbyte.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/tc_ematch/tc_em_nbyte.h
rename to ndk/platforms/android-L/include/linux/tc_ematch/tc_em_nbyte.h
diff --git a/ndk/platforms/android-20/include/linux/tc_ematch/tc_em_text.h b/ndk/platforms/android-L/include/linux/tc_ematch/tc_em_text.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/tc_ematch/tc_em_text.h
rename to ndk/platforms/android-L/include/linux/tc_ematch/tc_em_text.h
diff --git a/ndk/platforms/android-20/include/linux/tcp.h b/ndk/platforms/android-L/include/linux/tcp.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/tcp.h
rename to ndk/platforms/android-L/include/linux/tcp.h
diff --git a/ndk/platforms/android-20/include/linux/tcp_metrics.h b/ndk/platforms/android-L/include/linux/tcp_metrics.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/tcp_metrics.h
rename to ndk/platforms/android-L/include/linux/tcp_metrics.h
diff --git a/ndk/platforms/android-20/include/linux/telephony.h b/ndk/platforms/android-L/include/linux/telephony.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/telephony.h
rename to ndk/platforms/android-L/include/linux/telephony.h
diff --git a/ndk/platforms/android-20/include/linux/termios.h b/ndk/platforms/android-L/include/linux/termios.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/termios.h
rename to ndk/platforms/android-L/include/linux/termios.h
diff --git a/ndk/platforms/android-20/include/linux/time.h b/ndk/platforms/android-L/include/linux/time.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/time.h
rename to ndk/platforms/android-L/include/linux/time.h
diff --git a/ndk/platforms/android-20/include/linux/times.h b/ndk/platforms/android-L/include/linux/times.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/times.h
rename to ndk/platforms/android-L/include/linux/times.h
diff --git a/ndk/platforms/android-20/include/linux/timex.h b/ndk/platforms/android-L/include/linux/timex.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/timex.h
rename to ndk/platforms/android-L/include/linux/timex.h
diff --git a/ndk/platforms/android-20/include/linux/tiocl.h b/ndk/platforms/android-L/include/linux/tiocl.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/tiocl.h
rename to ndk/platforms/android-L/include/linux/tiocl.h
diff --git a/ndk/platforms/android-20/include/linux/tipc.h b/ndk/platforms/android-L/include/linux/tipc.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/tipc.h
rename to ndk/platforms/android-L/include/linux/tipc.h
diff --git a/ndk/platforms/android-20/include/linux/tipc_config.h b/ndk/platforms/android-L/include/linux/tipc_config.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/tipc_config.h
rename to ndk/platforms/android-L/include/linux/tipc_config.h
diff --git a/ndk/platforms/android-20/include/linux/toshiba.h b/ndk/platforms/android-L/include/linux/toshiba.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/toshiba.h
rename to ndk/platforms/android-L/include/linux/toshiba.h
diff --git a/ndk/platforms/android-20/include/linux/tty.h b/ndk/platforms/android-L/include/linux/tty.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/tty.h
rename to ndk/platforms/android-L/include/linux/tty.h
diff --git a/ndk/platforms/android-20/include/linux/tty_flags.h b/ndk/platforms/android-L/include/linux/tty_flags.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/tty_flags.h
rename to ndk/platforms/android-L/include/linux/tty_flags.h
diff --git a/ndk/platforms/android-20/include/linux/types.h b/ndk/platforms/android-L/include/linux/types.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/types.h
rename to ndk/platforms/android-L/include/linux/types.h
diff --git a/ndk/platforms/android-20/include/linux/udf_fs_i.h b/ndk/platforms/android-L/include/linux/udf_fs_i.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/udf_fs_i.h
rename to ndk/platforms/android-L/include/linux/udf_fs_i.h
diff --git a/ndk/platforms/android-20/include/linux/udp.h b/ndk/platforms/android-L/include/linux/udp.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/udp.h
rename to ndk/platforms/android-L/include/linux/udp.h
diff --git a/ndk/platforms/android-20/include/linux/uhid.h b/ndk/platforms/android-L/include/linux/uhid.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/uhid.h
rename to ndk/platforms/android-L/include/linux/uhid.h
diff --git a/ndk/platforms/android-20/include/linux/uinput.h b/ndk/platforms/android-L/include/linux/uinput.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/uinput.h
rename to ndk/platforms/android-L/include/linux/uinput.h
diff --git a/ndk/platforms/android-20/include/linux/uio.h b/ndk/platforms/android-L/include/linux/uio.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/uio.h
rename to ndk/platforms/android-L/include/linux/uio.h
diff --git a/ndk/platforms/android-20/include/linux/ultrasound.h b/ndk/platforms/android-L/include/linux/ultrasound.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/ultrasound.h
rename to ndk/platforms/android-L/include/linux/ultrasound.h
diff --git a/ndk/platforms/android-20/include/linux/un.h b/ndk/platforms/android-L/include/linux/un.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/un.h
rename to ndk/platforms/android-L/include/linux/un.h
diff --git a/ndk/platforms/android-20/include/linux/unistd.h b/ndk/platforms/android-L/include/linux/unistd.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/unistd.h
rename to ndk/platforms/android-L/include/linux/unistd.h
diff --git a/ndk/platforms/android-20/include/linux/unix_diag.h b/ndk/platforms/android-L/include/linux/unix_diag.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/unix_diag.h
rename to ndk/platforms/android-L/include/linux/unix_diag.h
diff --git a/ndk/platforms/android-20/include/linux/usb/audio.h b/ndk/platforms/android-L/include/linux/usb/audio.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/usb/audio.h
rename to ndk/platforms/android-L/include/linux/usb/audio.h
diff --git a/ndk/platforms/android-20/include/linux/usb/cdc-wdm.h b/ndk/platforms/android-L/include/linux/usb/cdc-wdm.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/usb/cdc-wdm.h
rename to ndk/platforms/android-L/include/linux/usb/cdc-wdm.h
diff --git a/ndk/platforms/android-20/include/linux/usb/cdc.h b/ndk/platforms/android-L/include/linux/usb/cdc.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/usb/cdc.h
rename to ndk/platforms/android-L/include/linux/usb/cdc.h
diff --git a/ndk/platforms/android-20/include/linux/usb/ch11.h b/ndk/platforms/android-L/include/linux/usb/ch11.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/usb/ch11.h
rename to ndk/platforms/android-L/include/linux/usb/ch11.h
diff --git a/ndk/platforms/android-20/include/linux/usb/ch9.h b/ndk/platforms/android-L/include/linux/usb/ch9.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/usb/ch9.h
rename to ndk/platforms/android-L/include/linux/usb/ch9.h
diff --git a/ndk/platforms/android-20/include/linux/usb/f_accessory.h b/ndk/platforms/android-L/include/linux/usb/f_accessory.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/usb/f_accessory.h
rename to ndk/platforms/android-L/include/linux/usb/f_accessory.h
diff --git a/ndk/platforms/android-20/include/linux/usb/f_mtp.h b/ndk/platforms/android-L/include/linux/usb/f_mtp.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/usb/f_mtp.h
rename to ndk/platforms/android-L/include/linux/usb/f_mtp.h
diff --git a/ndk/platforms/android-20/include/linux/usb/functionfs.h b/ndk/platforms/android-L/include/linux/usb/functionfs.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/usb/functionfs.h
rename to ndk/platforms/android-L/include/linux/usb/functionfs.h
diff --git a/ndk/platforms/android-20/include/linux/usb/g_printer.h b/ndk/platforms/android-L/include/linux/usb/g_printer.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/usb/g_printer.h
rename to ndk/platforms/android-L/include/linux/usb/g_printer.h
diff --git a/ndk/platforms/android-20/include/linux/usb/gadgetfs.h b/ndk/platforms/android-L/include/linux/usb/gadgetfs.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/usb/gadgetfs.h
rename to ndk/platforms/android-L/include/linux/usb/gadgetfs.h
diff --git a/ndk/platforms/android-20/include/linux/usb/midi.h b/ndk/platforms/android-L/include/linux/usb/midi.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/usb/midi.h
rename to ndk/platforms/android-L/include/linux/usb/midi.h
diff --git a/ndk/platforms/android-20/include/linux/usb/tmc.h b/ndk/platforms/android-L/include/linux/usb/tmc.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/usb/tmc.h
rename to ndk/platforms/android-L/include/linux/usb/tmc.h
diff --git a/ndk/platforms/android-20/include/linux/usb/video.h b/ndk/platforms/android-L/include/linux/usb/video.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/usb/video.h
rename to ndk/platforms/android-L/include/linux/usb/video.h
diff --git a/ndk/platforms/android-20/include/linux/usbdevice_fs.h b/ndk/platforms/android-L/include/linux/usbdevice_fs.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/usbdevice_fs.h
rename to ndk/platforms/android-L/include/linux/usbdevice_fs.h
diff --git a/ndk/platforms/android-20/include/linux/utime.h b/ndk/platforms/android-L/include/linux/utime.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/utime.h
rename to ndk/platforms/android-L/include/linux/utime.h
diff --git a/ndk/platforms/android-20/include/linux/utsname.h b/ndk/platforms/android-L/include/linux/utsname.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/utsname.h
rename to ndk/platforms/android-L/include/linux/utsname.h
diff --git a/ndk/platforms/android-20/include/linux/uuid.h b/ndk/platforms/android-L/include/linux/uuid.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/uuid.h
rename to ndk/platforms/android-L/include/linux/uuid.h
diff --git a/ndk/platforms/android-20/include/linux/uvcvideo.h b/ndk/platforms/android-L/include/linux/uvcvideo.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/uvcvideo.h
rename to ndk/platforms/android-L/include/linux/uvcvideo.h
diff --git a/ndk/platforms/android-20/include/linux/v4l2-common.h b/ndk/platforms/android-L/include/linux/v4l2-common.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/v4l2-common.h
rename to ndk/platforms/android-L/include/linux/v4l2-common.h
diff --git a/ndk/platforms/android-20/include/linux/v4l2-controls.h b/ndk/platforms/android-L/include/linux/v4l2-controls.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/v4l2-controls.h
rename to ndk/platforms/android-L/include/linux/v4l2-controls.h
diff --git a/ndk/platforms/android-20/include/linux/v4l2-dv-timings.h b/ndk/platforms/android-L/include/linux/v4l2-dv-timings.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/v4l2-dv-timings.h
rename to ndk/platforms/android-L/include/linux/v4l2-dv-timings.h
diff --git a/ndk/platforms/android-20/include/linux/v4l2-mediabus.h b/ndk/platforms/android-L/include/linux/v4l2-mediabus.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/v4l2-mediabus.h
rename to ndk/platforms/android-L/include/linux/v4l2-mediabus.h
diff --git a/ndk/platforms/android-20/include/linux/v4l2-subdev.h b/ndk/platforms/android-L/include/linux/v4l2-subdev.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/v4l2-subdev.h
rename to ndk/platforms/android-L/include/linux/v4l2-subdev.h
diff --git a/ndk/platforms/android-20/include/linux/version.h b/ndk/platforms/android-L/include/linux/version.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/version.h
rename to ndk/platforms/android-L/include/linux/version.h
diff --git a/ndk/platforms/android-20/include/linux/veth.h b/ndk/platforms/android-L/include/linux/veth.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/veth.h
rename to ndk/platforms/android-L/include/linux/veth.h
diff --git a/ndk/platforms/android-20/include/linux/vfio.h b/ndk/platforms/android-L/include/linux/vfio.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/vfio.h
rename to ndk/platforms/android-L/include/linux/vfio.h
diff --git a/ndk/platforms/android-20/include/linux/vhost.h b/ndk/platforms/android-L/include/linux/vhost.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/vhost.h
rename to ndk/platforms/android-L/include/linux/vhost.h
diff --git a/ndk/platforms/android-20/include/linux/videodev2.h b/ndk/platforms/android-L/include/linux/videodev2.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/videodev2.h
rename to ndk/platforms/android-L/include/linux/videodev2.h
diff --git a/ndk/platforms/android-20/include/linux/virtio_9p.h b/ndk/platforms/android-L/include/linux/virtio_9p.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/virtio_9p.h
rename to ndk/platforms/android-L/include/linux/virtio_9p.h
diff --git a/ndk/platforms/android-20/include/linux/virtio_balloon.h b/ndk/platforms/android-L/include/linux/virtio_balloon.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/virtio_balloon.h
rename to ndk/platforms/android-L/include/linux/virtio_balloon.h
diff --git a/ndk/platforms/android-20/include/linux/virtio_blk.h b/ndk/platforms/android-L/include/linux/virtio_blk.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/virtio_blk.h
rename to ndk/platforms/android-L/include/linux/virtio_blk.h
diff --git a/ndk/platforms/android-20/include/linux/virtio_config.h b/ndk/platforms/android-L/include/linux/virtio_config.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/virtio_config.h
rename to ndk/platforms/android-L/include/linux/virtio_config.h
diff --git a/ndk/platforms/android-20/include/linux/virtio_console.h b/ndk/platforms/android-L/include/linux/virtio_console.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/virtio_console.h
rename to ndk/platforms/android-L/include/linux/virtio_console.h
diff --git a/ndk/platforms/android-20/include/linux/virtio_ids.h b/ndk/platforms/android-L/include/linux/virtio_ids.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/virtio_ids.h
rename to ndk/platforms/android-L/include/linux/virtio_ids.h
diff --git a/ndk/platforms/android-20/include/linux/virtio_net.h b/ndk/platforms/android-L/include/linux/virtio_net.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/virtio_net.h
rename to ndk/platforms/android-L/include/linux/virtio_net.h
diff --git a/ndk/platforms/android-20/include/linux/virtio_pci.h b/ndk/platforms/android-L/include/linux/virtio_pci.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/virtio_pci.h
rename to ndk/platforms/android-L/include/linux/virtio_pci.h
diff --git a/ndk/platforms/android-20/include/linux/virtio_ring.h b/ndk/platforms/android-L/include/linux/virtio_ring.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/virtio_ring.h
rename to ndk/platforms/android-L/include/linux/virtio_ring.h
diff --git a/ndk/platforms/android-20/include/linux/virtio_rng.h b/ndk/platforms/android-L/include/linux/virtio_rng.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/virtio_rng.h
rename to ndk/platforms/android-L/include/linux/virtio_rng.h
diff --git a/ndk/platforms/android-20/include/linux/vm_sockets.h b/ndk/platforms/android-L/include/linux/vm_sockets.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/vm_sockets.h
rename to ndk/platforms/android-L/include/linux/vm_sockets.h
diff --git a/ndk/platforms/android-20/include/linux/vt.h b/ndk/platforms/android-L/include/linux/vt.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/vt.h
rename to ndk/platforms/android-L/include/linux/vt.h
diff --git a/ndk/platforms/android-20/include/linux/wait.h b/ndk/platforms/android-L/include/linux/wait.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/wait.h
rename to ndk/platforms/android-L/include/linux/wait.h
diff --git a/ndk/platforms/android-20/include/linux/wanrouter.h b/ndk/platforms/android-L/include/linux/wanrouter.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/wanrouter.h
rename to ndk/platforms/android-L/include/linux/wanrouter.h
diff --git a/ndk/platforms/android-20/include/linux/watchdog.h b/ndk/platforms/android-L/include/linux/watchdog.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/watchdog.h
rename to ndk/platforms/android-L/include/linux/watchdog.h
diff --git a/ndk/platforms/android-20/include/linux/wimax.h b/ndk/platforms/android-L/include/linux/wimax.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/wimax.h
rename to ndk/platforms/android-L/include/linux/wimax.h
diff --git a/ndk/platforms/android-20/include/linux/wimax/i2400m.h b/ndk/platforms/android-L/include/linux/wimax/i2400m.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/wimax/i2400m.h
rename to ndk/platforms/android-L/include/linux/wimax/i2400m.h
diff --git a/ndk/platforms/android-20/include/linux/wireless.h b/ndk/platforms/android-L/include/linux/wireless.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/wireless.h
rename to ndk/platforms/android-L/include/linux/wireless.h
diff --git a/ndk/platforms/android-20/include/linux/x25.h b/ndk/platforms/android-L/include/linux/x25.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/x25.h
rename to ndk/platforms/android-L/include/linux/x25.h
diff --git a/ndk/platforms/android-20/include/linux/xattr.h b/ndk/platforms/android-L/include/linux/xattr.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/xattr.h
rename to ndk/platforms/android-L/include/linux/xattr.h
diff --git a/ndk/platforms/android-20/include/linux/xfrm.h b/ndk/platforms/android-L/include/linux/xfrm.h
similarity index 100%
rename from ndk/platforms/android-20/include/linux/xfrm.h
rename to ndk/platforms/android-L/include/linux/xfrm.h
diff --git a/ndk/platforms/android-20/include/locale.h b/ndk/platforms/android-L/include/locale.h
similarity index 100%
rename from ndk/platforms/android-20/include/locale.h
rename to ndk/platforms/android-L/include/locale.h
diff --git a/ndk/platforms/android-20/include/machine/ieee.h b/ndk/platforms/android-L/include/machine/ieee.h
similarity index 100%
rename from ndk/platforms/android-20/include/machine/ieee.h
rename to ndk/platforms/android-L/include/machine/ieee.h
diff --git a/ndk/platforms/android-20/include/machine/wchar_limits.h b/ndk/platforms/android-L/include/machine/wchar_limits.h
similarity index 100%
rename from ndk/platforms/android-20/include/machine/wchar_limits.h
rename to ndk/platforms/android-L/include/machine/wchar_limits.h
diff --git a/ndk/platforms/android-L/include/malloc.h b/ndk/platforms/android-L/include/malloc.h
new file mode 100644
index 0000000..e6ea276
--- /dev/null
+++ b/ndk/platforms/android-L/include/malloc.h
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * 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.
+ */
+
+#ifndef LIBC_INCLUDE_MALLOC_H_
+#define LIBC_INCLUDE_MALLOC_H_
+
+/*
+ * Declaration of malloc routines. Bionic uses dlmalloc (see
+ * upstream-dlmalloc) but doesn't directly include it here to keep the
+ * defined malloc.h interface small.
+ */
+#include <sys/cdefs.h>
+#include <stddef.h>
+
+__BEGIN_DECLS
+
+extern void* malloc(size_t byte_count) __mallocfunc __wur __attribute__((alloc_size(1)));
+extern void* calloc(size_t item_count, size_t item_size) __mallocfunc __wur __attribute__((alloc_size(1,2)));
+extern void* realloc(void* p, size_t byte_count) __wur __attribute__((alloc_size(2)));
+extern void free(void* p);
+
+extern void* memalign(size_t alignment, size_t byte_count) __mallocfunc __wur __attribute__((alloc_size(2)));
+extern size_t malloc_usable_size(const void* p);
+
+#ifndef STRUCT_MALLINFO_DECLARED
+#define STRUCT_MALLINFO_DECLARED 1
+struct mallinfo {
+  size_t arena;    /* Total number of non-mmapped bytes currently allocated from OS. */
+  size_t ordblks;  /* Number of free chunks. */
+  size_t smblks;   /* (Unused.) */
+  size_t hblks;    /* (Unused.) */
+  size_t hblkhd;   /* Total number of bytes in mmapped regions. */
+  size_t usmblks;  /* Maximum total allocated space; greater than total if trimming has occurred. */
+  size_t fsmblks;  /* (Unused.) */
+  size_t uordblks; /* Total allocated space (normal or mmapped.) */
+  size_t fordblks; /* Total free space. */
+  size_t keepcost; /* Upper bound on number of bytes releasable by malloc_trim. */
+};
+#endif  /* STRUCT_MALLINFO_DECLARED */
+
+extern struct mallinfo mallinfo(void);
+
+__END_DECLS
+
+#endif  /* LIBC_INCLUDE_MALLOC_H_ */
diff --git a/ndk/platforms/android-L/include/math.h b/ndk/platforms/android-L/include/math.h
new file mode 100644
index 0000000..79d9c5c
--- /dev/null
+++ b/ndk/platforms/android-L/include/math.h
@@ -0,0 +1,759 @@
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/*
+ * from: @(#)fdlibm.h 5.1 93/09/24
+ * $FreeBSD$
+ */
+
+#ifndef _MATH_H_
+#define	_MATH_H_
+
+#include <sys/cdefs.h>
+#include <limits.h>
+
+__BEGIN_DECLS
+#pragma GCC visibility push(default)
+
+/*
+ * ANSI/POSIX
+ */
+extern const union __infinity_un {
+	unsigned char	__uc[8];
+	double		__ud;
+} __infinity;
+
+extern const union __nan_un {
+	unsigned char	__uc[sizeof(float)];
+	float		__uf;
+} __nan;
+
+#if __GNUC_PREREQ__(3, 3) || (defined(__INTEL_COMPILER) && __INTEL_COMPILER >= 800)
+#define	__MATH_BUILTIN_CONSTANTS
+#endif
+
+#if __GNUC_PREREQ__(3, 0) && !defined(__INTEL_COMPILER)
+#define	__MATH_BUILTIN_RELOPS
+#endif
+
+#ifdef __MATH_BUILTIN_CONSTANTS
+#define	HUGE_VAL	__builtin_huge_val()
+#else
+#define	HUGE_VAL	(__infinity.__ud)
+#endif
+
+#if __ISO_C_VISIBLE >= 1999
+#define	FP_ILOGB0	(-INT_MAX) /* Android-changed */
+#define	FP_ILOGBNAN	INT_MAX /* Android-changed */
+
+#ifdef __MATH_BUILTIN_CONSTANTS
+#define	HUGE_VALF	__builtin_huge_valf()
+#define	HUGE_VALL	__builtin_huge_vall()
+#define	INFINITY	__builtin_inff()
+#define	NAN		__builtin_nanf("")
+#else
+#define	HUGE_VALF	(float)HUGE_VAL
+#define	HUGE_VALL	(long double)HUGE_VAL
+#define	INFINITY	HUGE_VALF
+#define	NAN		(__nan.__uf)
+#endif /* __MATH_BUILTIN_CONSTANTS */
+
+#define	MATH_ERRNO	1
+#define	MATH_ERREXCEPT	2
+#define	math_errhandling	MATH_ERREXCEPT
+
+#define	FP_FAST_FMAF	1
+#ifdef __ia64__
+#define	FP_FAST_FMA	1
+#define	FP_FAST_FMAL	1
+#endif
+
+/* Symbolic constants to classify floating point numbers. */
+#define	FP_INFINITE	0x01
+#define	FP_NAN		0x02
+#define	FP_NORMAL	0x04
+#define	FP_SUBNORMAL	0x08
+#define	FP_ZERO		0x10
+#define	fpclassify(x) \
+    ((sizeof (x) == sizeof (float)) ? __fpclassifyf(x) \
+    : (sizeof (x) == sizeof (double)) ? __fpclassifyd(x) \
+    : __fpclassifyl(x))
+
+#define	isfinite(x)					\
+    ((sizeof (x) == sizeof (float)) ? __isfinitef(x)	\
+    : (sizeof (x) == sizeof (double)) ? __isfinite(x)	\
+    : __isfinitel(x))
+#define	isinf(x)					\
+    ((sizeof (x) == sizeof (float)) ? __isinff(x)	\
+    : (sizeof (x) == sizeof (double)) ? isinf(x)	\
+    : __isinfl(x))
+#define	isnan(x)					\
+    ((sizeof (x) == sizeof (float)) ? __isnanf(x)	\
+    : (sizeof (x) == sizeof (double)) ? isnan(x)	\
+    : __isnanl(x))
+#define	isnormal(x)					\
+    ((sizeof (x) == sizeof (float)) ? __isnormalf(x)	\
+    : (sizeof (x) == sizeof (double)) ? __isnormal(x)	\
+    : __isnormall(x))
+
+#ifdef __MATH_BUILTIN_RELOPS
+#define	isgreater(x, y)		__builtin_isgreater((x), (y))
+#define	isgreaterequal(x, y)	__builtin_isgreaterequal((x), (y))
+#define	isless(x, y)		__builtin_isless((x), (y))
+#define	islessequal(x, y)	__builtin_islessequal((x), (y))
+#define	islessgreater(x, y)	__builtin_islessgreater((x), (y))
+#define	isunordered(x, y)	__builtin_isunordered((x), (y))
+#else
+#define	isgreater(x, y)		(!isunordered((x), (y)) && (x) > (y))
+#define	isgreaterequal(x, y)	(!isunordered((x), (y)) && (x) >= (y))
+#define	isless(x, y)		(!isunordered((x), (y)) && (x) < (y))
+#define	islessequal(x, y)	(!isunordered((x), (y)) && (x) <= (y))
+#define	islessgreater(x, y)	(!isunordered((x), (y)) && \
+					((x) > (y) || (y) > (x)))
+#define	isunordered(x, y)	(isnan(x) || isnan(y))
+#endif /* __MATH_BUILTIN_RELOPS */
+
+#define	signbit(x)					\
+    ((sizeof (x) == sizeof (float)) ? __signbitf(x)	\
+    : (sizeof (x) == sizeof (double)) ? __signbit(x)	\
+    : __signbitl(x))
+
+typedef double __double_t;
+typedef __double_t double_t;
+typedef float __float_t;
+typedef __float_t float_t;
+#endif /* __ISO_C_VISIBLE >= 1999 */
+
+/*
+ * XOPEN/SVID
+ */
+#if __BSD_VISIBLE || __XSI_VISIBLE
+#define	M_E		2.7182818284590452354	/* e */
+#define	M_LOG2E		1.4426950408889634074	/* log 2e */
+#define	M_LOG10E	0.43429448190325182765	/* log 10e */
+#define	M_LN2		0.69314718055994530942	/* log e2 */
+#define	M_LN10		2.30258509299404568402	/* log e10 */
+#define	M_PI		3.14159265358979323846	/* pi */
+#define	M_PI_2		1.57079632679489661923	/* pi/2 */
+#define	M_PI_4		0.78539816339744830962	/* pi/4 */
+#define	M_1_PI		0.31830988618379067154	/* 1/pi */
+#define	M_2_PI		0.63661977236758134308	/* 2/pi */
+#define	M_2_SQRTPI	1.12837916709551257390	/* 2/sqrt(pi) */
+#define	M_SQRT2		1.41421356237309504880	/* sqrt(2) */
+#define	M_SQRT1_2	0.70710678118654752440	/* 1/sqrt(2) */
+
+#define	MAXFLOAT	((float)3.40282346638528860e+38)
+extern int signgam;
+#endif /* __BSD_VISIBLE || __XSI_VISIBLE */
+
+#if __BSD_VISIBLE
+#if 0
+/* Old value from 4.4BSD-Lite math.h; this is probably better. */
+#define	HUGE		HUGE_VAL
+#else
+#define	HUGE		MAXFLOAT
+#endif
+#endif /* __BSD_VISIBLE */
+
+/*
+ * Most of these functions depend on the rounding mode and have the side
+ * effect of raising floating-point exceptions, so they are not declared
+ * as __pure2.  In C99, FENV_ACCESS affects the purity of these functions.
+ */
+
+/*
+ * ANSI/POSIX
+ */
+int	__fpclassifyd(double) __NDK_FPABI_MATH__  __pure2;
+int	__fpclassifyf(float) __NDK_FPABI_MATH__  __pure2;
+int	__fpclassifyl(long double) __NDK_FPABI_MATH__  __pure2;
+int	__isfinitef(float) __NDK_FPABI_MATH__  __pure2;
+int	__isfinite(double) __NDK_FPABI_MATH__  __pure2;
+int	__isfinitel(long double) __NDK_FPABI_MATH__  __pure2;
+int	__isinff(float) __NDK_FPABI_MATH__  __pure2;
+int	__isinfl(long double) __NDK_FPABI_MATH__  __pure2;
+int	__isnanf(float) __NDK_FPABI_MATH__  __pure2;
+int	__isnanl(long double) __NDK_FPABI_MATH__  __pure2;
+int	__isnormalf(float) __NDK_FPABI_MATH__  __pure2;
+int	__isnormal(double) __NDK_FPABI_MATH__  __pure2;
+int	__isnormall(long double) __NDK_FPABI_MATH__  __pure2;
+int	__signbit(double) __NDK_FPABI_MATH__  __pure2;
+int	__signbitf(float) __NDK_FPABI_MATH__  __pure2;
+int	__signbitl(long double) __NDK_FPABI_MATH__  __pure2;
+
+double	acos(double) __NDK_FPABI_MATH__;
+double	asin(double) __NDK_FPABI_MATH__;
+double	atan(double) __NDK_FPABI_MATH__;
+double	atan2(double, double) __NDK_FPABI_MATH__;
+double	cos(double) __NDK_FPABI_MATH__;
+double	sin(double) __NDK_FPABI_MATH__;
+double	tan(double) __NDK_FPABI_MATH__;
+
+double	cosh(double) __NDK_FPABI_MATH__;
+double	sinh(double) __NDK_FPABI_MATH__;
+double	tanh(double) __NDK_FPABI_MATH__;
+
+double	exp(double) __NDK_FPABI_MATH__;
+double	frexp(double, int *) __NDK_FPABI_MATH__;	/* fundamentally !__pure2 */
+double	ldexp(double, int) __NDK_FPABI_MATH__;
+double	log(double) __NDK_FPABI_MATH__;
+double	log10(double) __NDK_FPABI_MATH__;
+double	modf(double, double *) __NDK_FPABI_MATH__;	/* fundamentally !__pure2 */
+
+double	pow(double, double) __NDK_FPABI_MATH__;
+double	sqrt(double) __NDK_FPABI_MATH__;
+
+double	ceil(double) __NDK_FPABI_MATH__;
+double	fabs(double) __NDK_FPABI_MATH__ __pure2;
+double	floor(double) __NDK_FPABI_MATH__;
+double	fmod(double, double) __NDK_FPABI_MATH__;
+
+/*
+ * These functions are not in C90.
+ */
+#if __BSD_VISIBLE || __ISO_C_VISIBLE >= 1999 || __XSI_VISIBLE
+double	acosh(double) __NDK_FPABI_MATH__;
+double	asinh(double) __NDK_FPABI_MATH__;
+double	atanh(double) __NDK_FPABI_MATH__;
+double	cbrt(double) __NDK_FPABI_MATH__;
+double	erf(double) __NDK_FPABI_MATH__;
+double	erfc(double) __NDK_FPABI_MATH__;
+double	exp2(double) __NDK_FPABI_MATH__;
+double	expm1(double) __NDK_FPABI_MATH__;
+double	fma(double, double, double) __NDK_FPABI_MATH__;
+double	hypot(double, double) __NDK_FPABI_MATH__;
+int	ilogb(double) __NDK_FPABI_MATH__ __pure2;
+int	(isinf)(double) __NDK_FPABI_MATH__ __pure2;
+int	(isnan)(double) __NDK_FPABI_MATH__ __pure2;
+double	lgamma(double) __NDK_FPABI_MATH__;
+long long llrint(double) __NDK_FPABI_MATH__;
+long long llround(double) __NDK_FPABI_MATH__;
+double	log1p(double) __NDK_FPABI_MATH__;
+double	log2(double) __NDK_FPABI_MATH__;
+double	logb(double) __NDK_FPABI_MATH__;
+long	lrint(double) __NDK_FPABI_MATH__;
+long	lround(double) __NDK_FPABI_MATH__;
+double	nan(const char *) __NDK_FPABI_MATH__ __pure2;
+double	nextafter(double, double) __NDK_FPABI_MATH__;
+double	remainder(double, double) __NDK_FPABI_MATH__;
+double	remquo(double, double, int *) __NDK_FPABI_MATH__;
+double	rint(double) __NDK_FPABI_MATH__;
+#endif /* __BSD_VISIBLE || __ISO_C_VISIBLE >= 1999 || __XSI_VISIBLE */
+
+#if __BSD_VISIBLE || __XSI_VISIBLE
+double	j0(double) __NDK_FPABI_MATH__;
+double	j1(double) __NDK_FPABI_MATH__;
+double	jn(int, double) __NDK_FPABI_MATH__;
+double	y0(double) __NDK_FPABI_MATH__;
+double	y1(double) __NDK_FPABI_MATH__;
+double	yn(int, double) __NDK_FPABI_MATH__;
+
+#if __XSI_VISIBLE <= 500 || __BSD_VISIBLE
+double	gamma(double) __NDK_FPABI_MATH__;
+#endif
+
+#if __XSI_VISIBLE <= 600 || __BSD_VISIBLE
+double	scalb(double, double) __NDK_FPABI_MATH__;
+#endif
+#endif /* __BSD_VISIBLE || __XSI_VISIBLE */
+
+#if __BSD_VISIBLE || __ISO_C_VISIBLE >= 1999
+double	copysign(double, double) __NDK_FPABI_MATH__ __pure2;
+double	fdim(double, double) __NDK_FPABI_MATH__;
+double	fmax(double, double) __NDK_FPABI_MATH__ __pure2;
+double	fmin(double, double) __NDK_FPABI_MATH__ __pure2;
+double	nearbyint(double) __NDK_FPABI_MATH__;
+double	round(double) __NDK_FPABI_MATH__;
+double	scalbln(double, long) __NDK_FPABI_MATH__;
+double	scalbn(double, int) __NDK_FPABI_MATH__;
+double	tgamma(double) __NDK_FPABI_MATH__;
+double	trunc(double) __NDK_FPABI_MATH__;
+#endif
+
+/*
+ * BSD math library entry points
+ */
+#if __BSD_VISIBLE
+double	drem(double, double) __NDK_FPABI_MATH__;
+int	finite(double) __NDK_FPABI_MATH__ __pure2;
+int	isnanf(float) __NDK_FPABI_MATH__ __pure2;
+long double significandl(long double) __NDK_FPABI_MATH__;
+
+/*
+ * Reentrant version of gamma & lgamma; passes signgam back by reference
+ * as the second argument; user must allocate space for signgam.
+ */
+double	gamma_r(double, int *) __NDK_FPABI_MATH__;
+double	lgamma_r(double, int *) __NDK_FPABI_MATH__;
+
+/*
+ * IEEE Test Vector
+ */
+double	significand(double) __NDK_FPABI_MATH__;
+#endif /* __BSD_VISIBLE */
+
+/* float versions of ANSI/POSIX functions */
+#if __ISO_C_VISIBLE >= 1999
+float	acosf(float) __NDK_FPABI_MATH__;
+float	asinf(float) __NDK_FPABI_MATH__;
+float	atanf(float) __NDK_FPABI_MATH__;
+float	atan2f(float, float) __NDK_FPABI_MATH__;
+float	cosf(float) __NDK_FPABI_MATH__;
+float	sinf(float) __NDK_FPABI_MATH__;
+float	tanf(float) __NDK_FPABI_MATH__;
+
+float	coshf(float) __NDK_FPABI_MATH__;
+float	sinhf(float) __NDK_FPABI_MATH__;
+float	tanhf(float) __NDK_FPABI_MATH__;
+
+float	exp2f(float) __NDK_FPABI_MATH__;
+float	expf(float) __NDK_FPABI_MATH__;
+float	expm1f(float) __NDK_FPABI_MATH__;
+float	frexpf(float, int *) __NDK_FPABI_MATH__;	/* fundamentally !__pure2 */
+int	ilogbf(float) __NDK_FPABI_MATH__ __pure2;
+float	ldexpf(float, int) __NDK_FPABI_MATH__;
+float	log10f(float) __NDK_FPABI_MATH__;
+float	log1pf(float) __NDK_FPABI_MATH__;
+float	log2f(float) __NDK_FPABI_MATH__;
+float	logf(float) __NDK_FPABI_MATH__;
+float	modff(float, float *) __NDK_FPABI_MATH__;	/* fundamentally !__pure2 */
+
+float	powf(float, float) __NDK_FPABI_MATH__;
+float	sqrtf(float) __NDK_FPABI_MATH__;
+
+float	ceilf(float) __NDK_FPABI_MATH__;
+float	fabsf(float) __NDK_FPABI_MATH__ __pure2;
+float	floorf(float) __NDK_FPABI_MATH__;
+float	fmodf(float, float) __NDK_FPABI_MATH__;
+float	roundf(float) __NDK_FPABI_MATH__;
+
+float	erff(float) __NDK_FPABI_MATH__;
+float	erfcf(float) __NDK_FPABI_MATH__;
+float	hypotf(float, float) __NDK_FPABI_MATH__;
+float	lgammaf(float) __NDK_FPABI_MATH__;
+float	tgammaf(float) __NDK_FPABI_MATH__;
+
+float	acoshf(float) __NDK_FPABI_MATH__;
+float	asinhf(float) __NDK_FPABI_MATH__;
+float	atanhf(float) __NDK_FPABI_MATH__;
+float	cbrtf(float) __NDK_FPABI_MATH__;
+float	logbf(float) __NDK_FPABI_MATH__;
+float	copysignf(float, float) __NDK_FPABI_MATH__ __pure2;
+long long llrintf(float) __NDK_FPABI_MATH__;
+long long llroundf(float) __NDK_FPABI_MATH__;
+long	lrintf(float) __NDK_FPABI_MATH__;
+long	lroundf(float) __NDK_FPABI_MATH__;
+float	nanf(const char *) __NDK_FPABI_MATH__ __pure2;
+float	nearbyintf(float) __NDK_FPABI_MATH__;
+float	nextafterf(float, float) __NDK_FPABI_MATH__;
+float	remainderf(float, float) __NDK_FPABI_MATH__;
+float	remquof(float, float, int *) __NDK_FPABI_MATH__;
+float	rintf(float) __NDK_FPABI_MATH__;
+float	scalblnf(float, long) __NDK_FPABI_MATH__;
+float	scalbnf(float, int) __NDK_FPABI_MATH__;
+float	truncf(float) __NDK_FPABI_MATH__;
+
+float	fdimf(float, float) __NDK_FPABI_MATH__;
+float	fmaf(float, float, float) __NDK_FPABI_MATH__;
+float	fmaxf(float, float) __NDK_FPABI_MATH__ __pure2;
+float	fminf(float, float) __NDK_FPABI_MATH__ __pure2;
+#endif
+
+/*
+ * float versions of BSD math library entry points
+ */
+#if __BSD_VISIBLE
+float	dremf(float, float) __NDK_FPABI_MATH__;
+int	finitef(float) __NDK_FPABI_MATH__ __pure2;
+float	gammaf(float) __NDK_FPABI_MATH__;
+float	j0f(float) __NDK_FPABI_MATH__;
+float	j1f(float) __NDK_FPABI_MATH__;
+float	jnf(int, float) __NDK_FPABI_MATH__;
+float	scalbf(float, float) __NDK_FPABI_MATH__;
+float	y0f(float) __NDK_FPABI_MATH__;
+float	y1f(float) __NDK_FPABI_MATH__;
+float	ynf(int, float) __NDK_FPABI_MATH__;
+
+/*
+ * Float versions of reentrant version of gamma & lgamma; passes
+ * signgam back by reference as the second argument; user must
+ * allocate space for signgam.
+ */
+float	gammaf_r(float, int *) __NDK_FPABI_MATH__;
+float	lgammaf_r(float, int *) __NDK_FPABI_MATH__;
+
+/*
+ * float version of IEEE Test Vector
+ */
+float	significandf(float) __NDK_FPABI_MATH__;
+#endif	/* __BSD_VISIBLE */
+
+/*
+ * long double versions of ISO/POSIX math functions
+ */
+#if __ISO_C_VISIBLE >= 1999
+long double	acoshl(long double) __NDK_FPABI_MATH__;
+long double	acosl(long double) __NDK_FPABI_MATH__;
+long double	asinhl(long double) __NDK_FPABI_MATH__;
+long double	asinl(long double) __NDK_FPABI_MATH__;
+long double	atan2l(long double, long double) __NDK_FPABI_MATH__;
+long double	atanhl(long double) __NDK_FPABI_MATH__;
+long double	atanl(long double) __NDK_FPABI_MATH__;
+long double	cbrtl(long double) __NDK_FPABI_MATH__;
+long double	ceill(long double) __NDK_FPABI_MATH__;
+long double	copysignl(long double, long double) __NDK_FPABI_MATH__ __pure2;
+long double	coshl(long double) __NDK_FPABI_MATH__;
+long double	cosl(long double) __NDK_FPABI_MATH__;
+long double	erfcl(long double) __NDK_FPABI_MATH__;
+long double	erfl(long double) __NDK_FPABI_MATH__;
+long double	exp2l(long double) __NDK_FPABI_MATH__;
+long double	expl(long double) __NDK_FPABI_MATH__;
+long double	expm1l(long double) __NDK_FPABI_MATH__;
+long double	fabsl(long double) __NDK_FPABI_MATH__ __pure2;
+long double	fdiml(long double, long double) __NDK_FPABI_MATH__;
+long double	floorl(long double) __NDK_FPABI_MATH__;
+long double	fmal(long double, long double, long double) __NDK_FPABI_MATH__;
+long double	fmaxl(long double, long double) __NDK_FPABI_MATH__ __pure2;
+long double	fminl(long double, long double) __NDK_FPABI_MATH__ __pure2;
+long double	fmodl(long double, long double) __NDK_FPABI_MATH__;
+long double	frexpl(long double value, int *) __NDK_FPABI_MATH__; /* fundamentally !__pure2 */
+long double	hypotl(long double, long double) __NDK_FPABI_MATH__;
+int		ilogbl(long double) __NDK_FPABI_MATH__ __pure2;
+long double	ldexpl(long double, int) __NDK_FPABI_MATH__;
+long double	lgammal(long double) __NDK_FPABI_MATH__;
+long long	llrintl(long double) __NDK_FPABI_MATH__;
+long long	llroundl(long double) __NDK_FPABI_MATH__;
+long double	log10l(long double) __NDK_FPABI_MATH__;
+long double	log1pl(long double) __NDK_FPABI_MATH__;
+long double	log2l(long double) __NDK_FPABI_MATH__;
+long double	logbl(long double) __NDK_FPABI_MATH__;
+long double	logl(long double) __NDK_FPABI_MATH__;
+long		lrintl(long double) __NDK_FPABI_MATH__;
+long		lroundl(long double) __NDK_FPABI_MATH__;
+long double	modfl(long double, long double *) __NDK_FPABI_MATH__; /* fundamentally !__pure2 */
+long double	nanl(const char *) __NDK_FPABI_MATH__ __pure2;
+long double	nearbyintl(long double) __NDK_FPABI_MATH__;
+long double	nextafterl(long double, long double) __NDK_FPABI_MATH__;
+double		nexttoward(double, long double) __NDK_FPABI_MATH__;
+float		nexttowardf(float, long double) __NDK_FPABI_MATH__;
+long double	nexttowardl(long double, long double) __NDK_FPABI_MATH__;
+long double	powl(long double, long double) __NDK_FPABI_MATH__;
+long double	remainderl(long double, long double) __NDK_FPABI_MATH__;
+long double	remquol(long double, long double, int *) __NDK_FPABI_MATH__;
+long double	rintl(long double) __NDK_FPABI_MATH__;
+long double	roundl(long double) __NDK_FPABI_MATH__;
+long double	scalblnl(long double, long) __NDK_FPABI_MATH__;
+long double	scalbnl(long double, int) __NDK_FPABI_MATH__;
+long double	sinhl(long double) __NDK_FPABI_MATH__;
+long double	sinl(long double) __NDK_FPABI_MATH__;
+long double	sqrtl(long double) __NDK_FPABI_MATH__;
+long double	tanhl(long double) __NDK_FPABI_MATH__;
+long double	tanl(long double) __NDK_FPABI_MATH__;
+long double	tgammal(long double) __NDK_FPABI_MATH__;
+long double	truncl(long double) __NDK_FPABI_MATH__;
+
+#endif /* __ISO_C_VISIBLE >= 1999 */
+
+#if defined(_GNU_SOURCE)
+void sincos(double, double*, double*) __NDK_FPABI_MATH__;
+void sincosf(float, float*, float*) __NDK_FPABI_MATH__;
+void sincosl(long double, long double*, long double*) __NDK_FPABI_MATH__;
+#endif /* _GNU_SOURCE */
+
+/* builtin version of all the above math functions are annotated too */
+
+double	__builtin_acos(double) __NDK_FPABI_MATH__;
+double	__builtin_asin(double) __NDK_FPABI_MATH__;
+double	__builtin_atan(double) __NDK_FPABI_MATH__;
+double	__builtin_atan2(double, double) __NDK_FPABI_MATH__;
+double	__builtin_cos(double) __NDK_FPABI_MATH__;
+double	__builtin_sin(double) __NDK_FPABI_MATH__;
+double	__builtin_tan(double) __NDK_FPABI_MATH__;
+
+double	__builtin_cosh(double) __NDK_FPABI_MATH__;
+double	__builtin_sinh(double) __NDK_FPABI_MATH__;
+double	__builtin_tanh(double) __NDK_FPABI_MATH__;
+
+double	__builtin_exp(double) __NDK_FPABI_MATH__;
+double	__builtin_frexp(double, int *) __NDK_FPABI_MATH__;	/* fundamentally !__pure2 */
+double	__builtin_ldexp(double, int) __NDK_FPABI_MATH__;
+double	__builtin_log(double) __NDK_FPABI_MATH__;
+double	__builtin_log10(double) __NDK_FPABI_MATH__;
+double	__builtin_modf(double, double *) __NDK_FPABI_MATH__;	/* fundamentally !__pure2 */
+
+double	__builtin_pow(double, double) __NDK_FPABI_MATH__;
+double	__builtin_sqrt(double) __NDK_FPABI_MATH__;
+
+double	__builtin_ceil(double) __NDK_FPABI_MATH__;
+double	__builtin_fabs(double) __NDK_FPABI_MATH__ __pure2;
+double	__builtin_floor(double) __NDK_FPABI_MATH__;
+double	__builtin_fmod(double, double) __NDK_FPABI_MATH__;
+
+/*
+ * These functions are not in C90.
+ */
+#if __BSD_VISIBLE || __ISO_C_VISIBLE >= 1999 || __XSI_VISIBLE
+double	__builtin_acosh(double) __NDK_FPABI_MATH__;
+double	__builtin_asinh(double) __NDK_FPABI_MATH__;
+double	__builtin_atanh(double) __NDK_FPABI_MATH__;
+double	__builtin_cbrt(double) __NDK_FPABI_MATH__;
+double	__builtin_erf(double) __NDK_FPABI_MATH__;
+double	__builtin_erfc(double) __NDK_FPABI_MATH__;
+double	__builtin_exp2(double) __NDK_FPABI_MATH__;
+double	__builtin_expm1(double) __NDK_FPABI_MATH__;
+double	__builtin_fma(double, double, double) __NDK_FPABI_MATH__;
+double	__builtin_hypot(double, double) __NDK_FPABI_MATH__;
+int	__builtin_ilogb(double) __NDK_FPABI_MATH__ __pure2;
+#if !defined(__clang__) || __clang_major__ > 3 || (__clang_major__ == 3 && __clang_minor__ >= 6)
+int	__builtin_isinf(double) __NDK_FPABI_MATH__ __pure2;
+int	__builtin_isnan(double) __NDK_FPABI_MATH__ __pure2;
+#else
+/* clang < 3.5 has faulty prototype for __builtin_isnan */
+#endif
+double	__builtin_lgamma(double) __NDK_FPABI_MATH__;
+long long __builtin_llrint(double) __NDK_FPABI_MATH__;
+long long __builtin_llround(double) __NDK_FPABI_MATH__;
+double	__builtin_log1p(double) __NDK_FPABI_MATH__;
+double	__builtin_log2(double) __NDK_FPABI_MATH__;
+double	__builtin_logb(double) __NDK_FPABI_MATH__;
+long	__builtin_lrint(double) __NDK_FPABI_MATH__;
+long	__builtin_lround(double) __NDK_FPABI_MATH__;
+double	__builtin_nan(const char *) __NDK_FPABI_MATH__ __pure2;
+double	__builtin_nextafter(double, double) __NDK_FPABI_MATH__;
+double	__builtin_remainder(double, double) __NDK_FPABI_MATH__;
+double	__builtin_remquo(double, double, int *) __NDK_FPABI_MATH__;
+double	__builtin_rint(double) __NDK_FPABI_MATH__;
+#endif /* __BSD_VISIBLE || __ISO_C_VISIBLE >= 1999 || __XSI_VISIBLE */
+
+#if __BSD_VISIBLE || __XSI_VISIBLE
+double	__builtin_j0(double) __NDK_FPABI_MATH__;
+double	__builtin_j1(double) __NDK_FPABI_MATH__;
+double	__builtin_jn(int, double) __NDK_FPABI_MATH__;
+double	__builtin_y0(double) __NDK_FPABI_MATH__;
+double	__builtin_y1(double) __NDK_FPABI_MATH__;
+double	__builtin_yn(int, double) __NDK_FPABI_MATH__;
+
+#if __XSI_VISIBLE <= 500 || __BSD_VISIBLE
+double	__builtin_gamma(double) __NDK_FPABI_MATH__;
+#endif
+
+#if __XSI_VISIBLE <= 600 || __BSD_VISIBLE
+double	__builtin_scalb(double, double) __NDK_FPABI_MATH__;
+#endif
+#endif /* __BSD_VISIBLE || __XSI_VISIBLE */
+
+#if __BSD_VISIBLE || __ISO_C_VISIBLE >= 1999
+double	__builtin_copysign(double, double) __NDK_FPABI_MATH__ __pure2;
+double	__builtin_fdim(double, double) __NDK_FPABI_MATH__;
+double	__builtin_fmax(double, double) __NDK_FPABI_MATH__ __pure2;
+double	__builtin_fmin(double, double) __NDK_FPABI_MATH__ __pure2;
+double	__builtin_nearbyint(double) __NDK_FPABI_MATH__;
+double	__builtin_round(double) __NDK_FPABI_MATH__;
+double	__builtin_scalbln(double, long) __NDK_FPABI_MATH__;
+double	__builtin_scalbn(double, int) __NDK_FPABI_MATH__;
+double	__builtin_tgamma(double) __NDK_FPABI_MATH__;
+double	__builtin_trunc(double) __NDK_FPABI_MATH__;
+#endif
+
+/*
+ * BSD math library entry points
+ */
+#if __BSD_VISIBLE
+double	__builtin_drem(double, double) __NDK_FPABI_MATH__;
+int	__builtin_finite(double) __NDK_FPABI_MATH__ __pure2;
+int	__builtin_isnanf(float) __NDK_FPABI_MATH__ __pure2;
+long double significandl(long double) __NDK_FPABI_MATH__;
+
+/*
+ * Reentrant version of gamma & lgamma; passes signgam back by reference
+ * as the second argument; user must allocate space for signgam.
+ */
+double	__builtin_gamma_r(double, int *) __NDK_FPABI_MATH__;
+double	__builtin_lgamma_r(double, int *) __NDK_FPABI_MATH__;
+
+/*
+ * IEEE Test Vector
+ */
+double	__builtin_significand(double) __NDK_FPABI_MATH__;
+#endif /* __BSD_VISIBLE */
+
+/* float versions of ANSI/POSIX functions */
+#if __ISO_C_VISIBLE >= 1999
+float	__builtin_acosf(float) __NDK_FPABI_MATH__;
+float	__builtin_asinf(float) __NDK_FPABI_MATH__;
+float	__builtin_atanf(float) __NDK_FPABI_MATH__;
+float	__builtin_atan2f(float, float) __NDK_FPABI_MATH__;
+float	__builtin_cosf(float) __NDK_FPABI_MATH__;
+float	__builtin_sinf(float) __NDK_FPABI_MATH__;
+float	__builtin_tanf(float) __NDK_FPABI_MATH__;
+
+float	__builtin_coshf(float) __NDK_FPABI_MATH__;
+float	__builtin_sinhf(float) __NDK_FPABI_MATH__;
+float	__builtin_tanhf(float) __NDK_FPABI_MATH__;
+
+float	__builtin_exp2f(float) __NDK_FPABI_MATH__;
+float	__builtin_expf(float) __NDK_FPABI_MATH__;
+float	__builtin_expm1f(float) __NDK_FPABI_MATH__;
+float	__builtin_frexpf(float, int *) __NDK_FPABI_MATH__;	/* fundamentally !__pure2 */
+int	__builtin_ilogbf(float) __NDK_FPABI_MATH__ __pure2;
+float	__builtin_ldexpf(float, int) __NDK_FPABI_MATH__;
+float	__builtin_log10f(float) __NDK_FPABI_MATH__;
+float	__builtin_log1pf(float) __NDK_FPABI_MATH__;
+float	__builtin_log2f(float) __NDK_FPABI_MATH__;
+float	__builtin_logf(float) __NDK_FPABI_MATH__;
+float	__builtin_modff(float, float *) __NDK_FPABI_MATH__;	/* fundamentally !__pure2 */
+
+float	__builtin_powf(float, float) __NDK_FPABI_MATH__;
+float	__builtin_sqrtf(float) __NDK_FPABI_MATH__;
+
+float	__builtin_ceilf(float) __NDK_FPABI_MATH__;
+float	__builtin_fabsf(float) __NDK_FPABI_MATH__ __pure2;
+float	__builtin_floorf(float) __NDK_FPABI_MATH__;
+float	__builtin_fmodf(float, float) __NDK_FPABI_MATH__;
+float	__builtin_roundf(float) __NDK_FPABI_MATH__;
+
+float	__builtin_erff(float) __NDK_FPABI_MATH__;
+float	__builtin_erfcf(float) __NDK_FPABI_MATH__;
+float	__builtin_hypotf(float, float) __NDK_FPABI_MATH__;
+float	__builtin_lgammaf(float) __NDK_FPABI_MATH__;
+float	__builtin_tgammaf(float) __NDK_FPABI_MATH__;
+
+float	__builtin_acoshf(float) __NDK_FPABI_MATH__;
+float	__builtin_asinhf(float) __NDK_FPABI_MATH__;
+float	__builtin_atanhf(float) __NDK_FPABI_MATH__;
+float	__builtin_cbrtf(float) __NDK_FPABI_MATH__;
+float	__builtin_logbf(float) __NDK_FPABI_MATH__;
+float	__builtin_copysignf(float, float) __NDK_FPABI_MATH__ __pure2;
+long long __builtin_llrintf(float) __NDK_FPABI_MATH__;
+long long __builtin_llroundf(float) __NDK_FPABI_MATH__;
+long	__builtin_lrintf(float) __NDK_FPABI_MATH__;
+long	__builtin_lroundf(float) __NDK_FPABI_MATH__;
+float	__builtin_nanf(const char *) __NDK_FPABI_MATH__ __pure2;
+float	__builtin_nearbyintf(float) __NDK_FPABI_MATH__;
+float	__builtin_nextafterf(float, float) __NDK_FPABI_MATH__;
+float	__builtin_remainderf(float, float) __NDK_FPABI_MATH__;
+float	__builtin_remquof(float, float, int *) __NDK_FPABI_MATH__;
+float	__builtin_rintf(float) __NDK_FPABI_MATH__;
+float	__builtin_scalblnf(float, long) __NDK_FPABI_MATH__;
+float	__builtin_scalbnf(float, int) __NDK_FPABI_MATH__;
+float	__builtin_truncf(float) __NDK_FPABI_MATH__;
+
+float	__builtin_fdimf(float, float) __NDK_FPABI_MATH__;
+float	__builtin_fmaf(float, float, float) __NDK_FPABI_MATH__;
+float	__builtin_fmaxf(float, float) __NDK_FPABI_MATH__ __pure2;
+float	__builtin_fminf(float, float) __NDK_FPABI_MATH__ __pure2;
+#endif
+
+/*
+ * float versions of BSD math library entry points
+ */
+#if __BSD_VISIBLE
+float	__builtin_dremf(float, float) __NDK_FPABI_MATH__;
+int	__builtin_finitef(float) __NDK_FPABI_MATH__ __pure2;
+float	__builtin_gammaf(float) __NDK_FPABI_MATH__;
+float	__builtin_j0f(float) __NDK_FPABI_MATH__;
+float	__builtin_j1f(float) __NDK_FPABI_MATH__;
+float	__builtin_jnf(int, float) __NDK_FPABI_MATH__;
+float	__builtin_scalbf(float, float) __NDK_FPABI_MATH__;
+float	__builtin_y0f(float) __NDK_FPABI_MATH__;
+float	__builtin_y1f(float) __NDK_FPABI_MATH__;
+float	__builtin_ynf(int, float) __NDK_FPABI_MATH__;
+
+/*
+ * Float versions of reentrant version of gamma & lgamma; passes
+ * signgam back by reference as the second argument; user must
+ * allocate space for signgam.
+ */
+float	__builtin_gammaf_r(float, int *) __NDK_FPABI_MATH__;
+float	__builtin_lgammaf_r(float, int *) __NDK_FPABI_MATH__;
+
+/*
+ * float version of IEEE Test Vector
+ */
+float	__builtin_significandf(float) __NDK_FPABI_MATH__;
+#endif	/* __BSD_VISIBLE */
+
+/*
+ * long double versions of ISO/POSIX math functions
+ */
+#if __ISO_C_VISIBLE >= 1999
+long double	__builtin_acoshl(long double) __NDK_FPABI_MATH__;
+long double	__builtin_acosl(long double) __NDK_FPABI_MATH__;
+long double	__builtin_asinhl(long double) __NDK_FPABI_MATH__;
+long double	__builtin_asinl(long double) __NDK_FPABI_MATH__;
+long double	__builtin_atan2l(long double, long double) __NDK_FPABI_MATH__;
+long double	__builtin_atanhl(long double) __NDK_FPABI_MATH__;
+long double	__builtin_atanl(long double) __NDK_FPABI_MATH__;
+long double	__builtin_cbrtl(long double) __NDK_FPABI_MATH__;
+long double	__builtin_ceill(long double) __NDK_FPABI_MATH__;
+long double	__builtin_copysignl(long double, long double) __NDK_FPABI_MATH__ __pure2;
+long double	__builtin_coshl(long double) __NDK_FPABI_MATH__;
+long double	__builtin_cosl(long double) __NDK_FPABI_MATH__;
+long double	__builtin_erfcl(long double) __NDK_FPABI_MATH__;
+long double	__builtin_erfl(long double) __NDK_FPABI_MATH__;
+long double	__builtin_exp2l(long double) __NDK_FPABI_MATH__;
+long double	__builtin_expl(long double) __NDK_FPABI_MATH__;
+long double	__builtin_expm1l(long double) __NDK_FPABI_MATH__;
+long double	__builtin_fabsl(long double) __NDK_FPABI_MATH__ __pure2;
+long double	__builtin_fdiml(long double, long double) __NDK_FPABI_MATH__;
+long double	__builtin_floorl(long double) __NDK_FPABI_MATH__;
+long double	__builtin_fmal(long double, long double, long double) __NDK_FPABI_MATH__;
+long double	__builtin_fmaxl(long double, long double) __NDK_FPABI_MATH__ __pure2;
+long double	__builtin_fminl(long double, long double) __NDK_FPABI_MATH__ __pure2;
+long double	__builtin_fmodl(long double, long double) __NDK_FPABI_MATH__;
+long double	__builtin_frexpl(long double value, int *) __NDK_FPABI_MATH__; /* fundamentally !__pure2 */
+long double	__builtin_hypotl(long double, long double) __NDK_FPABI_MATH__;
+int		__builtin_ilogbl(long double) __NDK_FPABI_MATH__ __pure2;
+long double	__builtin_ldexpl(long double, int) __NDK_FPABI_MATH__;
+long double	__builtin_lgammal(long double) __NDK_FPABI_MATH__;
+long long	__builtin_llrintl(long double) __NDK_FPABI_MATH__;
+long long	__builtin_llroundl(long double) __NDK_FPABI_MATH__;
+long double	__builtin_log10l(long double) __NDK_FPABI_MATH__;
+long double	__builtin_log1pl(long double) __NDK_FPABI_MATH__;
+long double	__builtin_log2l(long double) __NDK_FPABI_MATH__;
+long double	__builtin_logbl(long double) __NDK_FPABI_MATH__;
+long double	__builtin_logl(long double) __NDK_FPABI_MATH__;
+long		__builtin_lrintl(long double) __NDK_FPABI_MATH__;
+long		__builtin_lroundl(long double) __NDK_FPABI_MATH__;
+long double	__builtin_modfl(long double, long double *) __NDK_FPABI_MATH__; /* fundamentally !__pure2 */
+long double	__builtin_nanl(const char *) __NDK_FPABI_MATH__ __pure2;
+long double	__builtin_nearbyintl(long double) __NDK_FPABI_MATH__;
+long double	__builtin_nextafterl(long double, long double) __NDK_FPABI_MATH__;
+double		__builtin_nexttoward(double, long double) __NDK_FPABI_MATH__;
+float		__builtin_nexttowardf(float, long double) __NDK_FPABI_MATH__;
+long double	__builtin_nexttowardl(long double, long double) __NDK_FPABI_MATH__;
+long double	__builtin_powl(long double, long double) __NDK_FPABI_MATH__;
+long double	__builtin_remainderl(long double, long double) __NDK_FPABI_MATH__;
+long double	__builtin_remquol(long double, long double, int *) __NDK_FPABI_MATH__;
+long double	__builtin_rintl(long double) __NDK_FPABI_MATH__;
+long double	__builtin_roundl(long double) __NDK_FPABI_MATH__;
+long double	__builtin_scalblnl(long double, long) __NDK_FPABI_MATH__;
+long double	__builtin_scalbnl(long double, int) __NDK_FPABI_MATH__;
+long double	__builtin_sinhl(long double) __NDK_FPABI_MATH__;
+long double	__builtin_sinl(long double) __NDK_FPABI_MATH__;
+long double	__builtin_sqrtl(long double) __NDK_FPABI_MATH__;
+long double	__builtin_tanhl(long double) __NDK_FPABI_MATH__;
+long double	__builtin_tanl(long double) __NDK_FPABI_MATH__;
+long double	__builtin_tgammal(long double) __NDK_FPABI_MATH__;
+long double	__builtin_truncl(long double) __NDK_FPABI_MATH__;
+
+#endif /* __ISO_C_VISIBLE >= 1999 */
+
+#if defined(_GNU_SOURCE)
+void __builtin_sincos(double, double*, double*) __NDK_FPABI_MATH__;
+void __builtin_sincosf(float, float*, float*) __NDK_FPABI_MATH__;
+void __builtin_sincosl(long double, long double*, long double*) __NDK_FPABI_MATH__;
+#endif /* _GNU_SOURCE */
+
+#pragma GCC visibility pop
+__END_DECLS
+
+#endif /* !_MATH_H_ */
diff --git a/ndk/platforms/android-20/include/memory.h b/ndk/platforms/android-L/include/memory.h
similarity index 100%
rename from ndk/platforms/android-20/include/memory.h
rename to ndk/platforms/android-L/include/memory.h
diff --git a/ndk/platforms/android-20/include/mntent.h b/ndk/platforms/android-L/include/mntent.h
similarity index 100%
rename from ndk/platforms/android-20/include/mntent.h
rename to ndk/platforms/android-L/include/mntent.h
diff --git a/ndk/platforms/android-20/include/net/ethernet.h b/ndk/platforms/android-L/include/net/ethernet.h
similarity index 100%
rename from ndk/platforms/android-20/include/net/ethernet.h
rename to ndk/platforms/android-L/include/net/ethernet.h
diff --git a/ndk/platforms/android-20/include/net/ethertypes.h b/ndk/platforms/android-L/include/net/ethertypes.h
similarity index 100%
rename from ndk/platforms/android-20/include/net/ethertypes.h
rename to ndk/platforms/android-L/include/net/ethertypes.h
diff --git a/ndk/platforms/android-20/include/net/if.h b/ndk/platforms/android-L/include/net/if.h
similarity index 100%
rename from ndk/platforms/android-20/include/net/if.h
rename to ndk/platforms/android-L/include/net/if.h
diff --git a/ndk/platforms/android-20/include/net/if_arp.h b/ndk/platforms/android-L/include/net/if_arp.h
similarity index 100%
rename from ndk/platforms/android-20/include/net/if_arp.h
rename to ndk/platforms/android-L/include/net/if_arp.h
diff --git a/ndk/platforms/android-20/include/net/if_ether.h b/ndk/platforms/android-L/include/net/if_ether.h
similarity index 100%
rename from ndk/platforms/android-20/include/net/if_ether.h
rename to ndk/platforms/android-L/include/net/if_ether.h
diff --git a/ndk/platforms/android-20/include/net/if_ieee1394.h b/ndk/platforms/android-L/include/net/if_ieee1394.h
similarity index 100%
rename from ndk/platforms/android-20/include/net/if_ieee1394.h
rename to ndk/platforms/android-L/include/net/if_ieee1394.h
diff --git a/ndk/platforms/android-20/include/net/if_packet.h b/ndk/platforms/android-L/include/net/if_packet.h
similarity index 100%
rename from ndk/platforms/android-20/include/net/if_packet.h
rename to ndk/platforms/android-L/include/net/if_packet.h
diff --git a/ndk/platforms/android-20/include/net/if_types.h b/ndk/platforms/android-L/include/net/if_types.h
similarity index 100%
rename from ndk/platforms/android-20/include/net/if_types.h
rename to ndk/platforms/android-L/include/net/if_types.h
diff --git a/ndk/platforms/android-20/include/net/route.h b/ndk/platforms/android-L/include/net/route.h
similarity index 100%
rename from ndk/platforms/android-20/include/net/route.h
rename to ndk/platforms/android-L/include/net/route.h
diff --git a/ndk/platforms/android-L/include/netdb.h b/ndk/platforms/android-L/include/netdb.h
new file mode 100644
index 0000000..527d5c1
--- /dev/null
+++ b/ndk/platforms/android-L/include/netdb.h
@@ -0,0 +1,253 @@
+/*-
+ * Copyright (c) 1980, 1983, 1988, 1993
+ *	The Regents of the University of California.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *	This product includes software developed by the University of
+ *	California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * -
+ * Portions Copyright (c) 1993 by Digital Equipment Corporation.
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies, and that
+ * the name of Digital Equipment Corporation not be used in advertising or
+ * publicity pertaining to distribution of the document or software without
+ * specific, written prior permission.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL
+ * WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS.   IN NO EVENT SHALL DIGITAL EQUIPMENT
+ * CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
+ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
+ * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+ * -
+ * --Copyright--
+ */
+
+/*
+ *      @(#)netdb.h	8.1 (Berkeley) 6/2/93
+ *      From: Id: netdb.h,v 8.9 1996/11/19 08:39:29 vixie Exp $
+ * $FreeBSD: /repoman/r/ncvs/src/include/netdb.h,v 1.41 2006/04/15 16:20:26 ume Exp $
+ */
+
+#ifndef _NETDB_H_
+#define _NETDB_H_
+
+#include <sys/cdefs.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+
+#ifndef _PATH_HEQUIV
+# define	_PATH_HEQUIV	"/system/etc/hosts.equiv"
+#endif
+#define	_PATH_HOSTS	"/system/etc/hosts"
+#define	_PATH_NETWORKS	"/system/etc/networks"
+#define	_PATH_PROTOCOLS	"/system/etc/protocols"
+#define	_PATH_SERVICES	"/system/etc/services"
+
+#define  MAXHOSTNAMELEN  256
+
+
+/*
+ * Structures returned by network data base library.  All addresses are
+ * supplied in host order, and returned in network order (suitable for
+ * use in system calls).
+ */
+struct hostent {
+	char	*h_name;	/* official name of host */
+	char	**h_aliases;	/* alias list */
+	int	h_addrtype;	/* host address type */
+	int	h_length;	/* length of address */
+	char	**h_addr_list;	/* list of addresses from name server */
+#define	h_addr	h_addr_list[0]	/* address, for backward compatibility */
+};
+
+struct netent {
+	char		*n_name;	/* official name of net */
+	char		**n_aliases;	/* alias list */
+	int		n_addrtype;	/* net address type */
+	uint32_t	n_net;		/* network # */
+};
+
+struct servent {
+	char	*s_name;	/* official service name */
+	char	**s_aliases;	/* alias list */
+	int	s_port;		/* port # */
+	char	*s_proto;	/* protocol to use */
+};
+
+struct protoent {
+	char	*p_name;	/* official protocol name */
+	char	**p_aliases;	/* alias list */
+	int	p_proto;	/* protocol # */
+};
+
+struct addrinfo {
+	int	ai_flags;	/* AI_PASSIVE, AI_CANONNAME, AI_NUMERICHOST */
+	int	ai_family;	/* PF_xxx */
+	int	ai_socktype;	/* SOCK_xxx */
+	int	ai_protocol;	/* 0 or IPPROTO_xxx for IPv4 and IPv6 */
+	socklen_t ai_addrlen;	/* length of ai_addr */
+	char	*ai_canonname;	/* canonical name for hostname */
+	struct	sockaddr *ai_addr;	/* binary address */
+	struct	addrinfo *ai_next;	/* next structure in linked list */
+};
+
+/*
+ * Error return codes from gethostbyname() and gethostbyaddr()
+ * (left in h_errno).
+ */
+
+#define	NETDB_INTERNAL	-1	/* see errno */
+#define	NETDB_SUCCESS	0	/* no problem */
+#define	HOST_NOT_FOUND	1 /* Authoritative Answer Host not found */
+#define	TRY_AGAIN	2 /* Non-Authoritative Host not found, or SERVERFAIL */
+#define	NO_RECOVERY	3 /* Non recoverable errors, FORMERR, REFUSED, NOTIMP */
+#define	NO_DATA		4 /* Valid name, no data record of requested type */
+#define	NO_ADDRESS	NO_DATA		/* no address, look for MX record */
+
+/*
+ * Error return codes from getaddrinfo()
+ */
+#define	EAI_ADDRFAMILY	 1	/* address family for hostname not supported */
+#define	EAI_AGAIN	 2	/* temporary failure in name resolution */
+#define	EAI_BADFLAGS	 3	/* invalid value for ai_flags */
+#define	EAI_FAIL	 4	/* non-recoverable failure in name resolution */
+#define	EAI_FAMILY	 5	/* ai_family not supported */
+#define	EAI_MEMORY	 6	/* memory allocation failure */
+#define	EAI_NODATA	 7	/* no address associated with hostname */
+#define	EAI_NONAME	 8	/* hostname nor servname provided, or not known */
+#define	EAI_SERVICE	 9	/* servname not supported for ai_socktype */
+#define	EAI_SOCKTYPE	10	/* ai_socktype not supported */
+#define	EAI_SYSTEM	11	/* system error returned in errno */
+#define	EAI_BADHINTS	12	/* invalid value for hints */
+#define	EAI_PROTOCOL	13	/* resolved protocol is unknown */
+#define	EAI_OVERFLOW	14	/* argument buffer overflow */
+#define	EAI_MAX		15
+
+/*
+ * Flag values for getaddrinfo()
+ */
+#define	AI_PASSIVE	0x00000001 /* get address to use bind() */
+#define	AI_CANONNAME	0x00000002 /* fill ai_canonname */
+#define	AI_NUMERICHOST	0x00000004 /* prevent host name resolution */
+#define	AI_NUMERICSERV	0x00000008 /* prevent service name resolution */
+/* valid flags for addrinfo (not a standard def, apps should not use it) */
+#define AI_MASK \
+    (AI_PASSIVE | AI_CANONNAME | AI_NUMERICHOST | AI_NUMERICSERV | \
+    AI_ADDRCONFIG)
+
+#define	AI_ALL		0x00000100 /* IPv6 and IPv4-mapped (with AI_V4MAPPED) */
+#define	AI_V4MAPPED_CFG	0x00000200 /* accept IPv4-mapped if kernel supports */
+#define	AI_ADDRCONFIG	0x00000400 /* only if any address is assigned */
+#define	AI_V4MAPPED	0x00000800 /* accept IPv4-mapped IPv6 address */
+/* special recommended flags for getipnodebyname */
+#define	AI_DEFAULT	(AI_V4MAPPED_CFG | AI_ADDRCONFIG)
+
+/*
+ * Constants for getnameinfo()
+ */
+#define	NI_MAXHOST	1025
+#define	NI_MAXSERV	32
+
+/*
+ * Flag values for getnameinfo()
+ */
+#define	NI_NOFQDN	0x00000001
+#define	NI_NUMERICHOST	0x00000002
+#define	NI_NAMEREQD	0x00000004
+#define	NI_NUMERICSERV	0x00000008
+#define	NI_DGRAM	0x00000010
+#if 0 /* obsolete */
+#define NI_WITHSCOPEID	0x00000020
+#endif
+
+/*
+ * Scope delimit character
+ */
+#define	SCOPE_DELIMITER	'%'
+
+__BEGIN_DECLS
+#pragma GCC visibility push(default)
+
+/* BIONIC-BEGIN */
+#define  h_errno   (*__get_h_errno())
+int*  __get_h_errno(void);
+/* BIONIC-END */
+void endhostent(void);
+void endnetent(void);
+void endnetgrent(void);
+void endprotoent(void);
+void endservent(void);
+void freehostent(struct hostent *);
+struct hostent	*gethostbyaddr(const void *, socklen_t, int);
+int gethostbyaddr_r(const void *, int, int, struct hostent *, char *, size_t, struct hostent **, int *);
+struct hostent	*gethostbyname(const char *);
+int gethostbyname_r(const char *, struct hostent *, char *, size_t, struct hostent **, int *);
+struct hostent	*gethostbyname2(const char *, int);
+int gethostbyname2_r(const char *, int, struct hostent *, char *, size_t, struct hostent **, int *);
+struct hostent	*gethostent(void);
+int gethostent_r(struct hostent *, char *, size_t, struct hostent **, int *);
+struct hostent	*getipnodebyaddr(const void *, size_t, int, int *);
+struct hostent	*getipnodebyname(const char *, int, int, int *);
+struct netent	*getnetbyaddr(uint32_t, int);
+int getnetbyaddr_r(uint32_t, int, struct netent *, char *, size_t, struct netent**, int *);
+struct netent	*getnetbyname(const char *);
+int getnetbyname_r(const char *, struct netent *, char *, size_t, struct netent **, int *);
+struct netent	*getnetent(void);
+int getnetent_r(struct netent *, char *, size_t, struct netent **, int *);
+int getnetgrent(char **, char **, char **);
+struct protoent	*getprotobyname(const char *);
+int getprotobyname_r(const char *, struct protoent *, char *, size_t, struct protoent **);
+struct protoent	*getprotobynumber(int);
+int getprotobynumber_r(int, struct protoent *, char *, size_t, struct protoent **);
+struct protoent	*getprotoent(void);
+int getprotoent_r(struct protoent *, char *, size_t, struct protoent **);
+struct servent	*getservbyname(const char *, const char *);
+struct servent	*getservbyport(int, const char *);
+struct servent	*getservent(void);
+void herror(const char *);
+const char	*hstrerror(int);
+int innetgr(const char *, const char *, const char *, const char *);
+void sethostent(int);
+void setnetent(int);
+void setprotoent(int);
+int getaddrinfo(const char *, const char *, const struct addrinfo *, struct addrinfo **);
+int getnameinfo(const struct sockaddr *, socklen_t, char *, size_t, char *, size_t, int);
+void freeaddrinfo(struct addrinfo *);
+const char	*gai_strerror(int);
+void setnetgrent(const char *);
+void setservent(int);
+
+#pragma GCC visibility pop
+__END_DECLS
+
+#endif /* !_NETDB_H_ */
diff --git a/ndk/platforms/android-20/include/netinet/ether.h b/ndk/platforms/android-L/include/netinet/ether.h
similarity index 100%
rename from ndk/platforms/android-20/include/netinet/ether.h
rename to ndk/platforms/android-L/include/netinet/ether.h
diff --git a/ndk/platforms/android-20/include/netinet/icmp6.h b/ndk/platforms/android-L/include/netinet/icmp6.h
similarity index 100%
rename from ndk/platforms/android-20/include/netinet/icmp6.h
rename to ndk/platforms/android-L/include/netinet/icmp6.h
diff --git a/ndk/platforms/android-20/include/netinet/if_ether.h b/ndk/platforms/android-L/include/netinet/if_ether.h
similarity index 100%
rename from ndk/platforms/android-20/include/netinet/if_ether.h
rename to ndk/platforms/android-L/include/netinet/if_ether.h
diff --git a/ndk/platforms/android-20/include/netinet/in.h b/ndk/platforms/android-L/include/netinet/in.h
similarity index 100%
rename from ndk/platforms/android-20/include/netinet/in.h
rename to ndk/platforms/android-L/include/netinet/in.h
diff --git a/ndk/platforms/android-20/include/netinet/in6.h b/ndk/platforms/android-L/include/netinet/in6.h
similarity index 100%
rename from ndk/platforms/android-20/include/netinet/in6.h
rename to ndk/platforms/android-L/include/netinet/in6.h
diff --git a/ndk/platforms/android-20/include/netinet/in_systm.h b/ndk/platforms/android-L/include/netinet/in_systm.h
similarity index 100%
rename from ndk/platforms/android-20/include/netinet/in_systm.h
rename to ndk/platforms/android-L/include/netinet/in_systm.h
diff --git a/ndk/platforms/android-20/include/netinet/ip.h b/ndk/platforms/android-L/include/netinet/ip.h
similarity index 100%
rename from ndk/platforms/android-20/include/netinet/ip.h
rename to ndk/platforms/android-L/include/netinet/ip.h
diff --git a/ndk/platforms/android-20/include/netinet/ip6.h b/ndk/platforms/android-L/include/netinet/ip6.h
similarity index 100%
rename from ndk/platforms/android-20/include/netinet/ip6.h
rename to ndk/platforms/android-L/include/netinet/ip6.h
diff --git a/ndk/platforms/android-20/include/netinet/ip_icmp.h b/ndk/platforms/android-L/include/netinet/ip_icmp.h
similarity index 100%
rename from ndk/platforms/android-20/include/netinet/ip_icmp.h
rename to ndk/platforms/android-L/include/netinet/ip_icmp.h
diff --git a/ndk/platforms/android-20/include/netinet/tcp.h b/ndk/platforms/android-L/include/netinet/tcp.h
similarity index 100%
rename from ndk/platforms/android-20/include/netinet/tcp.h
rename to ndk/platforms/android-L/include/netinet/tcp.h
diff --git a/ndk/platforms/android-20/include/netinet/udp.h b/ndk/platforms/android-L/include/netinet/udp.h
similarity index 100%
rename from ndk/platforms/android-20/include/netinet/udp.h
rename to ndk/platforms/android-L/include/netinet/udp.h
diff --git a/ndk/platforms/android-20/include/netpacket/packet.h b/ndk/platforms/android-L/include/netpacket/packet.h
similarity index 100%
rename from ndk/platforms/android-20/include/netpacket/packet.h
rename to ndk/platforms/android-L/include/netpacket/packet.h
diff --git a/ndk/platforms/android-20/include/nsswitch.h b/ndk/platforms/android-L/include/nsswitch.h
similarity index 100%
rename from ndk/platforms/android-20/include/nsswitch.h
rename to ndk/platforms/android-L/include/nsswitch.h
diff --git a/ndk/platforms/android-20/include/pathconf.h b/ndk/platforms/android-L/include/pathconf.h
similarity index 100%
rename from ndk/platforms/android-20/include/pathconf.h
rename to ndk/platforms/android-L/include/pathconf.h
diff --git a/ndk/platforms/android-20/include/paths.h b/ndk/platforms/android-L/include/paths.h
similarity index 100%
rename from ndk/platforms/android-20/include/paths.h
rename to ndk/platforms/android-L/include/paths.h
diff --git a/ndk/platforms/android-20/include/poll.h b/ndk/platforms/android-L/include/poll.h
similarity index 100%
rename from ndk/platforms/android-20/include/poll.h
rename to ndk/platforms/android-L/include/poll.h
diff --git a/ndk/platforms/android-L/include/pthread.h b/ndk/platforms/android-L/include/pthread.h
new file mode 100644
index 0000000..29caafc
--- /dev/null
+++ b/ndk/platforms/android-L/include/pthread.h
@@ -0,0 +1,284 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#ifndef _PTHREAD_H_
+#define _PTHREAD_H_
+
+#include <time.h>
+#include <signal.h>
+#include <sched.h>
+#include <limits.h>
+#include <sys/types.h>
+
+#if defined(__LP64__)
+  #define __RESERVED_INITIALIZER , {0}
+#else
+  #define __RESERVED_INITIALIZER
+#endif
+
+typedef struct {
+  int volatile value;
+#ifdef __LP64__
+  char __reserved[36];
+#endif
+} pthread_mutex_t;
+
+#define  __PTHREAD_MUTEX_INIT_VALUE            0
+#define  __PTHREAD_RECURSIVE_MUTEX_INIT_VALUE  0x4000
+#define  __PTHREAD_ERRORCHECK_MUTEX_INIT_VALUE 0x8000
+
+#define  PTHREAD_MUTEX_INITIALIZER             {__PTHREAD_MUTEX_INIT_VALUE __RESERVED_INITIALIZER}
+#define  PTHREAD_RECURSIVE_MUTEX_INITIALIZER   {__PTHREAD_RECURSIVE_MUTEX_INIT_VALUE __RESERVED_INITIALIZER}
+#define  PTHREAD_ERRORCHECK_MUTEX_INITIALIZER  {__PTHREAD_ERRORCHECK_MUTEX_INIT_VALUE __RESERVED_INITIALIZER}
+
+enum {
+    PTHREAD_MUTEX_NORMAL = 0,
+    PTHREAD_MUTEX_RECURSIVE = 1,
+    PTHREAD_MUTEX_ERRORCHECK = 2,
+
+    PTHREAD_MUTEX_ERRORCHECK_NP = PTHREAD_MUTEX_ERRORCHECK,
+    PTHREAD_MUTEX_RECURSIVE_NP  = PTHREAD_MUTEX_RECURSIVE,
+
+    PTHREAD_MUTEX_DEFAULT = PTHREAD_MUTEX_NORMAL
+};
+
+typedef struct {
+  int volatile value;
+#ifdef __LP64__
+  char __reserved[44];
+#endif
+} pthread_cond_t;
+
+#define PTHREAD_COND_INITIALIZER  {0 __RESERVED_INITIALIZER}
+
+typedef struct {
+  uint32_t flags;
+  void* stack_base;
+  size_t stack_size;
+  size_t guard_size;
+  int32_t sched_policy;
+  int32_t sched_priority;
+#ifdef __LP64__
+  char __reserved[16];
+#endif
+} pthread_attr_t;
+
+typedef long pthread_mutexattr_t;
+typedef long pthread_condattr_t;
+
+typedef long pthread_rwlockattr_t;
+
+typedef struct {
+#if !defined(__LP64__)
+  pthread_mutex_t __unused_lock;
+  pthread_cond_t __unused_cond;
+#endif
+  volatile int32_t state; // 0=unlock, -1=writer lock, +n=reader lock
+  volatile int32_t writer_thread_id;
+  volatile int32_t pending_readers;
+  volatile int32_t pending_writers;
+  int32_t attr;
+#ifdef __LP64__
+  char __reserved[36];
+#else
+  char __reserved[12];
+#endif
+
+} pthread_rwlock_t;
+
+#ifdef __LP64__
+  #define PTHREAD_RWLOCK_INITIALIZER  { 0, 0, 0, 0, 0, { 0 } }
+#else
+  #define PTHREAD_RWLOCK_INITIALIZER  { PTHREAD_MUTEX_INITIALIZER, PTHREAD_COND_INITIALIZER, 0, 0, 0, 0, 0, { 0 } }
+#endif
+
+typedef int pthread_key_t;
+typedef long pthread_t;
+
+typedef volatile int pthread_once_t;
+
+#define PTHREAD_ONCE_INIT 0
+
+#if defined(__LP64__)
+#define PTHREAD_STACK_MIN (4 * PAGE_SIZE)
+#else
+#define PTHREAD_STACK_MIN (2 * PAGE_SIZE)
+#endif
+
+#define PTHREAD_CREATE_DETACHED  0x00000001
+#define PTHREAD_CREATE_JOINABLE  0x00000000
+
+#define PTHREAD_PROCESS_PRIVATE  0
+#define PTHREAD_PROCESS_SHARED   1
+
+#define PTHREAD_SCOPE_SYSTEM     0
+#define PTHREAD_SCOPE_PROCESS    1
+
+__BEGIN_DECLS
+
+int pthread_atfork(void (*)(void), void (*)(void), void(*)(void));
+
+int pthread_attr_destroy(pthread_attr_t*) __nonnull((1));
+int pthread_attr_getdetachstate(const pthread_attr_t*, int*) __nonnull((1, 2));
+int pthread_attr_getguardsize(const pthread_attr_t*, size_t*) __nonnull((1, 2));
+int pthread_attr_getschedparam(const pthread_attr_t*, struct sched_param*) __nonnull((1, 2));
+int pthread_attr_getschedpolicy(const pthread_attr_t*, int*) __nonnull((1, 2));
+int pthread_attr_getscope(const pthread_attr_t*, int*) __nonnull((1, 2));
+int pthread_attr_getstack(const pthread_attr_t*, void**, size_t*) __nonnull((1, 2, 3));
+int pthread_attr_getstacksize(const pthread_attr_t*, size_t*) __nonnull((1, 2));
+int pthread_attr_init(pthread_attr_t*) __nonnull((1));
+int pthread_attr_setdetachstate(pthread_attr_t*, int) __nonnull((1));
+int pthread_attr_setguardsize(pthread_attr_t*, size_t) __nonnull((1));
+int pthread_attr_setschedparam(pthread_attr_t*, const struct sched_param*) __nonnull((1, 2));
+int pthread_attr_setschedpolicy(pthread_attr_t*, int) __nonnull((1));
+int pthread_attr_setscope(pthread_attr_t*, int) __nonnull((1));
+int pthread_attr_setstack(pthread_attr_t*, void*, size_t) __nonnull((1));
+int pthread_attr_setstacksize(pthread_attr_t*, size_t stack_size) __nonnull((1));
+
+int pthread_condattr_destroy(pthread_condattr_t*) __nonnull((1));
+int pthread_condattr_getclock(const pthread_condattr_t*, clockid_t*) __nonnull((1, 2));
+int pthread_condattr_getpshared(const pthread_condattr_t*, int*) __nonnull((1, 2));
+int pthread_condattr_init(pthread_condattr_t*) __nonnull((1));
+int pthread_condattr_setclock(pthread_condattr_t*, clockid_t) __nonnull((1));
+int pthread_condattr_setpshared(pthread_condattr_t*, int) __nonnull((1));
+
+int pthread_cond_broadcast(pthread_cond_t*) __nonnull((1));
+int pthread_cond_destroy(pthread_cond_t*) __nonnull((1));
+int pthread_cond_init(pthread_cond_t*, const pthread_condattr_t*) __nonnull((1));
+int pthread_cond_signal(pthread_cond_t*) __nonnull((1));
+int pthread_cond_timedwait(pthread_cond_t*, pthread_mutex_t*, const struct timespec*) __nonnull((1, 2, 3));
+int pthread_cond_wait(pthread_cond_t*, pthread_mutex_t*) __nonnull((1, 2));
+
+int pthread_create(pthread_t*, pthread_attr_t const*, void *(*)(void*), void*) __nonnull((1, 3));
+int pthread_detach(pthread_t);
+void pthread_exit(void*) __noreturn;
+
+int pthread_equal(pthread_t, pthread_t);
+
+int pthread_getattr_np(pthread_t, pthread_attr_t*) __nonnull((2));
+
+int pthread_getcpuclockid(pthread_t, clockid_t*) __nonnull((2));
+
+int pthread_getschedparam(pthread_t, int*, struct sched_param*) __nonnull((2, 3));
+
+void* pthread_getspecific(pthread_key_t);
+
+int pthread_join(pthread_t, void**);
+
+int pthread_key_create(pthread_key_t*, void (*)(void*)) __nonnull((1));
+int pthread_key_delete(pthread_key_t);
+
+int pthread_kill(pthread_t, int);
+
+int pthread_mutexattr_destroy(pthread_mutexattr_t*) __nonnull((1));
+int pthread_mutexattr_getpshared(const pthread_mutexattr_t*, int*) __nonnull((1, 2));
+int pthread_mutexattr_gettype(const pthread_mutexattr_t*, int*) __nonnull((1, 2));
+int pthread_mutexattr_init(pthread_mutexattr_t*) __nonnull((1));
+int pthread_mutexattr_setpshared(pthread_mutexattr_t*, int) __nonnull((1));
+int pthread_mutexattr_settype(pthread_mutexattr_t*, int) __nonnull((1));
+
+int pthread_mutex_destroy(pthread_mutex_t*) __nonnull((1));
+int pthread_mutex_init(pthread_mutex_t*, const pthread_mutexattr_t*) __nonnull((1));
+int pthread_mutex_lock(pthread_mutex_t*) __nonnull((1));
+int pthread_mutex_timedlock(pthread_mutex_t*, const struct timespec*) __nonnull((1, 2));
+int pthread_mutex_trylock(pthread_mutex_t*) __nonnull((1));
+int pthread_mutex_unlock(pthread_mutex_t*) __nonnull((1));
+
+int pthread_once(pthread_once_t*, void (*)(void)) __nonnull((1, 2));
+
+int pthread_rwlockattr_destroy(pthread_rwlockattr_t*) __nonnull((1));
+int pthread_rwlockattr_getpshared(const pthread_rwlockattr_t*, int*) __nonnull((1, 2));
+int pthread_rwlockattr_init(pthread_rwlockattr_t*) __nonnull((1));
+int pthread_rwlockattr_setpshared(pthread_rwlockattr_t*, int) __nonnull((1));
+
+int pthread_rwlock_destroy(pthread_rwlock_t*) __nonnull((1));
+int pthread_rwlock_init(pthread_rwlock_t*, const pthread_rwlockattr_t*) __nonnull((1));
+int pthread_rwlock_rdlock(pthread_rwlock_t*) __nonnull((1));
+int pthread_rwlock_timedrdlock(pthread_rwlock_t*, const struct timespec*) __nonnull((1, 2));
+int pthread_rwlock_timedwrlock(pthread_rwlock_t*, const struct timespec*) __nonnull((1, 2));
+int pthread_rwlock_tryrdlock(pthread_rwlock_t*) __nonnull((1));
+int pthread_rwlock_trywrlock(pthread_rwlock_t*) __nonnull((1));
+int pthread_rwlock_unlock(pthread_rwlock_t *rwlock) __nonnull((1));
+int pthread_rwlock_wrlock(pthread_rwlock_t*) __nonnull((1));
+
+pthread_t pthread_self(void) __pure2;
+
+int pthread_setname_np(pthread_t, const char*) __nonnull((2));
+
+int pthread_setschedparam(pthread_t, int, const struct sched_param*) __nonnull((3));
+
+int pthread_setspecific(pthread_key_t, const void*);
+
+int pthread_sigmask(int, const sigset_t*, sigset_t*);
+
+typedef void (*__pthread_cleanup_func_t)(void*);
+
+typedef struct __pthread_cleanup_t {
+  struct __pthread_cleanup_t*   __cleanup_prev;
+  __pthread_cleanup_func_t      __cleanup_routine;
+  void*                         __cleanup_arg;
+} __pthread_cleanup_t;
+
+extern void __pthread_cleanup_push(__pthread_cleanup_t* c, __pthread_cleanup_func_t, void*);
+extern void __pthread_cleanup_pop(__pthread_cleanup_t*, int);
+
+/* Believe or not, the definitions of pthread_cleanup_push and
+ * pthread_cleanup_pop below are correct. Posix states that these
+ * can be implemented as macros that might introduce opening and
+ * closing braces, and that using setjmp/longjmp/return/break/continue
+ * between them results in undefined behavior.
+ */
+#define  pthread_cleanup_push(routine, arg)                      \
+    do {                                                         \
+        __pthread_cleanup_t  __cleanup;                          \
+        __pthread_cleanup_push( &__cleanup, (routine), (arg) );  \
+
+#define  pthread_cleanup_pop(execute)                  \
+        __pthread_cleanup_pop( &__cleanup, (execute)); \
+    } while (0);                                       \
+
+
+#if !defined(__LP64__)
+
+// Bionic additions that are deprecated even in the 32-bit ABI.
+//
+// TODO: Remove them once chromium_org / NFC have switched over.
+int pthread_cond_timedwait_monotonic_np(pthread_cond_t*, pthread_mutex_t*, const struct timespec*);
+int pthread_cond_timedwait_monotonic(pthread_cond_t*, pthread_mutex_t*, const struct timespec*);
+
+int pthread_cond_timedwait_relative_np(pthread_cond_t*, pthread_mutex_t*, const struct timespec*) /* TODO: __attribute__((deprecated("use pthread_cond_timedwait instead")))*/;
+#define HAVE_PTHREAD_COND_TIMEDWAIT_RELATIVE 1 /* TODO: stop defining this to push LP32 off this API sooner. */
+int pthread_cond_timeout_np(pthread_cond_t*, pthread_mutex_t*, unsigned) /* TODO: __attribute__((deprecated("use pthread_cond_timedwait instead")))*/;
+
+int pthread_mutex_lock_timeout_np(pthread_mutex_t*, unsigned) __attribute__((deprecated("use pthread_mutex_timedlock instead")));
+
+#endif /* !defined(__LP64__) */
+
+__END_DECLS
+
+#endif /* _PTHREAD_H_ */
diff --git a/ndk/platforms/android-20/include/pwd.h b/ndk/platforms/android-L/include/pwd.h
similarity index 100%
rename from ndk/platforms/android-20/include/pwd.h
rename to ndk/platforms/android-L/include/pwd.h
diff --git a/ndk/platforms/android-20/include/regex.h b/ndk/platforms/android-L/include/regex.h
similarity index 100%
rename from ndk/platforms/android-20/include/regex.h
rename to ndk/platforms/android-L/include/regex.h
diff --git a/ndk/platforms/android-L/include/resolv.h b/ndk/platforms/android-L/include/resolv.h
new file mode 100644
index 0000000..c8899ed
--- /dev/null
+++ b/ndk/platforms/android-L/include/resolv.h
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+#ifndef _RESOLV_H_
+#define _RESOLV_H_
+
+#include <sys/param.h>
+#include <sys/types.h>
+#include <sys/cdefs.h>
+#include <sys/socket.h>
+#include <stdio.h>
+#include <arpa/nameser.h>
+#include <netinet/in.h>
+
+__BEGIN_DECLS
+#pragma GCC visibility push(default)
+
+struct res_state;
+
+extern struct __res_state *__res_state(void);
+#define _res (*__res_state())
+
+#define b64_ntop __b64_ntop
+#define b64_pton __b64_pton
+extern int b64_ntop(u_char const*, size_t, char*, size_t);
+extern int b64_pton(char const*, u_char*, size_t);
+
+#define dn_comp __dn_comp
+extern int dn_comp(const char*, u_char*, int, u_char**, u_char**);
+extern int dn_expand(const u_char*, const u_char*, const u_char*, char*, int);
+
+#pragma GCC visibility pop
+__END_DECLS
+
+#endif /* _RESOLV_H_ */
diff --git a/ndk/platforms/android-20/include/sched.h b/ndk/platforms/android-L/include/sched.h
similarity index 100%
rename from ndk/platforms/android-20/include/sched.h
rename to ndk/platforms/android-L/include/sched.h
diff --git a/ndk/platforms/android-20/include/search.h b/ndk/platforms/android-L/include/search.h
similarity index 100%
rename from ndk/platforms/android-20/include/search.h
rename to ndk/platforms/android-L/include/search.h
diff --git a/ndk/platforms/android-20/include/semaphore.h b/ndk/platforms/android-L/include/semaphore.h
similarity index 100%
rename from ndk/platforms/android-20/include/semaphore.h
rename to ndk/platforms/android-L/include/semaphore.h
diff --git a/ndk/platforms/android-L/include/setjmp.h b/ndk/platforms/android-L/include/setjmp.h
new file mode 100644
index 0000000..02b06f5
--- /dev/null
+++ b/ndk/platforms/android-L/include/setjmp.h
@@ -0,0 +1,62 @@
+/*	$OpenBSD: setjmp.h,v 1.5 2005/12/13 00:35:22 millert Exp $	*/
+/*	$NetBSD: setjmp.h,v 1.11 1994/12/20 10:35:44 cgd Exp $	*/
+
+/*-
+ * Copyright (c) 1990, 1993
+ *	The Regents of the University of California.  All rights reserved.
+ * (c) UNIX System Laboratories, Inc.
+ * All or some portions of this file are derived from material licensed
+ * to the University of California by American Telephone and Telegraph
+ * Co. or Unix System Laboratories, Inc. and are reproduced herein with
+ * the permission of UNIX System Laboratories, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ *	@(#)setjmp.h	8.2 (Berkeley) 1/21/94
+ */
+
+#ifndef _SETJMP_H_
+#define _SETJMP_H_
+
+#include <sys/cdefs.h>
+#include <machine/setjmp.h>
+
+typedef long sigjmp_buf[_JBLEN + 1];
+typedef long jmp_buf[_JBLEN];
+
+__BEGIN_DECLS
+
+int     _setjmp(jmp_buf);
+void    _longjmp(jmp_buf, int);
+
+int     setjmp(jmp_buf);
+void    longjmp(jmp_buf, int);
+
+int     sigsetjmp(sigjmp_buf, int);
+void    siglongjmp(sigjmp_buf, int);
+
+__END_DECLS
+
+#endif /* !_SETJMP_H_ */
diff --git a/ndk/platforms/android-20/include/sgidefs.h b/ndk/platforms/android-L/include/sgidefs.h
similarity index 100%
rename from ndk/platforms/android-20/include/sgidefs.h
rename to ndk/platforms/android-L/include/sgidefs.h
diff --git a/ndk/platforms/android-20/include/sgtty.h b/ndk/platforms/android-L/include/sgtty.h
similarity index 100%
rename from ndk/platforms/android-20/include/sgtty.h
rename to ndk/platforms/android-L/include/sgtty.h
diff --git a/ndk/platforms/android-20/include/sha1.h b/ndk/platforms/android-L/include/sha1.h
similarity index 100%
rename from ndk/platforms/android-20/include/sha1.h
rename to ndk/platforms/android-L/include/sha1.h
diff --git a/ndk/platforms/android-L/include/signal.h b/ndk/platforms/android-L/include/signal.h
new file mode 100644
index 0000000..0063b24
--- /dev/null
+++ b/ndk/platforms/android-L/include/signal.h
@@ -0,0 +1,130 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#ifndef _SIGNAL_H_
+#define _SIGNAL_H_
+
+#include <errno.h>
+#include <sys/cdefs.h>
+#include <limits.h>		/* For LONG_BIT */
+#include <string.h>		/* For memset() */
+#include <sys/types.h>
+
+#if defined(__LP64__) || defined(__mips__)
+/* For 64-bit (and mips), the kernel's struct sigaction doesn't match the POSIX one,
+ * so we need to expose our own and translate behind the scenes. */
+#  define sigaction __kernel_sigaction
+#  include <linux/signal.h>
+#  undef sigaction
+#else
+/* For 32-bit, we're stuck with the definitions we already shipped,
+ * even though they contain a sigset_t that's too small. */
+#  include <linux/signal.h>
+#endif
+
+__BEGIN_DECLS
+
+typedef int sig_atomic_t;
+
+/* The arm and x86 kernel header files don't define _NSIG. */
+#ifndef _KERNEL__NSIG
+#define _KERNEL__NSIG 64
+#endif
+
+/* Userspace's NSIG is the kernel's _NSIG + 1. */
+#define _NSIG (_KERNEL__NSIG + 1)
+#define NSIG _NSIG
+
+/* We take a few real-time signals for ourselves. May as well use the same names as glibc. */
+#define SIGRTMIN (__libc_current_sigrtmin())
+#define SIGRTMAX (__libc_current_sigrtmax())
+extern int __libc_current_sigrtmin(void);
+extern int __libc_current_sigrtmax(void);
+
+extern const char* const sys_siglist[];
+extern const char* const sys_signame[]; /* BSD compatibility. */
+
+typedef __sighandler_t sig_t; /* BSD compatibility. */
+typedef __sighandler_t sighandler_t; /* glibc compatibility. */
+
+#define si_timerid si_tid /* glibc compatibility. */
+
+#if defined(__LP64__)
+
+struct sigaction {
+  unsigned int sa_flags;
+  union {
+    sighandler_t sa_handler;
+    void (*sa_sigaction)(int, struct siginfo*, void*);
+  };
+  sigset_t sa_mask;
+  void (*sa_restorer)(void);
+};
+
+#elif defined(__mips__)
+
+struct sigaction {
+  unsigned int sa_flags;
+  union {
+    sighandler_t sa_handler;
+    void (*sa_sigaction) (int, struct siginfo*, void*);
+  };
+  sigset_t sa_mask;
+};
+
+#endif
+
+extern int sigaction(int, const struct sigaction*, struct sigaction*);
+
+extern sighandler_t signal(int, sighandler_t);
+
+extern int siginterrupt(int, int);
+
+extern int sigaddset(sigset_t*, int);
+extern int sigdelset(sigset_t*, int);
+extern int sigemptyset(sigset_t*);
+extern int sigfillset(sigset_t*);
+extern int sigismember(const sigset_t*, int);
+
+extern int sigpending(sigset_t*) __nonnull((1));
+extern int sigprocmask(int, const sigset_t*, sigset_t*);
+extern int sigsuspend(const sigset_t*) __nonnull((1));
+extern int sigwait(const sigset_t*, int*) __nonnull((1, 2));
+
+extern int raise(int);
+extern int kill(pid_t, int);
+extern int killpg(int, int);
+
+extern int sigaltstack(const stack_t*, stack_t*);
+
+extern void psiginfo(const siginfo_t*, const char*);
+extern void psignal(int, const char*);
+
+__END_DECLS
+
+#endif /* _SIGNAL_H_ */
diff --git a/ndk/platforms/android-L/include/stdatomic.h b/ndk/platforms/android-L/include/stdatomic.h
new file mode 100644
index 0000000..43ec753
--- /dev/null
+++ b/ndk/platforms/android-L/include/stdatomic.h
@@ -0,0 +1,420 @@
+/*-
+ * Copyright (c) 2011 Ed Schouten <ed@FreeBSD.org>
+ *                    David Chisnall <theraven@FreeBSD.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#ifndef _STDATOMIC_H_
+#define	_STDATOMIC_H_
+
+#include <sys/cdefs.h>
+#include <sys/types.h>
+#include <stdbool.h>
+
+#if __has_extension(c_atomic) || __has_extension(cxx_atomic)
+#define	__CLANG_ATOMICS
+#elif __GNUC_PREREQ__(4, 7)
+#define	__GNUC_ATOMICS
+#elif defined(__GNUC__)
+#define	__SYNC_ATOMICS
+#else
+#error "stdatomic.h does not support your compiler"
+#endif
+
+/*
+ * 7.17.1 Atomic lock-free macros.
+ */
+
+#ifdef __GCC_ATOMIC_BOOL_LOCK_FREE
+#define	ATOMIC_BOOL_LOCK_FREE		__GCC_ATOMIC_BOOL_LOCK_FREE
+#endif
+#ifdef __GCC_ATOMIC_CHAR_LOCK_FREE
+#define	ATOMIC_CHAR_LOCK_FREE		__GCC_ATOMIC_CHAR_LOCK_FREE
+#endif
+#ifdef __GCC_ATOMIC_CHAR16_T_LOCK_FREE
+#define	ATOMIC_CHAR16_T_LOCK_FREE	__GCC_ATOMIC_CHAR16_T_LOCK_FREE
+#endif
+#ifdef __GCC_ATOMIC_CHAR32_T_LOCK_FREE
+#define	ATOMIC_CHAR32_T_LOCK_FREE	__GCC_ATOMIC_CHAR32_T_LOCK_FREE
+#endif
+#ifdef __GCC_ATOMIC_WCHAR_T_LOCK_FREE
+#define	ATOMIC_WCHAR_T_LOCK_FREE	__GCC_ATOMIC_WCHAR_T_LOCK_FREE
+#endif
+#ifdef __GCC_ATOMIC_SHORT_LOCK_FREE
+#define	ATOMIC_SHORT_LOCK_FREE		__GCC_ATOMIC_SHORT_LOCK_FREE
+#endif
+#ifdef __GCC_ATOMIC_INT_LOCK_FREE
+#define	ATOMIC_INT_LOCK_FREE		__GCC_ATOMIC_INT_LOCK_FREE
+#endif
+#ifdef __GCC_ATOMIC_LONG_LOCK_FREE
+#define	ATOMIC_LONG_LOCK_FREE		__GCC_ATOMIC_LONG_LOCK_FREE
+#endif
+#ifdef __GCC_ATOMIC_LLONG_LOCK_FREE
+#define	ATOMIC_LLONG_LOCK_FREE		__GCC_ATOMIC_LLONG_LOCK_FREE
+#endif
+#ifdef __GCC_ATOMIC_POINTER_LOCK_FREE
+#define	ATOMIC_POINTER_LOCK_FREE	__GCC_ATOMIC_POINTER_LOCK_FREE
+#endif
+
+/*
+ * 7.17.2 Initialization.
+ */
+
+#if defined(__CLANG_ATOMICS)
+#define	ATOMIC_VAR_INIT(value)		(value)
+#define	atomic_init(obj, value)		__c11_atomic_init(obj, value)
+#else
+#define	ATOMIC_VAR_INIT(value)		{ .__val = (value) }
+#define	atomic_init(obj, value)		((void)((obj)->__val = (value)))
+#endif
+
+/*
+ * Clang and recent GCC both provide predefined macros for the memory
+ * orderings.  If we are using a compiler that doesn't define them, use the
+ * clang values - these will be ignored in the fallback path.
+ */
+
+#ifndef __ATOMIC_RELAXED
+#define __ATOMIC_RELAXED		0
+#endif
+#ifndef __ATOMIC_CONSUME
+#define __ATOMIC_CONSUME		1
+#endif
+#ifndef __ATOMIC_ACQUIRE
+#define __ATOMIC_ACQUIRE		2
+#endif
+#ifndef __ATOMIC_RELEASE
+#define __ATOMIC_RELEASE		3
+#endif
+#ifndef __ATOMIC_ACQ_REL
+#define __ATOMIC_ACQ_REL		4
+#endif
+#ifndef __ATOMIC_SEQ_CST
+#define __ATOMIC_SEQ_CST		5
+#endif
+
+/*
+ * 7.17.3 Order and consistency.
+ *
+ * The memory_order_* constants that denote the barrier behaviour of the
+ * atomic operations.
+ */
+
+typedef enum {
+	memory_order_relaxed = __ATOMIC_RELAXED,
+	memory_order_consume = __ATOMIC_CONSUME,
+	memory_order_acquire = __ATOMIC_ACQUIRE,
+	memory_order_release = __ATOMIC_RELEASE,
+	memory_order_acq_rel = __ATOMIC_ACQ_REL,
+	memory_order_seq_cst = __ATOMIC_SEQ_CST
+} memory_order;
+
+/*
+ * 7.17.4 Fences.
+ */
+
+static __inline void
+atomic_thread_fence(memory_order __order __unused)
+{
+
+#ifdef __CLANG_ATOMICS
+	__c11_atomic_thread_fence(__order);
+#elif defined(__GNUC_ATOMICS)
+	__atomic_thread_fence(__order);
+#else
+	__sync_synchronize();
+#endif
+}
+
+static __inline void
+atomic_signal_fence(memory_order __order __unused)
+{
+
+#ifdef __CLANG_ATOMICS
+	__c11_atomic_signal_fence(__order);
+#elif defined(__GNUC_ATOMICS)
+	__atomic_signal_fence(__order);
+#else
+	__asm volatile ("" ::: "memory");
+#endif
+}
+
+/*
+ * 7.17.5 Lock-free property.
+ */
+
+#if defined(_KERNEL)
+/* Atomics in kernelspace are always lock-free. */
+#define	atomic_is_lock_free(obj) \
+	((void)(obj), (_Bool)1)
+#elif defined(__CLANG_ATOMICS)
+#define	atomic_is_lock_free(obj) \
+	__atomic_is_lock_free(sizeof(*(obj)), obj)
+#elif defined(__GNUC_ATOMICS)
+#define	atomic_is_lock_free(obj) \
+	__atomic_is_lock_free(sizeof((obj)->__val), &(obj)->__val)
+#else
+#define	atomic_is_lock_free(obj) \
+	((void)(obj), sizeof((obj)->__val) <= sizeof(void *))
+#endif
+
+/*
+ * 7.17.6 Atomic integer types.
+ */
+
+#if !__has_extension(c_atomic) && !__has_extension(cxx_atomic)
+/*
+ * No native support for _Atomic(). Place object in structure to prevent
+ * most forms of direct non-atomic access.
+ */
+#define _Atomic(T)              struct { T volatile __val; }
+#endif
+
+typedef _Atomic(bool)			atomic_bool;
+typedef _Atomic(char)			atomic_char;
+typedef _Atomic(signed char)		atomic_schar;
+typedef _Atomic(unsigned char)		atomic_uchar;
+typedef _Atomic(short)			atomic_short;
+typedef _Atomic(unsigned short)		atomic_ushort;
+typedef _Atomic(int)			atomic_int;
+typedef _Atomic(unsigned int)		atomic_uint;
+typedef _Atomic(long)			atomic_long;
+typedef _Atomic(unsigned long)		atomic_ulong;
+typedef _Atomic(long long)		atomic_llong;
+typedef _Atomic(unsigned long long)	atomic_ullong;
+typedef _Atomic(char16_t)		atomic_char16_t;
+typedef _Atomic(char32_t)		atomic_char32_t;
+typedef _Atomic(wchar_t)		atomic_wchar_t;
+typedef _Atomic(int_least8_t)		atomic_int_least8_t;
+typedef _Atomic(uint_least8_t)	atomic_uint_least8_t;
+typedef _Atomic(int_least16_t)	atomic_int_least16_t;
+typedef _Atomic(uint_least16_t)	atomic_uint_least16_t;
+typedef _Atomic(int_least32_t)	atomic_int_least32_t;
+typedef _Atomic(uint_least32_t)	atomic_uint_least32_t;
+typedef _Atomic(int_least64_t)	atomic_int_least64_t;
+typedef _Atomic(uint_least64_t)	atomic_uint_least64_t;
+typedef _Atomic(int_fast8_t)		atomic_int_fast8_t;
+typedef _Atomic(uint_fast8_t)		atomic_uint_fast8_t;
+typedef _Atomic(int_fast16_t)		atomic_int_fast16_t;
+typedef _Atomic(uint_fast16_t)	atomic_uint_fast16_t;
+typedef _Atomic(int_fast32_t)		atomic_int_fast32_t;
+typedef _Atomic(uint_fast32_t)	atomic_uint_fast32_t;
+typedef _Atomic(int_fast64_t)		atomic_int_fast64_t;
+typedef _Atomic(uint_fast64_t)	atomic_uint_fast64_t;
+typedef _Atomic(intptr_t)		atomic_intptr_t;
+typedef _Atomic(uintptr_t)		atomic_uintptr_t;
+typedef _Atomic(size_t)		atomic_size_t;
+typedef _Atomic(ptrdiff_t)		atomic_ptrdiff_t;
+typedef _Atomic(intmax_t)		atomic_intmax_t;
+typedef _Atomic(uintmax_t)		atomic_uintmax_t;
+
+/*
+ * 7.17.7 Operations on atomic types.
+ */
+
+/*
+ * Compiler-specific operations.
+ */
+
+#if defined(__CLANG_ATOMICS)
+#define	atomic_compare_exchange_strong_explicit(object, expected,	\
+    desired, success, failure)						\
+	__c11_atomic_compare_exchange_strong(object, expected, desired,	\
+	    success, failure)
+#define	atomic_compare_exchange_weak_explicit(object, expected,		\
+    desired, success, failure)						\
+	__c11_atomic_compare_exchange_weak(object, expected, desired,	\
+	    success, failure)
+#define	atomic_exchange_explicit(object, desired, order)		\
+	__c11_atomic_exchange(object, desired, order)
+#define	atomic_fetch_add_explicit(object, operand, order)		\
+	__c11_atomic_fetch_add(object, operand, order)
+#define	atomic_fetch_and_explicit(object, operand, order)		\
+	__c11_atomic_fetch_and(object, operand, order)
+#define	atomic_fetch_or_explicit(object, operand, order)		\
+	__c11_atomic_fetch_or(object, operand, order)
+#define	atomic_fetch_sub_explicit(object, operand, order)		\
+	__c11_atomic_fetch_sub(object, operand, order)
+#define	atomic_fetch_xor_explicit(object, operand, order)		\
+	__c11_atomic_fetch_xor(object, operand, order)
+#define	atomic_load_explicit(object, order)				\
+	__c11_atomic_load(object, order)
+#define	atomic_store_explicit(object, desired, order)			\
+	__c11_atomic_store(object, desired, order)
+#elif defined(__GNUC_ATOMICS)
+#define	atomic_compare_exchange_strong_explicit(object, expected,	\
+    desired, success, failure)						\
+	__atomic_compare_exchange_n(&(object)->__val, expected,		\
+	    desired, 0, success, failure)
+#define	atomic_compare_exchange_weak_explicit(object, expected,		\
+    desired, success, failure)						\
+	__atomic_compare_exchange_n(&(object)->__val, expected,		\
+	    desired, 1, success, failure)
+#define	atomic_exchange_explicit(object, desired, order)		\
+	__atomic_exchange_n(&(object)->__val, desired, order)
+#define	atomic_fetch_add_explicit(object, operand, order)		\
+	__atomic_fetch_add(&(object)->__val, operand, order)
+#define	atomic_fetch_and_explicit(object, operand, order)		\
+	__atomic_fetch_and(&(object)->__val, operand, order)
+#define	atomic_fetch_or_explicit(object, operand, order)		\
+	__atomic_fetch_or(&(object)->__val, operand, order)
+#define	atomic_fetch_sub_explicit(object, operand, order)		\
+	__atomic_fetch_sub(&(object)->__val, operand, order)
+#define	atomic_fetch_xor_explicit(object, operand, order)		\
+	__atomic_fetch_xor(&(object)->__val, operand, order)
+#define	atomic_load_explicit(object, order)				\
+	__atomic_load_n(&(object)->__val, order)
+#define	atomic_store_explicit(object, desired, order)			\
+	__atomic_store_n(&(object)->__val, desired, order)
+#else
+#define	__atomic_apply_stride(object, operand) \
+	(((__typeof__((object)->__val))0) + (operand))
+#define	atomic_compare_exchange_strong_explicit(object, expected,	\
+    desired, success, failure)	__extension__ ({			\
+	__typeof__(expected) __ep = (expected);				\
+	__typeof__(*__ep) __e = *__ep;					\
+	(void)(success); (void)(failure);				\
+	(bool)((*__ep = __sync_val_compare_and_swap(&(object)->__val,	\
+	    __e, desired)) == __e);					\
+})
+#define	atomic_compare_exchange_weak_explicit(object, expected,		\
+    desired, success, failure)						\
+	atomic_compare_exchange_strong_explicit(object, expected,	\
+		desired, success, failure)
+#if __has_builtin(__sync_swap)
+/* Clang provides a full-barrier atomic exchange - use it if available. */
+#define	atomic_exchange_explicit(object, desired, order)		\
+	((void)(order), __sync_swap(&(object)->__val, desired))
+#else
+/*
+ * __sync_lock_test_and_set() is only an acquire barrier in theory (although in
+ * practice it is usually a full barrier) so we need an explicit barrier before
+ * it.
+ */
+#define	atomic_exchange_explicit(object, desired, order)		\
+__extension__ ({							\
+	__typeof__(object) __o = (object);				\
+	__typeof__(desired) __d = (desired);				\
+	(void)(order);							\
+	__sync_synchronize();						\
+	__sync_lock_test_and_set(&(__o)->__val, __d);			\
+})
+#endif
+#define	atomic_fetch_add_explicit(object, operand, order)		\
+	((void)(order), __sync_fetch_and_add(&(object)->__val,		\
+	    __atomic_apply_stride(object, operand)))
+#define	atomic_fetch_and_explicit(object, operand, order)		\
+	((void)(order), __sync_fetch_and_and(&(object)->__val, operand))
+#define	atomic_fetch_or_explicit(object, operand, order)		\
+	((void)(order), __sync_fetch_and_or(&(object)->__val, operand))
+#define	atomic_fetch_sub_explicit(object, operand, order)		\
+	((void)(order), __sync_fetch_and_sub(&(object)->__val,		\
+	    __atomic_apply_stride(object, operand)))
+#define	atomic_fetch_xor_explicit(object, operand, order)		\
+	((void)(order), __sync_fetch_and_xor(&(object)->__val, operand))
+#define	atomic_load_explicit(object, order)				\
+	((void)(order), __sync_fetch_and_add(&(object)->__val, 0))
+#define	atomic_store_explicit(object, desired, order)			\
+	((void)atomic_exchange_explicit(object, desired, order))
+#endif
+
+/*
+ * Convenience functions.
+ *
+ * Don't provide these in kernel space. In kernel space, we should be
+ * disciplined enough to always provide explicit barriers.
+ */
+
+#ifndef _KERNEL
+#define	atomic_compare_exchange_strong(object, expected, desired)	\
+	atomic_compare_exchange_strong_explicit(object, expected,	\
+	    desired, memory_order_seq_cst, memory_order_seq_cst)
+#define	atomic_compare_exchange_weak(object, expected, desired)		\
+	atomic_compare_exchange_weak_explicit(object, expected,		\
+	    desired, memory_order_seq_cst, memory_order_seq_cst)
+#define	atomic_exchange(object, desired)				\
+	atomic_exchange_explicit(object, desired, memory_order_seq_cst)
+#define	atomic_fetch_add(object, operand)				\
+	atomic_fetch_add_explicit(object, operand, memory_order_seq_cst)
+#define	atomic_fetch_and(object, operand)				\
+	atomic_fetch_and_explicit(object, operand, memory_order_seq_cst)
+#define	atomic_fetch_or(object, operand)				\
+	atomic_fetch_or_explicit(object, operand, memory_order_seq_cst)
+#define	atomic_fetch_sub(object, operand)				\
+	atomic_fetch_sub_explicit(object, operand, memory_order_seq_cst)
+#define	atomic_fetch_xor(object, operand)				\
+	atomic_fetch_xor_explicit(object, operand, memory_order_seq_cst)
+#define	atomic_load(object)						\
+	atomic_load_explicit(object, memory_order_seq_cst)
+#define	atomic_store(object, desired)					\
+	atomic_store_explicit(object, desired, memory_order_seq_cst)
+#endif /* !_KERNEL */
+
+/*
+ * 7.17.8 Atomic flag type and operations.
+ *
+ * XXX: Assume atomic_bool can be used as an atomic_flag. Is there some
+ * kind of compiler built-in type we could use?
+ */
+
+typedef struct {
+	atomic_bool	__flag;
+} atomic_flag;
+
+#define	ATOMIC_FLAG_INIT		{ ATOMIC_VAR_INIT(0) }
+
+static __inline bool
+atomic_flag_test_and_set_explicit(volatile atomic_flag *__object,
+    memory_order __order)
+{
+	return (atomic_exchange_explicit(&__object->__flag, 1, __order));
+}
+
+static __inline void
+atomic_flag_clear_explicit(volatile atomic_flag *__object, memory_order __order)
+{
+
+	atomic_store_explicit(&__object->__flag, 0, __order);
+}
+
+#ifndef _KERNEL
+static __inline bool
+atomic_flag_test_and_set(volatile atomic_flag *__object)
+{
+
+	return (atomic_flag_test_and_set_explicit(__object,
+	    memory_order_seq_cst));
+}
+
+static __inline void
+atomic_flag_clear(volatile atomic_flag *__object)
+{
+
+	atomic_flag_clear_explicit(__object, memory_order_seq_cst);
+}
+#endif /* !_KERNEL */
+
+#endif /* !_STDATOMIC_H_ */
diff --git a/ndk/platforms/android-L/include/stdint.h b/ndk/platforms/android-L/include/stdint.h
new file mode 100644
index 0000000..9f588f7
--- /dev/null
+++ b/ndk/platforms/android-L/include/stdint.h
@@ -0,0 +1,229 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#ifndef _STDINT_H
+#define _STDINT_H
+
+#include <stddef.h>
+#include <machine/wchar_limits.h>
+
+typedef __signed char __int8_t;
+typedef unsigned char __uint8_t;
+typedef short __int16_t;
+typedef unsigned short __uint16_t;
+typedef int __int32_t;
+typedef unsigned int __uint32_t;
+#if __LP64__
+typedef long __int64_t;
+typedef unsigned long __uint64_t;
+#else
+typedef long long __int64_t;
+typedef unsigned long long __uint64_t;
+#endif
+
+#if __LP64__
+typedef long __intptr_t;
+typedef unsigned long __uintptr_t;
+#else
+typedef int __intptr_t;
+typedef unsigned int __uintptr_t;
+#endif
+
+typedef __int8_t      int8_t;
+typedef __uint8_t     uint8_t;
+
+typedef __int16_t     int16_t;
+typedef __uint16_t    uint16_t;
+
+typedef __int32_t     int32_t;
+typedef __uint32_t    uint32_t;
+
+typedef __int64_t     int64_t;
+typedef __uint64_t    uint64_t;
+
+typedef __intptr_t    intptr_t;
+typedef __uintptr_t   uintptr_t;
+
+typedef int8_t        int_least8_t;
+typedef uint8_t       uint_least8_t;
+
+typedef int16_t       int_least16_t;
+typedef uint16_t      uint_least16_t;
+
+typedef int32_t       int_least32_t;
+typedef uint32_t      uint_least32_t;
+
+typedef int64_t       int_least64_t;
+typedef uint64_t      uint_least64_t;
+
+typedef int8_t        int_fast8_t;
+typedef uint8_t       uint_fast8_t;
+
+typedef int64_t       int_fast64_t;
+typedef uint64_t      uint_fast64_t;
+
+#if defined(__LP64__)
+typedef int64_t       int_fast16_t;
+typedef uint64_t      uint_fast16_t;
+typedef int64_t       int_fast32_t;
+typedef uint64_t      uint_fast32_t;
+#else
+typedef int32_t       int_fast16_t;
+typedef uint32_t      uint_fast16_t;
+typedef int32_t       int_fast32_t;
+typedef uint32_t      uint_fast32_t;
+#endif
+
+typedef uint64_t      uintmax_t;
+typedef int64_t       intmax_t;
+
+/* Keep the kernel from trying to define these types... */
+#define __BIT_TYPES_DEFINED__
+
+#define INT8_C(c)         c
+#define INT_LEAST8_C(c)   INT8_C(c)
+#define INT_FAST8_C(c)    INT8_C(c)
+
+#define UINT8_C(c)        c
+#define UINT_LEAST8_C(c)  UINT8_C(c)
+#define UINT_FAST8_C(c)   UINT8_C(c)
+
+#define INT16_C(c)        c
+#define INT_LEAST16_C(c)  INT16_C(c)
+#define INT_FAST16_C(c)   INT32_C(c)
+
+#define UINT16_C(c)       c
+#define UINT_LEAST16_C(c) UINT16_C(c)
+#define UINT_FAST16_C(c)  UINT32_C(c)
+#define INT32_C(c)        c
+#define INT_LEAST32_C(c)  INT32_C(c)
+#define INT_FAST32_C(c)   INT32_C(c)
+
+#define UINT32_C(c)       c ## U
+#define UINT_LEAST32_C(c) UINT32_C(c)
+#define UINT_FAST32_C(c)  UINT32_C(c)
+#define INT_LEAST64_C(c)  INT64_C(c)
+#define INT_FAST64_C(c)   INT64_C(c)
+
+#define UINT_LEAST64_C(c) UINT64_C(c)
+#define UINT_FAST64_C(c)  UINT64_C(c)
+
+#define INTMAX_C(c)       INT64_C(c)
+#define UINTMAX_C(c)      UINT64_C(c)
+
+#if defined(__LP64__)
+#  define INT64_C(c)      c ## L
+#  define UINT64_C(c)     c ## UL
+#  define INTPTR_C(c)     INT64_C(c)
+#  define UINTPTR_C(c)    UINT64_C(c)
+#  define PTRDIFF_C(c)    INT64_C(c)
+#else
+#  define INT64_C(c)      c ## LL
+#  define UINT64_C(c)     c ## ULL
+#  define INTPTR_C(c)     INT32_C(c)
+#  define UINTPTR_C(c)    UINT32_C(c)
+#  define PTRDIFF_C(c)    INT32_C(c)
+#endif
+
+#define INT8_MIN         (-128)
+#define INT8_MAX         (127)
+#define INT_LEAST8_MIN   INT8_MIN
+#define INT_LEAST8_MAX   INT8_MAX
+#define INT_FAST8_MIN    INT8_MIN
+#define INT_FAST8_MAX    INT8_MAX
+
+#define UINT8_MAX        (255)
+#define UINT_LEAST8_MAX  UINT8_MAX
+#define UINT_FAST8_MAX   UINT8_MAX
+
+#define INT16_MIN        (-32768)
+#define INT16_MAX        (32767)
+#define INT_LEAST16_MIN  INT16_MIN
+#define INT_LEAST16_MAX  INT16_MAX
+#define INT_FAST16_MIN   INT32_MIN
+#define INT_FAST16_MAX   INT32_MAX
+
+#define UINT16_MAX       (65535)
+#define UINT_LEAST16_MAX UINT16_MAX
+#define UINT_FAST16_MAX  UINT32_MAX
+
+#define INT32_MIN        (-2147483647-1)
+#define INT32_MAX        (2147483647)
+#define INT_LEAST32_MIN  INT32_MIN
+#define INT_LEAST32_MAX  INT32_MAX
+#define INT_FAST32_MIN   INT32_MIN
+#define INT_FAST32_MAX   INT32_MAX
+
+#define UINT32_MAX       (4294967295U)
+#define UINT32_MIN       (0)
+#define UINT_LEAST32_MAX UINT32_MAX
+#define UINT_FAST32_MAX  UINT32_MAX
+
+#define INT64_MIN        (INT64_C(-9223372036854775807)-1)
+#define INT64_MAX        (INT64_C(9223372036854775807))
+#define INT_LEAST64_MIN  INT64_MIN
+#define INT_LEAST64_MAX  INT64_MAX
+#define INT_FAST64_MIN   INT64_MIN
+#define INT_FAST64_MAX   INT64_MAX
+#define UINT64_MAX       (UINT64_C(18446744073709551615))
+
+#define UINT_LEAST64_MAX UINT64_MAX
+#define UINT_FAST64_MAX  UINT64_MAX
+
+#define INTMAX_MIN       INT64_MIN
+#define INTMAX_MAX       INT64_MAX
+#define UINTMAX_MAX      UINT64_MAX
+
+#define SIG_ATOMIC_MAX   INT32_MAX
+#define SIG_ATOMIC_MIN   INT32_MIN
+
+#if defined(__WINT_UNSIGNED__)
+#  define WINT_MAX       UINT32_MAX
+#  define WINT_MIN       UINT32_MIN
+#else
+#  define WINT_MAX       INT32_MAX
+#  define WINT_MIN       INT32_MIN
+#endif
+
+#if defined(__LP64__)
+#  define INTPTR_MIN     INT64_MIN
+#  define INTPTR_MAX     INT64_MAX
+#  define UINTPTR_MAX    UINT64_MAX
+#  define PTRDIFF_MIN    INT64_MIN
+#  define PTRDIFF_MAX    INT64_MAX
+#  define SIZE_MAX       UINT64_MAX
+#else
+#  define INTPTR_MIN     INT32_MIN
+#  define INTPTR_MAX     INT32_MAX
+#  define UINTPTR_MAX    UINT32_MAX
+#  define PTRDIFF_MIN    INT32_MIN
+#  define PTRDIFF_MAX    INT32_MAX
+#  define SIZE_MAX       UINT32_MAX
+#endif
+
+#endif /* _STDINT_H */
diff --git a/ndk/platforms/android-L/include/stdio.h b/ndk/platforms/android-L/include/stdio.h
new file mode 100644
index 0000000..b9de121
--- /dev/null
+++ b/ndk/platforms/android-L/include/stdio.h
@@ -0,0 +1,454 @@
+/*	$OpenBSD: stdio.h,v 1.35 2006/01/13 18:10:09 miod Exp $	*/
+/*	$NetBSD: stdio.h,v 1.18 1996/04/25 18:29:21 jtc Exp $	*/
+
+/*-
+ * Copyright (c) 1990 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Chris Torek.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ *	@(#)stdio.h	5.17 (Berkeley) 6/3/91
+ */
+
+#ifndef	_STDIO_H_
+#define	_STDIO_H_
+
+#include <sys/cdefs.h>
+#include <sys/types.h>
+
+#include <stdarg.h>
+#include <stddef.h>
+
+#define __need_NULL
+#include <stddef.h>
+
+#define	_FSTDIO			/* Define for new stdio with functions. */
+
+typedef off_t fpos_t;		/* stdio file position type */
+
+/*
+ * NB: to fit things in six character monocase externals, the stdio
+ * code uses the prefix `__s' for stdio objects, typically followed
+ * by a three-character attempt at a mnemonic.
+ */
+
+/* stdio buffers */
+struct __sbuf {
+	unsigned char *_base;
+	int	_size;
+};
+
+/*
+ * stdio state variables.
+ *
+ * The following always hold:
+ *
+ *	if (_flags&(__SLBF|__SWR)) == (__SLBF|__SWR),
+ *		_lbfsize is -_bf._size, else _lbfsize is 0
+ *	if _flags&__SRD, _w is 0
+ *	if _flags&__SWR, _r is 0
+ *
+ * This ensures that the getc and putc macros (or inline functions) never
+ * try to write or read from a file that is in `read' or `write' mode.
+ * (Moreover, they can, and do, automatically switch from read mode to
+ * write mode, and back, on "r+" and "w+" files.)
+ *
+ * _lbfsize is used only to make the inline line-buffered output stream
+ * code as compact as possible.
+ *
+ * _ub, _up, and _ur are used when ungetc() pushes back more characters
+ * than fit in the current _bf, or when ungetc() pushes back a character
+ * that does not match the previous one in _bf.  When this happens,
+ * _ub._base becomes non-nil (i.e., a stream has ungetc() data iff
+ * _ub._base!=NULL) and _up and _ur save the current values of _p and _r.
+ *
+ * NOTE: if you change this structure, you also need to update the
+ * std() initializer in findfp.c.
+ */
+typedef	struct __sFILE {
+	unsigned char *_p;	/* current position in (some) buffer */
+	int	_r;		/* read space left for getc() */
+	int	_w;		/* write space left for putc() */
+	short	_flags;		/* flags, below; this FILE is free if 0 */
+	short	_file;		/* fileno, if Unix descriptor, else -1 */
+	struct	__sbuf _bf;	/* the buffer (at least 1 byte, if !NULL) */
+	int	_lbfsize;	/* 0 or -_bf._size, for inline putc */
+
+	/* operations */
+	void	*_cookie;	/* cookie passed to io functions */
+	int	(*_close)(void *);
+	int	(*_read)(void *, char *, int);
+	fpos_t	(*_seek)(void *, fpos_t, int);
+	int	(*_write)(void *, const char *, int);
+
+	/* extension data, to avoid further ABI breakage */
+	struct	__sbuf _ext;
+	/* data for long sequences of ungetc() */
+	unsigned char *_up;	/* saved _p when _p is doing ungetc data */
+	int	_ur;		/* saved _r when _r is counting ungetc data */
+
+	/* tricks to meet minimum requirements even when malloc() fails */
+	unsigned char _ubuf[3];	/* guarantee an ungetc() buffer */
+	unsigned char _nbuf[1];	/* guarantee a getc() buffer */
+
+	/* separate buffer for fgetln() when line crosses buffer boundary */
+	struct	__sbuf _lb;	/* buffer for fgetln() */
+
+	/* Unix stdio files get aligned to block boundaries on fseek() */
+	int	_blksize;	/* stat.st_blksize (may be != _bf._size) */
+	fpos_t	_offset;	/* current lseek offset */
+} FILE;
+
+__BEGIN_DECLS
+extern FILE __sF[];
+__END_DECLS
+
+#define	__SLBF	0x0001		/* line buffered */
+#define	__SNBF	0x0002		/* unbuffered */
+#define	__SRD	0x0004		/* OK to read */
+#define	__SWR	0x0008		/* OK to write */
+	/* RD and WR are never simultaneously asserted */
+#define	__SRW	0x0010		/* open for reading & writing */
+#define	__SEOF	0x0020		/* found EOF */
+#define	__SERR	0x0040		/* found error */
+#define	__SMBF	0x0080		/* _buf is from malloc */
+#define	__SAPP	0x0100		/* fdopen()ed in append mode */
+#define	__SSTR	0x0200		/* this is an sprintf/snprintf string */
+#define	__SOPT	0x0400		/* do fseek() optimization */
+#define	__SNPT	0x0800		/* do not do fseek() optimization */
+#define	__SOFF	0x1000		/* set iff _offset is in fact correct */
+#define	__SMOD	0x2000		/* true => fgetln modified _p text */
+#define	__SALC	0x4000		/* allocate string space dynamically */
+#define	__SIGN	0x8000		/* ignore this file in _fwalk */
+
+/*
+ * The following three definitions are for ANSI C, which took them
+ * from System V, which brilliantly took internal interface macros and
+ * made them official arguments to setvbuf(), without renaming them.
+ * Hence, these ugly _IOxxx names are *supposed* to appear in user code.
+ *
+ * Although numbered as their counterparts above, the implementation
+ * does not rely on this.
+ */
+#define	_IOFBF	0		/* setvbuf should set fully buffered */
+#define	_IOLBF	1		/* setvbuf should set line buffered */
+#define	_IONBF	2		/* setvbuf should set unbuffered */
+
+#define	BUFSIZ	1024		/* size of buffer used by setbuf */
+#define	EOF	(-1)
+
+/*
+ * FOPEN_MAX is a minimum maximum, and is the number of streams that
+ * stdio can provide without attempting to allocate further resources
+ * (which could fail).  Do not use this for anything.
+ */
+
+#define	FOPEN_MAX	20	/* must be <= OPEN_MAX <sys/syslimits.h> */
+#define	FILENAME_MAX	1024	/* must be <= PATH_MAX <sys/syslimits.h> */
+
+/* System V/ANSI C; this is the wrong way to do this, do *not* use these. */
+#if __BSD_VISIBLE || __XPG_VISIBLE
+#define	P_tmpdir	"/tmp/"
+#endif
+#define	L_tmpnam	1024	/* XXX must be == PATH_MAX */
+#define	TMP_MAX		308915776
+
+/* Always ensure that these are consistent with <fcntl.h> and <unistd.h>! */
+#ifndef SEEK_SET
+#define	SEEK_SET	0	/* set file offset to offset */
+#endif
+#ifndef SEEK_CUR
+#define	SEEK_CUR	1	/* set file offset to current plus offset */
+#endif
+#ifndef SEEK_END
+#define	SEEK_END	2	/* set file offset to EOF plus offset */
+#endif
+
+#define	stdin	(&__sF[0])
+#define	stdout	(&__sF[1])
+#define	stderr	(&__sF[2])
+
+/*
+ * Functions defined in ANSI C standard.
+ */
+__BEGIN_DECLS
+void	 clearerr(FILE *);
+int	 fclose(FILE *);
+int	 feof(FILE *);
+int	 ferror(FILE *);
+int	 fflush(FILE *);
+int	 fgetc(FILE *);
+char	*fgets(char * __restrict, int, FILE * __restrict);
+FILE	*fopen(const char * __restrict , const char * __restrict);
+int	 fprintf(FILE * __restrict , const char * __restrict, ...)
+		__printflike(2, 3);
+int	 fputc(int, FILE *);
+int	 fputs(const char * __restrict, FILE * __restrict);
+size_t	 fread(void * __restrict, size_t, size_t, FILE * __restrict);
+FILE	*freopen(const char * __restrict, const char * __restrict,
+	    FILE * __restrict);
+int	 fscanf(FILE * __restrict, const char * __restrict, ...)
+		__scanflike(2, 3);
+int	 fseek(FILE *, long, int);
+long	 ftell(FILE *);
+size_t	 fwrite(const void * __restrict, size_t, size_t, FILE * __restrict);
+int	 getc(FILE *);
+int	 getchar(void);
+ssize_t	 getdelim(char ** __restrict, size_t * __restrict, int,
+	    FILE * __restrict);
+ssize_t	 getline(char ** __restrict, size_t * __restrict, FILE * __restrict);
+
+#if __BSD_VISIBLE && !defined(__SYS_ERRLIST)
+#define __SYS_ERRLIST
+extern int sys_nerr;			/* perror(3) external variables */
+extern char *sys_errlist[];
+#endif
+
+void	 perror(const char *);
+int	 printf(const char * __restrict, ...)
+		__printflike(1, 2);
+int	 putc(int, FILE *);
+int	 putchar(int);
+int	 puts(const char *);
+int	 remove(const char *);
+void	 rewind(FILE *);
+int	 scanf(const char * __restrict, ...)
+		__scanflike(1, 2);
+void	 setbuf(FILE * __restrict, char * __restrict);
+int	 setvbuf(FILE * __restrict, char * __restrict, int, size_t);
+int	 sscanf(const char * __restrict, const char * __restrict, ...)
+		__scanflike(2, 3);
+FILE	*tmpfile(void);
+int	 ungetc(int, FILE *);
+int	 vfprintf(FILE * __restrict, const char * __restrict, __va_list)
+		__printflike(2, 0);
+int	 vprintf(const char * __restrict, __va_list)
+		__printflike(1, 0);
+
+int dprintf(int, const char * __restrict, ...) __printflike(2, 3);
+int vdprintf(int, const char * __restrict, __va_list) __printflike(2, 0);
+
+#ifndef __AUDIT__
+#if !defined(__STDC_VERSION__) || __STDC_VERSION__ < 201112L
+char* gets(char*) __warnattr("gets is very unsafe; consider using fgets");
+#endif
+int sprintf(char* __restrict, const char* __restrict, ...)
+    __printflike(2, 3); //__warnattr("sprintf is often misused; please use snprintf");
+char* tmpnam(char*) __warnattr("tmpnam possibly used unsafely; consider using mkstemp");
+int vsprintf(char* __restrict, const char* __restrict, __va_list)
+    __printflike(2, 0); //__warnattr("vsprintf is often misused; please use vsnprintf");
+#if __XPG_VISIBLE
+char* tempnam(const char*, const char*)
+    __warnattr("tempnam possibly used unsafely; consider using mkstemp");
+#endif
+#endif
+
+extern int rename(const char*, const char*);
+extern int renameat(int, const char*, int, const char*);
+
+int	 fgetpos(FILE * __restrict, fpos_t * __restrict);
+int	 fsetpos(FILE *, const fpos_t *);
+
+int	 fseeko(FILE *, off_t, int);
+off_t	 ftello(FILE *);
+
+#if __ISO_C_VISIBLE >= 1999 || __BSD_VISIBLE
+int	 snprintf(char * __restrict, size_t, const char * __restrict, ...)
+		__printflike(3, 4);
+int	 vfscanf(FILE * __restrict, const char * __restrict, __va_list)
+		__scanflike(2, 0);
+int	 vscanf(const char *, __va_list)
+		__scanflike(1, 0);
+int	 vsnprintf(char * __restrict, size_t, const char * __restrict, __va_list)
+		__printflike(3, 0);
+int	 vsscanf(const char * __restrict, const char * __restrict, __va_list)
+		__scanflike(2, 0);
+#endif /* __ISO_C_VISIBLE >= 1999 || __BSD_VISIBLE */
+
+__END_DECLS
+
+
+/*
+ * Functions defined in POSIX 1003.1.
+ */
+#if __BSD_VISIBLE || __POSIX_VISIBLE || __XPG_VISIBLE
+#define	L_ctermid	1024	/* size for ctermid(); PATH_MAX */
+
+__BEGIN_DECLS
+#if 0 /* MISSING FROM BIONIC */
+char	*ctermid(char *);
+#endif /* MISSING */
+FILE	*fdopen(int, const char *);
+int	 fileno(FILE *);
+
+#if (__POSIX_VISIBLE >= 199209)
+int	 pclose(FILE *);
+FILE	*popen(const char *, const char *);
+#endif
+
+#if __POSIX_VISIBLE >= 199506
+void	 flockfile(FILE *);
+int	 ftrylockfile(FILE *);
+void	 funlockfile(FILE *);
+
+/*
+ * These are normally used through macros as defined below, but POSIX
+ * requires functions as well.
+ */
+int	 getc_unlocked(FILE *);
+int	 getchar_unlocked(void);
+int	 putc_unlocked(int, FILE *);
+int	 putchar_unlocked(int);
+#endif /* __POSIX_VISIBLE >= 199506 */
+
+__END_DECLS
+
+#endif /* __BSD_VISIBLE || __POSIX_VISIBLE || __XPG_VISIBLE */
+
+/*
+ * Routines that are purely local.
+ */
+#if __BSD_VISIBLE
+__BEGIN_DECLS
+int	 asprintf(char ** __restrict, const char * __restrict, ...)
+		__printflike(2, 3);
+char	*fgetln(FILE * __restrict, size_t * __restrict);
+int	 fpurge(FILE *);
+void	 setbuffer(FILE *, char *, int);
+int	 setlinebuf(FILE *);
+int	 vasprintf(char ** __restrict, const char * __restrict,
+    __va_list)
+		__printflike(2, 0);
+__END_DECLS
+
+/*
+ * Stdio function-access interface.
+ */
+__BEGIN_DECLS
+FILE	*funopen(const void *,
+		int (*)(void *, char *, int),
+		int (*)(void *, const char *, int),
+		fpos_t (*)(void *, fpos_t, int),
+		int (*)(void *));
+__END_DECLS
+#define	fropen(cookie, fn) funopen(cookie, fn, 0, 0, 0)
+#define	fwopen(cookie, fn) funopen(cookie, 0, fn, 0, 0)
+#endif /* __BSD_VISIBLE */
+
+#if defined(__BIONIC_FORTIFY)
+
+__BEGIN_DECLS
+
+__BIONIC_FORTIFY_INLINE
+__printflike(3, 0)
+int vsnprintf(char *dest, size_t size, const char *format, __va_list ap)
+{
+    return __builtin___vsnprintf_chk(dest, size, 0, __bos(dest), format, ap);
+}
+
+__BIONIC_FORTIFY_INLINE
+__printflike(2, 0)
+int vsprintf(char *dest, const char *format, __va_list ap)
+{
+    return __builtin___vsprintf_chk(dest, 0, __bos(dest), format, ap);
+}
+
+#if defined(__clang__)
+  #if !defined(snprintf)
+    #define __wrap_snprintf(dest, size, ...) __builtin___snprintf_chk(dest, size, 0, __bos(dest), __VA_ARGS__)
+    #define snprintf(...) __wrap_snprintf(__VA_ARGS__)
+  #endif
+#else
+__BIONIC_FORTIFY_INLINE
+__printflike(3, 4)
+int snprintf(char *dest, size_t size, const char *format, ...)
+{
+    return __builtin___snprintf_chk(dest, size, 0,
+        __bos(dest), format, __builtin_va_arg_pack());
+}
+#endif
+
+#if defined(__clang__)
+  #if !defined(sprintf)
+    #define __wrap_sprintf(dest, ...) __builtin___sprintf_chk(dest, 0, __bos(dest), __VA_ARGS__)
+    #define sprintf(...) __wrap_sprintf(__VA_ARGS__)
+  #endif
+#else
+__BIONIC_FORTIFY_INLINE
+__printflike(2, 3)
+int sprintf(char *dest, const char *format, ...)
+{
+    return __builtin___sprintf_chk(dest, 0,
+        __bos(dest), format, __builtin_va_arg_pack());
+}
+#endif
+
+extern char* __fgets_chk(char*, int, FILE*, size_t);
+extern char* __fgets_real(char*, int, FILE*) __asm__(__USER_LABEL_PREFIX__ "fgets");
+__errordecl(__fgets_too_big_error, "fgets called with size bigger than buffer");
+__errordecl(__fgets_too_small_error, "fgets called with size less than zero");
+
+#if !defined(__clang__)
+
+__BIONIC_FORTIFY_INLINE
+char *fgets(char* dest, int size, FILE* stream) {
+    size_t bos = __bos(dest);
+
+    // Compiler can prove, at compile time, that the passed in size
+    // is always negative. Force a compiler error.
+    if (__builtin_constant_p(size) && (size < 0)) {
+        __fgets_too_small_error();
+    }
+
+    // Compiler doesn't know destination size. Don't call __fgets_chk
+    if (bos == __BIONIC_FORTIFY_UNKNOWN_SIZE) {
+        return __fgets_real(dest, size, stream);
+    }
+
+    // Compiler can prove, at compile time, that the passed in size
+    // is always <= the actual object size. Don't call __fgets_chk
+    if (__builtin_constant_p(size) && (size <= (int) bos)) {
+        return __fgets_real(dest, size, stream);
+    }
+
+    // Compiler can prove, at compile time, that the passed in size
+    // is always > the actual object size. Force a compiler error.
+    if (__builtin_constant_p(size) && (size > (int) bos)) {
+        __fgets_too_big_error();
+    }
+
+    return __fgets_chk(dest, size, stream, bos);
+}
+
+#endif /* !defined(__clang__) */
+
+__END_DECLS
+
+#endif /* defined(__BIONIC_FORTIFY) */
+
+#endif /* _STDIO_H_ */
diff --git a/ndk/platforms/android-L/include/stdlib.h b/ndk/platforms/android-L/include/stdlib.h
new file mode 100644
index 0000000..266aa5e
--- /dev/null
+++ b/ndk/platforms/android-L/include/stdlib.h
@@ -0,0 +1,179 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+#ifndef _STDLIB_H_
+#define _STDLIB_H_
+
+#include <sys/cdefs.h>
+
+#include <stddef.h>
+#include <string.h>
+#include <alloca.h>
+#include <strings.h>
+#include <memory.h>
+
+__BEGIN_DECLS
+
+#define EXIT_FAILURE 1
+#define EXIT_SUCCESS 0
+
+extern __noreturn void abort(void);
+extern __noreturn void exit(int);
+extern __noreturn void _Exit(int);
+extern int atexit(void (*)(void));
+
+#if __ISO_C_VISIBLE >= 2011 || __cplusplus >= 201103L
+int at_quick_exit(void (*)(void));
+void quick_exit(int) __noreturn;
+#endif
+
+extern char* getenv(const char*);
+extern int putenv(char*);
+extern int setenv(const char*, const char*, int);
+extern int unsetenv(const char*);
+extern int clearenv(void);
+
+extern char* mkdtemp(char*);
+extern char* mktemp(char*) __warnattr("mktemp possibly used unsafely; consider using mkstemp");
+extern int mkstemp(char*);
+extern int mkstemp64(char*);
+
+extern long strtol(const char *, char **, int);
+extern long long strtoll(const char *, char **, int);
+extern unsigned long strtoul(const char *, char **, int);
+extern unsigned long long strtoull(const char *, char **, int);
+
+extern int posix_memalign(void **memptr, size_t alignment, size_t size);
+
+extern double atof(const char*);
+
+extern double strtod(const char*, char**) __LIBC_ABI_PUBLIC__;
+extern float strtof(const char*, char**) __LIBC_ABI_PUBLIC__;
+extern long double strtold(const char*, char**) __LIBC_ABI_PUBLIC__;
+
+extern int atoi(const char*) __purefunc;
+extern long atol(const char*) __purefunc;
+extern long long atoll(const char*) __purefunc;
+
+extern int abs(int) __pure2;
+extern long labs(long) __pure2;
+extern long long llabs(long long) __pure2;
+
+extern char * realpath(const char *path, char *resolved);
+extern int system(const char * string);
+
+extern void * bsearch(const void *key, const void *base0,
+	size_t nmemb, size_t size,
+	int (*compar)(const void *, const void *));
+
+extern void qsort(void *, size_t, size_t, int (*)(const void *, const void *));
+
+extern long jrand48(unsigned short *);
+extern long mrand48(void);
+extern long nrand48(unsigned short *);
+extern long lrand48(void);
+extern unsigned short *seed48(unsigned short*);
+extern double erand48(unsigned short xsubi[3]);
+extern double drand48(void);
+extern void srand48(long);
+extern unsigned int arc4random(void);
+extern void arc4random_stir(void);
+extern void arc4random_addrandom(unsigned char *, int);
+
+#define RAND_MAX 0x7fffffff
+
+/* Work around x86/x86-64 libvpx build breakage caused by postproc_x86.c. */
+#if (defined(__i386__) || defined(__x86_64__)) && defined(rand)
+#undef rand
+#define __rand lrand48
+#endif
+
+int rand(void);
+int rand_r(unsigned int*);
+void srand(unsigned int);
+
+char* initstate(unsigned int, char*, size_t);
+long random(void);
+char* setstate(char*);
+void srandom(unsigned int);
+
+/* Basic PTY functions.  These only work if devpts is mounted! */
+
+extern int    unlockpt(int);
+extern char*  ptsname(int);
+extern int    ptsname_r(int, char*, size_t);
+extern int    getpt(void);
+
+static __inline__ int grantpt(int __fd __attribute((unused)))
+{
+  (void)__fd;
+  return 0;     /* devpts does this all for us! */
+}
+
+typedef struct {
+    int  quot;
+    int  rem;
+} div_t;
+
+extern div_t   div(int, int) __pure2;
+
+typedef struct {
+    long int  quot;
+    long int  rem;
+} ldiv_t;
+
+extern ldiv_t   ldiv(long, long) __pure2;
+
+typedef struct {
+    long long int  quot;
+    long long int  rem;
+} lldiv_t;
+
+extern lldiv_t   lldiv(long long, long long) __pure2;
+
+/* BSD compatibility. */
+extern const char* getprogname(void);
+extern void setprogname(const char*);
+
+/* make STLPort happy */
+extern int      mblen(const char *, size_t);
+extern size_t   mbstowcs(wchar_t *, const char *, size_t);
+extern int      mbtowc(wchar_t *, const char *, size_t);
+
+/* Likewise, make libstdc++-v3 happy.  */
+extern int	wctomb(char *, wchar_t);
+extern size_t	wcstombs(char *, const wchar_t *, size_t);
+
+#define MB_CUR_MAX 4U
+
+#if 0 /* MISSING FROM BIONIC */
+extern int on_exit(void (*)(int, void *), void *);
+#endif /* MISSING */
+
+__END_DECLS
+
+#endif /* _STDLIB_H_ */
diff --git a/ndk/platforms/android-L/include/string.h b/ndk/platforms/android-L/include/string.h
new file mode 100644
index 0000000..7727c0e
--- /dev/null
+++ b/ndk/platforms/android-L/include/string.h
@@ -0,0 +1,323 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+#ifndef _STRING_H_
+#define _STRING_H_
+
+#include <sys/cdefs.h>
+#include <stddef.h>
+#include <malloc.h>
+
+__BEGIN_DECLS
+
+extern void*  memccpy(void* __restrict, const void* __restrict, int, size_t);
+extern void*  memchr(const void *, int, size_t) __purefunc;
+extern void*  memrchr(const void *, int, size_t) __purefunc;
+extern int    memcmp(const void *, const void *, size_t) __purefunc;
+extern void*  memcpy(void* __restrict, const void* __restrict, size_t);
+extern void*  memmove(void *, const void *, size_t);
+extern void*  memset(void *, int, size_t);
+extern void*  memmem(const void *, size_t, const void *, size_t) __purefunc;
+
+extern char*  strchr(const char *, int) __purefunc;
+extern char* __strchr_chk(const char *, int, size_t);
+
+extern char*  strrchr(const char *, int) __purefunc;
+extern char* __strrchr_chk(const char *, int, size_t);
+
+extern size_t strlen(const char *) __purefunc;
+extern size_t __strlen_chk(const char *, size_t);
+extern int    strcmp(const char *, const char *) __purefunc;
+extern char*  stpcpy(char* __restrict, const char* __restrict);
+extern char*  strcpy(char* __restrict, const char* __restrict);
+extern char*  strcat(char* __restrict, const char* __restrict);
+
+extern int    strcasecmp(const char *, const char *) __purefunc;
+extern int    strncasecmp(const char *, const char *, size_t) __purefunc;
+extern char*  strdup(const char *);
+
+extern char*  strstr(const char *, const char *) __purefunc;
+extern char*  strcasestr(const char *haystack, const char *needle) __purefunc;
+extern char*  strtok(char* __restrict, const char* __restrict);
+extern char*  strtok_r(char* __restrict, const char* __restrict, char** __restrict);
+
+extern char*  strerror(int);
+extern int    strerror_r(int errnum, char *buf, size_t n);
+
+extern size_t strnlen(const char *, size_t) __purefunc;
+extern char*  strncat(char* __restrict, const char* __restrict, size_t);
+extern char*  strndup(const char *, size_t);
+extern int    strncmp(const char *, const char *, size_t) __purefunc;
+extern char*  stpncpy(char* __restrict, const char* __restrict, size_t);
+extern char*  strncpy(char* __restrict, const char* __restrict, size_t);
+
+extern size_t strlcat(char* __restrict, const char* __restrict, size_t);
+extern size_t strlcpy(char* __restrict, const char* __restrict, size_t);
+
+extern size_t strcspn(const char *, const char *) __purefunc;
+extern char*  strpbrk(const char *, const char *) __purefunc;
+extern char*  strsep(char** __restrict, const char* __restrict);
+extern size_t strspn(const char *, const char *);
+
+extern char*  strsignal(int  sig);
+
+extern int    strcoll(const char *, const char *) __purefunc;
+extern size_t strxfrm(char* __restrict, const char* __restrict, size_t);
+
+#if defined(__BIONIC_FORTIFY)
+
+__errordecl(__memcpy_dest_size_error, "memcpy: prevented write past end of buffer");
+__errordecl(__memcpy_src_size_error, "memcpy: prevented read past end of buffer");
+
+__BIONIC_FORTIFY_INLINE
+void* memcpy(void* __restrict dest, const void* __restrict src, size_t copy_amount) {
+    char *d = (char *) dest;
+    const char *s = (const char *) src;
+    size_t s_len = __bos0(s);
+    size_t d_len = __bos0(d);
+
+    if (__builtin_constant_p(copy_amount) && (copy_amount > d_len)) {
+        __memcpy_dest_size_error();
+    }
+
+    if (__builtin_constant_p(copy_amount) && (copy_amount > s_len)) {
+        __memcpy_src_size_error();
+    }
+
+    return __builtin___memcpy_chk(dest, src, copy_amount, d_len);
+}
+
+__BIONIC_FORTIFY_INLINE
+void* memmove(void *dest, const void *src, size_t len) {
+    return __builtin___memmove_chk(dest, src, len, __bos0(dest));
+}
+
+__BIONIC_FORTIFY_INLINE
+char* stpcpy(char* __restrict dest, const char* __restrict src) {
+    return __builtin___stpcpy_chk(dest, src, __bos(dest));
+}
+
+__BIONIC_FORTIFY_INLINE
+char* strcpy(char* __restrict dest, const char* __restrict src) {
+    return __builtin___strcpy_chk(dest, src, __bos(dest));
+}
+
+__errordecl(__stpncpy_error, "stpncpy: prevented write past end of buffer");
+extern char* __stpncpy_chk2(char* __restrict, const char* __restrict, size_t, size_t, size_t);
+
+__BIONIC_FORTIFY_INLINE
+char* stpncpy(char* __restrict dest, const char* __restrict src, size_t n) {
+    size_t bos_dest = __bos(dest);
+    size_t bos_src = __bos(src);
+    if (__builtin_constant_p(n) && (n > bos_dest)) {
+        __stpncpy_error();
+    }
+
+    if (bos_src == __BIONIC_FORTIFY_UNKNOWN_SIZE) {
+        return __builtin___stpncpy_chk(dest, src, n, bos_dest);
+    }
+
+    if (__builtin_constant_p(n) && (n <= bos_src)) {
+        return __builtin___stpncpy_chk(dest, src, n, bos_dest);
+    }
+
+    size_t slen = __builtin_strlen(src);
+    if (__builtin_constant_p(slen)) {
+        return __builtin___stpncpy_chk(dest, src, n, bos_dest);
+    }
+
+    return __stpncpy_chk2(dest, src, n, bos_dest, bos_src);
+}
+
+__errordecl(__strncpy_error, "strncpy: prevented write past end of buffer");
+extern char* __strncpy_chk2(char* __restrict, const char* __restrict, size_t, size_t, size_t);
+
+__BIONIC_FORTIFY_INLINE
+char* strncpy(char* __restrict dest, const char* __restrict src, size_t n) {
+    size_t bos_dest = __bos(dest);
+    size_t bos_src = __bos(src);
+    if (__builtin_constant_p(n) && (n > bos_dest)) {
+        __strncpy_error();
+    }
+
+    if (bos_src == __BIONIC_FORTIFY_UNKNOWN_SIZE) {
+        return __builtin___strncpy_chk(dest, src, n, bos_dest);
+    }
+
+    if (__builtin_constant_p(n) && (n <= bos_src)) {
+        return __builtin___strncpy_chk(dest, src, n, bos_dest);
+    }
+
+    size_t slen = __builtin_strlen(src);
+    if (__builtin_constant_p(slen)) {
+        return __builtin___strncpy_chk(dest, src, n, bos_dest);
+    }
+
+    return __strncpy_chk2(dest, src, n, bos_dest, bos_src);
+}
+
+__BIONIC_FORTIFY_INLINE
+char* strcat(char* __restrict dest, const char* __restrict src) {
+    return __builtin___strcat_chk(dest, src, __bos(dest));
+}
+
+__BIONIC_FORTIFY_INLINE
+char *strncat(char* __restrict dest, const char* __restrict src, size_t n) {
+    return __builtin___strncat_chk(dest, src, n, __bos(dest));
+}
+
+__BIONIC_FORTIFY_INLINE
+void* memset(void *s, int c, size_t n) {
+    return __builtin___memset_chk(s, c, n, __bos0(s));
+}
+
+extern size_t __strlcpy_real(char* __restrict, const char* __restrict, size_t)
+    __asm__(__USER_LABEL_PREFIX__ "strlcpy");
+__errordecl(__strlcpy_error, "strlcpy: prevented write past end of buffer");
+extern size_t __strlcpy_chk(char *, const char *, size_t, size_t);
+
+__BIONIC_FORTIFY_INLINE
+size_t strlcpy(char* __restrict dest, const char* __restrict src, size_t size) {
+    size_t bos = __bos(dest);
+
+#if !defined(__clang__)
+    // Compiler doesn't know destination size. Don't call __strlcpy_chk
+    if (bos == __BIONIC_FORTIFY_UNKNOWN_SIZE) {
+        return __strlcpy_real(dest, src, size);
+    }
+
+    // Compiler can prove, at compile time, that the passed in size
+    // is always <= the actual object size. Don't call __strlcpy_chk
+    if (__builtin_constant_p(size) && (size <= bos)) {
+        return __strlcpy_real(dest, src, size);
+    }
+
+    // Compiler can prove, at compile time, that the passed in size
+    // is always > the actual object size. Force a compiler error.
+    if (__builtin_constant_p(size) && (size > bos)) {
+        __strlcpy_error();
+    }
+#endif /* !defined(__clang__) */
+
+    return __strlcpy_chk(dest, src, size, bos);
+}
+
+extern size_t __strlcat_real(char* __restrict, const char* __restrict, size_t)
+    __asm__(__USER_LABEL_PREFIX__ "strlcat");
+__errordecl(__strlcat_error, "strlcat: prevented write past end of buffer");
+extern size_t __strlcat_chk(char* __restrict, const char* __restrict, size_t, size_t);
+
+
+__BIONIC_FORTIFY_INLINE
+size_t strlcat(char* __restrict dest, const char* __restrict src, size_t size) {
+    size_t bos = __bos(dest);
+
+#if !defined(__clang__)
+    // Compiler doesn't know destination size. Don't call __strlcat_chk
+    if (bos == __BIONIC_FORTIFY_UNKNOWN_SIZE) {
+        return __strlcat_real(dest, src, size);
+    }
+
+    // Compiler can prove, at compile time, that the passed in size
+    // is always <= the actual object size. Don't call __strlcat_chk
+    if (__builtin_constant_p(size) && (size <= bos)) {
+        return __strlcat_real(dest, src, size);
+    }
+
+    // Compiler can prove, at compile time, that the passed in size
+    // is always > the actual object size. Force a compiler error.
+    if (__builtin_constant_p(size) && (size > bos)) {
+        __strlcat_error();
+    }
+#endif /* !defined(__clang__) */
+
+    return __strlcat_chk(dest, src, size, bos);
+}
+
+__BIONIC_FORTIFY_INLINE
+size_t strlen(const char *s) {
+    size_t bos = __bos(s);
+
+#if !defined(__clang__)
+    // Compiler doesn't know destination size. Don't call __strlen_chk
+    if (bos == __BIONIC_FORTIFY_UNKNOWN_SIZE) {
+        return __builtin_strlen(s);
+    }
+
+    size_t slen = __builtin_strlen(s);
+    if (__builtin_constant_p(slen)) {
+        return slen;
+    }
+#endif /* !defined(__clang__) */
+
+    return __strlen_chk(s, bos);
+}
+
+__BIONIC_FORTIFY_INLINE
+char* strchr(const char *s, int c) {
+    size_t bos = __bos(s);
+
+#if !defined(__clang__)
+    // Compiler doesn't know destination size. Don't call __strchr_chk
+    if (bos == __BIONIC_FORTIFY_UNKNOWN_SIZE) {
+        return __builtin_strchr(s, c);
+    }
+
+    size_t slen = __builtin_strlen(s);
+    if (__builtin_constant_p(slen) && (slen < bos)) {
+        return __builtin_strchr(s, c);
+    }
+#endif /* !defined(__clang__) */
+
+    return __strchr_chk(s, c, bos);
+}
+
+__BIONIC_FORTIFY_INLINE
+char* strrchr(const char *s, int c) {
+    size_t bos = __bos(s);
+
+#if !defined(__clang__)
+    // Compiler doesn't know destination size. Don't call __strrchr_chk
+    if (bos == __BIONIC_FORTIFY_UNKNOWN_SIZE) {
+        return __builtin_strrchr(s, c);
+    }
+
+    size_t slen = __builtin_strlen(s);
+    if (__builtin_constant_p(slen) && (slen < bos)) {
+        return __builtin_strrchr(s, c);
+    }
+#endif /* !defined(__clang__) */
+
+    return __strrchr_chk(s, c, bos);
+}
+
+
+#endif /* defined(__BIONIC_FORTIFY) */
+
+__END_DECLS
+
+#endif /* _STRING_H_ */
diff --git a/ndk/platforms/android-L/include/strings.h b/ndk/platforms/android-L/include/strings.h
new file mode 100644
index 0000000..c4d5f6c
--- /dev/null
+++ b/ndk/platforms/android-L/include/strings.h
@@ -0,0 +1,55 @@
+/*	$NetBSD: strings.h,v 1.10 2005/02/03 04:39:32 perry Exp $	*/
+
+/*-
+ * Copyright (c) 1998 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Klaus Klein.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *        This product includes software developed by the NetBSD
+ *        Foundation, Inc. and its contributors.
+ * 4. Neither the name of The NetBSD Foundation nor the names of its
+ *    contributors may be used to endorse or promote products derived
+ *    from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef _STRINGS_H_
+#define _STRINGS_H_
+
+#include <sys/types.h>
+#include <sys/cdefs.h>
+
+__BEGIN_DECLS
+#define bcopy(b1, b2, len) (void)(memmove((b2), (b1), (len)))
+#define bzero(b, len) (void)(memset((b), '\0', (len)))
+
+int	 ffs(int);
+int	 strcasecmp(const char *, const char *);
+int	 strncasecmp(const char *, const char *, size_t);
+
+__END_DECLS
+
+#endif /* !defined(_STRINGS_H_) */
diff --git a/ndk/platforms/android-20/include/sys/auxv.h b/ndk/platforms/android-L/include/sys/auxv.h
similarity index 100%
rename from ndk/platforms/android-20/include/sys/auxv.h
rename to ndk/platforms/android-L/include/sys/auxv.h
diff --git a/ndk/platforms/android-20/include/sys/cachectl.h b/ndk/platforms/android-L/include/sys/cachectl.h
similarity index 100%
rename from ndk/platforms/android-20/include/sys/cachectl.h
rename to ndk/platforms/android-L/include/sys/cachectl.h
diff --git a/ndk/platforms/android-20/include/sys/capability.h b/ndk/platforms/android-L/include/sys/capability.h
similarity index 100%
rename from ndk/platforms/android-20/include/sys/capability.h
rename to ndk/platforms/android-L/include/sys/capability.h
diff --git a/ndk/platforms/android-L/include/sys/cdefs.h b/ndk/platforms/android-L/include/sys/cdefs.h
new file mode 100644
index 0000000..9c92a1c
--- /dev/null
+++ b/ndk/platforms/android-L/include/sys/cdefs.h
@@ -0,0 +1,593 @@
+/*	$NetBSD: cdefs.h,v 1.58 2004/12/11 05:59:00 christos Exp $	*/
+
+/*
+ * Copyright (c) 1991, 1993
+ *	The Regents of the University of California.  All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Berkeley Software Design, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ *	@(#)cdefs.h	8.8 (Berkeley) 1/9/95
+ */
+
+#ifndef	_SYS_CDEFS_H_
+#define	_SYS_CDEFS_H_
+
+/*
+ * Testing against Clang-specific extensions.
+ */
+
+#ifndef __has_extension
+#define __has_extension         __has_feature
+#endif
+#ifndef __has_feature
+#define __has_feature(x)        0
+#endif
+#ifndef __has_include
+#define __has_include(x)        0
+#endif
+#ifndef __has_builtin
+#define __has_builtin(x)        0
+#endif
+
+
+/*
+ * Macro to test if we're using a GNU C compiler of a specific vintage
+ * or later, for e.g. features that appeared in a particular version
+ * of GNU C.  Usage:
+ *
+ *	#if __GNUC_PREREQ__(major, minor)
+ *	...cool feature...
+ *	#else
+ *	...delete feature...
+ *	#endif
+ */
+#ifdef __GNUC__
+#define	__GNUC_PREREQ__(x, y)						\
+	((__GNUC__ == (x) && __GNUC_MINOR__ >= (y)) ||			\
+	 (__GNUC__ > (x)))
+#else
+#define	__GNUC_PREREQ__(x, y)	0
+#endif
+
+#include <sys/cdefs_elf.h>
+
+#if defined(__cplusplus)
+#define	__BEGIN_DECLS		extern "C" {
+#define	__END_DECLS		}
+#define	__static_cast(x,y)	static_cast<x>(y)
+#else
+#define	__BEGIN_DECLS
+#define	__END_DECLS
+#define	__static_cast(x,y)	(x)y
+#endif
+
+/*
+ * The __CONCAT macro is used to concatenate parts of symbol names, e.g.
+ * with "#define OLD(foo) __CONCAT(old,foo)", OLD(foo) produces oldfoo.
+ * The __CONCAT macro is a bit tricky -- make sure you don't put spaces
+ * in between its arguments.  __CONCAT can also concatenate double-quoted
+ * strings produced by the __STRING macro, but this only works with ANSI C.
+ */
+
+#define	___STRING(x)	__STRING(x)
+#define	___CONCAT(x,y)	__CONCAT(x,y)
+
+#if defined(__STDC__) || defined(__cplusplus)
+#define	__P(protos)	protos		/* full-blown ANSI C */
+#define	__CONCAT(x,y)	x ## y
+#define	__STRING(x)	#x
+
+#define	__const		const		/* define reserved names to standard */
+#define	__signed	signed
+#define	__volatile	volatile
+#if defined(__cplusplus)
+#define	__inline	inline		/* convert to C++ keyword */
+#else
+#if !defined(__GNUC__) && !defined(__lint__)
+#define	__inline			/* delete GCC keyword */
+#endif /* !__GNUC__  && !__lint__ */
+#endif /* !__cplusplus */
+
+#else	/* !(__STDC__ || __cplusplus) */
+#define	__P(protos)	()		/* traditional C preprocessor */
+#define	__CONCAT(x,y)	x/**/y
+#define	__STRING(x)	"x"
+
+#ifndef __GNUC__
+#define	__const				/* delete pseudo-ANSI C keywords */
+#define	__inline
+#define	__signed
+#define	__volatile
+#endif	/* !__GNUC__ */
+
+/*
+ * In non-ANSI C environments, new programs will want ANSI-only C keywords
+ * deleted from the program and old programs will want them left alone.
+ * Programs using the ANSI C keywords const, inline etc. as normal
+ * identifiers should define -DNO_ANSI_KEYWORDS.
+ */
+#ifndef	NO_ANSI_KEYWORDS
+#define	const		__const		/* convert ANSI C keywords */
+#define	inline		__inline
+#define	signed		__signed
+#define	volatile	__volatile
+#endif /* !NO_ANSI_KEYWORDS */
+#endif	/* !(__STDC__ || __cplusplus) */
+
+/*
+ * Used for internal auditing of the NetBSD source tree.
+ */
+#ifdef __AUDIT__
+#define	__aconst	__const
+#else
+#define	__aconst
+#endif
+
+/*
+ * The following macro is used to remove const cast-away warnings
+ * from gcc -Wcast-qual; it should be used with caution because it
+ * can hide valid errors; in particular most valid uses are in
+ * situations where the API requires it, not to cast away string
+ * constants. We don't use *intptr_t on purpose here and we are
+ * explicit about unsigned long so that we don't have additional
+ * dependencies.
+ */
+#define __UNCONST(a)	((void *)(unsigned long)(const void *)(a))
+
+/*
+ * GCC2 provides __extension__ to suppress warnings for various GNU C
+ * language extensions under "-ansi -pedantic".
+ */
+#if !__GNUC_PREREQ__(2, 0)
+#define	__extension__		/* delete __extension__ if non-gcc or gcc1 */
+#endif
+
+/*
+ * GCC1 and some versions of GCC2 declare dead (non-returning) and
+ * pure (no side effects) functions using "volatile" and "const";
+ * unfortunately, these then cause warnings under "-ansi -pedantic".
+ * GCC2 uses a new, peculiar __attribute__((attrs)) style.  All of
+ * these work for GNU C++ (modulo a slight glitch in the C++ grammar
+ * in the distribution version of 2.5.5).
+ */
+#if !__GNUC_PREREQ__(2, 5)
+#define	__attribute__(x)	/* delete __attribute__ if non-gcc or gcc1 */
+#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
+#define	__dead		__volatile
+#define	__pure		__const
+#endif
+#endif
+
+/* Delete pseudo-keywords wherever they are not available or needed. */
+#ifndef __dead
+#define	__dead
+#define	__pure
+#endif
+
+#if __GNUC_PREREQ__(2, 7)
+#define	__unused	__attribute__((__unused__))
+#else
+#define	__unused	/* delete */
+#endif
+
+#define __pure2 __attribute__((__const__)) /* Android-added: used by FreeBSD libm */
+
+#if __GNUC_PREREQ__(3, 1)
+#define	__used		__attribute__((__used__))
+#else
+#define	__used		/* delete */
+#endif
+
+#if __GNUC_PREREQ__(2, 7)
+#define	__packed	__attribute__((__packed__))
+#define	__aligned(x)	__attribute__((__aligned__(x)))
+#define	__section(x)	__attribute__((__section__(x)))
+#elif defined(__lint__)
+#define	__packed	/* delete */
+#define	__aligned(x)	/* delete */
+#define	__section(x)	/* delete */
+#else
+#define	__packed	error: no __packed for this compiler
+#define	__aligned(x)	error: no __aligned for this compiler
+#define	__section(x)	error: no __section for this compiler
+#endif
+
+#if !__GNUC_PREREQ__(2, 8)
+#define	__extension__
+#endif
+
+#if __GNUC_PREREQ__(2, 8)
+#define __statement(x)	__extension__(x)
+#elif defined(lint)
+#define __statement(x)	(0)
+#else
+#define __statement(x)	(x)
+#endif
+
+#define __nonnull(args) __attribute__((__nonnull__ args))
+
+#define __printflike(x, y) __attribute__((__format__(printf, x, y))) __nonnull((x))
+#define __scanflike(x, y) __attribute__((__format__(scanf, x, y))) __nonnull((x))
+
+/*
+ * C99 defines the restrict type qualifier keyword, which was made available
+ * in GCC 2.92.
+ */
+#if defined(__STDC__VERSION__) && __STDC_VERSION__ >= 199901L
+#define	__restrict	restrict
+#else
+#if !__GNUC_PREREQ__(2, 92)
+#define	__restrict	/* delete __restrict when not supported */
+#endif
+#endif
+
+/*
+ * C99 defines __func__ predefined identifier, which was made available
+ * in GCC 2.95.
+ */
+#if !defined(__STDC_VERSION__) || !(__STDC_VERSION__ >= 199901L)
+#if __GNUC_PREREQ__(2, 6)
+#define	__func__	__PRETTY_FUNCTION__
+#elif __GNUC_PREREQ__(2, 4)
+#define	__func__	__FUNCTION__
+#else
+#define	__func__	""
+#endif
+#endif /* !(__STDC_VERSION__ >= 199901L) */
+
+#if defined(_KERNEL)
+#if defined(NO_KERNEL_RCSIDS)
+#undef __KERNEL_RCSID
+#define	__KERNEL_RCSID(_n, _s)		/* nothing */
+#endif /* NO_KERNEL_RCSIDS */
+#endif /* _KERNEL */
+
+#if !defined(_STANDALONE) && !defined(_KERNEL)
+#ifdef __GNUC__
+#define	__RENAME(x)	___RENAME(x)
+#else
+#ifdef __lint__
+#define	__RENAME(x)	__symbolrename(x)
+#else
+#error "No function renaming possible"
+#endif /* __lint__ */
+#endif /* __GNUC__ */
+#else /* _STANDALONE || _KERNEL */
+#define	__RENAME(x)	no renaming in kernel or standalone environment
+#endif
+
+/*
+ * A barrier to stop the optimizer from moving code or assume live
+ * register values. This is gcc specific, the version is more or less
+ * arbitrary, might work with older compilers.
+ */
+#if __GNUC_PREREQ__(2, 95)
+#define	__insn_barrier()	__asm __volatile("":::"memory")
+#else
+#define	__insn_barrier()	/* */
+#endif
+
+/*
+ * GNU C version 2.96 adds explicit branch prediction so that
+ * the CPU back-end can hint the processor and also so that
+ * code blocks can be reordered such that the predicted path
+ * sees a more linear flow, thus improving cache behavior, etc.
+ *
+ * The following two macros provide us with a way to use this
+ * compiler feature.  Use __predict_true() if you expect the expression
+ * to evaluate to true, and __predict_false() if you expect the
+ * expression to evaluate to false.
+ *
+ * A few notes about usage:
+ *
+ *	* Generally, __predict_false() error condition checks (unless
+ *	  you have some _strong_ reason to do otherwise, in which case
+ *	  document it), and/or __predict_true() `no-error' condition
+ *	  checks, assuming you want to optimize for the no-error case.
+ *
+ *	* Other than that, if you don't know the likelihood of a test
+ *	  succeeding from empirical or other `hard' evidence, don't
+ *	  make predictions.
+ *
+ *	* These are meant to be used in places that are run `a lot'.
+ *	  It is wasteful to make predictions in code that is run
+ *	  seldomly (e.g. at subsystem initialization time) as the
+ *	  basic block reordering that this affects can often generate
+ *	  larger code.
+ */
+#if __GNUC_PREREQ__(2, 96)
+#define	__predict_true(exp)	__builtin_expect((exp) != 0, 1)
+#define	__predict_false(exp)	__builtin_expect((exp) != 0, 0)
+#else
+#define	__predict_true(exp)	(exp)
+#define	__predict_false(exp)	(exp)
+#endif
+
+#if __GNUC_PREREQ__(2, 96)
+#define __noreturn    __attribute__((__noreturn__))
+#define __mallocfunc  __attribute__((malloc))
+#define __purefunc    __attribute__((pure))
+#else
+#define __noreturn
+#define __mallocfunc
+#define __purefunc
+#endif
+
+#if __GNUC_PREREQ__(3, 1)
+#define __always_inline __attribute__((__always_inline__))
+#else
+#define __always_inline
+#endif
+
+#if __GNUC_PREREQ__(3, 4)
+#define __wur __attribute__((__warn_unused_result__))
+#else
+#define __wur
+#endif
+
+#if __GNUC_PREREQ__(4, 3)
+#define __errordecl(name, msg) extern void name(void) __attribute__((__error__(msg)))
+#define __warnattr(msg) __attribute__((__warning__(msg)))
+#else
+#define __errordecl(name, msg) extern void name(void)
+#define __warnattr(msg)
+#endif
+
+/*
+ * Macros for manipulating "link sets".  Link sets are arrays of pointers
+ * to objects, which are gathered up by the linker.
+ *
+ * Object format-specific code has provided us with the following macros:
+ *
+ *	__link_set_add_text(set, sym)
+ *		Add a reference to the .text symbol `sym' to `set'.
+ *
+ *	__link_set_add_rodata(set, sym)
+ *		Add a reference to the .rodata symbol `sym' to `set'.
+ *
+ *	__link_set_add_data(set, sym)
+ *		Add a reference to the .data symbol `sym' to `set'.
+ *
+ *	__link_set_add_bss(set, sym)
+ *		Add a reference to the .bss symbol `sym' to `set'.
+ *
+ *	__link_set_decl(set, ptype)
+ *		Provide an extern declaration of the set `set', which
+ *		contains an array of the pointer type `ptype'.  This
+ *		macro must be used by any code which wishes to reference
+ *		the elements of a link set.
+ *
+ *	__link_set_start(set)
+ *		This points to the first slot in the link set.
+ *
+ *	__link_set_end(set)
+ *		This points to the (non-existent) slot after the last
+ *		entry in the link set.
+ *
+ *	__link_set_count(set)
+ *		Count the number of entries in link set `set'.
+ *
+ * In addition, we provide the following macros for accessing link sets:
+ *
+ *	__link_set_foreach(pvar, set)
+ *		Iterate over the link set `set'.  Because a link set is
+ *		an array of pointers, pvar must be declared as "type **pvar",
+ *		and the actual entry accessed as "*pvar".
+ *
+ *	__link_set_entry(set, idx)
+ *		Access the link set entry at index `idx' from set `set'.
+ */
+#define	__link_set_foreach(pvar, set)					\
+	for (pvar = __link_set_start(set); pvar < __link_set_end(set); pvar++)
+
+#define	__link_set_entry(set, idx)	(__link_set_begin(set)[idx])
+
+/*
+ * Some of the FreeBSD sources used in Bionic need this.
+ * Originally, this is used to embed the rcs versions of each source file
+ * in the generated binary. We certainly don't want this in Bionic.
+ */
+#define __FBSDID(s) /* nothing */
+
+/*-
+ * The following definitions are an extension of the behavior originally
+ * implemented in <sys/_posix.h>, but with a different level of granularity.
+ * POSIX.1 requires that the macros we test be defined before any standard
+ * header file is included.
+ *
+ * Here's a quick run-down of the versions:
+ *  defined(_POSIX_SOURCE)		1003.1-1988
+ *  _POSIX_C_SOURCE == 1		1003.1-1990
+ *  _POSIX_C_SOURCE == 2		1003.2-1992 C Language Binding Option
+ *  _POSIX_C_SOURCE == 199309		1003.1b-1993
+ *  _POSIX_C_SOURCE == 199506		1003.1c-1995, 1003.1i-1995,
+ *					and the omnibus ISO/IEC 9945-1: 1996
+ *  _POSIX_C_SOURCE == 200112		1003.1-2001
+ *  _POSIX_C_SOURCE == 200809		1003.1-2008
+ *
+ * In addition, the X/Open Portability Guide, which is now the Single UNIX
+ * Specification, defines a feature-test macro which indicates the version of
+ * that specification, and which subsumes _POSIX_C_SOURCE.
+ *
+ * Our macros begin with two underscores to avoid namespace screwage.
+ */
+
+/* Deal with IEEE Std. 1003.1-1990, in which _POSIX_C_SOURCE == 1. */
+#if defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE == 1
+#undef _POSIX_C_SOURCE		/* Probably illegal, but beyond caring now. */
+#define	_POSIX_C_SOURCE		199009
+#endif
+
+/* Deal with IEEE Std. 1003.2-1992, in which _POSIX_C_SOURCE == 2. */
+#if defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE == 2
+#undef _POSIX_C_SOURCE
+#define	_POSIX_C_SOURCE		199209
+#endif
+
+/* Deal with various X/Open Portability Guides and Single UNIX Spec. */
+#ifdef _XOPEN_SOURCE
+#if _XOPEN_SOURCE - 0 >= 700
+#define	__XSI_VISIBLE		700
+#undef _POSIX_C_SOURCE
+#define	_POSIX_C_SOURCE		200809
+#elif _XOPEN_SOURCE - 0 >= 600
+#define	__XSI_VISIBLE		600
+#undef _POSIX_C_SOURCE
+#define	_POSIX_C_SOURCE		200112
+#elif _XOPEN_SOURCE - 0 >= 500
+#define	__XSI_VISIBLE		500
+#undef _POSIX_C_SOURCE
+#define	_POSIX_C_SOURCE		199506
+#endif
+#endif
+
+/*
+ * Deal with all versions of POSIX.  The ordering relative to the tests above is
+ * important.
+ */
+#if defined(_POSIX_SOURCE) && !defined(_POSIX_C_SOURCE)
+#define	_POSIX_C_SOURCE		198808
+#endif
+#ifdef _POSIX_C_SOURCE
+#if _POSIX_C_SOURCE >= 200809
+#define	__POSIX_VISIBLE		200809
+#define	__ISO_C_VISIBLE		1999
+#elif _POSIX_C_SOURCE >= 200112
+#define	__POSIX_VISIBLE		200112
+#define	__ISO_C_VISIBLE		1999
+#elif _POSIX_C_SOURCE >= 199506
+#define	__POSIX_VISIBLE		199506
+#define	__ISO_C_VISIBLE		1990
+#elif _POSIX_C_SOURCE >= 199309
+#define	__POSIX_VISIBLE		199309
+#define	__ISO_C_VISIBLE		1990
+#elif _POSIX_C_SOURCE >= 199209
+#define	__POSIX_VISIBLE		199209
+#define	__ISO_C_VISIBLE		1990
+#elif _POSIX_C_SOURCE >= 199009
+#define	__POSIX_VISIBLE		199009
+#define	__ISO_C_VISIBLE		1990
+#else
+#define	__POSIX_VISIBLE		198808
+#define	__ISO_C_VISIBLE		0
+#endif /* _POSIX_C_SOURCE */
+#else
+/*-
+ * Deal with _ANSI_SOURCE:
+ * If it is defined, and no other compilation environment is explicitly
+ * requested, then define our internal feature-test macros to zero.  This
+ * makes no difference to the preprocessor (undefined symbols in preprocessing
+ * expressions are defined to have value zero), but makes it more convenient for
+ * a test program to print out the values.
+ *
+ * If a program mistakenly defines _ANSI_SOURCE and some other macro such as
+ * _POSIX_C_SOURCE, we will assume that it wants the broader compilation
+ * environment (and in fact we will never get here).
+ */
+#if defined(_ANSI_SOURCE)	/* Hide almost everything. */
+#define	__POSIX_VISIBLE		0
+#define	__XSI_VISIBLE		0
+#define	__BSD_VISIBLE		0
+#define	__ISO_C_VISIBLE		1990
+#elif defined(_C99_SOURCE)	/* Localism to specify strict C99 env. */
+#define	__POSIX_VISIBLE		0
+#define	__XSI_VISIBLE		0
+#define	__BSD_VISIBLE		0
+#define	__ISO_C_VISIBLE		1999
+#else				/* Default environment: show everything. */
+#define	__POSIX_VISIBLE		200809
+#define	__XSI_VISIBLE		700
+#define	__BSD_VISIBLE		1
+#define	__ISO_C_VISIBLE		1999
+#endif
+#endif
+
+/*
+ * Default values.
+ */
+#ifndef __XPG_VISIBLE
+# define __XPG_VISIBLE          700
+#endif
+#ifndef __POSIX_VISIBLE
+# define __POSIX_VISIBLE        200809
+#endif
+#ifndef __ISO_C_VISIBLE
+# define __ISO_C_VISIBLE        1999
+#endif
+#ifndef __BSD_VISIBLE
+# define __BSD_VISIBLE          1
+#endif
+
+#define  __BIONIC__   1
+#include <android/api-level.h>
+
+/* glibc compatibility. */
+#if __LP64__
+#define __WORDSIZE 64
+#else
+#define __WORDSIZE 32
+#endif
+
+/*
+ * When _FORTIFY_SOURCE is defined, automatic bounds checking is
+ * added to commonly used libc functions. If a buffer overrun is
+ * detected, the program is safely aborted.
+ *
+ * See
+ * http://gcc.gnu.org/onlinedocs/gcc/Object-Size-Checking.html for details.
+ */
+#if defined(_FORTIFY_SOURCE) && _FORTIFY_SOURCE > 0 && defined(__OPTIMIZE__) && __OPTIMIZE__ > 0
+#define __BIONIC_FORTIFY 1
+#if _FORTIFY_SOURCE == 2
+#define __bos(s) __builtin_object_size((s), 1)
+#else
+#define __bos(s) __builtin_object_size((s), 0)
+#endif
+#define __bos0(s) __builtin_object_size((s), 0)
+
+#define __BIONIC_FORTIFY_INLINE \
+    extern __inline__ \
+    __attribute__ ((always_inline)) \
+    __attribute__ ((gnu_inline))
+#endif
+#define __BIONIC_FORTIFY_UNKNOWN_SIZE ((size_t) -1)
+
+
+#if defined(__ANDROID__) && !defined(__LP64__) && defined( __arm__)
+#define __NDK_FPABI__ __attribute__((pcs("aapcs")))
+#else
+#define __NDK_FPABI__
+#endif
+
+#if (!defined(_NDK_MATH_NO_SOFTFP) || _NDK_MATH_NO_SOFTFP != 1) && !defined(__clang__)
+#define __NDK_FPABI_MATH__ __NDK_FPABI__
+#else
+#define __NDK_FPABI_MATH__  /* nothing */
+#endif
+
+#endif /* !_SYS_CDEFS_H_ */
diff --git a/ndk/platforms/android-20/include/sys/cdefs_elf.h b/ndk/platforms/android-L/include/sys/cdefs_elf.h
similarity index 100%
rename from ndk/platforms/android-20/include/sys/cdefs_elf.h
rename to ndk/platforms/android-L/include/sys/cdefs_elf.h
diff --git a/ndk/platforms/android-20/include/sys/endian.h b/ndk/platforms/android-L/include/sys/endian.h
similarity index 100%
rename from ndk/platforms/android-20/include/sys/endian.h
rename to ndk/platforms/android-L/include/sys/endian.h
diff --git a/ndk/platforms/android-20/include/sys/epoll.h b/ndk/platforms/android-L/include/sys/epoll.h
similarity index 100%
rename from ndk/platforms/android-20/include/sys/epoll.h
rename to ndk/platforms/android-L/include/sys/epoll.h
diff --git a/ndk/platforms/android-20/include/sys/errno.h b/ndk/platforms/android-L/include/sys/errno.h
similarity index 100%
rename from ndk/platforms/android-20/include/sys/errno.h
rename to ndk/platforms/android-L/include/sys/errno.h
diff --git a/ndk/platforms/android-20/include/sys/eventfd.h b/ndk/platforms/android-L/include/sys/eventfd.h
similarity index 100%
rename from ndk/platforms/android-20/include/sys/eventfd.h
rename to ndk/platforms/android-L/include/sys/eventfd.h
diff --git a/ndk/platforms/android-20/include/sys/file.h b/ndk/platforms/android-L/include/sys/file.h
similarity index 100%
rename from ndk/platforms/android-20/include/sys/file.h
rename to ndk/platforms/android-L/include/sys/file.h
diff --git a/ndk/platforms/android-20/include/sys/fsuid.h b/ndk/platforms/android-L/include/sys/fsuid.h
similarity index 100%
rename from ndk/platforms/android-20/include/sys/fsuid.h
rename to ndk/platforms/android-L/include/sys/fsuid.h
diff --git a/ndk/platforms/android-20/include/sys/glibc-syscalls.h b/ndk/platforms/android-L/include/sys/glibc-syscalls.h
similarity index 100%
rename from ndk/platforms/android-20/include/sys/glibc-syscalls.h
rename to ndk/platforms/android-L/include/sys/glibc-syscalls.h
diff --git a/ndk/platforms/android-20/include/sys/inotify.h b/ndk/platforms/android-L/include/sys/inotify.h
similarity index 100%
rename from ndk/platforms/android-20/include/sys/inotify.h
rename to ndk/platforms/android-L/include/sys/inotify.h
diff --git a/ndk/platforms/android-L/include/sys/ioctl.h b/ndk/platforms/android-L/include/sys/ioctl.h
new file mode 100644
index 0000000..a1014dc
--- /dev/null
+++ b/ndk/platforms/android-L/include/sys/ioctl.h
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+#ifndef _SYS_IOCTL_H_
+#define _SYS_IOCTL_H_
+
+#include <sys/cdefs.h>
+#include <linux/ioctl.h>
+/*
+ * NetBSD and glibc's <sys/ioctl.h> provide some of the
+ * terminal-related ioctl data structures such as struct winsize.
+ */
+#include <linux/termios.h>
+#include <asm/ioctls.h>
+#include <asm/termbits.h>
+#include <sys/ioctl_compat.h>
+#include <linux/tty.h>
+
+__BEGIN_DECLS
+
+extern int ioctl(int, int, ...);
+
+__END_DECLS
+
+#endif /* _SYS_IOCTL_H_ */
diff --git a/ndk/platforms/android-20/include/sys/ioctl_compat.h b/ndk/platforms/android-L/include/sys/ioctl_compat.h
similarity index 100%
rename from ndk/platforms/android-20/include/sys/ioctl_compat.h
rename to ndk/platforms/android-L/include/sys/ioctl_compat.h
diff --git a/ndk/platforms/android-20/include/sys/ipc.h b/ndk/platforms/android-L/include/sys/ipc.h
similarity index 100%
rename from ndk/platforms/android-20/include/sys/ipc.h
rename to ndk/platforms/android-L/include/sys/ipc.h
diff --git a/ndk/platforms/android-20/include/sys/klog.h b/ndk/platforms/android-L/include/sys/klog.h
similarity index 100%
rename from ndk/platforms/android-20/include/sys/klog.h
rename to ndk/platforms/android-L/include/sys/klog.h
diff --git a/ndk/platforms/android-20/include/sys/limits.h b/ndk/platforms/android-L/include/sys/limits.h
similarity index 100%
rename from ndk/platforms/android-20/include/sys/limits.h
rename to ndk/platforms/android-L/include/sys/limits.h
diff --git a/ndk/platforms/android-20/include/sys/mman.h b/ndk/platforms/android-L/include/sys/mman.h
similarity index 100%
rename from ndk/platforms/android-20/include/sys/mman.h
rename to ndk/platforms/android-L/include/sys/mman.h
diff --git a/ndk/platforms/android-20/include/sys/mount.h b/ndk/platforms/android-L/include/sys/mount.h
similarity index 100%
rename from ndk/platforms/android-20/include/sys/mount.h
rename to ndk/platforms/android-L/include/sys/mount.h
diff --git a/ndk/platforms/android-20/include/sys/msg.h b/ndk/platforms/android-L/include/sys/msg.h
similarity index 100%
rename from ndk/platforms/android-20/include/sys/msg.h
rename to ndk/platforms/android-L/include/sys/msg.h
diff --git a/ndk/platforms/android-20/include/sys/param.h b/ndk/platforms/android-L/include/sys/param.h
similarity index 100%
rename from ndk/platforms/android-20/include/sys/param.h
rename to ndk/platforms/android-L/include/sys/param.h
diff --git a/ndk/platforms/android-20/include/sys/personality.h b/ndk/platforms/android-L/include/sys/personality.h
similarity index 100%
rename from ndk/platforms/android-20/include/sys/personality.h
rename to ndk/platforms/android-L/include/sys/personality.h
diff --git a/ndk/platforms/android-20/include/sys/poll.h b/ndk/platforms/android-L/include/sys/poll.h
similarity index 100%
rename from ndk/platforms/android-20/include/sys/poll.h
rename to ndk/platforms/android-L/include/sys/poll.h
diff --git a/ndk/platforms/android-20/include/sys/prctl.h b/ndk/platforms/android-L/include/sys/prctl.h
similarity index 100%
rename from ndk/platforms/android-20/include/sys/prctl.h
rename to ndk/platforms/android-L/include/sys/prctl.h
diff --git a/ndk/platforms/android-20/include/sys/ptrace.h b/ndk/platforms/android-L/include/sys/ptrace.h
similarity index 100%
rename from ndk/platforms/android-20/include/sys/ptrace.h
rename to ndk/platforms/android-L/include/sys/ptrace.h
diff --git a/ndk/platforms/android-20/include/sys/queue.h b/ndk/platforms/android-L/include/sys/queue.h
similarity index 100%
rename from ndk/platforms/android-20/include/sys/queue.h
rename to ndk/platforms/android-L/include/sys/queue.h
diff --git a/ndk/platforms/android-20/include/sys/reboot.h b/ndk/platforms/android-L/include/sys/reboot.h
similarity index 100%
rename from ndk/platforms/android-20/include/sys/reboot.h
rename to ndk/platforms/android-L/include/sys/reboot.h
diff --git a/ndk/platforms/android-20/include/sys/reg.h b/ndk/platforms/android-L/include/sys/reg.h
similarity index 100%
rename from ndk/platforms/android-20/include/sys/reg.h
rename to ndk/platforms/android-L/include/sys/reg.h
diff --git a/ndk/platforms/android-20/include/sys/resource.h b/ndk/platforms/android-L/include/sys/resource.h
similarity index 100%
rename from ndk/platforms/android-20/include/sys/resource.h
rename to ndk/platforms/android-L/include/sys/resource.h
diff --git a/ndk/platforms/android-20/include/sys/select.h b/ndk/platforms/android-L/include/sys/select.h
similarity index 100%
rename from ndk/platforms/android-20/include/sys/select.h
rename to ndk/platforms/android-L/include/sys/select.h
diff --git a/ndk/platforms/android-20/include/sys/sem.h b/ndk/platforms/android-L/include/sys/sem.h
similarity index 100%
rename from ndk/platforms/android-20/include/sys/sem.h
rename to ndk/platforms/android-L/include/sys/sem.h
diff --git a/ndk/platforms/android-20/include/sys/sendfile.h b/ndk/platforms/android-L/include/sys/sendfile.h
similarity index 100%
rename from ndk/platforms/android-20/include/sys/sendfile.h
rename to ndk/platforms/android-L/include/sys/sendfile.h
diff --git a/ndk/platforms/android-20/include/sys/sha1.h b/ndk/platforms/android-L/include/sys/sha1.h
similarity index 100%
rename from ndk/platforms/android-20/include/sys/sha1.h
rename to ndk/platforms/android-L/include/sys/sha1.h
diff --git a/ndk/platforms/android-20/include/sys/shm.h b/ndk/platforms/android-L/include/sys/shm.h
similarity index 100%
rename from ndk/platforms/android-20/include/sys/shm.h
rename to ndk/platforms/android-L/include/sys/shm.h
diff --git a/ndk/platforms/android-20/include/sys/signal.h b/ndk/platforms/android-L/include/sys/signal.h
similarity index 100%
rename from ndk/platforms/android-20/include/sys/signal.h
rename to ndk/platforms/android-L/include/sys/signal.h
diff --git a/ndk/platforms/android-20/include/sys/signalfd.h b/ndk/platforms/android-L/include/sys/signalfd.h
similarity index 100%
rename from ndk/platforms/android-20/include/sys/signalfd.h
rename to ndk/platforms/android-L/include/sys/signalfd.h
diff --git a/ndk/platforms/android-20/include/sys/socket.h b/ndk/platforms/android-L/include/sys/socket.h
similarity index 100%
rename from ndk/platforms/android-20/include/sys/socket.h
rename to ndk/platforms/android-L/include/sys/socket.h
diff --git a/ndk/platforms/android-20/include/sys/socketcalls.h b/ndk/platforms/android-L/include/sys/socketcalls.h
similarity index 100%
rename from ndk/platforms/android-20/include/sys/socketcalls.h
rename to ndk/platforms/android-L/include/sys/socketcalls.h
diff --git a/ndk/platforms/android-20/include/sys/stat.h b/ndk/platforms/android-L/include/sys/stat.h
similarity index 100%
rename from ndk/platforms/android-20/include/sys/stat.h
rename to ndk/platforms/android-L/include/sys/stat.h
diff --git a/ndk/platforms/android-20/include/sys/statfs.h b/ndk/platforms/android-L/include/sys/statfs.h
similarity index 100%
rename from ndk/platforms/android-20/include/sys/statfs.h
rename to ndk/platforms/android-L/include/sys/statfs.h
diff --git a/ndk/platforms/android-20/include/sys/statvfs.h b/ndk/platforms/android-L/include/sys/statvfs.h
similarity index 100%
rename from ndk/platforms/android-20/include/sys/statvfs.h
rename to ndk/platforms/android-L/include/sys/statvfs.h
diff --git a/ndk/platforms/android-20/include/sys/swap.h b/ndk/platforms/android-L/include/sys/swap.h
similarity index 100%
rename from ndk/platforms/android-20/include/sys/swap.h
rename to ndk/platforms/android-L/include/sys/swap.h
diff --git a/ndk/platforms/android-20/include/sys/syscall.h b/ndk/platforms/android-L/include/sys/syscall.h
similarity index 100%
rename from ndk/platforms/android-20/include/sys/syscall.h
rename to ndk/platforms/android-L/include/sys/syscall.h
diff --git a/ndk/platforms/android-20/include/sys/sysconf.h b/ndk/platforms/android-L/include/sys/sysconf.h
similarity index 100%
rename from ndk/platforms/android-20/include/sys/sysconf.h
rename to ndk/platforms/android-L/include/sys/sysconf.h
diff --git a/ndk/platforms/android-20/include/sys/sysinfo.h b/ndk/platforms/android-L/include/sys/sysinfo.h
similarity index 100%
rename from ndk/platforms/android-20/include/sys/sysinfo.h
rename to ndk/platforms/android-L/include/sys/sysinfo.h
diff --git a/ndk/platforms/android-20/include/sys/syslimits.h b/ndk/platforms/android-L/include/sys/syslimits.h
similarity index 100%
rename from ndk/platforms/android-20/include/sys/syslimits.h
rename to ndk/platforms/android-L/include/sys/syslimits.h
diff --git a/ndk/platforms/android-20/include/sys/sysmacros.h b/ndk/platforms/android-L/include/sys/sysmacros.h
similarity index 100%
rename from ndk/platforms/android-20/include/sys/sysmacros.h
rename to ndk/platforms/android-L/include/sys/sysmacros.h
diff --git a/ndk/platforms/android-20/include/sys/system_properties.h b/ndk/platforms/android-L/include/sys/system_properties.h
similarity index 100%
rename from ndk/platforms/android-20/include/sys/system_properties.h
rename to ndk/platforms/android-L/include/sys/system_properties.h
diff --git a/ndk/platforms/android-20/include/sys/time.h b/ndk/platforms/android-L/include/sys/time.h
similarity index 100%
rename from ndk/platforms/android-20/include/sys/time.h
rename to ndk/platforms/android-L/include/sys/time.h
diff --git a/ndk/platforms/android-20/include/sys/timerfd.h b/ndk/platforms/android-L/include/sys/timerfd.h
similarity index 100%
rename from ndk/platforms/android-20/include/sys/timerfd.h
rename to ndk/platforms/android-L/include/sys/timerfd.h
diff --git a/ndk/platforms/android-20/include/sys/times.h b/ndk/platforms/android-L/include/sys/times.h
similarity index 100%
rename from ndk/platforms/android-20/include/sys/times.h
rename to ndk/platforms/android-L/include/sys/times.h
diff --git a/ndk/platforms/android-20/include/sys/timex.h b/ndk/platforms/android-L/include/sys/timex.h
similarity index 100%
rename from ndk/platforms/android-20/include/sys/timex.h
rename to ndk/platforms/android-L/include/sys/timex.h
diff --git a/ndk/platforms/android-20/include/sys/ttychars.h b/ndk/platforms/android-L/include/sys/ttychars.h
similarity index 100%
rename from ndk/platforms/android-20/include/sys/ttychars.h
rename to ndk/platforms/android-L/include/sys/ttychars.h
diff --git a/ndk/platforms/android-20/include/sys/ttydefaults.h b/ndk/platforms/android-L/include/sys/ttydefaults.h
similarity index 100%
rename from ndk/platforms/android-20/include/sys/ttydefaults.h
rename to ndk/platforms/android-L/include/sys/ttydefaults.h
diff --git a/ndk/platforms/android-20/include/sys/ttydev.h b/ndk/platforms/android-L/include/sys/ttydev.h
similarity index 100%
rename from ndk/platforms/android-20/include/sys/ttydev.h
rename to ndk/platforms/android-L/include/sys/ttydev.h
diff --git a/ndk/platforms/android-20/include/sys/types.h b/ndk/platforms/android-L/include/sys/types.h
similarity index 100%
rename from ndk/platforms/android-20/include/sys/types.h
rename to ndk/platforms/android-L/include/sys/types.h
diff --git a/ndk/platforms/android-L/include/sys/ucontext.h b/ndk/platforms/android-L/include/sys/ucontext.h
new file mode 100644
index 0000000..f62380d
--- /dev/null
+++ b/ndk/platforms/android-L/include/sys/ucontext.h
@@ -0,0 +1,293 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#ifndef _SYS_UCONTEXT_H_
+#define _SYS_UCONTEXT_H_
+
+#include <signal.h>
+#include <sys/user.h>
+
+__BEGIN_DECLS
+
+#if defined(__arm__)
+
+enum {
+  REG_R0 = 0,
+  REG_R1,
+  REG_R2,
+  REG_R3,
+  REG_R4,
+  REG_R5,
+  REG_R6,
+  REG_R7,
+  REG_R8,
+  REG_R9,
+  REG_R10,
+  REG_R11,
+  REG_R12,
+  REG_R13,
+  REG_R14,
+  REG_R15,
+};
+
+#define NGREG 18 /* Like glibc. */
+
+typedef int greg_t;
+typedef greg_t gregset_t[NGREG];
+
+#include <asm/sigcontext.h>
+typedef struct sigcontext mcontext_t;
+
+typedef struct ucontext {
+  unsigned long uc_flags;
+  struct ucontext* uc_link;
+  stack_t uc_stack;
+  mcontext_t uc_mcontext;
+  // Android has a wrong (smaller) sigset_t on ARM.
+  union {
+    sigset_t bionic;
+    uint32_t kernel[2];
+  } uc_sigmask;
+  // The kernel adds extra padding after uc_sigmask to match glibc sigset_t on ARM.
+  char __padding[120];
+  unsigned long uc_regspace[128] __attribute__((__aligned__(8)));
+} ucontext_t;
+
+#elif defined(__aarch64__)
+
+#include <asm/sigcontext.h>
+typedef struct sigcontext mcontext_t;
+
+typedef struct ucontext {
+  unsigned long uc_flags;
+  struct ucontext *uc_link;
+  stack_t uc_stack;
+  sigset_t uc_sigmask;
+  // The kernel adds extra padding after uc_sigmask to match glibc sigset_t on ARM64.
+  char __padding[128 - sizeof(sigset_t)];
+  mcontext_t uc_mcontext;
+} ucontext_t;
+
+#elif defined(__i386__)
+
+enum {
+  REG_GS = 0,
+  REG_FS,
+  REG_ES,
+  REG_DS,
+  REG_EDI,
+  REG_ESI,
+  REG_EBP,
+  REG_ESP,
+  REG_EBX,
+  REG_EDX,
+  REG_ECX,
+  REG_EAX,
+  REG_TRAPNO,
+  REG_ERR,
+  REG_EIP,
+  REG_CS,
+  REG_EFL,
+  REG_UESP,
+  REG_SS,
+  NGREG
+};
+
+typedef int greg_t;
+typedef greg_t gregset_t[NGREG];
+
+struct _libc_fpreg {
+  unsigned short significand[4];
+  unsigned short exponent;
+};
+
+struct _libc_fpstate {
+  unsigned long cw;
+  unsigned long sw;
+  unsigned long tag;
+  unsigned long ipoff;
+  unsigned long cssel;
+  unsigned long dataoff;
+  unsigned long datasel;
+  struct _libc_fpreg _st[8];
+  unsigned long status;
+};
+
+typedef struct _libc_fpstate* fpregset_t;
+
+typedef struct {
+  gregset_t gregs;
+  fpregset_t fpregs;
+  unsigned long oldmask;
+  unsigned long cr2;
+} mcontext_t;
+
+typedef struct ucontext {
+  unsigned long uc_flags;
+  struct ucontext* uc_link;
+  stack_t uc_stack;
+  mcontext_t uc_mcontext;
+  // Android has a wrong (smaller) sigset_t on x86.
+  union {
+    sigset_t bionic;
+    uint32_t kernel[2];
+  } uc_sigmask;
+  struct _libc_fpstate __fpregs_mem;
+} ucontext_t;
+
+#elif defined(__mips__)
+
+/* glibc doesn't have names for MIPS registers. */
+
+#define NGREG 32
+#define NFPREG 32
+
+typedef unsigned long long greg_t;
+typedef greg_t gregset_t[NGREG];
+
+typedef struct fpregset {
+  union {
+    double fp_dregs[NFPREG];
+    struct {
+      float _fp_fregs;
+      unsigned _fp_pad;
+    } fp_fregs[NFPREG];
+  } fp_r;
+} fpregset_t;
+
+typedef struct {
+  unsigned regmask;
+  unsigned status;
+  greg_t pc;
+  gregset_t gregs;
+  fpregset_t fpregs;
+  unsigned fp_owned;
+  unsigned fpc_csr;
+  unsigned fpc_eir;
+  unsigned used_math;
+  unsigned dsp;
+  greg_t mdhi;
+  greg_t mdlo;
+  unsigned long hi1;
+  unsigned long lo1;
+  unsigned long hi2;
+  unsigned long lo2;
+  unsigned long hi3;
+  unsigned long lo3;
+} mcontext_t;
+
+typedef struct ucontext {
+  unsigned long uc_flags;
+  struct ucontext* uc_link;
+  stack_t uc_stack;
+  mcontext_t uc_mcontext;
+  sigset_t uc_sigmask;
+} ucontext_t;
+
+#elif defined(__mips64__)
+
+#error TODO
+
+#elif defined(__x86_64__)
+
+enum {
+  REG_R8 = 0,
+  REG_R9,
+  REG_R10,
+  REG_R11,
+  REG_R12,
+  REG_R13,
+  REG_R14,
+  REG_R15,
+  REG_RDI,
+  REG_RSI,
+  REG_RBP,
+  REG_RBX,
+  REG_RDX,
+  REG_RAX,
+  REG_RCX,
+  REG_RSP,
+  REG_RIP,
+  REG_EFL,
+  REG_CSGSFS,
+  REG_ERR,
+  REG_TRAPNO,
+  REG_OLDMASK,
+  REG_CR2,
+  NGREG
+};
+
+typedef long greg_t;
+typedef greg_t gregset_t[NGREG];
+
+struct _libc_fpxreg {
+  unsigned short significand[4];
+  unsigned short exponent;
+  unsigned short padding[3];
+};
+
+struct _libc_xmmreg {
+  uint32_t element[4];
+};
+
+struct _libc_fpstate {
+  uint16_t cwd;
+  uint16_t swd;
+  uint16_t ftw;
+  uint16_t fop;
+  uint64_t rip;
+  uint64_t rdp;
+  uint32_t mxcsr;
+  uint32_t mxcr_mask;
+  struct _libc_fpxreg _st[8];
+  struct _libc_xmmreg _xmm[16];
+  uint32_t padding[24];
+};
+
+typedef struct _libc_fpstate* fpregset_t;
+
+typedef struct {
+  gregset_t gregs;
+  fpregset_t fpregs;
+  unsigned long __reserved1[8];
+} mcontext_t;
+
+typedef struct ucontext {
+  unsigned long uc_flags;
+  struct ucontext* uc_link;
+  stack_t uc_stack;
+  mcontext_t uc_mcontext;
+  sigset_t uc_sigmask;
+  struct _libc_fpstate __fpregs_mem;
+} ucontext_t;
+
+#endif
+
+__END_DECLS
+
+#endif /* _SYS_UCONTEXT_H_ */
diff --git a/ndk/platforms/android-20/include/sys/uio.h b/ndk/platforms/android-L/include/sys/uio.h
similarity index 100%
rename from ndk/platforms/android-20/include/sys/uio.h
rename to ndk/platforms/android-L/include/sys/uio.h
diff --git a/ndk/platforms/android-20/include/sys/un.h b/ndk/platforms/android-L/include/sys/un.h
similarity index 100%
rename from ndk/platforms/android-20/include/sys/un.h
rename to ndk/platforms/android-L/include/sys/un.h
diff --git a/ndk/platforms/android-L/include/sys/user.h b/ndk/platforms/android-L/include/sys/user.h
new file mode 100644
index 0000000..6e88d16
--- /dev/null
+++ b/ndk/platforms/android-L/include/sys/user.h
@@ -0,0 +1,246 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#ifndef _SYS_USER_H_
+#define _SYS_USER_H_
+
+#include <sys/cdefs.h>
+#include <limits.h> /* For PAGE_SIZE. */
+
+__BEGIN_DECLS
+
+#if __i386__
+
+struct user_fpregs_struct {
+  long cwd;
+  long swd;
+  long twd;
+  long fip;
+  long fcs;
+  long foo;
+  long fos;
+  long st_space[20];
+};
+struct user_fxsr_struct {
+  unsigned short cwd;
+  unsigned short swd;
+  unsigned short twd;
+  unsigned short fop;
+  long fip;
+  long fcs;
+  long foo;
+  long fos;
+  long mxcsr;
+  long reserved;
+  long st_space[32];
+  long xmm_space[32];
+  long padding[56];
+};
+struct user_regs_struct {
+  long ebx;
+  long ecx;
+  long edx;
+  long esi;
+  long edi;
+  long ebp;
+  long eax;
+  long xds;
+  long xes;
+  long xfs;
+  long xgs;
+  long orig_eax;
+  long eip;
+  long xcs;
+  long eflags;
+  long esp;
+  long xss;
+};
+struct user {
+  struct user_regs_struct regs;
+  int u_fpvalid;
+  struct user_fpregs_struct i387;
+  unsigned long int u_tsize;
+  unsigned long int u_dsize;
+  unsigned long int u_ssize;
+  unsigned long start_code;
+  unsigned long start_stack;
+  long int signal;
+  int reserved;
+  unsigned long u_ar0;
+  struct user_fpregs_struct* u_fpstate;
+  unsigned long magic;
+  char u_comm[32];
+  int u_debugreg[8];
+};
+
+#elif defined(__x86_64__)
+
+struct user_fpregs_struct {
+  unsigned short cwd;
+  unsigned short swd;
+  unsigned short ftw;
+  unsigned short fop;
+  __u64 rip;
+  __u64 rdp;
+  __u32 mxcsr;
+  __u32 mxcsr_mask;
+  __u32 st_space[32];
+  __u32 xmm_space[64];
+  __u32 padding[24];
+};
+struct user_regs_struct {
+  unsigned long r15;
+  unsigned long r14;
+  unsigned long r13;
+  unsigned long r12;
+  unsigned long rbp;
+  unsigned long rbx;
+  unsigned long r11;
+  unsigned long r10;
+  unsigned long r9;
+  unsigned long r8;
+  unsigned long rax;
+  unsigned long rcx;
+  unsigned long rdx;
+  unsigned long rsi;
+  unsigned long rdi;
+  unsigned long orig_rax;
+  unsigned long rip;
+  unsigned long cs;
+  unsigned long eflags;
+  unsigned long rsp;
+  unsigned long ss;
+  unsigned long fs_base;
+  unsigned long gs_base;
+  unsigned long ds;
+  unsigned long es;
+  unsigned long fs;
+  unsigned long gs;
+};
+struct user {
+  struct user_regs_struct regs;
+  int u_fpvalid;
+  int pad0;
+  struct user_fpregs_struct i387;
+  unsigned long int u_tsize;
+  unsigned long int u_dsize;
+  unsigned long int u_ssize;
+  unsigned long start_code;
+  unsigned long start_stack;
+  long int signal;
+  int reserved;
+  int pad1;
+  unsigned long u_ar0;
+  struct user_fpregs_struct* u_fpstate;
+  unsigned long magic;
+  char u_comm[32];
+  unsigned long u_debugreg[8];
+  unsigned long error_code;
+  unsigned long fault_address;
+};
+
+#elif defined(__mips__)
+struct user_regs_struct 
+{
+  unsigned long regs[180 / sizeof(unsigned long) + 64];
+};
+
+struct user {
+  unsigned long regs[180 / sizeof(unsigned long) + 64];
+  size_t u_tsize;
+  size_t u_dsize;
+  size_t u_ssize;
+  unsigned long start_code;
+  unsigned long start_data;
+  unsigned long start_stack;
+  long int signal;
+  unsigned long u_ar0;
+  unsigned long magic;
+  char u_comm[32];
+};
+
+#elif defined(__arm__)
+
+struct user_fpregs {
+  struct fp_reg {
+    unsigned int sign1:1;
+    unsigned int unused:15;
+    unsigned int sign2:1;
+    unsigned int exponent:14;
+    unsigned int j:1;
+    unsigned int mantissa1:31;
+    unsigned int mantissa0:32;
+  } fpregs[8];
+  unsigned int fpsr:32;
+  unsigned int fpcr:32;
+  unsigned char ftype[8];
+  unsigned int init_flag;
+};
+struct user_regs {
+  unsigned long uregs[18];
+};
+struct user_vfp {
+  unsigned long long fpregs[32];
+  unsigned long fpscr;
+};
+struct user_vfp_exc {
+  unsigned long fpexc;
+  unsigned long fpinst;
+  unsigned long fpinst2;
+};
+struct user {
+  struct user_regs regs;
+  int u_fpvalid;
+  unsigned long int u_tsize;
+  unsigned long int u_dsize;
+  unsigned long int u_ssize;
+  unsigned long start_code;
+  unsigned long start_stack;
+  long int signal;
+  int reserved;
+  struct user_regs* u_ar0;
+  unsigned long magic;
+  char u_comm[32];
+  int u_debugreg[8];
+  struct user_fpregs u_fp;
+  struct user_fpregs* u_fp0;
+};
+
+#elif defined(__aarch64__)
+
+// There are no user structures for 64 bit arm.
+
+#else
+
+#error "Unsupported architecture."
+
+#endif
+
+__END_DECLS
+
+#endif  /* _SYS_USER_H_ */
diff --git a/ndk/platforms/android-20/include/sys/utime.h b/ndk/platforms/android-L/include/sys/utime.h
similarity index 100%
rename from ndk/platforms/android-20/include/sys/utime.h
rename to ndk/platforms/android-L/include/sys/utime.h
diff --git a/ndk/platforms/android-20/include/sys/utsname.h b/ndk/platforms/android-L/include/sys/utsname.h
similarity index 100%
rename from ndk/platforms/android-20/include/sys/utsname.h
rename to ndk/platforms/android-L/include/sys/utsname.h
diff --git a/ndk/platforms/android-20/include/sys/vfs.h b/ndk/platforms/android-L/include/sys/vfs.h
similarity index 100%
rename from ndk/platforms/android-20/include/sys/vfs.h
rename to ndk/platforms/android-L/include/sys/vfs.h
diff --git a/ndk/platforms/android-20/include/sys/vt.h b/ndk/platforms/android-L/include/sys/vt.h
similarity index 100%
rename from ndk/platforms/android-20/include/sys/vt.h
rename to ndk/platforms/android-L/include/sys/vt.h
diff --git a/ndk/platforms/android-L/include/sys/wait.h b/ndk/platforms/android-L/include/sys/wait.h
new file mode 100644
index 0000000..8d9a5f6
--- /dev/null
+++ b/ndk/platforms/android-L/include/sys/wait.h
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+#ifndef _SYS_WAIT_H_
+#define _SYS_WAIT_H_
+
+#include <sys/cdefs.h>
+#include <sys/types.h>
+#include <sys/resource.h>
+#include <linux/wait.h>
+#include <signal.h>
+
+__BEGIN_DECLS
+
+#define WEXITSTATUS(s)  (((s) & 0xff00) >> 8)
+#define WCOREDUMP(s)    ((s) & 0x80)
+#define WTERMSIG(s)     ((s) & 0x7f)
+#define WSTOPSIG(s)     WEXITSTATUS(s)
+
+#define WIFEXITED(s)    (WTERMSIG(s) == 0)
+#define WIFSTOPPED(s)   (WTERMSIG(s) == 0x7f)
+#define WIFSIGNALED(s)  (WTERMSIG((s)+1) >= 2)
+
+extern pid_t  wait(int *);
+extern pid_t  waitpid(pid_t, int *, int);
+extern pid_t  wait4(pid_t, int *, int, struct rusage *);
+
+/* Posix states that idtype_t should be an enumeration type, but
+ * the kernel headers define P_ALL, P_PID and P_PGID as constant macros
+ * instead.
+ */
+typedef int idtype_t;
+
+extern int  waitid(idtype_t which, id_t id, siginfo_t *info, int options);
+
+__END_DECLS
+
+#endif /* _SYS_WAIT_H_ */
diff --git a/ndk/platforms/android-20/include/sys/xattr.h b/ndk/platforms/android-L/include/sys/xattr.h
similarity index 100%
rename from ndk/platforms/android-20/include/sys/xattr.h
rename to ndk/platforms/android-L/include/sys/xattr.h
diff --git a/ndk/platforms/android-L/include/syslog.h b/ndk/platforms/android-L/include/syslog.h
new file mode 100644
index 0000000..a52e811
--- /dev/null
+++ b/ndk/platforms/android-L/include/syslog.h
@@ -0,0 +1,94 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#ifndef _SYSLOG_H
+#define _SYSLOG_H
+
+#include <stdio.h>
+#include <sys/cdefs.h>
+#include <stdarg.h>
+
+__BEGIN_DECLS
+
+#define LOG_EMERG	0
+#define LOG_ALERT	1
+#define LOG_CRIT	2
+#define LOG_ERR		3
+#define LOG_WARNING	4
+#define LOG_NOTICE	5
+#define LOG_INFO	6
+#define LOG_DEBUG	7
+
+#define LOG_PRIMASK	7
+#define LOG_PRI(x)	((x) & LOG_PRIMASK)
+
+#define LOG_KERN	0000
+#define LOG_USER	0010
+#define LOG_MAIL	0020
+#define LOG_DAEMON	0030
+#define LOG_AUTH	0040
+#define LOG_SYSLOG	0050
+#define LOG_LPR		0060
+#define LOG_NEWS	0070
+#define LOG_UUCP	0100
+#define LOG_CRON	0110
+#define LOG_AUTHPRIV	0120
+#define LOG_FTP		0130
+#define LOG_LOCAL0	0200
+#define LOG_LOCAL1	0210
+#define LOG_LOCAL2	0220
+#define LOG_LOCAL3	0230
+#define LOG_LOCAL4	0240
+#define LOG_LOCAL5	0250
+#define LOG_LOCAL6	0260
+#define LOG_LOCAL7	0270
+
+#define LOG_FACMASK	01770
+#define LOG_FAC(x)	(((x) >> 3) & (LOG_FACMASK >> 3))
+
+#define LOG_MASK(pri) (1 << (pri))
+#define LOG_UPTO(pri) ((1 << ((pri)+1)) - 1)
+
+#define LOG_PID    0x01    /* include pid with message */
+#define LOG_CONS   0x02    /* write to console on logger error */
+#define LOG_ODELAY 0x04    /* delay connection until syslog() */
+#define LOG_NDELAY 0x08    /* open connection immediately */
+#define LOG_NOWAIT 0x10    /* wait for child processes (unused on linux) */
+#define LOG_PERROR 0x20    /* additional logging to stderr */
+
+#define _PATH_LOG  "/dev/syslog"
+
+extern void	closelog(void);
+extern void	openlog(const char *, int, int);
+extern int	setlogmask(int);
+extern void	syslog(int, const char *, ...) __printflike(2, 3);
+extern void	vsyslog(int, const char *, va_list) __printflike(2, 0);
+
+__END_DECLS
+
+#endif /* _SYSLOG_H */
diff --git a/ndk/platforms/android-20/include/termio.h b/ndk/platforms/android-L/include/termio.h
similarity index 100%
rename from ndk/platforms/android-20/include/termio.h
rename to ndk/platforms/android-L/include/termio.h
diff --git a/ndk/platforms/android-20/include/termios.h b/ndk/platforms/android-L/include/termios.h
similarity index 100%
rename from ndk/platforms/android-20/include/termios.h
rename to ndk/platforms/android-L/include/termios.h
diff --git a/ndk/platforms/android-L/include/time.h b/ndk/platforms/android-L/include/time.h
new file mode 100644
index 0000000..0587a2d
--- /dev/null
+++ b/ndk/platforms/android-L/include/time.h
@@ -0,0 +1,101 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#ifndef _TIME_H_
+#define _TIME_H_
+
+#include <sys/cdefs.h>
+#include <sys/time.h>
+
+__BEGIN_DECLS
+
+#define CLOCKS_PER_SEC 1000000
+
+extern char* tzname[] __LIBC_ABI_PUBLIC__;
+extern int daylight __LIBC_ABI_PUBLIC__;
+extern long int timezone __LIBC_ABI_PUBLIC__;
+
+struct sigevent;
+
+struct tm {
+  int tm_sec;
+  int tm_min;
+  int tm_hour;
+  int tm_mday;
+  int tm_mon;
+  int tm_year;
+  int tm_wday;
+  int tm_yday;
+  int tm_isdst;
+  long int tm_gmtoff;
+  const char* tm_zone;
+};
+
+#define TM_ZONE tm_zone
+
+extern time_t time(time_t*) __LIBC_ABI_PUBLIC__;
+extern int nanosleep(const struct timespec*, struct timespec*) __LIBC_ABI_PUBLIC__;
+
+extern char* asctime(const struct tm*) __LIBC_ABI_PUBLIC__;
+extern char* asctime_r(const struct tm*, char*) __LIBC_ABI_PUBLIC__;
+
+extern double difftime(time_t, time_t) __LIBC_ABI_PUBLIC__;
+extern time_t mktime(struct tm*) __LIBC_ABI_PUBLIC__;
+
+extern struct tm* localtime(const time_t*) __LIBC_ABI_PUBLIC__;
+extern struct tm* localtime_r(const time_t*, struct tm*) __LIBC_ABI_PUBLIC__;
+
+extern struct tm* gmtime(const time_t*) __LIBC_ABI_PUBLIC__;
+extern struct tm* gmtime_r(const time_t*, struct tm*) __LIBC_ABI_PUBLIC__;
+
+extern char* strptime(const char*, const char*, struct tm*) __LIBC_ABI_PUBLIC__;
+extern size_t strftime(char*, size_t, const char*, const struct tm*) __LIBC_ABI_PUBLIC__;
+
+extern char* ctime(const time_t*) __LIBC_ABI_PUBLIC__;
+extern char* ctime_r(const time_t*, char*) __LIBC_ABI_PUBLIC__;
+
+extern void tzset(void) __LIBC_ABI_PUBLIC__;
+
+extern clock_t clock(void) __LIBC_ABI_PUBLIC__;
+
+extern int clock_getres(int, struct timespec*) __LIBC_ABI_PUBLIC__;
+extern int clock_gettime(int, struct timespec*) __LIBC_ABI_PUBLIC__;
+
+extern int timer_create(int, struct sigevent*, timer_t*) __LIBC_ABI_PUBLIC__;
+extern int timer_delete(timer_t) __LIBC_ABI_PUBLIC__;
+extern int timer_settime(timer_t, int, const struct itimerspec*, struct itimerspec*) __LIBC_ABI_PUBLIC__;
+extern int timer_gettime(timer_t, struct itimerspec*) __LIBC_ABI_PUBLIC__;
+extern int timer_getoverrun(timer_t) __LIBC_ABI_PUBLIC__;
+
+/* Non-standard extensions that are in the BSDs and glibc. */
+extern time_t timelocal(struct tm*) __LIBC_ABI_PUBLIC__;
+extern time_t timegm(struct tm*) __LIBC_ABI_PUBLIC__;
+
+__END_DECLS
+
+#endif /* _TIME_H_ */
diff --git a/ndk/platforms/android-20/include/time64.h b/ndk/platforms/android-L/include/time64.h
similarity index 100%
rename from ndk/platforms/android-20/include/time64.h
rename to ndk/platforms/android-L/include/time64.h
diff --git a/ndk/platforms/android-L/include/uchar.h b/ndk/platforms/android-L/include/uchar.h
new file mode 100644
index 0000000..e1fcb5c
--- /dev/null
+++ b/ndk/platforms/android-L/include/uchar.h
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#ifndef _UCHAR_H_
+#define _UCHAR_H_
+
+#include <sys/cdefs.h>
+#include <wchar.h>
+
+__BEGIN_DECLS
+
+#define __STD_UTF_16__ 1
+#define __STD_UTF_32__ 1
+
+size_t c16rtomb(char* __restrict, char16_t, mbstate_t* __restrict);
+size_t c32rtomb(char* __restrict, char32_t, mbstate_t* __restrict);
+size_t mbrtoc16(char16_t* __restrict,
+                const char* __restrict,
+                size_t,
+                mbstate_t* __restrict);
+size_t mbrtoc32(char32_t* __restrict,
+                const char* __restrict,
+                size_t,
+                mbstate_t* __restrict);
+
+__END_DECLS
+
+#endif /* _UCHAR_H_ */
diff --git a/ndk/platforms/android-20/include/ucontext.h b/ndk/platforms/android-L/include/ucontext.h
similarity index 100%
rename from ndk/platforms/android-20/include/ucontext.h
rename to ndk/platforms/android-L/include/ucontext.h
diff --git a/ndk/platforms/android-L/include/unistd.h b/ndk/platforms/android-L/include/unistd.h
new file mode 100644
index 0000000..afe5f1a
--- /dev/null
+++ b/ndk/platforms/android-L/include/unistd.h
@@ -0,0 +1,248 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+#ifndef _UNISTD_H_
+#define _UNISTD_H_
+
+#include <stddef.h>
+#include <sys/cdefs.h>
+#include <sys/types.h>
+#include <sys/select.h>
+#include <sys/sysconf.h>
+#include <pathconf.h>
+
+__BEGIN_DECLS
+
+/* Standard file descriptor numbers. */
+#define STDIN_FILENO	0
+#define STDOUT_FILENO	1
+#define STDERR_FILENO	2
+
+/* Values for whence in fseek and lseek */
+#define SEEK_SET 0
+#define SEEK_CUR 1
+#define SEEK_END 2
+
+extern char** environ;
+
+extern __noreturn void _exit(int);
+
+extern pid_t  fork(void);
+extern pid_t  vfork(void);
+extern pid_t  getpid(void);
+extern pid_t  gettid(void) __pure2;
+extern pid_t  getpgid(pid_t);
+extern int    setpgid(pid_t, pid_t);
+extern pid_t  getppid(void);
+extern pid_t  getpgrp(void);
+extern int    setpgrp(void);
+extern pid_t  getsid(pid_t);
+extern pid_t  setsid(void);
+
+extern int execv(const char *, char * const *);
+extern int execvp(const char *, char * const *);
+extern int execvpe(const char *, char * const *, char * const *);
+extern int execve(const char *, char * const *, char * const *);
+extern int execl(const char *, const char *, ...);
+extern int execlp(const char *, const char *, ...);
+extern int execle(const char *, const char *, ...);
+
+/* IMPORTANT: See comment under <sys/prctl.h> about this declaration */
+extern int prctl(int  option, ...);
+
+extern int nice(int);
+
+extern int setuid(uid_t);
+extern uid_t getuid(void);
+extern int seteuid(uid_t);
+extern uid_t geteuid(void);
+extern int setgid(gid_t);
+extern gid_t getgid(void);
+extern int setegid(gid_t);
+extern gid_t getegid(void);
+extern int getgroups(int, gid_t *);
+extern int setgroups(size_t, const gid_t *);
+extern int setreuid(uid_t, uid_t);
+extern int setregid(gid_t, gid_t);
+extern int setresuid(uid_t, uid_t, uid_t);
+extern int setresgid(gid_t, gid_t, gid_t);
+extern int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid);
+extern int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid);
+extern char* getlogin(void);
+extern char* getusershell(void);
+extern void setusershell(void);
+extern void endusershell(void);
+
+
+
+/* Macros for access() */
+#define R_OK  4  /* Read */
+#define W_OK  2  /* Write */
+#define X_OK  1  /* Execute */
+#define F_OK  0  /* Existence */
+
+extern int access(const char*, int);
+extern int faccessat(int, const char*, int, int);
+extern int link(const char*, const char*);
+extern int linkat(int, const char*, int, const char*, int);
+extern int unlink(const char*);
+extern int unlinkat(int, const char*, int);
+extern int chdir(const char *);
+extern int fchdir(int);
+extern int rmdir(const char *);
+extern int pipe(int *);
+#ifdef _GNU_SOURCE
+extern int pipe2(int *, int);
+#endif
+extern int chroot(const char *);
+extern int symlink(const char*, const char*);
+extern int symlinkat(const char*, int, const char*);
+extern ssize_t readlink(const char*, char*, size_t);
+extern ssize_t readlinkat(int, const char*, char*, size_t);
+extern int chown(const char *, uid_t, gid_t);
+extern int fchown(int, uid_t, gid_t);
+extern int fchownat(int, const char*, uid_t, gid_t, int);
+extern int lchown(const char *, uid_t, gid_t);
+extern int truncate(const char *, off_t);
+extern int truncate64(const char *, off64_t);
+extern char *getcwd(char *, size_t);
+
+extern int sync(void);
+
+extern int close(int);
+extern off_t lseek(int, off_t, int);
+extern off64_t lseek64(int, off64_t, int);
+
+extern ssize_t read(int, void *, size_t);
+extern ssize_t write(int, const void *, size_t);
+extern ssize_t pread(int, void *, size_t, off_t);
+extern ssize_t pread64(int, void *, size_t, off64_t);
+extern ssize_t pwrite(int, const void *, size_t, off_t);
+extern ssize_t pwrite64(int, const void *, size_t, off64_t);
+
+extern int dup(int);
+extern int dup2(int, int);
+#ifdef _GNU_SOURCE
+extern int dup3(int, int, int);
+#endif
+extern int fcntl(int, int, ...);
+extern int ioctl(int, int, ...);
+extern int flock(int, int);
+extern int fsync(int);
+extern int fdatasync(int);
+extern int ftruncate(int, off_t);
+extern int ftruncate64(int, off64_t);
+
+extern int pause(void);
+extern unsigned int alarm(unsigned int);
+extern unsigned int sleep(unsigned int);
+extern int usleep(useconds_t);
+
+extern int gethostname(char *, size_t);
+
+extern void *__brk(void *);
+extern int brk(void *);
+extern void *sbrk(ptrdiff_t);
+
+extern int getopt(int, char * const *, const char *);
+extern char *optarg;
+extern int optind, opterr, optopt;
+
+extern int isatty(int);
+extern char* ttyname(int);
+extern int ttyname_r(int, char*, size_t);
+
+extern int  acct(const char*  filepath);
+
+int getpagesize(void);
+
+extern int sysconf(int  name);
+
+extern int daemon(int, int);
+
+#if defined(__arm__) || (defined(__mips__) && !defined(__LP64__))
+extern int cacheflush(long, long, long);
+    /* __attribute__((deprecated("use __builtin___clear_cache instead"))); */
+#endif
+
+extern pid_t tcgetpgrp(int fd);
+extern int   tcsetpgrp(int fd, pid_t _pid);
+
+#if 0 /* MISSING FROM BIONIC */
+extern int execlpe(const char *, const char *, ...);
+extern int getfsuid(uid_t);
+extern int setfsuid(uid_t);
+extern int getlogin_r(char* name, size_t namesize);
+extern int sethostname(const char *, size_t);
+extern int getdomainname(char *, size_t);
+extern int setdomainname(const char *, size_t);
+#endif /* MISSING */
+
+/* Used to retry syscalls that can return EINTR. */
+#define TEMP_FAILURE_RETRY(exp) ({         \
+    __typeof__(exp) _rc;                   \
+    do {                                   \
+        _rc = (exp);                       \
+    } while (_rc == -1 && errno == EINTR); \
+    _rc; })
+
+#if defined(__BIONIC_FORTIFY)
+extern ssize_t __read_chk(int, void*, size_t, size_t);
+__errordecl(__read_dest_size_error, "read called with size bigger than destination");
+__errordecl(__read_count_toobig_error, "read called with count > SSIZE_MAX");
+extern ssize_t __read_real(int, void*, size_t)
+    __asm__(__USER_LABEL_PREFIX__ "read");
+
+__BIONIC_FORTIFY_INLINE
+ssize_t read(int fd, void* buf, size_t count) {
+    size_t bos = __bos0(buf);
+
+#if !defined(__clang__)
+    if (__builtin_constant_p(count) && (count > SSIZE_MAX)) {
+        __read_count_toobig_error();
+    }
+
+    if (bos == __BIONIC_FORTIFY_UNKNOWN_SIZE) {
+        return __read_real(fd, buf, count);
+    }
+
+    if (__builtin_constant_p(count) && (count > bos)) {
+        __read_dest_size_error();
+    }
+
+    if (__builtin_constant_p(count) && (count <= bos)) {
+        return __read_real(fd, buf, count);
+    }
+#endif
+
+    return __read_chk(fd, buf, count, bos);
+}
+#endif /* defined(__BIONIC_FORTIFY) */
+
+__END_DECLS
+
+#endif /* _UNISTD_H_ */
diff --git a/ndk/platforms/android-20/include/util.h b/ndk/platforms/android-L/include/util.h
similarity index 100%
rename from ndk/platforms/android-20/include/util.h
rename to ndk/platforms/android-L/include/util.h
diff --git a/ndk/platforms/android-20/include/utime.h b/ndk/platforms/android-L/include/utime.h
similarity index 100%
rename from ndk/platforms/android-20/include/utime.h
rename to ndk/platforms/android-L/include/utime.h
diff --git a/ndk/platforms/android-20/include/utmp.h b/ndk/platforms/android-L/include/utmp.h
similarity index 100%
rename from ndk/platforms/android-20/include/utmp.h
rename to ndk/platforms/android-L/include/utmp.h
diff --git a/ndk/platforms/android-L/include/wchar.h b/ndk/platforms/android-L/include/wchar.h
new file mode 100644
index 0000000..014fed3
--- /dev/null
+++ b/ndk/platforms/android-L/include/wchar.h
@@ -0,0 +1,168 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+#ifndef _WCHAR_H_
+#define _WCHAR_H_
+
+#include <sys/cdefs.h>
+#include <stdio.h>
+
+#include <stdarg.h>
+#include <stddef.h>
+#include <time.h>
+
+#include <machine/wchar_limits.h>
+
+__BEGIN_DECLS
+
+typedef __WINT_TYPE__  wint_t;
+typedef struct {
+  uint8_t __seq[4];
+#ifdef __LP64__
+  char __reserved[4];
+#endif
+} mbstate_t;
+
+enum {
+    WC_TYPE_INVALID = 0,
+    WC_TYPE_ALNUM,
+    WC_TYPE_ALPHA,
+    WC_TYPE_BLANK,
+    WC_TYPE_CNTRL,
+    WC_TYPE_DIGIT,
+    WC_TYPE_GRAPH,
+    WC_TYPE_LOWER,
+    WC_TYPE_PRINT,
+    WC_TYPE_PUNCT,
+    WC_TYPE_SPACE,
+    WC_TYPE_UPPER,
+    WC_TYPE_XDIGIT,
+    WC_TYPE_MAX
+};
+
+typedef long wctype_t;
+
+#define  WEOF        ((wint_t)(-1))
+
+extern wint_t            btowc(int);
+extern int               fwprintf(FILE *, const wchar_t *, ...);
+extern int               fwscanf(FILE *, const wchar_t *, ...);
+extern int               iswalnum(wint_t);
+extern int               iswalpha(wint_t);
+extern int               iswblank(wint_t);
+extern int               iswcntrl(wint_t);
+extern int               iswdigit(wint_t);
+extern int               iswgraph(wint_t);
+extern int               iswlower(wint_t);
+extern int               iswprint(wint_t);
+extern int               iswpunct(wint_t);
+extern int               iswspace(wint_t);
+extern int               iswupper(wint_t);
+extern int               iswxdigit(wint_t);
+extern int               iswctype(wint_t, wctype_t);
+extern wint_t            fgetwc(FILE *);
+extern wchar_t          *fgetws(wchar_t *, int, FILE *);
+extern wint_t            fputwc(wchar_t, FILE *);
+extern int               fputws(const wchar_t *, FILE *);
+extern int               fwide(FILE *, int);
+extern wint_t            getwc(FILE *);
+extern wint_t            getwchar(void);
+extern int               mbsinit(const mbstate_t *);
+extern size_t            mbrlen(const char *, size_t, mbstate_t *);
+extern size_t            mbrtowc(wchar_t *, const char *, size_t, mbstate_t *);
+extern size_t mbsrtowcs(wchar_t*, const char**, size_t, mbstate_t*);
+extern size_t mbsnrtowcs(wchar_t*, const char**, size_t, size_t, mbstate_t*);
+extern size_t            mbstowcs(wchar_t *, const char *, size_t);
+extern wint_t            putwc(wchar_t, FILE *);
+extern wint_t            putwchar(wchar_t);
+extern int               swprintf(wchar_t *, size_t, const wchar_t *, ...);
+extern int               swscanf(const wchar_t *, const wchar_t *, ...);
+extern wint_t            towlower(wint_t);
+extern wint_t            towupper(wint_t);
+extern wint_t            ungetwc(wint_t, FILE *);
+extern int vfwprintf(FILE*, const wchar_t*, va_list);
+extern int vfwscanf(FILE*, const wchar_t*, va_list);
+extern int vswprintf(wchar_t*, size_t, const wchar_t*, va_list);
+extern int vswscanf(const wchar_t*, const wchar_t*, va_list);
+extern int vwprintf(const wchar_t*, va_list);
+extern int vwscanf(const wchar_t*, va_list);
+extern size_t            wcrtomb(char *, wchar_t, mbstate_t *);
+extern int               wcscasecmp(const wchar_t *, const wchar_t *);
+extern wchar_t          *wcscat(wchar_t *, const wchar_t *);
+extern wchar_t          *wcschr(const wchar_t *, wchar_t);
+extern int               wcscmp(const wchar_t *, const wchar_t *);
+extern int               wcscoll(const wchar_t *, const wchar_t *);
+extern wchar_t          *wcscpy(wchar_t *, const wchar_t *);
+extern size_t            wcscspn(const wchar_t *, const wchar_t *);
+extern size_t            wcsftime(wchar_t *, size_t, const wchar_t *, const struct tm *) __LIBC_ABI_PUBLIC__;
+extern size_t            wcslen(const wchar_t *);
+extern int               wcsncasecmp(const wchar_t *, const wchar_t *, size_t);
+extern wchar_t          *wcsncat(wchar_t *, const wchar_t *, size_t);
+extern int               wcsncmp(const wchar_t *, const wchar_t *, size_t);
+extern wchar_t          *wcsncpy(wchar_t *, const wchar_t *, size_t);
+extern size_t wcsnrtombs(char*, const wchar_t**, size_t, size_t, mbstate_t*);
+extern wchar_t          *wcspbrk(const wchar_t *, const wchar_t *);
+extern wchar_t          *wcsrchr(const wchar_t *, wchar_t);
+extern size_t wcsrtombs(char*, const wchar_t**, size_t, mbstate_t*);
+extern size_t            wcsspn(const wchar_t *, const wchar_t *);
+extern wchar_t          *wcsstr(const wchar_t *, const wchar_t *);
+extern double wcstod(const wchar_t*, wchar_t**);
+extern float wcstof(const wchar_t*, wchar_t**);
+extern wchar_t* wcstok(wchar_t*, const wchar_t*, wchar_t**);
+extern long wcstol(const wchar_t*, wchar_t**, int);
+extern long long wcstoll(const wchar_t*, wchar_t**, int);
+extern long double wcstold(const wchar_t*, wchar_t**);
+extern unsigned long wcstoul(const wchar_t*, wchar_t**, int);
+extern unsigned long long wcstoull(const wchar_t*, wchar_t**, int);
+extern int               wcswidth(const wchar_t *, size_t);
+extern size_t            wcsxfrm(wchar_t *, const wchar_t *, size_t);
+extern int               wctob(wint_t);
+extern wctype_t          wctype(const char *);
+extern int               wcwidth(wchar_t);
+extern wchar_t          *wmemchr(const wchar_t *, wchar_t, size_t);
+extern int               wmemcmp(const wchar_t *, const wchar_t *, size_t);
+extern wchar_t          *wmemcpy(wchar_t *, const wchar_t *, size_t);
+extern wchar_t          *wmemmove(wchar_t *, const wchar_t *, size_t);
+extern wchar_t          *wmemset(wchar_t *, wchar_t, size_t);
+extern int               wprintf(const wchar_t *, ...);
+extern int               wscanf(const wchar_t *, ...);
+
+extern size_t wcslcat(wchar_t*, const wchar_t*, size_t);
+extern size_t wcslcpy(wchar_t*, const wchar_t*, size_t);
+
+typedef void *wctrans_t;
+extern wint_t towctrans(wint_t, wctrans_t);
+extern wctrans_t wctrans(const char*);
+
+#if __POSIX_VISIBLE >= 200809
+wchar_t* wcsdup(const wchar_t*);
+size_t wcsnlen(const wchar_t*, size_t);
+#endif
+
+__END_DECLS
+
+#endif /* _WCHAR_H_ */
diff --git a/ndk/platforms/android-20/include/wctype.h b/ndk/platforms/android-L/include/wctype.h
similarity index 100%
rename from ndk/platforms/android-20/include/wctype.h
rename to ndk/platforms/android-L/include/wctype.h
diff --git a/ndk/platforms/android-20/include/xlocale.h b/ndk/platforms/android-L/include/xlocale.h
similarity index 100%
rename from ndk/platforms/android-20/include/xlocale.h
rename to ndk/platforms/android-L/include/xlocale.h
diff --git a/ndk/samples/hello-jni/jni/hello-jni.c b/ndk/samples/hello-jni/jni/hello-jni.c
index 19fcc6a..80e9804 100644
--- a/ndk/samples/hello-jni/jni/hello-jni.c
+++ b/ndk/samples/hello-jni/jni/hello-jni.c
@@ -30,17 +30,31 @@
 #if defined(__arm__)
   #if defined(__ARM_ARCH_7A__)
     #if defined(__ARM_NEON__)
-      #define ABI "armeabi-v7a/NEON"
+      #if defined(__ARM_PCS_VFP)
+        #define ABI "armeabi-v7a/NEON (hard-float)"
+      #else
+        #define ABI "armeabi-v7a/NEON"
+      #endif
     #else
-      #define ABI "armeabi-v7a"
+      #if defined(__ARM_PCS_VFP)
+        #define ABI "armeabi-v7a (hard-float)"
+      #else
+        #define ABI "armeabi-v7a"
+      #endif
     #endif
   #else
    #define ABI "armeabi"
   #endif
 #elif defined(__i386__)
    #define ABI "x86"
+#elif defined(__x86_64__)
+   #define ABI "x86_64"
+#elif defined(__mips64)  /* mips64el-* toolchain defines __mips__ too */
+   #define ABI "mips64"
 #elif defined(__mips__)
    #define ABI "mips"
+#elif defined(__aarch64__)
+   #define ABI "arm64-v8a"
 #else
    #define ABI "unknown"
 #endif
diff --git a/ndk/samples/hello-neon/jni/Application.mk b/ndk/samples/hello-neon/jni/Application.mk
index db8f866..6e8154b 100644
--- a/ndk/samples/hello-neon/jni/Application.mk
+++ b/ndk/samples/hello-neon/jni/Application.mk
@@ -1,2 +1,2 @@
 # Build both ARMv5TE and ARMv7-A machine code.
-APP_ABI := armeabi armeabi-v7a
+APP_ABI := armeabi armeabi-v7a arm64-v8a
diff --git a/ndk/samples/test-libstdc++/jni/Application.mk b/ndk/samples/test-libstdc++/jni/Application.mk
new file mode 100644
index 0000000..e619d92
--- /dev/null
+++ b/ndk/samples/test-libstdc++/jni/Application.mk
@@ -0,0 +1 @@
+APP_ABI := all
\ No newline at end of file
diff --git a/ndk/samples/two-libs/jni/Application.mk b/ndk/samples/two-libs/jni/Application.mk
new file mode 100644
index 0000000..e619d92
--- /dev/null
+++ b/ndk/samples/two-libs/jni/Application.mk
@@ -0,0 +1 @@
+APP_ABI := all
\ No newline at end of file
diff --git a/ndk/sources/android/libportable/arch-mips/_setjmp.S b/ndk/sources/android/libportable/arch-mips/_setjmp.S
index 285ad7f..b051276 100644
--- a/ndk/sources/android/libportable/arch-mips/_setjmp.S
+++ b/ndk/sources/android/libportable/arch-mips/_setjmp.S
@@ -185,8 +185,6 @@
          move   v0, a1
 
 botch:
-        jal     longjmperror
-        nop
         jal     abort
         nop
         RESTORE_GP64
diff --git a/ndk/sources/android/libportable/arch-mips/filefd.c b/ndk/sources/android/libportable/arch-mips/filefd.c
index d80eb3d..788edf1 100644
--- a/ndk/sources/android/libportable/arch-mips/filefd.c
+++ b/ndk/sources/android/libportable/arch-mips/filefd.c
@@ -23,7 +23,6 @@
 #include <errno_portable.h>
 #include <filefd_portable.h>
 #include <signal_portable.h>
-#include <sys/atomics.h>
 
 #define PORTABLE_TAG "filefd_portable"
 #include <log_portable.h>
@@ -307,7 +306,7 @@
                 } else {
                     ASSERT(filefd_mapped_file[fd] == UNUSED_FD_TYPE);
 
-                    __atomic_inc(&filefd_mapped_files);
+                    __sync_fetch_and_add(&filefd_mapped_files, 1);
                     ALOGV("%s: ++filefd_mapped_files:%d;", __func__,
                                  filefd_mapped_files);
 
@@ -358,7 +357,7 @@
 
     if (fd >= 0 && fd < __FD_SETSIZE) {
         if (filefd_mapped_file[fd] == UNUSED_FD_TYPE) {
-            __atomic_inc(&filefd_mapped_files);
+            __sync_fetch_and_add(&filefd_mapped_files, 1);
             filefd_mapped_file[fd] = fd_type;
         }
         ASSERT(filefd_mapped_file[fd] == fd_type);
@@ -375,7 +374,7 @@
         if (filefd_mapped_file[fd] != UNUSED_FD_TYPE) {
             filefd_mapped_file[fd] = UNUSED_FD_TYPE;
             filefd_FD_CLOEXEC_file[fd] = 0;
-            __atomic_dec(&filefd_mapped_files);
+            __sync_fetch_and_sub(&filefd_mapped_files, 1);
         }
     }
     ALOGV("%s: }", __func__);
diff --git a/ndk/sources/android/libportable/arch-mips/flags.c b/ndk/sources/android/libportable/arch-mips/flags.c
index f18b8d9..f0f7500 100644
--- a/ndk/sources/android/libportable/arch-mips/flags.c
+++ b/ndk/sources/android/libportable/arch-mips/flags.c
@@ -23,36 +23,3 @@
 #include <log_portable.h>
 
 
-/* __sflags is an internal bionic routine but the symbol is exported and there are callers... */
-extern int __sflags(const char *, int *);
-
-int
-WRAP(__sflags)(const char *mode, int *optr)
-{
-    int rv;
-    int nflags, pflags;
-
-    ALOGV(" ");
-    ALOGV("%s(mode:%p, optr:%p) {", __func__, mode, optr);
-
-    rv = __sflags(mode, &nflags);
-
-    /* error - no change to *optr */
-    if (rv == 0)
-        goto done;
-
-    pflags = nflags & O_ACCMODE;
-    if (nflags & O_CREAT)
-        pflags |= O_CREAT_PORTABLE;
-    if (nflags & O_TRUNC)
-        pflags |= O_TRUNC_PORTABLE;
-    if (nflags & O_APPEND)
-        pflags |= O_APPEND_PORTABLE;
-
-    /* Set *optr to portable flags */
-    *optr = pflags;
-
-done:
-    ALOGV("%s: return(rv:%d); }", __func__, rv);
-    return rv;
-}
diff --git a/ndk/sources/android/libportable/arch-mips/pthread.c b/ndk/sources/android/libportable/arch-mips/pthread.c
index f6c3037..5f92fb0 100644
--- a/ndk/sources/android/libportable/arch-mips/pthread.c
+++ b/ndk/sources/android/libportable/arch-mips/pthread.c
@@ -213,9 +213,6 @@
 PTHREAD_WRAPPER(pthread_cond_timeout_np, (pthread_cond_t *cond, pthread_mutex_t *mutex,
                 unsigned msecs), (cond, mutex, msecs), "(cond:%p, mutex:%p, msecs:%u)");
 
-PTHREAD_WRAPPER(pthread_mutex_lock_timeout_np, (pthread_mutex_t *mutex, unsigned msecs),
-                (mutex, msecs), "(mutex:%p, msecs:%u)");
-
 PTHREAD_WRAPPER(pthread_rwlockattr_init, (pthread_rwlockattr_t *attr), (attr), "(attr:%p)");
 
 PTHREAD_WRAPPER(pthread_rwlockattr_destroy, (pthread_rwlockattr_t *attr), (attr), "(attr:%p)");
diff --git a/ndk/sources/android/libportable/arch-mips/setjmp.S b/ndk/sources/android/libportable/arch-mips/setjmp.S
index 1532972..fcfccec 100644
--- a/ndk/sources/android/libportable/arch-mips/setjmp.S
+++ b/ndk/sources/android/libportable/arch-mips/setjmp.S
@@ -140,7 +140,6 @@
         j       ra
 
 botch:
-        jal     longjmperror
         jal     abort
         RESTORE_GP64
         PTR_ADDU sp, FRAMESZ
diff --git a/ndk/sources/android/libportable/arch-mips/signal.c b/ndk/sources/android/libportable/arch-mips/signal.c
index e84b2fc..ae3fcb4 100644
--- a/ndk/sources/android/libportable/arch-mips/signal.c
+++ b/ndk/sources/android/libportable/arch-mips/signal.c
@@ -871,22 +871,6 @@
 }
 
 
-int WRAP(tkill)(int tid, int portable_signum)
-{
-    extern int REAL(tkill)(int, int);
-    int rv;
-
-    ALOGV(" ");
-    ALOGV("%s(tid:%d, portable_signum:%d) {", __func__,
-              tid,    portable_signum);
-
-    rv = do_kill(tid, portable_signum, REAL(tkill));
-
-    ALOGV("%s: return(rv:%d); }", __func__, rv);
-    return rv;
-}
-
-
 /* tgkill is not exported from android-14 libc.so */
 #if 0
 int WRAP(tgkill)(int tgid, int tid, int portable_signum)
diff --git a/ndk/sources/android/libportable/arch-mips/syscall.c b/ndk/sources/android/libportable/arch-mips/syscall.c
index 5e31b80..13ac938 100644
--- a/ndk/sources/android/libportable/arch-mips/syscall.c
+++ b/ndk/sources/android/libportable/arch-mips/syscall.c
@@ -561,20 +561,6 @@
     }
 #endif
 
-#ifdef __NR_tkill_portable
-    case __NR_tkill_portable: {
-        int tid, sig;
-
-        va_start(ap, portable_number);
-        tid = va_arg(ap, int);
-        sig = va_arg(ap, int);
-        va_end(ap);
-
-        ret = WRAP(tkill)(tid, sig);
-        goto done;
-    }
-#endif
-
 #ifdef __NR_uname_portable
     case __NR_uname_portable: native_number = __NR_uname; break;
 #endif
diff --git a/perftests/panorama/Android.mk b/perftests/panorama/Android.mk
new file mode 100755
index 0000000..30c4f72
--- /dev/null
+++ b/perftests/panorama/Android.mk
@@ -0,0 +1,59 @@
+local_target_dir := $(TARGET_OUT_DATA)/local/tmp
+
+LOCAL_PATH:= $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_C_INCLUDES := \
+    $(LOCAL_PATH)/feature_mos/src \
+    $(LOCAL_PATH)/feature_stab/src \
+    $(LOCAL_PATH)/feature_stab/db_vlvm
+
+LOCAL_CFLAGS := -O3 -DNDEBUG -Wno-unused-parameter -Wno-maybe-uninitialized
+
+LOCAL_SRC_FILES := benchmark.cpp \
+	feature_mos/src/mosaic/ImageUtils.cpp \
+    feature_mos/src/mosaic/Mosaic.cpp \
+    feature_mos/src/mosaic/AlignFeatures.cpp \
+    feature_mos/src/mosaic/Blend.cpp \
+    feature_mos/src/mosaic/Pyramid.cpp \
+    feature_mos/src/mosaic/trsMatrix.cpp \
+    feature_mos/src/mosaic/Delaunay.cpp \
+    feature_mos/src/mosaic_renderer/Renderer.cpp \
+    feature_mos/src/mosaic_renderer/WarpRenderer.cpp \
+    feature_mos/src/mosaic_renderer/SurfaceTextureRenderer.cpp \
+    feature_mos/src/mosaic_renderer/YVURenderer.cpp \
+    feature_mos/src/mosaic_renderer/FrameBuffer.cpp \
+    feature_stab/db_vlvm/db_rob_image_homography.cpp \
+    feature_stab/db_vlvm/db_feature_detection.cpp \
+    feature_stab/db_vlvm/db_image_homography.cpp \
+    feature_stab/db_vlvm/db_framestitching.cpp \
+    feature_stab/db_vlvm/db_feature_matching.cpp \
+    feature_stab/db_vlvm/db_utilities.cpp \
+    feature_stab/db_vlvm/db_utilities_camera.cpp \
+    feature_stab/db_vlvm/db_utilities_indexing.cpp \
+    feature_stab/db_vlvm/db_utilities_linalg.cpp \
+    feature_stab/db_vlvm/db_utilities_poly.cpp \
+    feature_stab/src/dbreg/dbstabsmooth.cpp \
+    feature_stab/src/dbreg/dbreg.cpp \
+    feature_stab/src/dbreg/vp_motionmodel.c
+
+LOCAL_MODULE_TAGS := tests
+
+LOCAL_MODULE := panorama_bench
+
+LOCAL_MODULE_STEM_32 := panorama_bench
+
+LOCAL_MODULE_STEM_64 := panorama_bench64
+
+LOCAL_MULTILIB := both
+
+LOCAL_MODULE_PATH := $(local_target_dir)
+
+LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
+
+LOCAL_FORCE_STATIC_EXECUTABLE := true
+
+LOCAL_STATIC_LIBRARIES := libc libm
+
+include $(BUILD_EXECUTABLE)
diff --git a/perftests/panorama/README.txt b/perftests/panorama/README.txt
new file mode 100644
index 0000000..a36383a
--- /dev/null
+++ b/perftests/panorama/README.txt
@@ -0,0 +1,31 @@
+How to run and verify the benchmark:
+
+1) adb push $OUT/data/local/tmp/panorama_bench /data/local/tmp
+2) adb push input /data/panorama_input
+3) adb shell /data/local/tmp/panorama_bench /data/panorama_input/test /data/panorama.ppm
+
+Sample output:
+
+38 frames loaded
+Iteration 0: 1454x330 moasic created: 4.33 seconds (2.05 + 2.28)
+Iteration 1: 1454x330 moasic created: 4.26 seconds (1.83 + 2.44)
+Iteration 2: 1454x330 moasic created: 5.57 seconds (2.73 + 2.84)
+Iteration 3: 1454x330 moasic created: 5.15 seconds (2.33 + 2.82)
+Iteration 4: 1454x330 moasic created: 6.22 seconds (2.05 + 4.16)
+Iteration 5: 1454x330 moasic created: 6.31 seconds (2.16 + 4.15)
+Iteration 6: 1454x330 moasic created: 5.04 seconds (2.03 + 3.01)
+Iteration 7: 1454x330 moasic created: 6.30 seconds (3.47 + 2.83)
+Iteration 8: 1454x330 moasic created: 6.57 seconds (1.83 + 4.73)
+Iteration 9: 1454x330 moasic created: 6.27 seconds (2.28 + 4.00)
+Total elapsed time: 56.02 seconds
+
+The first number in the parenthesis is the time to align the frames; the second
+number is the time to stitch them.
+
+The total elapsed time is the interesting number for benchmarking.
+
+The result of the benchmark can be verified by pulling the the output
+photo off the device and comparing it against the golden reference:
+
+1) adb pull /data/panorama.ppm .
+2) diff panorama.ppm output/golden.ppm
diff --git a/perftests/panorama/benchmark.cpp b/perftests/panorama/benchmark.cpp
new file mode 100755
index 0000000..2a6440f
--- /dev/null
+++ b/perftests/panorama/benchmark.cpp
@@ -0,0 +1,131 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * 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.
+ */
+
+#include <time.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+
+#include "mosaic/Mosaic.h"
+#include "mosaic/ImageUtils.h"
+
+#define MAX_FRAMES 200
+#define KERNEL_ITERATIONS 10
+
+const int blendingType = Blend::BLEND_TYPE_HORZ;
+const int stripType = Blend::STRIP_TYPE_WIDE;
+
+ImageType yvuFrames[MAX_FRAMES];
+
+int loadImages(const char* basename, int &width, int &height)
+{
+    char filename[512];
+    struct stat filestat;
+    int i;
+
+    for (i = 0; i < MAX_FRAMES; i++) {
+        sprintf(filename, "%s_%03d.ppm", basename, i + 1);
+        if (stat(filename, &filestat) != 0) break;
+        ImageType rgbFrame = ImageUtils::readBinaryPPM(filename, width, height);
+        yvuFrames[i] = ImageUtils::allocateImage(width, height,
+                                ImageUtils::IMAGE_TYPE_NUM_CHANNELS);
+        ImageUtils::rgb2yvu(yvuFrames[i], rgbFrame, width, height);
+        ImageUtils::freeImage(rgbFrame);
+    }
+    return i;
+}
+
+int main(int argc, char **argv)
+{
+    struct timespec t1, t2, t3;
+
+    int width, height;
+    float totalElapsedTime = 0;
+
+    const char *basename;
+    const char *filename;
+
+    if (argc != 3) {
+        printf("Usage: %s input_dir output_filename\n", argv[0]);
+        return 0;
+    } else {
+        basename = argv[1];
+        filename = argv[2];
+    }
+
+    // Load the images outside the computational kernel
+    int totalFrames = loadImages(basename, width, height);
+
+    if (totalFrames == 0) {
+        printf("Image files not found. Make sure %s exists.\n",
+               basename);
+        return 1;
+    }
+
+    printf("%d frames loaded\n", totalFrames);
+
+
+    // Interesting stuff is here
+    for (int iteration = 0; iteration < KERNEL_ITERATIONS; iteration++)  {
+        Mosaic mosaic;
+
+        mosaic.initialize(blendingType, stripType, width, height, -1, false, 0);
+
+        clock_gettime(CLOCK_MONOTONIC, &t1);
+        for (int i = 0; i < totalFrames; i++) {
+            mosaic.addFrame(yvuFrames[i]);
+        }
+        clock_gettime(CLOCK_MONOTONIC, &t2);
+
+        float progress = 0.0;
+        bool cancelComputation = false;
+
+        mosaic.createMosaic(progress, cancelComputation);
+
+        int mosaicWidth, mosaicHeight;
+        ImageType resultYVU = mosaic.getMosaic(mosaicWidth, mosaicHeight);
+
+        ImageType imageRGB = ImageUtils::allocateImage(
+            mosaicWidth, mosaicHeight, ImageUtils::IMAGE_TYPE_NUM_CHANNELS);
+
+        clock_gettime(CLOCK_MONOTONIC, &t3);
+
+        float elapsedTime =
+            (t3.tv_sec - t1.tv_sec) + (t3.tv_nsec - t1.tv_nsec)/1e9;
+        float addImageTime =
+            (t2.tv_sec - t1.tv_sec) + (t2.tv_nsec - t1.tv_nsec)/1e9;
+        float stitchImageTime =
+            (t3.tv_sec - t2.tv_sec) + (t3.tv_nsec - t2.tv_nsec)/1e9;
+
+        totalElapsedTime += elapsedTime;
+
+        printf("Iteration %d: %dx%d moasic created: "
+               "%.2f seconds (%.2f + %.2f)\n",
+               iteration, mosaicWidth, mosaicHeight,
+               elapsedTime, addImageTime, stitchImageTime);
+
+        // Write the output only once for correctness check
+        if (iteration == 0) {
+            ImageUtils::yvu2rgb(imageRGB, resultYVU, mosaicWidth,
+                                mosaicHeight);
+            ImageUtils::writeBinaryPPM(imageRGB, filename, mosaicWidth,
+                                       mosaicHeight);
+        }
+    }
+    printf("Total elapsed time: %.2f seconds\n", totalElapsedTime);
+
+    return 0;
+}
diff --git a/perftests/panorama/feature_mos/doc/Readme.txt b/perftests/panorama/feature_mos/doc/Readme.txt
new file mode 100644
index 0000000..83ce165
--- /dev/null
+++ b/perftests/panorama/feature_mos/doc/Readme.txt
@@ -0,0 +1,3 @@
+To generate the html docs, execute
+doxygen feature_mos_API_doxyfile
+
diff --git a/perftests/panorama/feature_mos/doc/feature_mos_API_doxyfile b/perftests/panorama/feature_mos/doc/feature_mos_API_doxyfile
new file mode 100755
index 0000000..dca8c8c
--- /dev/null
+++ b/perftests/panorama/feature_mos/doc/feature_mos_API_doxyfile
@@ -0,0 +1,1557 @@
+# Doxyfile 1.6.1
+
+# This file describes the settings to be used by the documentation system
+# doxygen (www.doxygen.org) for a project
+#
+# All text after a hash (#) is considered a comment and will be ignored
+# The format is:
+#       TAG = value [value, ...]
+# For lists items can also be appended using:
+#       TAG += value [value, ...]
+# Values that contain spaces should be placed between quotes (" ")
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+
+# This tag specifies the encoding used for all characters in the config file
+# that follow. The default is UTF-8 which is also the encoding used for all
+# text before the first occurrence of this tag. Doxygen uses libiconv (or the
+# iconv built into libc) for the transcoding. See
+# http://www.gnu.org/software/libiconv for the list of possible encodings.
+
+DOXYFILE_ENCODING      = UTF-8
+
+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
+# by quotes) that should identify the project.
+
+PROJECT_NAME           =
+
+# The PROJECT_NUMBER tag can be used to enter a project or revision number.
+# This could be handy for archiving the generated documentation or
+# if some version control system is used.
+
+PROJECT_NUMBER         =
+
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
+# base path where the generated documentation will be put.
+# If a relative path is entered, it will be relative to the location
+# where doxygen was started. If left blank the current directory will be used.
+
+OUTPUT_DIRECTORY       = .
+
+# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
+# 4096 sub-directories (in 2 levels) under the output directory of each output
+# format and will distribute the generated files over these directories.
+# Enabling this option can be useful when feeding doxygen a huge amount of
+# source files, where putting all generated files in the same directory would
+# otherwise cause performance problems for the file system.
+
+CREATE_SUBDIRS         = NO
+
+# The OUTPUT_LANGUAGE tag is used to specify the language in which all
+# documentation generated by doxygen is written. Doxygen will use this
+# information to generate all constant output in the proper language.
+# The default language is English, other supported languages are:
+# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,
+# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German,
+# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English
+# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian,
+# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak,
+# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese.
+
+OUTPUT_LANGUAGE        = English
+
+# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
+# include brief member descriptions after the members that are listed in
+# the file and class documentation (similar to JavaDoc).
+# Set to NO to disable this.
+
+BRIEF_MEMBER_DESC      = YES
+
+# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
+# the brief description of a member or function before the detailed description.
+# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
+# brief descriptions will be completely suppressed.
+
+REPEAT_BRIEF           = YES
+
+# This tag implements a quasi-intelligent brief description abbreviator
+# that is used to form the text in various listings. Each string
+# in this list, if found as the leading text of the brief description, will be
+# stripped from the text and the result after processing the whole list, is
+# used as the annotated text. Otherwise, the brief description is used as-is.
+# If left blank, the following values are used ("$name" is automatically
+# replaced with the name of the entity): "The $name class" "The $name widget"
+# "The $name file" "is" "provides" "specifies" "contains"
+# "represents" "a" "an" "the"
+
+ABBREVIATE_BRIEF       = "The $name class" \
+                         "The $name widget" \
+                         "The $name file" \
+                         is \
+                         provides \
+                         specifies \
+                         contains \
+                         represents \
+                         a \
+                         an \
+                         the
+
+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
+# Doxygen will generate a detailed section even if there is only a brief
+# description.
+
+ALWAYS_DETAILED_SEC    = NO
+
+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
+# inherited members of a class in the documentation of that class as if those
+# members were ordinary class members. Constructors, destructors and assignment
+# operators of the base classes will not be shown.
+
+INLINE_INHERITED_MEMB  = NO
+
+# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
+# path before files name in the file list and in the header files. If set
+# to NO the shortest path that makes the file name unique will be used.
+
+FULL_PATH_NAMES        = YES
+
+# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
+# can be used to strip a user-defined part of the path. Stripping is
+# only done if one of the specified strings matches the left-hand part of
+# the path. The tag can be used to show relative paths in the file list.
+# If left blank the directory from which doxygen is run is used as the
+# path to strip.
+
+STRIP_FROM_PATH        = /Users/dimitri/doxygen/mail/1.5.7/doxywizard/
+
+# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
+# the path mentioned in the documentation of a class, which tells
+# the reader which header file to include in order to use a class.
+# If left blank only the name of the header file containing the class
+# definition is used. Otherwise one should specify the include paths that
+# are normally passed to the compiler using the -I flag.
+
+STRIP_FROM_INC_PATH    =
+
+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
+# (but less readable) file names. This can be useful is your file systems
+# doesn't support long names like on DOS, Mac, or CD-ROM.
+
+SHORT_NAMES            = NO
+
+# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
+# will interpret the first line (until the first dot) of a JavaDoc-style
+# comment as the brief description. If set to NO, the JavaDoc
+# comments will behave just like regular Qt-style comments
+# (thus requiring an explicit @brief command for a brief description.)
+
+JAVADOC_AUTOBRIEF      = NO
+
+# If the QT_AUTOBRIEF tag is set to YES then Doxygen will
+# interpret the first line (until the first dot) of a Qt-style
+# comment as the brief description. If set to NO, the comments
+# will behave just like regular Qt-style comments (thus requiring
+# an explicit \brief command for a brief description.)
+
+QT_AUTOBRIEF           = NO
+
+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
+# treat a multi-line C++ special comment block (i.e. a block of //! or ///
+# comments) as a brief description. This used to be the default behaviour.
+# The new default is to treat a multi-line C++ comment block as a detailed
+# description. Set this tag to YES if you prefer the old behaviour instead.
+
+MULTILINE_CPP_IS_BRIEF = NO
+
+# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
+# member inherits the documentation from any documented member that it
+# re-implements.
+
+INHERIT_DOCS           = YES
+
+# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
+# a new page for each member. If set to NO, the documentation of a member will
+# be part of the file/class/namespace that contains it.
+
+SEPARATE_MEMBER_PAGES  = NO
+
+# The TAB_SIZE tag can be used to set the number of spaces in a tab.
+# Doxygen uses this value to replace tabs by spaces in code fragments.
+
+TAB_SIZE               = 8
+
+# This tag can be used to specify a number of aliases that acts
+# as commands in the documentation. An alias has the form "name=value".
+# For example adding "sideeffect=\par Side Effects:\n" will allow you to
+# put the command \sideeffect (or @sideeffect) in the documentation, which
+# will result in a user-defined paragraph with heading "Side Effects:".
+# You can put \n's in the value part of an alias to insert newlines.
+
+ALIASES                =
+
+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
+# sources only. Doxygen will then generate output that is more tailored for C.
+# For instance, some of the names that are used will be different. The list
+# of all members will be omitted, etc.
+
+OPTIMIZE_OUTPUT_FOR_C  = NO
+
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
+# sources only. Doxygen will then generate output that is more tailored for
+# Java. For instance, namespaces will be presented as packages, qualified
+# scopes will look different, etc.
+
+OPTIMIZE_OUTPUT_JAVA   = NO
+
+# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
+# sources only. Doxygen will then generate output that is more tailored for
+# Fortran.
+
+OPTIMIZE_FOR_FORTRAN   = NO
+
+# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
+# sources. Doxygen will then generate output that is tailored for
+# VHDL.
+
+OPTIMIZE_OUTPUT_VHDL   = NO
+
+# Doxygen selects the parser to use depending on the extension of the files it parses.
+# With this tag you can assign which parser to use for a given extension.
+# Doxygen has a built-in mapping, but you can override or extend it using this tag.
+# The format is ext=language, where ext is a file extension, and language is one of
+# the parsers supported by doxygen: IDL, Java, Javascript, C#, C, C++, D, PHP,
+# Objective-C, Python, Fortran, VHDL, C, C++. For instance to make doxygen treat
+# .inc files as Fortran files (default is PHP), and .f files as C (default is Fortran),
+# use: inc=Fortran f=C. Note that for custom extensions you also need to set
+# FILE_PATTERNS otherwise the files are not read by doxygen.
+
+EXTENSION_MAPPING      =
+
+# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
+# to include (a tag file for) the STL sources as input, then you should
+# set this tag to YES in order to let doxygen match functions declarations and
+# definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
+# func(std::string) {}). This also make the inheritance and collaboration
+# diagrams that involve STL classes more complete and accurate.
+
+BUILTIN_STL_SUPPORT    = NO
+
+# If you use Microsoft's C++/CLI language, you should set this option to YES to
+# enable parsing support.
+
+CPP_CLI_SUPPORT        = NO
+
+# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only.
+# Doxygen will parse them like normal C++ but will assume all classes use public
+# instead of private inheritance when no explicit protection keyword is present.
+
+SIP_SUPPORT            = NO
+
+# For Microsoft's IDL there are propget and propput attributes to indicate getter
+# and setter methods for a property. Setting this option to YES (the default)
+# will make doxygen to replace the get and set methods by a property in the
+# documentation. This will only work if the methods are indeed getting or
+# setting a simple type. If this is not the case, or you want to show the
+# methods anyway, you should set this option to NO.
+
+IDL_PROPERTY_SUPPORT   = YES
+
+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
+# tag is set to YES, then doxygen will reuse the documentation of the first
+# member in the group (if any) for the other members of the group. By default
+# all members of a group must be documented explicitly.
+
+DISTRIBUTE_GROUP_DOC   = NO
+
+# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
+# the same type (for instance a group of public functions) to be put as a
+# subgroup of that type (e.g. under the Public Functions section). Set it to
+# NO to prevent subgrouping. Alternatively, this can be done per class using
+# the \nosubgrouping command.
+
+SUBGROUPING            = YES
+
+# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum
+# is documented as struct, union, or enum with the name of the typedef. So
+# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
+# with name TypeT. When disabled the typedef will appear as a member of a file,
+# namespace, or class. And the struct will be named TypeS. This can typically
+# be useful for C code in case the coding convention dictates that all compound
+# types are typedef'ed and only the typedef is referenced, never the tag name.
+
+TYPEDEF_HIDES_STRUCT   = NO
+
+# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to
+# determine which symbols to keep in memory and which to flush to disk.
+# When the cache is full, less often used symbols will be written to disk.
+# For small to medium size projects (<1000 input files) the default value is
+# probably good enough. For larger projects a too small cache size can cause
+# doxygen to be busy swapping symbols to and from disk most of the time
+# causing a significant performance penality.
+# If the system has enough physical memory increasing the cache will improve the
+# performance by keeping more symbols in memory. Note that the value works on
+# a logarithmic scale so increasing the size by one will rougly double the
+# memory usage. The cache size is given by this formula:
+# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0,
+# corresponding to a cache size of 2^16 = 65536 symbols
+
+SYMBOL_CACHE_SIZE      = 0
+
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+
+# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
+# documentation are documented, even if no documentation was available.
+# Private class members and static file members will be hidden unless
+# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
+
+EXTRACT_ALL            = NO
+
+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
+# will be included in the documentation.
+
+EXTRACT_PRIVATE        = NO
+
+# If the EXTRACT_STATIC tag is set to YES all static members of a file
+# will be included in the documentation.
+
+EXTRACT_STATIC         = NO
+
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
+# defined locally in source files will be included in the documentation.
+# If set to NO only classes defined in header files are included.
+
+EXTRACT_LOCAL_CLASSES  = YES
+
+# This flag is only useful for Objective-C code. When set to YES local
+# methods, which are defined in the implementation section but not in
+# the interface are included in the documentation.
+# If set to NO (the default) only methods in the interface are included.
+
+EXTRACT_LOCAL_METHODS  = NO
+
+# If this flag is set to YES, the members of anonymous namespaces will be
+# extracted and appear in the documentation as a namespace called
+# 'anonymous_namespace{file}', where file will be replaced with the base
+# name of the file that contains the anonymous namespace. By default
+# anonymous namespace are hidden.
+
+EXTRACT_ANON_NSPACES   = NO
+
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
+# undocumented members of documented classes, files or namespaces.
+# If set to NO (the default) these members will be included in the
+# various overviews, but no documentation section is generated.
+# This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_MEMBERS     = NO
+
+# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
+# undocumented classes that are normally visible in the class hierarchy.
+# If set to NO (the default) these classes will be included in the various
+# overviews. This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_CLASSES     = NO
+
+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
+# friend (class|struct|union) declarations.
+# If set to NO (the default) these declarations will be included in the
+# documentation.
+
+HIDE_FRIEND_COMPOUNDS  = NO
+
+# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
+# documentation blocks found inside the body of a function.
+# If set to NO (the default) these blocks will be appended to the
+# function's detailed documentation block.
+
+HIDE_IN_BODY_DOCS      = NO
+
+# The INTERNAL_DOCS tag determines if documentation
+# that is typed after a \internal command is included. If the tag is set
+# to NO (the default) then the documentation will be excluded.
+# Set it to YES to include the internal documentation.
+
+INTERNAL_DOCS          = NO
+
+# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
+# file names in lower-case letters. If set to YES upper-case letters are also
+# allowed. This is useful if you have classes or files whose names only differ
+# in case and if your file system supports case sensitive file names. Windows
+# and Mac users are advised to set this option to NO.
+
+CASE_SENSE_NAMES       = NO
+
+# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
+# will show members with their full class and namespace scopes in the
+# documentation. If set to YES the scope will be hidden.
+
+HIDE_SCOPE_NAMES       = NO
+
+# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
+# will put a list of the files that are included by a file in the documentation
+# of that file.
+
+SHOW_INCLUDE_FILES     = YES
+
+# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
+# is inserted in the documentation for inline members.
+
+INLINE_INFO            = YES
+
+# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
+# will sort the (detailed) documentation of file and class members
+# alphabetically by member name. If set to NO the members will appear in
+# declaration order.
+
+SORT_MEMBER_DOCS       = YES
+
+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
+# brief documentation of file, namespace and class members alphabetically
+# by member name. If set to NO (the default) the members will appear in
+# declaration order.
+
+SORT_BRIEF_DOCS        = NO
+
+# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen
+# will sort the (brief and detailed) documentation of class members so that
+# constructors and destructors are listed first. If set to NO (the default)
+# the constructors will appear in the respective orders defined by
+# SORT_MEMBER_DOCS and SORT_BRIEF_DOCS.
+# This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO
+# and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO.
+
+SORT_MEMBERS_CTORS_1ST = NO
+
+# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the
+# hierarchy of group names into alphabetical order. If set to NO (the default)
+# the group names will appear in their defined order.
+
+SORT_GROUP_NAMES       = NO
+
+# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
+# sorted by fully-qualified names, including namespaces. If set to
+# NO (the default), the class list will be sorted only by class name,
+# not including the namespace part.
+# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
+# Note: This option applies only to the class list, not to the
+# alphabetical list.
+
+SORT_BY_SCOPE_NAME     = NO
+
+# The GENERATE_TODOLIST tag can be used to enable (YES) or
+# disable (NO) the todo list. This list is created by putting \todo
+# commands in the documentation.
+
+GENERATE_TODOLIST      = YES
+
+# The GENERATE_TESTLIST tag can be used to enable (YES) or
+# disable (NO) the test list. This list is created by putting \test
+# commands in the documentation.
+
+GENERATE_TESTLIST      = YES
+
+# The GENERATE_BUGLIST tag can be used to enable (YES) or
+# disable (NO) the bug list. This list is created by putting \bug
+# commands in the documentation.
+
+GENERATE_BUGLIST       = YES
+
+# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
+# disable (NO) the deprecated list. This list is created by putting
+# \deprecated commands in the documentation.
+
+GENERATE_DEPRECATEDLIST= YES
+
+# The ENABLED_SECTIONS tag can be used to enable conditional
+# documentation sections, marked by \if sectionname ... \endif.
+
+ENABLED_SECTIONS       =
+
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
+# the initial value of a variable or define consists of for it to appear in
+# the documentation. If the initializer consists of more lines than specified
+# here it will be hidden. Use a value of 0 to hide initializers completely.
+# The appearance of the initializer of individual variables and defines in the
+# documentation can be controlled using \showinitializer or \hideinitializer
+# command in the documentation regardless of this setting.
+
+MAX_INITIALIZER_LINES  = 30
+
+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
+# at the bottom of the documentation of classes and structs. If set to YES the
+# list will mention the files that were used to generate the documentation.
+
+SHOW_USED_FILES        = YES
+
+# If the sources in your project are distributed over multiple directories
+# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy
+# in the documentation. The default is NO.
+
+SHOW_DIRECTORIES       = NO
+
+# Set the SHOW_FILES tag to NO to disable the generation of the Files page.
+# This will remove the Files entry from the Quick Index and from the
+# Folder Tree View (if specified). The default is YES.
+
+SHOW_FILES             = YES
+
+# Set the SHOW_NAMESPACES tag to NO to disable the generation of the
+# Namespaces page.  This will remove the Namespaces entry from the Quick Index
+# and from the Folder Tree View (if specified). The default is YES.
+
+SHOW_NAMESPACES        = YES
+
+# The FILE_VERSION_FILTER tag can be used to specify a program or script that
+# doxygen should invoke to get the current version for each file (typically from
+# the version control system). Doxygen will invoke the program by executing (via
+# popen()) the command <command> <input-file>, where <command> is the value of
+# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file
+# provided by doxygen. Whatever the program writes to standard output
+# is used as the file version. See the manual for examples.
+
+FILE_VERSION_FILTER    =
+
+# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed by
+# doxygen. The layout file controls the global structure of the generated output files
+# in an output format independent way. The create the layout file that represents
+# doxygen's defaults, run doxygen with the -l option. You can optionally specify a
+# file name after the option, if omitted DoxygenLayout.xml will be used as the name
+# of the layout file.
+
+LAYOUT_FILE            =
+
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+
+# The QUIET tag can be used to turn on/off the messages that are generated
+# by doxygen. Possible values are YES and NO. If left blank NO is used.
+
+QUIET                  = NO
+
+# The WARNINGS tag can be used to turn on/off the warning messages that are
+# generated by doxygen. Possible values are YES and NO. If left blank
+# NO is used.
+
+WARNINGS               = YES
+
+# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
+# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
+# automatically be disabled.
+
+WARN_IF_UNDOCUMENTED   = YES
+
+# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
+# potential errors in the documentation, such as not documenting some
+# parameters in a documented function, or documenting parameters that
+# don't exist or using markup commands wrongly.
+
+WARN_IF_DOC_ERROR      = YES
+
+# This WARN_NO_PARAMDOC option can be abled to get warnings for
+# functions that are documented, but have no documentation for their parameters
+# or return value. If set to NO (the default) doxygen will only warn about
+# wrong or incomplete parameter documentation, but not about the absence of
+# documentation.
+
+WARN_NO_PARAMDOC       = NO
+
+# The WARN_FORMAT tag determines the format of the warning messages that
+# doxygen can produce. The string should contain the $file, $line, and $text
+# tags, which will be replaced by the file and line number from which the
+# warning originated and the warning text. Optionally the format may contain
+# $version, which will be replaced by the version of the file (if it could
+# be obtained via FILE_VERSION_FILTER)
+
+WARN_FORMAT            = "$file:$line: $text"
+
+# The WARN_LOGFILE tag can be used to specify a file to which warning
+# and error messages should be written. If left blank the output is written
+# to stderr.
+
+WARN_LOGFILE           =
+
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+
+# The INPUT tag can be used to specify the files and/or directories that contain
+# documented source files. You may enter file names like "myfile.cpp" or
+# directories like "/usr/src/myproject". Separate the files or directories
+# with spaces.
+
+INPUT                  = ../src/mosaic/Mosaic.h
+
+# This tag can be used to specify the character encoding of the source files
+# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
+# also the default input encoding. Doxygen uses libiconv (or the iconv built
+# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for
+# the list of possible encodings.
+
+INPUT_ENCODING         = UTF-8
+
+# If the value of the INPUT tag contains directories, you can use the
+# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
+# blank the following patterns are tested:
+# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx
+# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90
+
+FILE_PATTERNS          = *.c \
+                         *.cc \
+                         *.cxx \
+                         *.cpp \
+                         *.c++ \
+                         *.d \
+                         *.java \
+                         *.ii \
+                         *.ixx \
+                         *.ipp \
+                         *.i++ \
+                         *.inl \
+                         *.h \
+                         *.hh \
+                         *.hxx \
+                         *.hpp \
+                         *.h++ \
+                         *.idl \
+                         *.odl \
+                         *.cs \
+                         *.php \
+                         *.php3 \
+                         *.inc \
+                         *.m \
+                         *.mm \
+                         *.dox \
+                         *.py \
+                         *.f90 \
+                         *.f \
+                         *.vhd \
+                         *.vhdl
+
+# The RECURSIVE tag can be used to turn specify whether or not subdirectories
+# should be searched for input files as well. Possible values are YES and NO.
+# If left blank NO is used.
+
+RECURSIVE              = NO
+
+# The EXCLUDE tag can be used to specify files and/or directories that should
+# excluded from the INPUT source files. This way you can easily exclude a
+# subdirectory from a directory tree whose root is specified with the INPUT tag.
+
+EXCLUDE                =
+
+# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
+# directories that are symbolic links (a Unix filesystem feature) are excluded
+# from the input.
+
+EXCLUDE_SYMLINKS       = NO
+
+# If the value of the INPUT tag contains directories, you can use the
+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
+# certain files from those directories. Note that the wildcards are matched
+# against the file with absolute path, so to exclude all test directories
+# for example use the pattern */test/*
+
+EXCLUDE_PATTERNS       =
+
+# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
+# (namespaces, classes, functions, etc.) that should be excluded from the
+# output. The symbol name can be a fully qualified name, a word, or if the
+# wildcard * is used, a substring. Examples: ANamespace, AClass,
+# AClass::ANamespace, ANamespace::*Test
+
+EXCLUDE_SYMBOLS        =
+
+# The EXAMPLE_PATH tag can be used to specify one or more files or
+# directories that contain example code fragments that are included (see
+# the \include command).
+
+EXAMPLE_PATH           =
+
+# If the value of the EXAMPLE_PATH tag contains directories, you can use the
+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
+# blank all files are included.
+
+EXAMPLE_PATTERNS       = *
+
+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
+# searched for input files to be used with the \include or \dontinclude
+# commands irrespective of the value of the RECURSIVE tag.
+# Possible values are YES and NO. If left blank NO is used.
+
+EXAMPLE_RECURSIVE      = NO
+
+# The IMAGE_PATH tag can be used to specify one or more files or
+# directories that contain image that are included in the documentation (see
+# the \image command).
+
+IMAGE_PATH             =
+
+# The INPUT_FILTER tag can be used to specify a program that doxygen should
+# invoke to filter for each input file. Doxygen will invoke the filter program
+# by executing (via popen()) the command <filter> <input-file>, where <filter>
+# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
+# input file. Doxygen will then use the output that the filter program writes
+# to standard output.  If FILTER_PATTERNS is specified, this tag will be
+# ignored.
+
+INPUT_FILTER           =
+
+# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
+# basis.  Doxygen will compare the file name with each pattern and apply the
+# filter if there is a match.  The filters are a list of the form:
+# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
+# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER
+# is applied to all files.
+
+FILTER_PATTERNS        =
+
+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
+# INPUT_FILTER) will be used to filter the input files when producing source
+# files to browse (i.e. when SOURCE_BROWSER is set to YES).
+
+FILTER_SOURCE_FILES    = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will
+# be generated. Documented entities will be cross-referenced with these sources.
+# Note: To get rid of all source code in the generated output, make sure also
+# VERBATIM_HEADERS is set to NO.
+
+SOURCE_BROWSER         = NO
+
+# Setting the INLINE_SOURCES tag to YES will include the body
+# of functions and classes directly in the documentation.
+
+INLINE_SOURCES         = NO
+
+# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
+# doxygen to hide any special comment blocks from generated source code
+# fragments. Normal C and C++ comments will always remain visible.
+
+STRIP_CODE_COMMENTS    = YES
+
+# If the REFERENCED_BY_RELATION tag is set to YES
+# then for each documented function all documented
+# functions referencing it will be listed.
+
+REFERENCED_BY_RELATION = NO
+
+# If the REFERENCES_RELATION tag is set to YES
+# then for each documented function all documented entities
+# called/used by that function will be listed.
+
+REFERENCES_RELATION    = NO
+
+# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
+# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
+# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
+# link to the source code.  Otherwise they will link to the documentation.
+
+REFERENCES_LINK_SOURCE = YES
+
+# If the USE_HTAGS tag is set to YES then the references to source code
+# will point to the HTML generated by the htags(1) tool instead of doxygen
+# built-in source browser. The htags tool is part of GNU's global source
+# tagging system (see http://www.gnu.org/software/global/global.html). You
+# will need version 4.8.6 or higher.
+
+USE_HTAGS              = NO
+
+# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
+# will generate a verbatim copy of the header file for each class for
+# which an include is specified. Set to NO to disable this.
+
+VERBATIM_HEADERS       = YES
+
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
+# of all compounds will be generated. Enable this if the project
+# contains a lot of classes, structs, unions or interfaces.
+
+ALPHABETICAL_INDEX     = NO
+
+# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
+# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
+# in which this list will be split (can be a number in the range [1..20])
+
+COLS_IN_ALPHA_INDEX    = 5
+
+# In case all classes in a project start with a common prefix, all
+# classes will be put under the same header in the alphabetical index.
+# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
+# should be ignored while generating the index headers.
+
+IGNORE_PREFIX          =
+
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
+# generate HTML output.
+
+GENERATE_HTML          = YES
+
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `html' will be used as the default path.
+
+HTML_OUTPUT            = html
+
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
+# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
+# doxygen will generate files with .html extension.
+
+HTML_FILE_EXTENSION    = .html
+
+# The HTML_HEADER tag can be used to specify a personal HTML header for
+# each generated HTML page. If it is left blank doxygen will generate a
+# standard header.
+
+HTML_HEADER            =
+
+# The HTML_FOOTER tag can be used to specify a personal HTML footer for
+# each generated HTML page. If it is left blank doxygen will generate a
+# standard footer.
+
+HTML_FOOTER            =
+
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
+# style sheet that is used by each HTML page. It can be used to
+# fine-tune the look of the HTML output. If the tag is left blank doxygen
+# will generate a default style sheet. Note that doxygen will try to copy
+# the style sheet file to the HTML output directory, so don't put your own
+# stylesheet in the HTML output directory as well, or it will be erased!
+
+HTML_STYLESHEET        =
+
+# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
+# files or namespaces will be aligned in HTML using tables. If set to
+# NO a bullet list will be used.
+
+HTML_ALIGN_MEMBERS     = YES
+
+# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
+# documentation will contain sections that can be hidden and shown after the
+# page has loaded. For this to work a browser that supports
+# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox
+# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari).
+
+HTML_DYNAMIC_SECTIONS  = NO
+
+# If the GENERATE_DOCSET tag is set to YES, additional index files
+# will be generated that can be used as input for Apple's Xcode 3
+# integrated development environment, introduced with OSX 10.5 (Leopard).
+# To create a documentation set, doxygen will generate a Makefile in the
+# HTML output directory. Running make will produce the docset in that
+# directory and running "make install" will install the docset in
+# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find
+# it at startup.
+# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html for more information.
+
+GENERATE_DOCSET        = NO
+
+# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the
+# feed. A documentation feed provides an umbrella under which multiple
+# documentation sets from a single provider (such as a company or product suite)
+# can be grouped.
+
+DOCSET_FEEDNAME        = "Doxygen generated docs"
+
+# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that
+# should uniquely identify the documentation set bundle. This should be a
+# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen
+# will append .docset to the name.
+
+DOCSET_BUNDLE_ID       = org.doxygen.Project
+
+# If the GENERATE_HTMLHELP tag is set to YES, additional index files
+# will be generated that can be used as input for tools like the
+# Microsoft HTML help workshop to generate a compiled HTML help file (.chm)
+# of the generated HTML documentation.
+
+GENERATE_HTMLHELP      = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
+# be used to specify the file name of the resulting .chm file. You
+# can add a path in front of the file if the result should not be
+# written to the html output directory.
+
+CHM_FILE               =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
+# be used to specify the location (absolute path including file name) of
+# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
+# the HTML help compiler on the generated index.hhp.
+
+HHC_LOCATION           =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
+# controls if a separate .chi index file is generated (YES) or that
+# it should be included in the master .chm file (NO).
+
+GENERATE_CHI           = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING
+# is used to encode HtmlHelp index (hhk), content (hhc) and project file
+# content.
+
+CHM_INDEX_ENCODING     =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
+# controls whether a binary table of contents is generated (YES) or a
+# normal table of contents (NO) in the .chm file.
+
+BINARY_TOC             = NO
+
+# The TOC_EXPAND flag can be set to YES to add extra items for group members
+# to the contents of the HTML help documentation and to the tree view.
+
+TOC_EXPAND             = NO
+
+# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and QHP_VIRTUAL_FOLDER
+# are set, an additional index file will be generated that can be used as input for
+# Qt's qhelpgenerator to generate a Qt Compressed Help (.qch) of the generated
+# HTML documentation.
+
+GENERATE_QHP           = NO
+
+# If the QHG_LOCATION tag is specified, the QCH_FILE tag can
+# be used to specify the file name of the resulting .qch file.
+# The path specified is relative to the HTML output folder.
+
+QCH_FILE               =
+
+# The QHP_NAMESPACE tag specifies the namespace to use when generating
+# Qt Help Project output. For more information please see
+# http://doc.trolltech.com/qthelpproject.html#namespace
+
+QHP_NAMESPACE          =
+
+# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating
+# Qt Help Project output. For more information please see
+# http://doc.trolltech.com/qthelpproject.html#virtual-folders
+
+QHP_VIRTUAL_FOLDER     = doc
+
+# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to add.
+# For more information please see
+# http://doc.trolltech.com/qthelpproject.html#custom-filters
+
+QHP_CUST_FILTER_NAME   =
+
+# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the custom filter to add.For more information please see
+# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters">Qt Help Project / Custom Filters</a>.
+
+QHP_CUST_FILTER_ATTRS  =
+
+# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this project's
+# filter section matches.
+# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">Qt Help Project / Filter Attributes</a>.
+
+QHP_SECT_FILTER_ATTRS  =
+
+# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can
+# be used to specify the location of Qt's qhelpgenerator.
+# If non-empty doxygen will try to run qhelpgenerator on the generated
+# .qhp file.
+
+QHG_LOCATION           =
+
+# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
+# top of each HTML page. The value NO (the default) enables the index and
+# the value YES disables it.
+
+DISABLE_INDEX          = NO
+
+# This tag can be used to set the number of enum values (range [1..20])
+# that doxygen will group on one line in the generated HTML documentation.
+
+ENUM_VALUES_PER_LINE   = 4
+
+# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
+# structure should be generated to display hierarchical information.
+# If the tag value is set to YES, a side panel will be generated
+# containing a tree-like index structure (just like the one that
+# is generated for HTML Help). For this to work a browser that supports
+# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser).
+# Windows users are probably better off using the HTML help feature.
+
+GENERATE_TREEVIEW      = NO
+
+# By enabling USE_INLINE_TREES, doxygen will generate the Groups, Directories,
+# and Class Hierarchy pages using a tree view instead of an ordered list.
+
+USE_INLINE_TREES       = NO
+
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
+# used to set the initial width (in pixels) of the frame in which the tree
+# is shown.
+
+TREEVIEW_WIDTH         = 250
+
+# Use this tag to change the font size of Latex formulas included
+# as images in the HTML documentation. The default is 10. Note that
+# when you change the font size after a successful doxygen run you need
+# to manually remove any form_*.png images from the HTML output directory
+# to force them to be regenerated.
+
+FORMULA_FONTSIZE       = 10
+
+# When the SEARCHENGINE tag is enable doxygen will generate a search box
+# for the HTML output. The underlying search engine uses javascript
+# and DHTML and should work on any modern browser. Note that when using
+# HTML help (GENERATE_HTMLHELP) or Qt help (GENERATE_QHP)
+# there is already a search function so this one should typically
+# be disabled.
+
+SEARCHENGINE           = YES
+
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
+# generate Latex output.
+
+GENERATE_LATEX         = NO
+
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `latex' will be used as the default path.
+
+LATEX_OUTPUT           = latex
+
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
+# invoked. If left blank `latex' will be used as the default command name.
+
+LATEX_CMD_NAME         = latex
+
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
+# generate index for LaTeX. If left blank `makeindex' will be used as the
+# default command name.
+
+MAKEINDEX_CMD_NAME     = makeindex
+
+# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
+# LaTeX documents. This may be useful for small projects and may help to
+# save some trees in general.
+
+COMPACT_LATEX          = NO
+
+# The PAPER_TYPE tag can be used to set the paper type that is used
+# by the printer. Possible values are: a4, a4wide, letter, legal and
+# executive. If left blank a4wide will be used.
+
+PAPER_TYPE             = a4wide
+
+# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
+# packages that should be included in the LaTeX output.
+
+EXTRA_PACKAGES         =
+
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
+# the generated latex document. The header should contain everything until
+# the first chapter. If it is left blank doxygen will generate a
+# standard header. Notice: only use this tag if you know what you are doing!
+
+LATEX_HEADER           =
+
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
+# is prepared for conversion to pdf (using ps2pdf). The pdf file will
+# contain links (just like the HTML output) instead of page references
+# This makes the output suitable for online browsing using a pdf viewer.
+
+PDF_HYPERLINKS         = YES
+
+# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
+# plain latex in the generated Makefile. Set this option to YES to get a
+# higher quality PDF documentation.
+
+USE_PDFLATEX           = YES
+
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
+# command to the generated LaTeX files. This will instruct LaTeX to keep
+# running if errors occur, instead of asking the user for help.
+# This option is also used when generating formulas in HTML.
+
+LATEX_BATCHMODE        = NO
+
+# If LATEX_HIDE_INDICES is set to YES then doxygen will not
+# include the index chapters (such as File Index, Compound Index, etc.)
+# in the output.
+
+LATEX_HIDE_INDICES     = NO
+
+# If LATEX_SOURCE_CODE is set to YES then doxygen will include
+# source code with syntax highlighting in the LaTeX output.
+# Note that which sources are shown also depends on other settings
+# such as SOURCE_BROWSER.
+
+LATEX_SOURCE_CODE      = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
+# The RTF output is optimized for Word 97 and may not look very pretty with
+# other RTF readers or editors.
+
+GENERATE_RTF           = NO
+
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `rtf' will be used as the default path.
+
+RTF_OUTPUT             = rtf
+
+# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
+# RTF documents. This may be useful for small projects and may help to
+# save some trees in general.
+
+COMPACT_RTF            = NO
+
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
+# will contain hyperlink fields. The RTF file will
+# contain links (just like the HTML output) instead of page references.
+# This makes the output suitable for online browsing using WORD or other
+# programs which support those fields.
+# Note: wordpad (write) and others do not support links.
+
+RTF_HYPERLINKS         = NO
+
+# Load stylesheet definitions from file. Syntax is similar to doxygen's
+# config file, i.e. a series of assignments. You only have to provide
+# replacements, missing definitions are set to their default value.
+
+RTF_STYLESHEET_FILE    =
+
+# Set optional variables used in the generation of an rtf document.
+# Syntax is similar to doxygen's config file.
+
+RTF_EXTENSIONS_FILE    =
+
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
+# generate man pages
+
+GENERATE_MAN           = NO
+
+# The MAN_OUTPUT tag is used to specify where the man pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `man' will be used as the default path.
+
+MAN_OUTPUT             = man
+
+# The MAN_EXTENSION tag determines the extension that is added to
+# the generated man pages (default is the subroutine's section .3)
+
+MAN_EXTENSION          = .3
+
+# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
+# then it will generate one additional man file for each entity
+# documented in the real man page(s). These additional files
+# only source the real man page, but without them the man command
+# would be unable to find the correct page. The default is NO.
+
+MAN_LINKS              = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_XML tag is set to YES Doxygen will
+# generate an XML file that captures the structure of
+# the code including all documentation.
+
+GENERATE_XML           = NO
+
+# The XML_OUTPUT tag is used to specify where the XML pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `xml' will be used as the default path.
+
+XML_OUTPUT             = xml
+
+# The XML_SCHEMA tag can be used to specify an XML schema,
+# which can be used by a validating XML parser to check the
+# syntax of the XML files.
+
+XML_SCHEMA             =
+
+# The XML_DTD tag can be used to specify an XML DTD,
+# which can be used by a validating XML parser to check the
+# syntax of the XML files.
+
+XML_DTD                =
+
+# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
+# dump the program listings (including syntax highlighting
+# and cross-referencing information) to the XML output. Note that
+# enabling this will significantly increase the size of the XML output.
+
+XML_PROGRAMLISTING     = YES
+
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
+# generate an AutoGen Definitions (see autogen.sf.net) file
+# that captures the structure of the code including all
+# documentation. Note that this feature is still experimental
+# and incomplete at the moment.
+
+GENERATE_AUTOGEN_DEF   = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_PERLMOD tag is set to YES Doxygen will
+# generate a Perl module file that captures the structure of
+# the code including all documentation. Note that this
+# feature is still experimental and incomplete at the
+# moment.
+
+GENERATE_PERLMOD       = NO
+
+# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
+# the necessary Makefile rules, Perl scripts and LaTeX code to be able
+# to generate PDF and DVI output from the Perl module output.
+
+PERLMOD_LATEX          = NO
+
+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
+# nicely formatted so it can be parsed by a human reader.  This is useful
+# if you want to understand what is going on.  On the other hand, if this
+# tag is set to NO the size of the Perl module output will be much smaller
+# and Perl will parse it just the same.
+
+PERLMOD_PRETTY         = YES
+
+# The names of the make variables in the generated doxyrules.make file
+# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
+# This is useful so different doxyrules.make files included by the same
+# Makefile don't overwrite each other's variables.
+
+PERLMOD_MAKEVAR_PREFIX =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor
+#---------------------------------------------------------------------------
+
+# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
+# evaluate all C-preprocessor directives found in the sources and include
+# files.
+
+ENABLE_PREPROCESSING   = YES
+
+# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
+# names in the source code. If set to NO (the default) only conditional
+# compilation will be performed. Macro expansion can be done in a controlled
+# way by setting EXPAND_ONLY_PREDEF to YES.
+
+MACRO_EXPANSION        = NO
+
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
+# then the macro expansion is limited to the macros specified with the
+# PREDEFINED and EXPAND_AS_DEFINED tags.
+
+EXPAND_ONLY_PREDEF     = NO
+
+# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
+# in the INCLUDE_PATH (see below) will be search if a #include is found.
+
+SEARCH_INCLUDES        = YES
+
+# The INCLUDE_PATH tag can be used to specify one or more directories that
+# contain include files that are not input files but should be processed by
+# the preprocessor.
+
+INCLUDE_PATH           =
+
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
+# patterns (like *.h and *.hpp) to filter out the header-files in the
+# directories. If left blank, the patterns specified with FILE_PATTERNS will
+# be used.
+
+INCLUDE_FILE_PATTERNS  =
+
+# The PREDEFINED tag can be used to specify one or more macro names that
+# are defined before the preprocessor is started (similar to the -D option of
+# gcc). The argument of the tag is a list of macros of the form: name
+# or name=definition (no spaces). If the definition and the = are
+# omitted =1 is assumed. To prevent a macro definition from being
+# undefined via #undef or recursively expanded use the := operator
+# instead of the = operator.
+
+PREDEFINED             =
+
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
+# this tag can be used to specify a list of macro names that should be expanded.
+# The macro definition that is found in the sources will be used.
+# Use the PREDEFINED tag if you want to use a different macro definition.
+
+EXPAND_AS_DEFINED      =
+
+# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
+# doxygen's preprocessor will remove all function-like macros that are alone
+# on a line, have an all uppercase name, and do not end with a semicolon. Such
+# function macros are typically used for boiler-plate code, and will confuse
+# the parser if not removed.
+
+SKIP_FUNCTION_MACROS   = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to external references
+#---------------------------------------------------------------------------
+
+# The TAGFILES option can be used to specify one or more tagfiles.
+# Optionally an initial location of the external documentation
+# can be added for each tagfile. The format of a tag file without
+# this location is as follows:
+#   TAGFILES = file1 file2 ...
+# Adding location for the tag files is done as follows:
+#   TAGFILES = file1=loc1 "file2 = loc2" ...
+# where "loc1" and "loc2" can be relative or absolute paths or
+# URLs. If a location is present for each tag, the installdox tool
+# does not have to be run to correct the links.
+# Note that each tag file must have a unique name
+# (where the name does NOT include the path)
+# If a tag file is not located in the directory in which doxygen
+# is run, you must also specify the path to the tagfile here.
+
+TAGFILES               =
+
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create
+# a tag file that is based on the input files it reads.
+
+GENERATE_TAGFILE       =
+
+# If the ALLEXTERNALS tag is set to YES all external classes will be listed
+# in the class index. If set to NO only the inherited external classes
+# will be listed.
+
+ALLEXTERNALS           = NO
+
+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
+# in the modules index. If set to NO, only the current project's groups will
+# be listed.
+
+EXTERNAL_GROUPS        = YES
+
+# The PERL_PATH should be the absolute path and name of the perl script
+# interpreter (i.e. the result of `which perl').
+
+PERL_PATH              = /usr/bin/perl
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool
+#---------------------------------------------------------------------------
+
+# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
+# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
+# or super classes. Setting the tag to NO turns the diagrams off. Note that
+# this option is superseded by the HAVE_DOT option below. This is only a
+# fallback. It is recommended to install and use dot, since it yields more
+# powerful graphs.
+
+CLASS_DIAGRAMS         = YES
+
+# You can define message sequence charts within doxygen comments using the \msc
+# command. Doxygen will then run the mscgen tool (see
+# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the
+# documentation. The MSCGEN_PATH tag allows you to specify the directory where
+# the mscgen tool resides. If left empty the tool is assumed to be found in the
+# default search path.
+
+MSCGEN_PATH            =
+
+# If set to YES, the inheritance and collaboration graphs will hide
+# inheritance and usage relations if the target is undocumented
+# or is not a class.
+
+HIDE_UNDOC_RELATIONS   = YES
+
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
+# available from the path. This tool is part of Graphviz, a graph visualization
+# toolkit from AT&T and Lucent Bell Labs. The other options in this section
+# have no effect if this option is set to NO (the default)
+
+HAVE_DOT               = NO
+
+# By default doxygen will write a font called FreeSans.ttf to the output
+# directory and reference it in all dot files that doxygen generates. This
+# font does not include all possible unicode characters however, so when you need
+# these (or just want a differently looking font) you can specify the font name
+# using DOT_FONTNAME. You need need to make sure dot is able to find the font,
+# which can be done by putting it in a standard location or by setting the
+# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory
+# containing the font.
+
+DOT_FONTNAME           = FreeSans
+
+# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs.
+# The default size is 10pt.
+
+DOT_FONTSIZE           = 10
+
+# By default doxygen will tell dot to use the output directory to look for the
+# FreeSans.ttf font (which doxygen will put there itself). If you specify a
+# different font using DOT_FONTNAME you can set the path where dot
+# can find it using this tag.
+
+DOT_FONTPATH           =
+
+# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for each documented class showing the direct and
+# indirect inheritance relations. Setting this tag to YES will force the
+# the CLASS_DIAGRAMS tag to NO.
+
+CLASS_GRAPH            = YES
+
+# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for each documented class showing the direct and
+# indirect implementation dependencies (inheritance, containment, and
+# class references variables) of the class with other documented classes.
+
+COLLABORATION_GRAPH    = YES
+
+# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for groups, showing the direct groups dependencies
+
+GROUP_GRAPHS           = YES
+
+# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
+# collaboration diagrams in a style similar to the OMG's Unified Modeling
+# Language.
+
+UML_LOOK               = NO
+
+# If set to YES, the inheritance and collaboration graphs will show the
+# relations between templates and their instances.
+
+TEMPLATE_RELATIONS     = NO
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
+# tags are set to YES then doxygen will generate a graph for each documented
+# file showing the direct and indirect include dependencies of the file with
+# other documented files.
+
+INCLUDE_GRAPH          = YES
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
+# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
+# documented header file showing the documented files that directly or
+# indirectly include this file.
+
+INCLUDED_BY_GRAPH      = YES
+
+# If the CALL_GRAPH and HAVE_DOT options are set to YES then
+# doxygen will generate a call dependency graph for every global function
+# or class method. Note that enabling this option will significantly increase
+# the time of a run. So in most cases it will be better to enable call graphs
+# for selected functions only using the \callgraph command.
+
+CALL_GRAPH             = NO
+
+# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then
+# doxygen will generate a caller dependency graph for every global function
+# or class method. Note that enabling this option will significantly increase
+# the time of a run. So in most cases it will be better to enable caller
+# graphs for selected functions only using the \callergraph command.
+
+CALLER_GRAPH           = NO
+
+# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
+# will graphical hierarchy of all classes instead of a textual one.
+
+GRAPHICAL_HIERARCHY    = YES
+
+# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES
+# then doxygen will show the dependencies a directory has on other directories
+# in a graphical way. The dependency relations are determined by the #include
+# relations between the files in the directories.
+
+DIRECTORY_GRAPH        = YES
+
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
+# generated by dot. Possible values are png, jpg, or gif
+# If left blank png will be used.
+
+DOT_IMAGE_FORMAT       = png
+
+# The tag DOT_PATH can be used to specify the path where the dot tool can be
+# found. If left blank, it is assumed the dot tool can be found in the path.
+
+DOT_PATH               =
+
+# The DOTFILE_DIRS tag can be used to specify one or more directories that
+# contain dot files that are included in the documentation (see the
+# \dotfile command).
+
+DOTFILE_DIRS           =
+
+# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of
+# nodes that will be shown in the graph. If the number of nodes in a graph
+# becomes larger than this value, doxygen will truncate the graph, which is
+# visualized by representing a node as a red box. Note that doxygen if the
+# number of direct children of the root node in a graph is already larger than
+# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note
+# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
+
+DOT_GRAPH_MAX_NODES    = 50
+
+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
+# graphs generated by dot. A depth value of 3 means that only nodes reachable
+# from the root by following a path via at most 3 edges will be shown. Nodes
+# that lay further from the root node will be omitted. Note that setting this
+# option to 1 or 2 may greatly reduce the computation time needed for large
+# code bases. Also note that the size of a graph can be further restricted by
+# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
+
+MAX_DOT_GRAPH_DEPTH    = 0
+
+# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
+# background. This is disabled by default, because dot on Windows does not
+# seem to support this out of the box. Warning: Depending on the platform used,
+# enabling this option may lead to badly anti-aliased labels on the edges of
+# a graph (i.e. they become hard to read).
+
+DOT_TRANSPARENT        = NO
+
+# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
+# files in one run (i.e. multiple -o and -T options on the command line). This
+# makes dot run faster, but since only newer versions of dot (>1.8.10)
+# support this, this feature is disabled by default.
+
+DOT_MULTI_TARGETS      = NO
+
+# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
+# generate a legend page explaining the meaning of the various boxes and
+# arrows in the dot generated graphs.
+
+GENERATE_LEGEND        = YES
+
+# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
+# remove the intermediate dot files that are used to generate
+# the various graphs.
+
+DOT_CLEANUP            = YES
diff --git a/perftests/panorama/feature_mos/src/mosaic/AlignFeatures.cpp b/perftests/panorama/feature_mos/src/mosaic/AlignFeatures.cpp
new file mode 100644
index 0000000..aeabf8f
--- /dev/null
+++ b/perftests/panorama/feature_mos/src/mosaic/AlignFeatures.cpp
@@ -0,0 +1,231 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+///////////////////////////////////////////////////
+// AlignFeatures.cpp
+// S.O. # :
+// Author(s): zkira, mbansal, bsouthall, narodits
+// $Id: AlignFeatures.cpp,v 1.20 2011/06/17 13:35:47 mbansal Exp $
+
+#include <stdio.h>
+#include <string.h>
+
+#include "trsMatrix.h"
+#include "MatrixUtils.h"
+#include "AlignFeatures.h"
+#include "Log.h"
+
+#define LOG_TAG "AlignFeatures"
+
+Align::Align()
+{
+  width = height = 0;
+  frame_number = 0;
+  num_frames_captured = 0;
+  reference_frame_index = 0;
+  db_Identity3x3(Hcurr);
+  db_Identity3x3(Hprev);
+}
+
+Align::~Align()
+{
+  // Free gray-scale image
+  if (imageGray != ImageUtils::IMAGE_TYPE_NOIMAGE)
+    ImageUtils::freeImage(imageGray);
+}
+
+char* Align::getRegProfileString()
+{
+  return reg.profile_string;
+}
+
+int Align::initialize(int width, int height, bool _quarter_res, float _thresh_still)
+{
+  int    nr_corners = DEFAULT_NR_CORNERS;
+  double max_disparity = DEFAULT_MAX_DISPARITY;
+  int    motion_model_type = DEFAULT_MOTION_MODEL;
+  int nrsamples = DB_DEFAULT_NR_SAMPLES;
+  double scale = DB_POINT_STANDARDDEV;
+  int chunk_size = DB_DEFAULT_CHUNK_SIZE;
+  int nrhorz = width/48;  // Empirically determined number of horizontal
+  int nrvert = height/60; // and vertical buckets for harris corner detection.
+  bool linear_polish = false;
+  unsigned int reference_update_period = DEFAULT_REFERENCE_UPDATE_PERIOD;
+
+  const bool DEFAULT_USE_SMALLER_MATCHING_WINDOW = false;
+  bool   use_smaller_matching_window = DEFAULT_USE_SMALLER_MATCHING_WINDOW;
+
+  quarter_res = _quarter_res;
+  thresh_still = _thresh_still;
+
+  frame_number = 0;
+  num_frames_captured = 0;
+  reference_frame_index = 0;
+  db_Identity3x3(Hcurr);
+  db_Identity3x3(Hprev);
+
+  if (!reg.Initialized())
+  {
+    reg.Init(width, height, motion_model_type, 20, linear_polish, quarter_res,
+            scale, reference_update_period, false, 0, nrsamples, chunk_size,
+            nr_corners, max_disparity, use_smaller_matching_window,
+            nrhorz, nrvert);
+  }
+  this->width = width;
+  this->height = height;
+
+  imageGray = ImageUtils::allocateImage(width, height, 1);
+
+  if (reg.Initialized())
+    return ALIGN_RET_OK;
+  else
+    return ALIGN_RET_ERROR;
+}
+
+int Align::addFrameRGB(ImageType imageRGB)
+{
+  ImageUtils::rgb2gray(imageGray, imageRGB, width, height);
+  return addFrame(imageGray);
+}
+
+int Align::addFrame(ImageType imageGray_)
+{
+  int ret_code = ALIGN_RET_OK;
+
+ // Obtain a vector of pointers to rows in image and pass in to dbreg
+  ImageType *m_rows = ImageUtils::imageTypeToRowPointers(imageGray_, width, height);
+
+  if (frame_number == 0)
+  {
+      reg.AddFrame(m_rows, Hcurr, true);    // Force this to be a reference frame
+      int num_corner_ref = reg.GetNrRefCorners();
+
+      if (num_corner_ref < MIN_NR_REF_CORNERS)
+      {
+          return ALIGN_RET_LOW_TEXTURE;
+      }
+  }
+  else
+  {
+      reg.AddFrame(m_rows, Hcurr, false);
+  }
+
+  // Average translation per frame =
+  //    [Translation from Frame0 to Frame(n-1)] / [(n-1)]
+  average_tx_per_frame = (num_frames_captured < 2) ? 0.0 :
+        Hprev[2] / (num_frames_captured - 1);
+
+  // Increment the captured frame counter if we already have a reference frame
+  num_frames_captured++;
+
+  if (frame_number != 0)
+  {
+    int num_inliers = reg.GetNrInliers();
+
+    if(num_inliers < MIN_NR_INLIERS)
+    {
+        ret_code = ALIGN_RET_FEW_INLIERS;
+
+        Hcurr[0] = 1.0;
+        Hcurr[1] = 0.0;
+        // Set this as the average per frame translation taking into acccount
+        // the separation of the current frame from the reference frame...
+        Hcurr[2] = -average_tx_per_frame *
+                (num_frames_captured - reference_frame_index);
+        Hcurr[3] = 0.0;
+        Hcurr[4] = 1.0;
+        Hcurr[5] = 0.0;
+        Hcurr[6] = 0.0;
+        Hcurr[7] = 0.0;
+        Hcurr[8] = 1.0;
+    }
+
+    if(fabs(Hcurr[2])<thresh_still && fabs(Hcurr[5])<thresh_still)  // Still camera
+    {
+        return ALIGN_RET_ERROR;
+    }
+
+    // compute the homography:
+    double Hinv33[3][3];
+    double Hprev33[3][3];
+    double Hcurr33[3][3];
+
+    // Invert and multiple with previous transformation
+    Matrix33::convert9to33(Hcurr33, Hcurr);
+    Matrix33::convert9to33(Hprev33, Hprev);
+    normProjMat33d(Hcurr33);
+
+    inv33d(Hcurr33, Hinv33);
+
+    mult33d(Hcurr33, Hprev33, Hinv33);
+    normProjMat33d(Hcurr33);
+    Matrix9::convert33to9(Hprev, Hcurr33);
+    // Since we have already factored the current transformation
+    // into Hprev, we can reset the Hcurr to identity
+    db_Identity3x3(Hcurr);
+
+    // Update the reference frame to be the current frame
+    reg.UpdateReference(m_rows,quarter_res,false);
+
+    // Update the reference frame index
+    reference_frame_index = num_frames_captured;
+  }
+
+  frame_number++;
+
+  return ret_code;
+}
+
+// Get current transformation
+int Align::getLastTRS(double trs[3][3])
+{
+  if (frame_number < 1)
+  {
+    trs[0][0] = 1.0;
+    trs[0][1] = 0.0;
+    trs[0][2] = 0.0;
+    trs[1][0] = 0.0;
+    trs[1][1] = 1.0;
+    trs[1][2] = 0.0;
+    trs[2][0] = 0.0;
+    trs[2][1] = 0.0;
+    trs[2][2] = 1.0;
+    return ALIGN_RET_ERROR;
+  }
+
+  // Note that the logic here handles the case, where a frame is not used for
+  // mosaicing but is captured and used in the preview-rendering.
+  // For these frames, we don't set Hcurr to identity in AddFrame() and the
+  // logic here appends their transformation to Hprev to render them with the
+  // correct transformation. For the frames we do use for mosaicing, we already
+  // append their Hcurr to Hprev in AddFrame() and then set Hcurr to identity.
+
+  double Hinv33[3][3];
+  double Hprev33[3][3];
+  double Hcurr33[3][3];
+
+  Matrix33::convert9to33(Hcurr33, Hcurr);
+  normProjMat33d(Hcurr33);
+  inv33d(Hcurr33, Hinv33);
+
+  Matrix33::convert9to33(Hprev33, Hprev);
+
+  mult33d(trs, Hprev33, Hinv33);
+  normProjMat33d(trs);
+
+  return ALIGN_RET_OK;
+}
+
diff --git a/perftests/panorama/feature_mos/src/mosaic/AlignFeatures.h b/perftests/panorama/feature_mos/src/mosaic/AlignFeatures.h
new file mode 100644
index 0000000..19f3905
--- /dev/null
+++ b/perftests/panorama/feature_mos/src/mosaic/AlignFeatures.h
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+///////////////////////////////////////////////////
+// Align.h
+// S.O. # :
+// Author(s): zkira
+// $Id: AlignFeatures.h,v 1.13 2011/06/17 13:35:47 mbansal Exp $
+
+#ifndef ALIGN_H
+#define ALIGN_H
+
+#include "dbreg/dbreg.h"
+#include <db_utilities_camera.h>
+
+#include "ImageUtils.h"
+#include "MatrixUtils.h"
+
+class Align {
+
+public:
+  // Types of alignment possible
+  static const int ALIGN_TYPE_PAN    = 1;
+
+  // Return codes
+  static const int ALIGN_RET_LOW_TEXTURE  = -2;
+  static const int ALIGN_RET_ERROR        = -1;
+  static const int ALIGN_RET_OK           = 0;
+  static const int ALIGN_RET_FEW_INLIERS  = 1;
+
+  ///// Settings for feature-based alignment
+  // Number of features to use from corner detection
+  static const int DEFAULT_NR_CORNERS=750;
+  static const double DEFAULT_MAX_DISPARITY=0.1;//0.4;
+  // Type of homography to model
+  static const int DEFAULT_MOTION_MODEL=DB_HOMOGRAPHY_TYPE_R_T;
+// static const int DEFAULT_MOTION_MODEL=DB_HOMOGRAPHY_TYPE_PROJECTIVE;
+//  static const int DEFAULT_MOTION_MODEL=DB_HOMOGRAPHY_TYPE_AFFINE;
+  static const unsigned int DEFAULT_REFERENCE_UPDATE_PERIOD=1500; //  Manual reference frame update so set this to a large number
+
+  static const int MIN_NR_REF_CORNERS = 25;
+  static const int MIN_NR_INLIERS = 10;
+
+  Align();
+  ~Align();
+
+  // Initialization of structures, etc.
+  int initialize(int width, int height, bool quarter_res, float thresh_still);
+
+  // Add a frame.  Note: The alignment computation is performed
+  // in this function
+  int addFrameRGB(ImageType image);
+  int addFrame(ImageType image);
+
+  // Obtain the TRS matrix from the last two frames
+  int getLastTRS(double trs[3][3]);
+  char* getRegProfileString();
+
+protected:
+
+  db_FrameToReferenceRegistration reg;
+
+  int frame_number;
+
+  double Hcurr[9];   // Homography from the alignment reference to the frame-t
+  double Hprev[9];   // Homography from frame-0 to the frame-(t-1)
+
+  int reference_frame_index; // Index of the reference frame from all captured frames
+  int num_frames_captured; // Total number of frames captured (different from frame_number)
+  double average_tx_per_frame; // Average pixel translation per captured frame
+
+  int width,height;
+
+  bool quarter_res;     // Whether to process at quarter resolution
+  float thresh_still;   // Translation threshold in pixels to detect still camera
+  ImageType imageGray;
+};
+
+
+#endif
diff --git a/perftests/panorama/feature_mos/src/mosaic/Blend.cpp b/perftests/panorama/feature_mos/src/mosaic/Blend.cpp
new file mode 100644
index 0000000..893a7be
--- /dev/null
+++ b/perftests/panorama/feature_mos/src/mosaic/Blend.cpp
@@ -0,0 +1,1392 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+///////////////////////////////////////////////////
+// Blend.cpp
+// $Id: Blend.cpp,v 1.22 2011/06/24 04:22:14 mbansal Exp $
+
+#include <string.h>
+
+#include "Interp.h"
+#include "Blend.h"
+
+#include "Geometry.h"
+#include "trsMatrix.h"
+
+Blend::Blend()
+{
+  m_wb.blendingType = BLEND_TYPE_NONE;
+}
+
+Blend::~Blend()
+{
+    if (m_pFrameVPyr) free(m_pFrameVPyr);
+    if (m_pFrameUPyr) free(m_pFrameUPyr);
+    if (m_pFrameYPyr) free(m_pFrameYPyr);
+}
+
+int Blend::initialize(int blendingType, int stripType, int frame_width, int frame_height)
+{
+    this->width = frame_width;
+    this->height = frame_height;
+    this->m_wb.blendingType = blendingType;
+    this->m_wb.stripType = stripType;
+
+    m_wb.blendRange = m_wb.blendRangeUV = BLEND_RANGE_DEFAULT;
+    m_wb.nlevs = m_wb.blendRange;
+    m_wb.nlevsC = m_wb.blendRangeUV;
+
+    if (m_wb.nlevs <= 0) m_wb.nlevs = 1; // Need levels for YUV processing
+    if (m_wb.nlevsC > m_wb.nlevs) m_wb.nlevsC = m_wb.nlevs;
+
+    m_wb.roundoffOverlap = 1.5;
+
+    m_pFrameYPyr = NULL;
+    m_pFrameUPyr = NULL;
+    m_pFrameVPyr = NULL;
+
+    m_pFrameYPyr = PyramidShort::allocatePyramidPacked(m_wb.nlevs, (unsigned short) width, (unsigned short) height, BORDER);
+    m_pFrameUPyr = PyramidShort::allocatePyramidPacked(m_wb.nlevsC, (unsigned short) (width), (unsigned short) (height), BORDER);
+    m_pFrameVPyr = PyramidShort::allocatePyramidPacked(m_wb.nlevsC, (unsigned short) (width), (unsigned short) (height), BORDER);
+
+    if (!m_pFrameYPyr || !m_pFrameUPyr || !m_pFrameVPyr)
+    {
+        return BLEND_RET_ERROR_MEMORY;
+    }
+
+    return BLEND_RET_OK;
+}
+
+inline double max(double a, double b) { return a > b ? a : b; }
+inline double min(double a, double b) { return a < b ? a : b; }
+
+void Blend::AlignToMiddleFrame(MosaicFrame **frames, int frames_size)
+{
+    // Unwarp this frame and Warp the others to match
+    MosaicFrame *mb = NULL;
+    MosaicFrame *ref = frames[int(frames_size/2)];    // Middle frame
+
+    double invtrs[3][3];
+    inv33d(ref->trs, invtrs);
+
+    for(int mfit = 0; mfit < frames_size; mfit++)
+    {
+        mb = frames[mfit];
+        double temp[3][3];
+        mult33d(temp, invtrs, mb->trs);
+        memcpy(mb->trs, temp, sizeof(temp));
+        normProjMat33d(mb->trs);
+    }
+}
+
+int Blend::runBlend(MosaicFrame **oframes, MosaicFrame **rframes,
+        int frames_size,
+        ImageType &imageMosaicYVU, int &mosaicWidth, int &mosaicHeight,
+        float &progress, bool &cancelComputation)
+{
+    int ret;
+    int numCenters;
+
+    MosaicFrame **frames;
+
+    // For THIN strip mode, accept all frames for blending
+    if (m_wb.stripType == STRIP_TYPE_THIN)
+    {
+        frames = oframes;
+    }
+    else // For WIDE strip mode, first select the relevant frames to blend.
+    {
+        SelectRelevantFrames(oframes, frames_size, rframes, frames_size);
+        frames = rframes;
+    }
+
+    ComputeBlendParameters(frames, frames_size, true);
+    numCenters = frames_size;
+
+    if (numCenters == 0)
+    {
+        return BLEND_RET_ERROR;
+    }
+
+    if (!(m_AllSites = m_Triangulator.allocMemory(numCenters)))
+    {
+        return BLEND_RET_ERROR_MEMORY;
+    }
+
+    // Bounding rectangle (real numbers) of the final mosaic computed by projecting
+    // each input frame into the mosaic coordinate system.
+    BlendRect global_rect;
+
+    global_rect.lft = global_rect.bot = 2e30; // min values
+    global_rect.rgt = global_rect.top = -2e30; // max values
+    MosaicFrame *mb = NULL;
+    double halfwidth = width / 2.0;
+    double halfheight = height / 2.0;
+
+    double z, x0, y0, x1, y1, x2, y2, x3, y3;
+
+    // Corners of the left-most and right-most frames respectively in the
+    // mosaic coordinate system.
+    double xLeftCorners[2] = {2e30, 2e30};
+    double xRightCorners[2] = {-2e30, -2e30};
+
+    // Corners of the top-most and bottom-most frames respectively in the
+    // mosaic coordinate system.
+    double yTopCorners[2] = {2e30, 2e30};
+    double yBottomCorners[2] = {-2e30, -2e30};
+
+
+    // Determine the extents of the final mosaic
+    CSite *csite = m_AllSites ;
+    for(int mfit = 0; mfit < frames_size; mfit++)
+    {
+        mb = frames[mfit];
+
+        // Compute clipping for this frame's rect
+        FrameToMosaicRect(mb->width, mb->height, mb->trs, mb->brect);
+        // Clip global rect using this frame's rect
+        ClipRect(mb->brect, global_rect);
+
+        // Calculate the corner points
+        FrameToMosaic(mb->trs, 0.0,             0.0,            x0, y0);
+        FrameToMosaic(mb->trs, 0.0,             mb->height-1.0, x1, y1);
+        FrameToMosaic(mb->trs, mb->width-1.0,   mb->height-1.0, x2, y2);
+        FrameToMosaic(mb->trs, mb->width-1.0,   0.0,            x3, y3);
+
+        if(x0 < xLeftCorners[0] || x1 < xLeftCorners[1])    // If either of the left corners is lower
+        {
+            xLeftCorners[0] = x0;
+            xLeftCorners[1] = x1;
+        }
+
+        if(x3 > xRightCorners[0] || x2 > xRightCorners[1])    // If either of the right corners is higher
+        {
+            xRightCorners[0] = x3;
+            xRightCorners[1] = x2;
+        }
+
+        if(y0 < yTopCorners[0] || y3 < yTopCorners[1])    // If either of the top corners is lower
+        {
+            yTopCorners[0] = y0;
+            yTopCorners[1] = y3;
+        }
+
+        if(y1 > yBottomCorners[0] || y2 > yBottomCorners[1])    // If either of the bottom corners is higher
+        {
+            yBottomCorners[0] = y1;
+            yBottomCorners[1] = y2;
+        }
+
+
+        // Compute the centroid of the warped region
+        FindQuadCentroid(x0, y0, x1, y1, x2, y2, x3, y3, csite->getVCenter().x, csite->getVCenter().y);
+
+        csite->setMb(mb);
+        csite++;
+    }
+
+    // Get origin and sizes
+
+    // Bounding rectangle (int numbers) of the final mosaic computed by projecting
+    // each input frame into the mosaic coordinate system.
+    MosaicRect fullRect;
+
+    fullRect.left = (int) floor(global_rect.lft); // min-x
+    fullRect.top = (int) floor(global_rect.bot);  // min-y
+    fullRect.right = (int) ceil(global_rect.rgt); // max-x
+    fullRect.bottom = (int) ceil(global_rect.top);// max-y
+    Mwidth = (unsigned short) (fullRect.right - fullRect.left + 1);
+    Mheight = (unsigned short) (fullRect.bottom - fullRect.top + 1);
+
+    int xLeftMost, xRightMost;
+    int yTopMost, yBottomMost;
+
+    // Rounding up, so that we don't include the gray border.
+    xLeftMost = max(0, max(xLeftCorners[0], xLeftCorners[1]) - fullRect.left + 1);
+    xRightMost = min(Mwidth - 1, min(xRightCorners[0], xRightCorners[1]) - fullRect.left - 1);
+
+    yTopMost = max(0, max(yTopCorners[0], yTopCorners[1]) - fullRect.top + 1);
+    yBottomMost = min(Mheight - 1, min(yBottomCorners[0], yBottomCorners[1]) - fullRect.top - 1);
+
+    if (xRightMost <= xLeftMost || yBottomMost <= yTopMost)
+    {
+        return BLEND_RET_ERROR;
+    }
+
+    // Make sure image width is multiple of 4
+    Mwidth = (unsigned short) ((Mwidth + 3) & ~3);
+    Mheight = (unsigned short) ((Mheight + 3) & ~3);    // Round up.
+
+    ret = MosaicSizeCheck(LIMIT_SIZE_MULTIPLIER, LIMIT_HEIGHT_MULTIPLIER);
+    if (ret != BLEND_RET_OK)
+    {
+       return ret;
+    }
+
+    YUVinfo *imgMos = YUVinfo::allocateImage(Mwidth, Mheight);
+    if (imgMos == NULL)
+    {
+        return BLEND_RET_ERROR_MEMORY;
+    }
+
+    // Set the Y image to 255 so we can distinguish when frame idx are written to it
+    memset(imgMos->Y.ptr[0], 255, (imgMos->Y.width * imgMos->Y.height));
+    // Set the v and u images to black
+    memset(imgMos->V.ptr[0], 128, (imgMos->V.width * imgMos->V.height) << 1);
+
+    // Do the triangulation.  It returns a sorted list of edges
+    SEdgeVector *edge;
+    int n = m_Triangulator.triangulate(&edge, numCenters, width, height);
+    m_Triangulator.linkNeighbors(edge, n, numCenters);
+
+    // Bounding rectangle that determines the positioning of the rectangle that is
+    // cropped out of the computed mosaic to get rid of the gray borders.
+    MosaicRect cropping_rect;
+
+    if (m_wb.horizontal)
+    {
+        cropping_rect.left = xLeftMost;
+        cropping_rect.right = xRightMost;
+    }
+    else
+    {
+        cropping_rect.top = yTopMost;
+        cropping_rect.bottom = yBottomMost;
+    }
+
+    // Do merging and blending :
+    ret = DoMergeAndBlend(frames, numCenters, width, height, *imgMos, fullRect,
+            cropping_rect, progress, cancelComputation);
+
+    if (m_wb.blendingType == BLEND_TYPE_HORZ)
+        CropFinalMosaic(*imgMos, cropping_rect);
+
+
+    m_Triangulator.freeMemory();    // note: can be called even if delaunay_alloc() wasn't successful
+
+    imageMosaicYVU = imgMos->Y.ptr[0];
+
+
+    if (m_wb.blendingType == BLEND_TYPE_HORZ)
+    {
+        mosaicWidth = cropping_rect.right - cropping_rect.left + 1;
+        mosaicHeight = cropping_rect.bottom - cropping_rect.top + 1;
+    }
+    else
+    {
+        mosaicWidth = Mwidth;
+        mosaicHeight = Mheight;
+    }
+
+    return ret;
+}
+
+int Blend::MosaicSizeCheck(float sizeMultiplier, float heightMultiplier) {
+   if (Mwidth < width || Mheight < height) {
+        return BLEND_RET_ERROR;
+    }
+
+   if ((Mwidth * Mheight) > (width * height * sizeMultiplier)) {
+         return BLEND_RET_ERROR;
+   }
+
+   // We won't do blending for the cases where users swing the device too much
+   // in the secondary direction. We use a short side to determine the
+   // secondary direction because users may hold the device in landsape
+   // or portrait.
+   int shortSide = min(Mwidth, Mheight);
+   if (shortSide > height * heightMultiplier) {
+       return BLEND_RET_ERROR;
+   }
+
+   return BLEND_RET_OK;
+}
+
+int Blend::FillFramePyramid(MosaicFrame *mb)
+{
+    ImageType mbY, mbU, mbV;
+    // Lay this image, centered into the temporary buffer
+    mbY = mb->image;
+    mbU = mb->getU();
+    mbV = mb->getV();
+
+    int h, w;
+
+    for(h=0; h<height; h++)
+    {
+        ImageTypeShort yptr = m_pFrameYPyr->ptr[h];
+        ImageTypeShort uptr = m_pFrameUPyr->ptr[h];
+        ImageTypeShort vptr = m_pFrameVPyr->ptr[h];
+
+        for(w=0; w<width; w++)
+        {
+            yptr[w] = (short) ((*(mbY++)) << 3);
+            uptr[w] = (short) ((*(mbU++)) << 3);
+            vptr[w] = (short) ((*(mbV++)) << 3);
+        }
+    }
+
+    // Spread the image through the border
+    PyramidShort::BorderSpread(m_pFrameYPyr, BORDER, BORDER, BORDER, BORDER);
+    PyramidShort::BorderSpread(m_pFrameUPyr, BORDER, BORDER, BORDER, BORDER);
+    PyramidShort::BorderSpread(m_pFrameVPyr, BORDER, BORDER, BORDER, BORDER);
+
+    // Generate Laplacian pyramids
+    if (!PyramidShort::BorderReduce(m_pFrameYPyr, m_wb.nlevs) || !PyramidShort::BorderExpand(m_pFrameYPyr, m_wb.nlevs, -1) ||
+            !PyramidShort::BorderReduce(m_pFrameUPyr, m_wb.nlevsC) || !PyramidShort::BorderExpand(m_pFrameUPyr, m_wb.nlevsC, -1) ||
+            !PyramidShort::BorderReduce(m_pFrameVPyr, m_wb.nlevsC) || !PyramidShort::BorderExpand(m_pFrameVPyr, m_wb.nlevsC, -1))
+    {
+        return BLEND_RET_ERROR;
+    }
+    else
+    {
+        return BLEND_RET_OK;
+    }
+}
+
+int Blend::DoMergeAndBlend(MosaicFrame **frames, int nsite,
+             int width, int height, YUVinfo &imgMos, MosaicRect &rect,
+             MosaicRect &cropping_rect, float &progress, bool &cancelComputation)
+{
+    m_pMosaicYPyr = NULL;
+    m_pMosaicUPyr = NULL;
+    m_pMosaicVPyr = NULL;
+
+    m_pMosaicYPyr = PyramidShort::allocatePyramidPacked(m_wb.nlevs,(unsigned short)rect.Width(),(unsigned short)rect.Height(),BORDER);
+    m_pMosaicUPyr = PyramidShort::allocatePyramidPacked(m_wb.nlevsC,(unsigned short)rect.Width(),(unsigned short)rect.Height(),BORDER);
+    m_pMosaicVPyr = PyramidShort::allocatePyramidPacked(m_wb.nlevsC,(unsigned short)rect.Width(),(unsigned short)rect.Height(),BORDER);
+    if (!m_pMosaicYPyr || !m_pMosaicUPyr || !m_pMosaicVPyr)
+    {
+      return BLEND_RET_ERROR_MEMORY;
+    }
+
+    MosaicFrame *mb;
+
+    CSite *esite = m_AllSites + nsite;
+    int site_idx;
+
+    // First go through each frame and for each mosaic pixel determine which frame it should come from
+    site_idx = 0;
+    for(CSite *csite = m_AllSites; csite < esite; csite++)
+    {
+        if(cancelComputation)
+        {
+            if (m_pMosaicVPyr) free(m_pMosaicVPyr);
+            if (m_pMosaicUPyr) free(m_pMosaicUPyr);
+            if (m_pMosaicYPyr) free(m_pMosaicYPyr);
+            return BLEND_RET_CANCELLED;
+        }
+
+        mb = csite->getMb();
+
+        mb->vcrect = mb->brect;
+        ClipBlendRect(csite, mb->vcrect);
+
+        ComputeMask(csite, mb->vcrect, mb->brect, rect, imgMos, site_idx);
+
+        site_idx++;
+    }
+
+    ////////// imgMos.Y, imgMos.V, imgMos.U are used as follows //////////////
+    ////////////////////// THIN STRIP MODE ///////////////////////////////////
+
+    // imgMos.Y is used to store the index of the image from which each pixel
+    // in the output mosaic can be read out for the thin-strip mode. Thus,
+    // there is no special handling for pixels around the seam. Also, imgMos.Y
+    // is set to 255 wherever we can't get its value from any input image e.g.
+    // in the gray border areas. imgMos.V and imgMos.U are set to 128 for the
+    // thin-strip mode.
+
+    ////////////////////// WIDE STRIP MODE ///////////////////////////////////
+
+    // imgMos.Y is used the same way as the thin-strip mode.
+    // imgMos.V is used to store the index of the neighboring image which
+    // should contribute to the color of an output pixel in a band around
+    // the seam. Thus, in this band, we will crossfade between the color values
+    // from the image index imgMos.Y and image index imgMos.V. imgMos.U is
+    // used to store the weight (multiplied by 100) that each image will
+    // contribute to the blending process. Thus, we start at 99% contribution
+    // from the first image, then go to 50% contribution from each image at
+    // the seam. Then, the contribution from the second image goes up to 99%.
+
+    // For WIDE mode, set the pixel masks to guide the blender to cross-fade
+    // between the images on either side of each seam:
+    if (m_wb.stripType == STRIP_TYPE_WIDE)
+    {
+        if(m_wb.horizontal)
+        {
+            // Set the number of pixels around the seam to cross-fade between
+            // the two component images,
+            int tw = STRIP_CROSS_FADE_WIDTH_PXLS;
+
+            // Proceed with the image index calculation for cross-fading
+            // only if the cross-fading width is larger than 0
+            if (tw > 0)
+            {
+                for(int y = 0; y < imgMos.Y.height; y++)
+                {
+                    // Since we compare two adjecant pixels to determine
+                    // whether there is a seam, the termination condition of x
+                    // is set to imgMos.Y.width - tw, so that x+1 below
+                    // won't exceed the imgMos' boundary.
+                    for(int x = tw; x < imgMos.Y.width - tw; )
+                    {
+                        // Determine where the seam is...
+                        if (imgMos.Y.ptr[y][x] != imgMos.Y.ptr[y][x+1] &&
+                                imgMos.Y.ptr[y][x] != 255 &&
+                                imgMos.Y.ptr[y][x+1] != 255)
+                        {
+                            // Find the image indices on both sides of the seam
+                            unsigned char idx1 = imgMos.Y.ptr[y][x];
+                            unsigned char idx2 = imgMos.Y.ptr[y][x+1];
+
+                            for (int o = tw; o >= 0; o--)
+                            {
+                                // Set the image index to use for cross-fading
+                                imgMos.V.ptr[y][x - o] = idx2;
+                                // Set the intensity weights to use for cross-fading
+                                imgMos.U.ptr[y][x - o] = 50 + (99 - 50) * o / tw;
+                            }
+
+                            for (int o = 1; o <= tw; o++)
+                            {
+                                // Set the image index to use for cross-fading
+                                imgMos.V.ptr[y][x + o] = idx1;
+                                // Set the intensity weights to use for cross-fading
+                                imgMos.U.ptr[y][x + o] = imgMos.U.ptr[y][x - o];
+                            }
+
+                            x += (tw + 1);
+                        }
+                        else
+                        {
+                            x++;
+                        }
+                    }
+                }
+            }
+        }
+        else
+        {
+            // Set the number of pixels around the seam to cross-fade between
+            // the two component images,
+            int tw = STRIP_CROSS_FADE_WIDTH_PXLS;
+
+            // Proceed with the image index calculation for cross-fading
+            // only if the cross-fading width is larger than 0
+            if (tw > 0)
+            {
+                for(int x = 0; x < imgMos.Y.width; x++)
+                {
+                    // Since we compare two adjecant pixels to determine
+                    // whether there is a seam, the termination condition of y
+                    // is set to imgMos.Y.height - tw, so that y+1 below
+                    // won't exceed the imgMos' boundary.
+                    for(int y = tw; y < imgMos.Y.height - tw; )
+                    {
+                        // Determine where the seam is...
+                        if (imgMos.Y.ptr[y][x] != imgMos.Y.ptr[y+1][x] &&
+                                imgMos.Y.ptr[y][x] != 255 &&
+                                imgMos.Y.ptr[y+1][x] != 255)
+                        {
+                            // Find the image indices on both sides of the seam
+                            unsigned char idx1 = imgMos.Y.ptr[y][x];
+                            unsigned char idx2 = imgMos.Y.ptr[y+1][x];
+
+                            for (int o = tw; o >= 0; o--)
+                            {
+                                // Set the image index to use for cross-fading
+                                imgMos.V.ptr[y - o][x] = idx2;
+                                // Set the intensity weights to use for cross-fading
+                                imgMos.U.ptr[y - o][x] = 50 + (99 - 50) * o / tw;
+                            }
+
+                            for (int o = 1; o <= tw; o++)
+                            {
+                                // Set the image index to use for cross-fading
+                                imgMos.V.ptr[y + o][x] = idx1;
+                                // Set the intensity weights to use for cross-fading
+                                imgMos.U.ptr[y + o][x] = imgMos.U.ptr[y - o][x];
+                            }
+
+                            y += (tw + 1);
+                        }
+                        else
+                        {
+                            y++;
+                        }
+                    }
+                }
+            }
+        }
+
+    }
+
+    // Now perform the actual blending using the frame assignment determined above
+    site_idx = 0;
+    for(CSite *csite = m_AllSites; csite < esite; csite++)
+    {
+        if(cancelComputation)
+        {
+            if (m_pMosaicVPyr) free(m_pMosaicVPyr);
+            if (m_pMosaicUPyr) free(m_pMosaicUPyr);
+            if (m_pMosaicYPyr) free(m_pMosaicYPyr);
+            return BLEND_RET_CANCELLED;
+        }
+
+        mb = csite->getMb();
+
+
+        if(FillFramePyramid(mb)!=BLEND_RET_OK)
+            return BLEND_RET_ERROR;
+
+        ProcessPyramidForThisFrame(csite, mb->vcrect, mb->brect, rect, imgMos, mb->trs, site_idx);
+
+        progress += TIME_PERCENT_BLEND/nsite;
+
+        site_idx++;
+    }
+
+
+    // Blend
+    PerformFinalBlending(imgMos, cropping_rect);
+
+    if (cropping_rect.Width() <= 0 || cropping_rect.Height() <= 0)
+    {
+        return BLEND_RET_ERROR;
+    }
+
+    if (m_pMosaicVPyr) free(m_pMosaicVPyr);
+    if (m_pMosaicUPyr) free(m_pMosaicUPyr);
+    if (m_pMosaicYPyr) free(m_pMosaicYPyr);
+
+    progress += TIME_PERCENT_FINAL;
+
+    return BLEND_RET_OK;
+}
+
+void Blend::CropFinalMosaic(YUVinfo &imgMos, MosaicRect &cropping_rect)
+{
+    int i, j, k;
+    ImageType yimg;
+    ImageType uimg;
+    ImageType vimg;
+
+
+    yimg = imgMos.Y.ptr[0];
+    uimg = imgMos.U.ptr[0];
+    vimg = imgMos.V.ptr[0];
+
+    k = 0;
+    for (j = cropping_rect.top; j <= cropping_rect.bottom; j++)
+    {
+        for (i = cropping_rect.left; i <= cropping_rect.right; i++)
+        {
+            yimg[k] = yimg[j*imgMos.Y.width+i];
+            k++;
+        }
+    }
+    for (j = cropping_rect.top; j <= cropping_rect.bottom; j++)
+    {
+       for (i = cropping_rect.left; i <= cropping_rect.right; i++)
+        {
+            yimg[k] = vimg[j*imgMos.Y.width+i];
+            k++;
+        }
+    }
+    for (j = cropping_rect.top; j <= cropping_rect.bottom; j++)
+    {
+       for (i = cropping_rect.left; i <= cropping_rect.right; i++)
+        {
+            yimg[k] = uimg[j*imgMos.Y.width+i];
+            k++;
+        }
+    }
+}
+
+int Blend::PerformFinalBlending(YUVinfo &imgMos, MosaicRect &cropping_rect)
+{
+    if (!PyramidShort::BorderExpand(m_pMosaicYPyr, m_wb.nlevs, 1) || !PyramidShort::BorderExpand(m_pMosaicUPyr, m_wb.nlevsC, 1) ||
+        !PyramidShort::BorderExpand(m_pMosaicVPyr, m_wb.nlevsC, 1))
+    {
+      return BLEND_RET_ERROR;
+    }
+
+    ImageTypeShort myimg;
+    ImageTypeShort muimg;
+    ImageTypeShort mvimg;
+    ImageType yimg;
+    ImageType uimg;
+    ImageType vimg;
+
+    int cx = (int)imgMos.Y.width/2;
+    int cy = (int)imgMos.Y.height/2;
+
+    // 2D boolean array that contains true wherever the mosaic image data is
+    // invalid (i.e. in the gray border).
+    bool **b = new bool*[imgMos.Y.height];
+
+    for(int j=0; j<imgMos.Y.height; j++)
+    {
+        b[j] = new bool[imgMos.Y.width];
+    }
+
+    // Copy the resulting image into the full image using the mask
+    int i, j;
+
+    yimg = imgMos.Y.ptr[0];
+    uimg = imgMos.U.ptr[0];
+    vimg = imgMos.V.ptr[0];
+
+    for (j = 0; j < imgMos.Y.height; j++)
+    {
+        myimg = m_pMosaicYPyr->ptr[j];
+        muimg = m_pMosaicUPyr->ptr[j];
+        mvimg = m_pMosaicVPyr->ptr[j];
+
+        for (i = 0; i<imgMos.Y.width; i++)
+        {
+            // A final mask was set up previously,
+            // if the value is zero skip it, otherwise replace it.
+            if (*yimg <255)
+            {
+                short value = (short) ((*myimg) >> 3);
+                if (value < 0) value = 0;
+                else if (value > 255) value = 255;
+                *yimg = (unsigned char) value;
+
+                value = (short) ((*muimg) >> 3);
+                if (value < 0) value = 0;
+                else if (value > 255) value = 255;
+                *uimg = (unsigned char) value;
+
+                value = (short) ((*mvimg) >> 3);
+                if (value < 0) value = 0;
+                else if (value > 255) value = 255;
+                *vimg = (unsigned char) value;
+
+                b[j][i] = false;
+
+            }
+            else
+            {   // set border color in here
+                *yimg = (unsigned char) 96;
+                *uimg = (unsigned char) 128;
+                *vimg = (unsigned char) 128;
+
+                b[j][i] = true;
+            }
+
+            yimg++;
+            uimg++;
+            vimg++;
+            myimg++;
+            muimg++;
+            mvimg++;
+        }
+    }
+
+    if(m_wb.horizontal)
+    {
+        //Scan through each row and increment top if the row contains any gray
+        for (j = 0; j < imgMos.Y.height; j++)
+        {
+            for (i = cropping_rect.left; i < cropping_rect.right; i++)
+            {
+                if (b[j][i])
+                {
+                    break; // to next row
+                }
+            }
+
+            if (i == cropping_rect.right)   //no gray pixel in this row!
+            {
+                cropping_rect.top = j;
+                break;
+            }
+        }
+
+        //Scan through each row and decrement bottom if the row contains any gray
+        for (j = imgMos.Y.height-1; j >= 0; j--)
+        {
+            for (i = cropping_rect.left; i < cropping_rect.right; i++)
+            {
+                if (b[j][i])
+                {
+                    break; // to next row
+                }
+            }
+
+            if (i == cropping_rect.right)   //no gray pixel in this row!
+            {
+                cropping_rect.bottom = j;
+                break;
+            }
+        }
+    }
+    else // Vertical Mosaic
+    {
+        //Scan through each column and increment left if the column contains any gray
+        for (i = 0; i < imgMos.Y.width; i++)
+        {
+            for (j = cropping_rect.top; j < cropping_rect.bottom; j++)
+            {
+                if (b[j][i])
+                {
+                    break; // to next column
+                }
+            }
+
+            if (j == cropping_rect.bottom)   //no gray pixel in this column!
+            {
+                cropping_rect.left = i;
+                break;
+            }
+        }
+
+        //Scan through each column and decrement right if the column contains any gray
+        for (i = imgMos.Y.width-1; i >= 0; i--)
+        {
+            for (j = cropping_rect.top; j < cropping_rect.bottom; j++)
+            {
+                if (b[j][i])
+                {
+                    break; // to next column
+                }
+            }
+
+            if (j == cropping_rect.bottom)   //no gray pixel in this column!
+            {
+                cropping_rect.right = i;
+                break;
+            }
+        }
+
+    }
+
+    RoundingCroppingSizeToMultipleOf8(cropping_rect);
+
+    for(int j=0; j<imgMos.Y.height; j++)
+    {
+        delete b[j];
+    }
+
+    delete b;
+
+    return BLEND_RET_OK;
+}
+
+void Blend::RoundingCroppingSizeToMultipleOf8(MosaicRect &rect) {
+    int height = rect.bottom - rect.top + 1;
+    int residue = height & 7;
+    rect.bottom -= residue;
+
+    int width = rect.right - rect.left + 1;
+    residue = width & 7;
+    rect.right -= residue;
+}
+
+void Blend::ComputeMask(CSite *csite, BlendRect &vcrect, BlendRect &brect, MosaicRect &rect, YUVinfo &imgMos, int site_idx)
+{
+    PyramidShort *dptr = m_pMosaicYPyr;
+
+    int nC = m_wb.nlevsC;
+    int l = (int) ((vcrect.lft - rect.left));
+    int b = (int) ((vcrect.bot - rect.top));
+    int r = (int) ((vcrect.rgt - rect.left));
+    int t = (int) ((vcrect.top - rect.top));
+
+    if (vcrect.lft == brect.lft)
+        l = (l <= 0) ? -BORDER : l - BORDER;
+    else if (l < -BORDER)
+        l = -BORDER;
+
+    if (vcrect.bot == brect.bot)
+        b = (b <= 0) ? -BORDER : b - BORDER;
+    else if (b < -BORDER)
+        b = -BORDER;
+
+    if (vcrect.rgt == brect.rgt)
+        r = (r >= dptr->width) ? dptr->width + BORDER - 1 : r + BORDER;
+    else if (r >= dptr->width + BORDER)
+        r = dptr->width + BORDER - 1;
+
+    if (vcrect.top == brect.top)
+        t = (t >= dptr->height) ? dptr->height + BORDER - 1 : t + BORDER;
+    else if (t >= dptr->height + BORDER)
+        t = dptr->height + BORDER - 1;
+
+    // Walk the Region of interest and populate the pyramid
+    for (int j = b; j <= t; j++)
+    {
+        int jj = j;
+        double sj = jj + rect.top;
+
+        for (int i = l; i <= r; i++)
+        {
+            int ii = i;
+            // project point and then triangulate to neighbors
+            double si = ii + rect.left;
+
+            double dself = hypotSq(csite->getVCenter().x - si, csite->getVCenter().y - sj);
+            int inMask = ((unsigned) ii < imgMos.Y.width &&
+                    (unsigned) jj < imgMos.Y.height) ? 1 : 0;
+
+            if(!inMask)
+                continue;
+
+            // scan the neighbors to see if this is a valid position
+            unsigned char mask = (unsigned char) 255;
+            SEdgeVector *ce;
+            int ecnt;
+            for (ce = csite->getNeighbor(), ecnt = csite->getNumNeighbors(); ecnt--; ce++)
+            {
+                double d1 = hypotSq(m_AllSites[ce->second].getVCenter().x - si,
+                        m_AllSites[ce->second].getVCenter().y - sj);
+                if (d1 < dself)
+                {
+                    break;
+                }
+            }
+
+            if (ecnt >= 0) continue;
+
+            imgMos.Y.ptr[jj][ii] = (unsigned char)site_idx;
+        }
+    }
+}
+
+void Blend::ProcessPyramidForThisFrame(CSite *csite, BlendRect &vcrect, BlendRect &brect, MosaicRect &rect, YUVinfo &imgMos, double trs[3][3], int site_idx)
+{
+    // Put the Region of interest (for all levels) into m_pMosaicYPyr
+    double inv_trs[3][3];
+    inv33d(trs, inv_trs);
+
+    // Process each pyramid level
+    PyramidShort *sptr = m_pFrameYPyr;
+    PyramidShort *suptr = m_pFrameUPyr;
+    PyramidShort *svptr = m_pFrameVPyr;
+
+    PyramidShort *dptr = m_pMosaicYPyr;
+    PyramidShort *duptr = m_pMosaicUPyr;
+    PyramidShort *dvptr = m_pMosaicVPyr;
+
+    int dscale = 0; // distance scale for the current level
+    int nC = m_wb.nlevsC;
+    for (int n = m_wb.nlevs; n--; dscale++, dptr++, sptr++, dvptr++, duptr++, svptr++, suptr++, nC--)
+    {
+        int l = (int) ((vcrect.lft - rect.left) / (1 << dscale));
+        int b = (int) ((vcrect.bot - rect.top) / (1 << dscale));
+        int r = (int) ((vcrect.rgt - rect.left) / (1 << dscale) + .5);
+        int t = (int) ((vcrect.top - rect.top) / (1 << dscale) + .5);
+
+        if (vcrect.lft == brect.lft)
+            l = (l <= 0) ? -BORDER : l - BORDER;
+        else if (l < -BORDER)
+            l = -BORDER;
+
+        if (vcrect.bot == brect.bot)
+            b = (b <= 0) ? -BORDER : b - BORDER;
+        else if (b < -BORDER)
+            b = -BORDER;
+
+        if (vcrect.rgt == brect.rgt)
+            r = (r >= dptr->width) ? dptr->width + BORDER - 1 : r + BORDER;
+        else if (r >= dptr->width + BORDER)
+            r = dptr->width + BORDER - 1;
+
+        if (vcrect.top == brect.top)
+            t = (t >= dptr->height) ? dptr->height + BORDER - 1 : t + BORDER;
+        else if (t >= dptr->height + BORDER)
+            t = dptr->height + BORDER - 1;
+
+        // Walk the Region of interest and populate the pyramid
+        for (int j = b; j <= t; j++)
+        {
+            int jj = (j << dscale);
+            double sj = jj + rect.top;
+
+            for (int i = l; i <= r; i++)
+            {
+                int ii = (i << dscale);
+                // project point and then triangulate to neighbors
+                double si = ii + rect.left;
+
+                int inMask = ((unsigned) ii < imgMos.Y.width &&
+                        (unsigned) jj < imgMos.Y.height) ? 1 : 0;
+
+                if(inMask && imgMos.Y.ptr[jj][ii] != site_idx &&
+                        imgMos.V.ptr[jj][ii] != site_idx &&
+                        imgMos.Y.ptr[jj][ii] != 255)
+                    continue;
+
+                // Setup weights for cross-fading
+                // Weight of the intensity already in the output pixel
+                double wt0 = 0.0;
+                // Weight of the intensity from the input pixel (current frame)
+                double wt1 = 1.0;
+
+                if (m_wb.stripType == STRIP_TYPE_WIDE)
+                {
+                    if(inMask && imgMos.Y.ptr[jj][ii] != 255)
+                    {
+                        // If not on a seam OR pyramid level exceeds
+                        // maximum level for cross-fading.
+                        if((imgMos.V.ptr[jj][ii] == 128) ||
+                            (dscale > STRIP_CROSS_FADE_MAX_PYR_LEVEL))
+                        {
+                            wt0 = 0.0;
+                            wt1 = 1.0;
+                        }
+                        else
+                        {
+                            wt0 = 1.0;
+                            wt1 = ((imgMos.Y.ptr[jj][ii] == site_idx) ?
+                                    (double)imgMos.U.ptr[jj][ii] / 100.0 :
+                                    1.0 - (double)imgMos.U.ptr[jj][ii] / 100.0);
+                        }
+                    }
+                }
+
+                // Project this mosaic point into the original frame coordinate space
+                double xx, yy;
+
+                MosaicToFrame(inv_trs, si, sj, xx, yy);
+
+                if (xx < 0.0 || yy < 0.0 || xx > width - 1.0 || yy > height - 1.0)
+                {
+                    if(inMask)
+                    {
+                        imgMos.Y.ptr[jj][ii] = 255;
+                        wt0 = 0.0f;
+                        wt1 = 1.0f;
+                    }
+                }
+
+                xx /= (1 << dscale);
+                yy /= (1 << dscale);
+
+
+                int x1 = (xx >= 0.0) ? (int) xx : (int) floor(xx);
+                int y1 = (yy >= 0.0) ? (int) yy : (int) floor(yy);
+
+                // Final destination in extended pyramid
+#ifndef LINEAR_INTERP
+                if(inSegment(x1, sptr->width, BORDER-1) &&
+                        inSegment(y1, sptr->height, BORDER-1))
+                {
+                    double xfrac = xx - x1;
+                    double yfrac = yy - y1;
+                    dptr->ptr[j][i] = (short) (wt0 * dptr->ptr[j][i] + .5 +
+                            wt1 * ciCalc(sptr, x1, y1, xfrac, yfrac));
+                    if (dvptr >= m_pMosaicVPyr && nC > 0)
+                    {
+                        duptr->ptr[j][i] = (short) (wt0 * duptr->ptr[j][i] + .5 +
+                                wt1 * ciCalc(suptr, x1, y1, xfrac, yfrac));
+                        dvptr->ptr[j][i] = (short) (wt0 * dvptr->ptr[j][i] + .5 +
+                                wt1 * ciCalc(svptr, x1, y1, xfrac, yfrac));
+                    }
+                }
+#else
+                if(inSegment(x1, sptr->width, BORDER) && inSegment(y1, sptr->height, BORDER))
+                {
+                    int x2 = x1 + 1;
+                    int y2 = y1 + 1;
+                    double xfrac = xx - x1;
+                    double yfrac = yy - y1;
+                    double y1val = sptr->ptr[y1][x1] +
+                        (sptr->ptr[y1][x2] - sptr->ptr[y1][x1]) * xfrac;
+                    double y2val = sptr->ptr[y2][x1] +
+                        (sptr->ptr[y2][x2] - sptr->ptr[y2][x1]) * xfrac;
+                    dptr->ptr[j][i] = (short) (y1val + yfrac * (y2val - y1val));
+
+                    if (dvptr >= m_pMosaicVPyr && nC > 0)
+                    {
+                        y1val = suptr->ptr[y1][x1] +
+                            (suptr->ptr[y1][x2] - suptr->ptr[y1][x1]) * xfrac;
+                        y2val = suptr->ptr[y2][x1] +
+                            (suptr->ptr[y2][x2] - suptr->ptr[y2][x1]) * xfrac;
+
+                        duptr->ptr[j][i] = (short) (y1val + yfrac * (y2val - y1val));
+
+                        y1val = svptr->ptr[y1][x1] +
+                            (svptr->ptr[y1][x2] - svptr->ptr[y1][x1]) * xfrac;
+                        y2val = svptr->ptr[y2][x1] +
+                            (svptr->ptr[y2][x2] - svptr->ptr[y2][x1]) * xfrac;
+
+                        dvptr->ptr[j][i] = (short) (y1val + yfrac * (y2val - y1val));
+                    }
+                }
+#endif
+                else
+                {
+                    clipToSegment(x1, sptr->width, BORDER);
+                    clipToSegment(y1, sptr->height, BORDER);
+
+                    dptr->ptr[j][i] = (short) (wt0 * dptr->ptr[j][i] + 0.5 +
+                            wt1 * sptr->ptr[y1][x1] );
+                    if (dvptr >= m_pMosaicVPyr && nC > 0)
+                    {
+                        dvptr->ptr[j][i] = (short) (wt0 * dvptr->ptr[j][i] +
+                                0.5 + wt1 * svptr->ptr[y1][x1] );
+                        duptr->ptr[j][i] = (short) (wt0 * duptr->ptr[j][i] +
+                                0.5 + wt1 * suptr->ptr[y1][x1] );
+                    }
+                }
+            }
+        }
+    }
+}
+
+void Blend::MosaicToFrame(double trs[3][3], double x, double y, double &wx, double &wy)
+{
+    double X, Y, z;
+    if (m_wb.theta == 0.0)
+    {
+        X = x;
+        Y = y;
+    }
+    else if (m_wb.horizontal)
+    {
+        double alpha = x * m_wb.direction / m_wb.width;
+        double length = (y - alpha * m_wb.correction) * m_wb.direction + m_wb.radius;
+        double deltaTheta = m_wb.theta * alpha;
+        double sinTheta = sin(deltaTheta);
+        double cosTheta = sqrt(1.0 - sinTheta * sinTheta) * m_wb.direction;
+        X = length * sinTheta + m_wb.x;
+        Y = length * cosTheta + m_wb.y;
+    }
+    else
+    {
+        double alpha = y * m_wb.direction / m_wb.width;
+        double length = (x - alpha * m_wb.correction) * m_wb.direction + m_wb.radius;
+        double deltaTheta = m_wb.theta * alpha;
+        double sinTheta = sin(deltaTheta);
+        double cosTheta = sqrt(1.0 - sinTheta * sinTheta) * m_wb.direction;
+        Y = length * sinTheta + m_wb.y;
+        X = length * cosTheta + m_wb.x;
+    }
+    z = ProjZ(trs, X, Y, 1.0);
+    wx = ProjX(trs, X, Y, z, 1.0);
+    wy = ProjY(trs, X, Y, z, 1.0);
+}
+
+void Blend::FrameToMosaic(double trs[3][3], double x, double y, double &wx, double &wy)
+{
+    // Project into the intermediate Mosaic coordinate system
+    double z = ProjZ(trs, x, y, 1.0);
+    double X = ProjX(trs, x, y, z, 1.0);
+    double Y = ProjY(trs, x, y, z, 1.0);
+
+    if (m_wb.theta == 0.0)
+    {
+        // No rotation, then this is all we need to do.
+        wx = X;
+        wy = Y;
+    }
+    else if (m_wb.horizontal)
+    {
+        double deltaX = X - m_wb.x;
+        double deltaY = Y - m_wb.y;
+        double length = sqrt(deltaX * deltaX + deltaY * deltaY);
+        double deltaTheta = asin(deltaX / length);
+        double alpha = deltaTheta / m_wb.theta;
+        wx = alpha * m_wb.width * m_wb.direction;
+        wy = (length - m_wb.radius) * m_wb.direction + alpha * m_wb.correction;
+    }
+    else
+    {
+        double deltaX = X - m_wb.x;
+        double deltaY = Y - m_wb.y;
+        double length = sqrt(deltaX * deltaX + deltaY * deltaY);
+        double deltaTheta = asin(deltaY / length);
+        double alpha = deltaTheta / m_wb.theta;
+        wy = alpha * m_wb.width * m_wb.direction;
+        wx = (length - m_wb.radius) * m_wb.direction + alpha * m_wb.correction;
+    }
+}
+
+
+
+// Clip the region of interest as small as possible by using the Voronoi edges of
+// the neighbors
+void Blend::ClipBlendRect(CSite *csite, BlendRect &brect)
+{
+      SEdgeVector *ce;
+      int ecnt;
+      for (ce = csite->getNeighbor(), ecnt = csite->getNumNeighbors(); ecnt--; ce++)
+      {
+        // calculate the Voronoi bisector intersection
+        const double epsilon = 1e-5;
+        double dx = (m_AllSites[ce->second].getVCenter().x - m_AllSites[ce->first].getVCenter().x);
+        double dy = (m_AllSites[ce->second].getVCenter().y - m_AllSites[ce->first].getVCenter().y);
+        double xmid = m_AllSites[ce->first].getVCenter().x + dx/2.0;
+        double ymid = m_AllSites[ce->first].getVCenter().y + dy/2.0;
+        double inter;
+
+        if (dx > epsilon)
+        {
+          // neighbor is on right
+          if ((inter = m_wb.roundoffOverlap + xmid - dy * (((dy >= 0.0) ? brect.bot : brect.top) - ymid) / dx) < brect.rgt)
+            brect.rgt = inter;
+        }
+        else if (dx < -epsilon)
+        {
+          // neighbor is on left
+          if ((inter = -m_wb.roundoffOverlap + xmid - dy * (((dy >= 0.0) ? brect.bot : brect.top) - ymid) / dx) > brect.lft)
+            brect.lft = inter;
+        }
+        if (dy > epsilon)
+        {
+          // neighbor is above
+          if ((inter = m_wb.roundoffOverlap + ymid - dx * (((dx >= 0.0) ? brect.lft : brect.rgt) - xmid) / dy) < brect.top)
+            brect.top = inter;
+        }
+        else if (dy < -epsilon)
+        {
+          // neighbor is below
+          if ((inter = -m_wb.roundoffOverlap + ymid - dx * (((dx >= 0.0) ? brect.lft : brect.rgt) - xmid) / dy) > brect.bot)
+            brect.bot = inter;
+        }
+      }
+}
+
+void Blend::FrameToMosaicRect(int width, int height, double trs[3][3], BlendRect &brect)
+{
+    // We need to walk the perimeter since the borders can be bent.
+    brect.lft = brect.bot = 2e30;
+    brect.rgt = brect.top = -2e30;
+    double xpos, ypos;
+    double lasty = height - 1.0;
+    double lastx = width - 1.0;
+    int i;
+
+    for (i = width; i--;)
+    {
+
+        FrameToMosaic(trs, (double) i, 0.0, xpos, ypos);
+        ClipRect(xpos, ypos, brect);
+        FrameToMosaic(trs, (double) i, lasty, xpos, ypos);
+        ClipRect(xpos, ypos, brect);
+    }
+    for (i = height; i--;)
+    {
+        FrameToMosaic(trs, 0.0, (double) i, xpos, ypos);
+        ClipRect(xpos, ypos, brect);
+        FrameToMosaic(trs, lastx, (double) i, xpos, ypos);
+        ClipRect(xpos, ypos, brect);
+    }
+}
+
+void Blend::SelectRelevantFrames(MosaicFrame **frames, int frames_size,
+        MosaicFrame **relevant_frames, int &relevant_frames_size)
+{
+    MosaicFrame *first = frames[0];
+    MosaicFrame *last = frames[frames_size-1];
+    MosaicFrame *mb;
+
+    double fxpos = first->trs[0][2], fypos = first->trs[1][2];
+
+    double midX = last->width / 2.0;
+    double midY = last->height / 2.0;
+    double z = ProjZ(first->trs, midX, midY, 1.0);
+    double firstX, firstY;
+    double prevX = firstX = ProjX(first->trs, midX, midY, z, 1.0);
+    double prevY = firstY = ProjY(first->trs, midX, midY, z, 1.0);
+
+    relevant_frames[0] = first; // Add first frame by default
+    relevant_frames_size = 1;
+
+    for (int i = 0; i < frames_size - 1; i++)
+    {
+        mb = frames[i];
+        double currX, currY;
+        z = ProjZ(mb->trs, midX, midY, 1.0);
+        currX = ProjX(mb->trs, midX, midY, z, 1.0);
+        currY = ProjY(mb->trs, midX, midY, z, 1.0);
+        double deltaX = currX - prevX;
+        double deltaY = currY - prevY;
+        double center2centerDist = sqrt(deltaY * deltaY + deltaX * deltaX);
+
+        if (fabs(deltaX) > STRIP_SEPARATION_THRESHOLD_PXLS ||
+                fabs(deltaY) > STRIP_SEPARATION_THRESHOLD_PXLS)
+        {
+            relevant_frames[relevant_frames_size] = mb;
+            relevant_frames_size++;
+
+            prevX = currX;
+            prevY = currY;
+        }
+    }
+
+    // Add last frame by default
+    relevant_frames[relevant_frames_size] = last;
+    relevant_frames_size++;
+}
+
+void Blend::ComputeBlendParameters(MosaicFrame **frames, int frames_size, int is360)
+{
+    // For FULL and PAN modes, we do not unwarp the mosaic into a rectangular coordinate system
+    // and so we set the theta to 0 and return.
+    if (m_wb.blendingType != BLEND_TYPE_CYLPAN && m_wb.blendingType != BLEND_TYPE_HORZ)
+    {
+        m_wb.theta = 0.0;
+        return;
+    }
+
+    MosaicFrame *first = frames[0];
+    MosaicFrame *last = frames[frames_size-1];
+    MosaicFrame *mb;
+
+    double lxpos = last->trs[0][2], lypos = last->trs[1][2];
+    double fxpos = first->trs[0][2], fypos = first->trs[1][2];
+
+    // Calculate warp to produce proper stitching.
+    // get x, y displacement
+    double midX = last->width / 2.0;
+    double midY = last->height / 2.0;
+    double z = ProjZ(first->trs, midX, midY, 1.0);
+    double firstX, firstY;
+    double prevX = firstX = ProjX(first->trs, midX, midY, z, 1.0);
+    double prevY = firstY = ProjY(first->trs, midX, midY, z, 1.0);
+
+    double arcLength, lastTheta;
+    m_wb.theta = lastTheta = arcLength = 0.0;
+
+    // Step through all the frames to compute the total arc-length of the cone
+    // swept while capturing the mosaic (in the original conical coordinate system).
+    for (int i = 0; i < frames_size; i++)
+    {
+        mb = frames[i];
+        double currX, currY;
+        z = ProjZ(mb->trs, midX, midY, 1.0);
+        currX = ProjX(mb->trs, midX, midY, z, 1.0);
+        currY = ProjY(mb->trs, midX, midY, z, 1.0);
+        double deltaX = currX - prevX;
+        double deltaY = currY - prevY;
+
+        // The arcLength is computed by summing the lengths of the chords
+        // connecting the pairwise projected image centers of the input image frames.
+        arcLength += sqrt(deltaY * deltaY + deltaX * deltaX);
+
+        if (!is360)
+        {
+            double thisTheta = asin(mb->trs[1][0]);
+            m_wb.theta += thisTheta - lastTheta;
+            lastTheta = thisTheta;
+        }
+
+        prevX = currX;
+        prevY = currY;
+    }
+
+    // Stretch this to end at the proper alignment i.e. the width of the
+    // rectangle is determined by the arcLength computed above and the cone
+    // sector angle is determined using the rotation of the last frame.
+    m_wb.width = arcLength;
+    if (is360) m_wb.theta = asin(last->trs[1][0]);
+
+    // If there is no rotation, we're done.
+    if (m_wb.theta != 0.0)
+    {
+        double dx = prevX - firstX;
+        double dy = prevY - firstY;
+
+        // If the mosaic was captured by sweeping horizontally
+        if (abs(lxpos - fxpos) > abs(lypos - fypos))
+        {
+            m_wb.horizontal = 1;
+            // Calculate radius position to make ends exactly the same Y offset
+            double radiusTheta = dx / cos(3.14159 / 2.0 - m_wb.theta);
+            m_wb.radius = dy + radiusTheta * cos(m_wb.theta);
+            if (m_wb.radius < 0.0) m_wb.radius = -m_wb.radius;
+        }
+        else
+        {
+            m_wb.horizontal = 0;
+            // Calculate radius position to make ends exactly the same Y offset
+            double radiusTheta = dy / cos(3.14159 / 2.0 - m_wb.theta);
+            m_wb.radius = dx + radiusTheta * cos(m_wb.theta);
+            if (m_wb.radius < 0.0) m_wb.radius = -m_wb.radius;
+        }
+
+        // Determine major direction
+        if (m_wb.horizontal)
+        {
+            // Horizontal strip
+            // m_wb.x,y record the origin of the rectangle coordinate system.
+            if (is360) m_wb.x = firstX;
+            else
+            {
+                if (lxpos - fxpos < 0)
+                {
+                    m_wb.x = firstX + midX;
+                    z = ProjZ(last->trs, 0.0, midY, 1.0);
+                    prevX = ProjX(last->trs, 0.0, midY, z, 1.0);
+                    prevY = ProjY(last->trs, 0.0, midY, z, 1.0);
+                }
+                else
+                {
+                    m_wb.x = firstX - midX;
+                    z = ProjZ(last->trs, last->width - 1.0, midY, 1.0);
+                    prevX = ProjX(last->trs, last->width - 1.0, midY, z, 1.0);
+                    prevY = ProjY(last->trs, last->width - 1.0, midY, z, 1.0);
+                }
+            }
+            dy = prevY - firstY;
+            if (dy < 0.0) m_wb.direction = 1.0;
+            else m_wb.direction = -1.0;
+            m_wb.y = firstY - m_wb.radius * m_wb.direction;
+            if (dy * m_wb.theta > 0.0) m_wb.width = -m_wb.width;
+        }
+        else
+        {
+            // Vertical strip
+            if (is360) m_wb.y = firstY;
+            else
+            {
+                if (lypos - fypos < 0)
+                {
+                    m_wb.x = firstY + midY;
+                    z = ProjZ(last->trs, midX, 0.0, 1.0);
+                    prevX = ProjX(last->trs, midX, 0.0, z, 1.0);
+                    prevY = ProjY(last->trs, midX, 0.0, z, 1.0);
+                }
+                else
+                {
+                    m_wb.x = firstX - midX;
+                    z = ProjZ(last->trs, midX, last->height - 1.0, 1.0);
+                    prevX = ProjX(last->trs, midX, last->height - 1.0, z, 1.0);
+                    prevY = ProjY(last->trs, midX, last->height - 1.0, z, 1.0);
+                }
+            }
+            dx = prevX - firstX;
+            if (dx < 0.0) m_wb.direction = 1.0;
+            else m_wb.direction = -1.0;
+            m_wb.x = firstX - m_wb.radius * m_wb.direction;
+            if (dx * m_wb.theta > 0.0) m_wb.width = -m_wb.width;
+        }
+
+        // Calculate the correct correction factor
+        double deltaX = prevX - m_wb.x;
+        double deltaY = prevY - m_wb.y;
+        double length = sqrt(deltaX * deltaX + deltaY * deltaY);
+        double deltaTheta = (m_wb.horizontal) ? deltaX : deltaY;
+        deltaTheta = asin(deltaTheta / length);
+        m_wb.correction = ((m_wb.radius - length) * m_wb.direction) /
+            (deltaTheta / m_wb.theta);
+    }
+}
diff --git a/perftests/panorama/feature_mos/src/mosaic/Blend.h b/perftests/panorama/feature_mos/src/mosaic/Blend.h
new file mode 100644
index 0000000..2c7ee5c
--- /dev/null
+++ b/perftests/panorama/feature_mos/src/mosaic/Blend.h
@@ -0,0 +1,128 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+///////////////////////////////////////////////////
+// Blend.h
+// $Id: Blend.h,v 1.23 2011/06/24 04:22:14 mbansal Exp $
+
+#ifndef BLEND_H
+#define BLEND_H
+
+#include "MosaicTypes.h"
+#include "Pyramid.h"
+#include "Delaunay.h"
+
+#define BLEND_RANGE_DEFAULT 6
+#define BORDER 8
+
+// Percent of total mosaicing time spent on each of the following operations
+const float TIME_PERCENT_ALIGN = 20.0;
+const float TIME_PERCENT_BLEND = 75.0;
+const float TIME_PERCENT_FINAL = 5.0;
+
+// This threshold determines the minimum separation between the image centers
+// of the input image frames for them to be accepted for blending in the
+// STRIP_TYPE_WIDE mode.
+const float STRIP_SEPARATION_THRESHOLD_PXLS = 10;
+
+// This threshold determines the number of pixels on either side of the strip
+// to cross-fade using the images contributing to each seam.
+const float STRIP_CROSS_FADE_WIDTH_PXLS = 2;
+// This specifies the maximum pyramid level to which cross-fading is applied.
+// The original image resolution is Level-0, half of that size is Level-1 and
+// so on. BLEND_RANGE_DEFAULT specifies the number of pyramid levels used by
+// the blending algorithm.
+const int STRIP_CROSS_FADE_MAX_PYR_LEVEL = 2;
+
+/**
+ *  Class for pyramid blending a mosaic.
+ */
+class Blend {
+
+public:
+
+  static const int BLEND_TYPE_NONE    = -1;
+  static const int BLEND_TYPE_FULL    = 0;
+  static const int BLEND_TYPE_PAN     = 1;
+  static const int BLEND_TYPE_CYLPAN  = 2;
+  static const int BLEND_TYPE_HORZ   = 3;
+
+  static const int STRIP_TYPE_THIN      = 0;
+  static const int STRIP_TYPE_WIDE      = 1;
+
+  static const int BLEND_RET_ERROR        = -1;
+  static const int BLEND_RET_OK           = 0;
+  static const int BLEND_RET_ERROR_MEMORY = 1;
+  static const int BLEND_RET_CANCELLED    = -2;
+
+  Blend();
+  ~Blend();
+
+  int initialize(int blendingType, int stripType, int frame_width, int frame_height);
+
+  int runBlend(MosaicFrame **frames, MosaicFrame **rframes, int frames_size, ImageType &imageMosaicYVU,
+        int &mosaicWidth, int &mosaicHeight, float &progress, bool &cancelComputation);
+
+protected:
+
+  PyramidShort *m_pFrameYPyr;
+  PyramidShort *m_pFrameUPyr;
+  PyramidShort *m_pFrameVPyr;
+
+  PyramidShort *m_pMosaicYPyr;
+  PyramidShort *m_pMosaicUPyr;
+  PyramidShort *m_pMosaicVPyr;
+
+  CDelaunay m_Triangulator;
+  CSite *m_AllSites;
+
+  BlendParams m_wb;
+
+  // Height and width of individual frames
+  int width, height;
+
+   // Height and width of mosaic
+  unsigned short Mwidth, Mheight;
+
+  // Helper functions
+  void FrameToMosaic(double trs[3][3], double x, double y, double &wx, double &wy);
+  void MosaicToFrame(double trs[3][3], double x, double y, double &wx, double &wy);
+  void FrameToMosaicRect(int width, int height, double trs[3][3], BlendRect &brect);
+  void ClipBlendRect(CSite *csite, BlendRect &brect);
+  void AlignToMiddleFrame(MosaicFrame **frames, int frames_size);
+
+  int  DoMergeAndBlend(MosaicFrame **frames, int nsite,  int width, int height, YUVinfo &imgMos, MosaicRect &rect, MosaicRect &cropping_rect, float &progress, bool &cancelComputation);
+  void ComputeMask(CSite *csite, BlendRect &vcrect, BlendRect &brect, MosaicRect &rect, YUVinfo &imgMos, int site_idx);
+  void ProcessPyramidForThisFrame(CSite *csite, BlendRect &vcrect, BlendRect &brect, MosaicRect &rect, YUVinfo &imgMos, double trs[3][3], int site_idx);
+
+  int  FillFramePyramid(MosaicFrame *mb);
+
+  // TODO: need to add documentation about the parameters
+  void ComputeBlendParameters(MosaicFrame **frames, int frames_size, int is360);
+  void SelectRelevantFrames(MosaicFrame **frames, int frames_size,
+        MosaicFrame **relevant_frames, int &relevant_frames_size);
+
+  int  PerformFinalBlending(YUVinfo &imgMos, MosaicRect &cropping_rect);
+  void CropFinalMosaic(YUVinfo &imgMos, MosaicRect &cropping_rect);
+
+private:
+   static const float LIMIT_SIZE_MULTIPLIER = 5.0f * 2.0f;
+   static const float LIMIT_HEIGHT_MULTIPLIER = 2.5f;
+   int MosaicSizeCheck(float sizeMultiplier, float heightMultiplier);
+   void RoundingCroppingSizeToMultipleOf8(MosaicRect& rect);
+};
+
+#endif
diff --git a/perftests/panorama/feature_mos/src/mosaic/CSite.h b/perftests/panorama/feature_mos/src/mosaic/CSite.h
new file mode 100644
index 0000000..928c173
--- /dev/null
+++ b/perftests/panorama/feature_mos/src/mosaic/CSite.h
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+///////////////////////////////////////////////////
+// CSite.h
+// $Id: CSite.h,v 1.3 2011/06/17 13:35:47 mbansal Exp $
+
+#ifndef TRIDEL_H
+#define TRIDEL_H
+
+#include "MosaicTypes.h"
+
+typedef struct
+{
+    short first;
+    short second;
+} SEdgeVector;
+
+typedef struct
+{
+    double x;
+    double y;
+} SVec2d;
+
+class CSite
+{
+private:
+    MosaicFrame *mosaicFrame;
+    SEdgeVector *neighbor;
+    int numNeighbors;
+    SVec2d voronoiCenter;
+
+public:
+    CSite();
+    ~CSite();
+
+    inline MosaicFrame* getMb() { return mosaicFrame; }
+    inline SEdgeVector* getNeighbor() { return neighbor; }
+    inline int getNumNeighbors() { return numNeighbors; }
+    inline SVec2d& getVCenter() { return voronoiCenter; }
+    inline double X() { return voronoiCenter.x; }
+    inline double Y() { return voronoiCenter.y; }
+
+    inline void incrNumNeighbors() { numNeighbors++; }
+    inline void setNumNeighbors(int num) { numNeighbors = num; }
+    inline void setNeighbor(SEdgeVector *nb) { neighbor = nb; }
+    inline void setMb(MosaicFrame *mb) { mosaicFrame = mb; }
+};
+
+#endif
diff --git a/perftests/panorama/feature_mos/src/mosaic/Delaunay.cpp b/perftests/panorama/feature_mos/src/mosaic/Delaunay.cpp
new file mode 100644
index 0000000..0ce09fc
--- /dev/null
+++ b/perftests/panorama/feature_mos/src/mosaic/Delaunay.cpp
@@ -0,0 +1,633 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+// Delaunay.cpp
+// $Id: Delaunay.cpp,v 1.10 2011/06/17 13:35:48 mbansal Exp $
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <memory.h>
+#include "Delaunay.h"
+
+#define QQ 9   // Optimal value as determined by testing
+#define DM 38  // 2^(1+DM/2) element sort capability. DM=38 for >10^6 elements
+#define NYL -1
+#define valid(l) ccw(orig(basel), dest(l), dest(basel))
+
+
+CDelaunay::CDelaunay()
+{
+}
+
+CDelaunay::~CDelaunay()
+{
+}
+
+// Allocate storage, construct triangulation, compute voronoi corners
+int CDelaunay::triangulate(SEdgeVector **edges, int n_sites, int width, int height)
+{
+  EdgePointer cep;
+
+  deleteAllEdges();
+  buildTriangulation(n_sites);
+  cep = consolidateEdges();
+  *edges = ev;
+
+  // Note: construction_list will change ev
+  return constructList(cep, width, height);
+}
+
+// builds delaunay triangulation
+void CDelaunay::buildTriangulation(int size)
+{
+  int i, rows;
+  EdgePointer lefte, righte;
+
+  rows = (int)( 0.5 + sqrt( (double) size / log( (double) size )));
+
+  // Sort the pointers by  x-coordinate of site
+  for ( i=0 ; i < size ; i++ ) {
+    sp[i] = (SitePointer) i;
+  }
+
+  spsortx( sp, 0, size-1 );
+  build( 0, size-1, &lefte, &righte, rows );
+  oneBndryEdge = lefte;
+}
+
+// Recursive Delaunay Triangulation Procedure
+// Contains modifications for axis-switching division.
+void CDelaunay::build(int lo, int hi, EdgePointer *le, EdgePointer *re, int rows)
+{
+  EdgePointer a, b, c, ldo, rdi, ldi, rdo, maxx, minx;
+  int split, lowrows;
+  int low, high;
+  SitePointer s1, s2, s3;
+  low = lo;
+  high = hi;
+
+  if ( low < (high-2) ) {
+    // more than three elements; do recursion
+    minx = sp[low];
+    maxx = sp[high];
+    if (rows == 1) {    // time to switch axis of division
+      spsorty( sp, low, high);
+      rows = 65536;
+    }
+    lowrows = rows/2;
+    split = low - 1 + (int)
+      (0.5 + ((double)(high-low+1) * ((double)lowrows / (double)rows)));
+    build( low, split, &ldo, &ldi, lowrows );
+    build( split+1, high, &rdi, &rdo, (rows-lowrows) );
+    doMerge(&ldo, ldi, rdi, &rdo);
+    while (orig(ldo) != minx) {
+      ldo = rprev(ldo);
+    }
+    while (orig(rdo) != maxx) {
+      rdo = (SitePointer) lprev(rdo);
+    }
+    *le = ldo;
+    *re = rdo;
+  }
+  else if (low >= (high - 1)) { // two or one points
+    a = makeEdge(sp[low], sp[high]);
+    *le = a;
+    *re = (EdgePointer) sym(a);
+  } else { // three points
+    // 3 cases: triangles of 2 orientations, and 3 points on a line
+    a = makeEdge((s1 = sp[low]), (s2 = sp[low+1]));
+    b = makeEdge(s2, (s3 = sp[high]));
+    splice((EdgePointer) sym(a), b);
+    if (ccw(s1, s3, s2)) {
+      c = connectLeft(b, a);
+      *le = (EdgePointer) sym(c);
+      *re = c;
+    } else {
+      *le = a;
+      *re = (EdgePointer) sym(b);
+      if (ccw(s1, s2, s3)) {
+        // not colinear
+        c = connectLeft(b, a);
+      }
+    }
+  }
+}
+
+// Quad-edge manipulation primitives
+EdgePointer CDelaunay::makeEdge(SitePointer origin, SitePointer destination)
+{
+  EdgePointer temp, ans;
+  temp = allocEdge();
+  ans = temp;
+
+  onext(temp) = ans;
+  orig(temp) = origin;
+  onext(++temp) = (EdgePointer) (ans + 3);
+  onext(++temp) = (EdgePointer) (ans + 2);
+  orig(temp) = destination;
+  onext(++temp) = (EdgePointer) (ans + 1);
+
+  return(ans);
+}
+
+void CDelaunay::splice(EdgePointer a, EdgePointer b)
+{
+  EdgePointer alpha, beta, temp;
+  alpha = (EdgePointer) rot(onext(a));
+  beta = (EdgePointer) rot(onext(b));
+  temp = onext(alpha);
+  onext(alpha) = onext(beta);
+  onext(beta) = temp;
+  temp = onext(a);
+  onext(a) = onext(b);
+  onext(b) = temp;
+}
+
+EdgePointer CDelaunay::connectLeft(EdgePointer a, EdgePointer b)
+{
+  EdgePointer ans;
+  ans = makeEdge(dest(a), orig(b));
+  splice(ans, (EdgePointer) lnext(a));
+  splice((EdgePointer) sym(ans), b);
+  return(ans);
+}
+
+EdgePointer CDelaunay::connectRight(EdgePointer a, EdgePointer b)
+{
+  EdgePointer ans;
+  ans = makeEdge(dest(a), orig(b));
+  splice(ans, (EdgePointer) sym(a));
+  splice((EdgePointer) sym(ans), (EdgePointer) oprev(b));
+  return(ans);
+}
+
+// disconnects e from the rest of the structure and destroys it
+void CDelaunay::deleteEdge(EdgePointer e)
+{
+  splice(e, (EdgePointer) oprev(e));
+  splice((EdgePointer) sym(e), (EdgePointer) oprev(sym(e)));
+  freeEdge(e);
+}
+
+//
+// Overall storage allocation
+//
+
+// Quad-edge storage allocation
+CSite *CDelaunay::allocMemory(int n)
+{
+  unsigned int size;
+
+  size = ((sizeof(CSite) + sizeof(SitePointer)) * n +
+          (sizeof(SitePointer) + sizeof(EdgePointer)) * 12
+          ) * n;
+  if (!(sa = (CSite*) malloc(size))) {
+    return NULL;
+  }
+  sp = (SitePointer *) (sa + n);
+  ev = (SEdgeVector *) (org = sp + n);
+  next = (EdgePointer *) (org + 12 * n);
+  ei = (struct EDGE_INFO *) (next + 12 * n);
+  return sa;
+}
+
+void CDelaunay::freeMemory()
+{
+  if (sa) {
+    free(sa);
+    sa = (CSite*)NULL;
+  }
+}
+
+//
+// Edge storage management
+//
+
+void CDelaunay::deleteAllEdges()
+{
+    nextEdge = 0;
+    availEdge = NYL;
+}
+
+EdgePointer CDelaunay::allocEdge()
+{
+  EdgePointer ans;
+
+  if (availEdge == NYL) {
+    ans = nextEdge, nextEdge += 4;
+  } else {
+    ans = availEdge, availEdge = onext(availEdge);
+  }
+  return(ans);
+}
+
+void CDelaunay::freeEdge(EdgePointer e)
+{
+  e ^= e & 3;
+  onext(e) = availEdge;
+  availEdge = e;
+}
+
+EdgePointer CDelaunay::consolidateEdges()
+{
+  EdgePointer e;
+  int i,j;
+
+  while (availEdge != NYL) {
+    nextEdge -= 4; e = availEdge; availEdge = onext(availEdge);
+
+    if (e==nextEdge) {
+      continue; // the one deleted was the last one anyway
+    }
+    if ((oneBndryEdge&~3) == nextEdge) {
+      oneBndryEdge = (EdgePointer) (e | (oneBndryEdge&3));
+    }
+    for (i=0,j=3; i<4; i++,j=rot(j)) {
+      onext(e+i) = onext(nextEdge+i);
+      onext(rot(onext(e+i))) = (EdgePointer) (e+j);
+    }
+  }
+  return nextEdge;
+}
+
+//
+// Sorting Routines
+//
+
+int CDelaunay::xcmpsp(int i, int j)
+{
+  double d = sa[(i>=0)?sp[i]:sp1].X() - sa[(j>=0)?sp[j]:sp1].X();
+  if ( d > 0. ) {
+    return 1;
+  }
+  if ( d < 0. ) {
+    return -1;
+  }
+  d = sa[(i>=0)?sp[i]:sp1].Y() - sa[(j>=0)?sp[j]:sp1].Y();
+  if ( d > 0. ) {
+    return 1;
+  }
+  if ( d < 0. ) {
+    return -1;
+  }
+  return 0;
+}
+
+int CDelaunay::ycmpsp(int i, int j)
+{
+  double d = sa[(i>=0)?sp[i]:sp1].Y() - sa[(j>=0)?sp[j]:sp1].Y();
+  if ( d > 0. ) {
+    return 1;
+  }
+  if ( d < 0. ) {
+    return -1;
+  }
+  d = sa[(i>=0)?sp[i]:sp1].X() - sa[(j>=0)?sp[j]:sp1].X();
+  if ( d > 0. ) {
+    return 1;
+  }
+  if ( d < 0. ) {
+    return -1;
+  }
+  return 0;
+}
+
+int CDelaunay::cmpev(int i, int j)
+{
+  return (ev[i].first - ev[j].first);
+}
+
+void CDelaunay::swapsp(int i, int j)
+{
+  int t;
+  t = (i>=0) ? sp[i] : sp1;
+
+  if (i>=0) {
+    sp[i] = (j>=0)?sp[j]:sp1;
+  } else {
+    sp1 = (j>=0)?sp[j]:sp1;
+  }
+
+  if (j>=0) {
+    sp[j] = (SitePointer) t;
+  } else {
+    sp1 = (SitePointer) t;
+  }
+}
+
+void CDelaunay::swapev(int i, int j)
+{
+  SEdgeVector temp;
+
+  temp = ev[i];
+  ev[i] = ev[j];
+  ev[j] = temp;
+}
+
+void CDelaunay::copysp(int i, int j)
+{
+  if (j>=0) {
+    sp[j] = (i>=0)?sp[i]:sp1;
+  } else {
+    sp1 = (i>=0)?sp[i]:sp1;
+  }
+}
+
+void CDelaunay::copyev(int i, int j)
+{
+  ev[j] = ev[i];
+}
+
+void CDelaunay::spsortx(SitePointer *sp_in, int low, int high)
+{
+  sp = sp_in;
+  rcssort(low,high,-1,&CDelaunay::xcmpsp,&CDelaunay::swapsp,&CDelaunay::copysp);
+}
+
+void CDelaunay::spsorty(SitePointer *sp_in, int low, int high )
+{
+  sp = sp_in;
+  rcssort(low,high,-1,&CDelaunay::ycmpsp,&CDelaunay::swapsp,&CDelaunay::copysp);
+}
+
+void CDelaunay::rcssort(int lowelt, int highelt, int temp,
+                    int (CDelaunay::*comparison)(int,int),
+                    void (CDelaunay::*swap)(int,int),
+                    void (CDelaunay::*copy)(int,int))
+{
+  int m,sij,si,sj,sL,sk;
+  int stack[DM];
+
+  if (highelt-lowelt<=1) {
+    return;
+  }
+  if (highelt-lowelt>QQ) {
+    m = 0;
+    si = lowelt; sj = highelt;
+    for (;;) { // partition [si,sj] about median-of-3.
+      sij = (sj+si) >> 1;
+
+      // Now to sort elements si,sij,sj into order & set temp=their median
+      if ( (this->*comparison)( si,sij ) > 0 ) {
+        (this->*swap)( si,sij );
+      }
+      if ( (this->*comparison)( sij,sj ) > 0 ) {
+        (this->*swap)( sj,sij );
+        if ( (this->*comparison)( si,sij ) > 0 ) {
+          (this->*swap)( si,sij );
+        }
+      }
+      (this->*copy)( sij,temp );
+
+      // Now to partition into elements <=temp, >=temp, and ==temp.
+      sk = si; sL = sj;
+      do {
+        do {
+          sL--;
+        } while( (this->*comparison)( sL,temp ) > 0 );
+        do {
+          sk++;
+        } while( (this->*comparison)( temp,sk ) > 0 );
+        if ( sk < sL ) {
+          (this->*swap)( sL,sk );
+        }
+      } while(sk <= sL);
+
+      // Now to recurse on shorter partition, store longer partition on stack
+      if ( sL-si > sj-sk ) {
+        if ( sL-si < QQ ) {
+          if( m==0 ) {
+            break;  // empty stack && both partitions < QQ so break
+          } else {
+            sj = stack[--m];
+            si = stack[--m];
+          }
+        }
+        else {
+          if ( sj-sk < QQ ) {
+            sj = sL;
+          } else {
+            stack[m++] = si;
+            stack[m++] = sL;
+            si = sk;
+          }
+        }
+      }
+      else {
+        if ( sj-sk < QQ ) {
+          if ( m==0 ) {
+            break; // empty stack && both partitions < QQ so break
+          } else {
+            sj = stack[--m];
+            si = stack[--m];
+          }
+        }
+        else {
+          if ( sL-si < QQ ) {
+            si = sk;
+          } else {
+            stack[m++] = sk;
+            stack[m++] = sj;
+            sj = sL;
+          }
+        }
+      }
+    }
+  }
+
+  // Now for 0 or Data bounded  "straight insertion" sort of [0,nels-1]; if it is
+  // known that el[-1] = -INF, then can omit the "sk>=0" test and save time.
+  for (si=lowelt; si<highelt; si++) {
+    if ( (this->*comparison)( si,si+1 ) > 0 ) {
+      (this->*copy)( si+1,temp );
+      sj = sk = si;
+      sj++;
+      do {
+        (this->*copy)( sk,sj );
+        sj = sk;
+        sk--;
+      } while ( (this->*comparison)( sk,temp ) > 0 && sk>=lowelt );
+      (this->*copy)( temp,sj );
+    }
+  }
+}
+
+//
+// Geometric primitives
+//
+
+// incircle, as in the Guibas-Stolfi paper.
+int CDelaunay::incircle(SitePointer a, SitePointer b, SitePointer c, SitePointer d)
+{
+  double adx, ady, bdx, bdy, cdx, cdy, dx, dy, nad, nbd, ncd;
+  dx = sa[d].X();
+  dy = sa[d].Y();
+  adx = sa[a].X() - dx;
+  ady = sa[a].Y() - dy;
+  bdx = sa[b].X() - dx;
+  bdy = sa[b].Y() - dy;
+  cdx = sa[c].X() - dx;
+  cdy = sa[c].Y() - dy;
+  nad = adx*adx+ady*ady;
+  nbd = bdx*bdx+bdy*bdy;
+  ncd = cdx*cdx+cdy*cdy;
+  return( (0.0 < (nad * (bdx * cdy - bdy * cdx)
+                  + nbd * (cdx * ady - cdy * adx)
+                  + ncd * (adx * bdy - ady * bdx))) ? TRUE : FALSE );
+}
+
+// TRUE iff A, B, C form a counterclockwise oriented triangle
+int CDelaunay::ccw(SitePointer a, SitePointer b, SitePointer c)
+{
+  int result;
+
+  double ax = sa[a].X();
+  double bx = sa[b].X();
+  double cx = sa[c].X();
+  double ay = sa[a].Y();
+  double by = sa[b].Y();
+  double cy = sa[c].Y();
+
+  double val = (ax - cx)*(by - cy) - (bx - cx)*(ay - cy);
+  if ( val > 0.0) {
+    return true;
+  }
+
+  return false;
+}
+
+//
+// The Merge Procedure.
+//
+
+void CDelaunay::doMerge(EdgePointer *ldo, EdgePointer ldi, EdgePointer rdi, EdgePointer *rdo)
+{
+  int rvalid, lvalid;
+  EdgePointer basel,lcand,rcand,t;
+
+  for (;;) {
+    while (ccw(orig(ldi), dest(ldi), orig(rdi))) {
+        ldi = (EdgePointer) lnext(ldi);
+    }
+    if (ccw(dest(rdi), orig(rdi), orig(ldi))) {
+        rdi = (EdgePointer)rprev(rdi);
+    } else {
+      break;
+    }
+  }
+
+  basel = connectLeft((EdgePointer) sym(rdi), ldi);
+  lcand = rprev(basel);
+  rcand = (EdgePointer) oprev(basel);
+  if (orig(basel) == orig(*rdo)) {
+    *rdo = basel;
+  }
+  if (dest(basel) == orig(*ldo)) {
+    *ldo = (EdgePointer) sym(basel);
+  }
+
+  for (;;) {
+#if 1
+    if (valid(t=onext(lcand))) {
+#else
+    t = (EdgePointer)onext(lcand);
+    if (valid(basel, t)) {
+#endif
+      while (incircle(dest(lcand), dest(t), orig(lcand), orig(basel))) {
+        deleteEdge(lcand);
+        lcand = t;
+        t = onext(lcand);
+      }
+    }
+#if 1
+    if (valid(t=(EdgePointer)oprev(rcand))) {
+#else
+    t = (EdgePointer)oprev(rcand);
+    if (valid(basel, t)) {
+#endif
+      while (incircle(dest(t), dest(rcand), orig(rcand), dest(basel))) {
+        deleteEdge(rcand);
+        rcand = t;
+        t = (EdgePointer)oprev(rcand);
+      }
+    }
+
+#if 1
+    lvalid = valid(lcand);
+    rvalid = valid(rcand);
+#else
+    lvalid = valid(basel, lcand);
+    rvalid = valid(basel, rcand);
+#endif
+    if ((! lvalid) && (! rvalid)) {
+      return;
+    }
+
+    if (!lvalid ||
+        (rvalid && incircle(dest(lcand), orig(lcand), orig(rcand), dest(rcand)))) {
+      basel = connectLeft(rcand, (EdgePointer) sym(basel));
+      rcand = (EdgePointer) lnext(sym(basel));
+    } else {
+      basel = (EdgePointer) sym(connectRight(lcand, basel));
+      lcand = rprev(basel);
+    }
+  }
+}
+
+int CDelaunay::constructList(EdgePointer last, int width, int height)
+{
+  int c, i;
+  EdgePointer curr, src, nex;
+  SEdgeVector *currv, *prevv;
+
+  c = (int) ((curr = (EdgePointer) ((last & ~3))) >> 1);
+
+  for (last -= 4; last >= 0; last -= 4) {
+    src = orig(last);
+    nex = dest(last);
+    orig(--curr) = src;
+    orig(--curr) = nex;
+    orig(--curr) = nex;
+    orig(--curr) = src;
+  }
+  rcssort(0, c - 1, -1, &CDelaunay::cmpev, &CDelaunay::swapev, &CDelaunay::copyev);
+
+  // Throw out any edges that are too far apart
+  currv = prevv = ev;
+  for (i = c; i--; currv++) {
+      if ((int) fabs(sa[currv->first].getVCenter().x - sa[currv->second].getVCenter().x) <= width &&
+          (int) fabs(sa[currv->first].getVCenter().y - sa[currv->second].getVCenter().y) <= height) {
+          *(prevv++) = *currv;
+      } else {
+        c--;
+      }
+  }
+  return c;
+}
+
+// Fill in site neighbor information
+void CDelaunay::linkNeighbors(SEdgeVector *edge, int nedge, int nsite)
+{
+  int i;
+
+  for (i = 0; i < nsite; i++) {
+    sa[i].setNeighbor(edge);
+    sa[i].setNumNeighbors(0);
+    for (; edge->first == i && nedge; edge++, nedge--) {
+      sa[i].incrNumNeighbors();
+    }
+  }
+}
diff --git a/perftests/panorama/feature_mos/src/mosaic/Delaunay.h b/perftests/panorama/feature_mos/src/mosaic/Delaunay.h
new file mode 100644
index 0000000..7a450b5
--- /dev/null
+++ b/perftests/panorama/feature_mos/src/mosaic/Delaunay.h
@@ -0,0 +1,126 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+// Delaunay.h
+// $Id: Delaunay.h,v 1.9 2011/06/17 13:35:48 mbansal Exp $
+
+#ifndef DELAUNAY_H
+#define DELAUNAY_H
+#include <stdio.h>
+#include <math.h>
+#include "CSite.h"
+#include "EdgePointerUtil.h"
+
+#ifndef TRUE
+#define TRUE 1==1
+#define FALSE 0==1
+#endif
+
+//******************************************************************************
+// Reference for Quad-edge data structure:
+//
+// Leonidas Guibas and Jorge Stolfi, "Primitives for the manipulation of general
+//     subdivisions and the computations of Voronoi diagrams",
+//     ACM Transactions on Graphics 4, 74-123 (1985).
+//
+//******************************************************************************
+
+//
+// Common data structures
+//
+
+typedef short SitePointer;
+typedef short TrianglePointer;
+
+class CDelaunay
+{
+private:
+  CSite *sa;
+  EdgePointer oneBndryEdge;
+  EdgePointer *next;
+  SitePointer *org;
+  struct EDGE_INFO *ei;
+  SitePointer *sp;
+  SEdgeVector *ev;
+
+  SitePointer sp1;
+  EdgePointer nextEdge;
+  EdgePointer availEdge;
+
+private:
+  void build(int lo, int hi, EdgePointer *le, EdgePointer *re, int rows);
+  void buildTriangulation(int size);
+
+  EdgePointer allocEdge();
+  void freeEdge(EdgePointer e);
+
+  EdgePointer makeEdge(SitePointer origin, SitePointer destination);
+  void deleteEdge(EdgePointer e);
+
+  void splice(EdgePointer, EdgePointer);
+  EdgePointer consolidateEdges();
+  void deleteAllEdges();
+
+  void spsortx(SitePointer *, int, int);
+  void spsorty(SitePointer *, int, int);
+
+  int cmpev(int i, int j);
+  int xcmpsp(int i, int j);
+  int ycmpsp(int i, int j);
+
+  void swapsp(int i, int j);
+  void swapev(int i, int j);
+
+  void copysp(int i, int j);
+  void copyev(int i, int j);
+
+  void rcssort(int lowelt, int highelt, int temp,
+                 int (CDelaunay::*comparison)(int,int),
+                 void (CDelaunay::*swap)(int,int),
+                 void (CDelaunay::*copy)(int,int));
+
+  void doMerge(EdgePointer *ldo, EdgePointer ldi, EdgePointer rdi, EdgePointer *rdo);
+  EdgePointer connectLeft(EdgePointer a, EdgePointer b);
+  EdgePointer connectRight(EdgePointer a, EdgePointer b);
+  int ccw(SitePointer a, SitePointer b, SitePointer c);
+  int incircle(SitePointer a, SitePointer b, SitePointer c, SitePointer d);
+  int constructList(EdgePointer e, int width, int height);
+
+public:
+  CDelaunay();
+  ~CDelaunay();
+
+  CSite *allocMemory(int nsite);
+  void freeMemory();
+  int triangulate(SEdgeVector **edge, int nsite, int width, int height);
+  void linkNeighbors(SEdgeVector *edge, int nedge, int nsite);
+};
+
+#define onext(a) next[a]
+#define oprev(a) rot(onext(rot(a)))
+#define lnext(a) rot(onext(rotinv(a)))
+#define lprev(a) sym(onext(a))
+#define rnext(a) rotinv(onext(rot(a)))
+#define rprev(a) onext(sym(a))
+#define dnext(a) sym(onext(sym(a)))
+#define dprev(a) rotinv(onext(rotinv(a)))
+
+#define orig(a) org[a]
+#define dest(a) orig(sym(a))
+#define left(a) orig(rotinv(a))
+#define right(a) orig(rot(a))
+
+#endif
diff --git a/perftests/panorama/feature_mos/src/mosaic/EdgePointerUtil.h b/perftests/panorama/feature_mos/src/mosaic/EdgePointerUtil.h
new file mode 100644
index 0000000..fad05d7
--- /dev/null
+++ b/perftests/panorama/feature_mos/src/mosaic/EdgePointerUtil.h
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+#ifndef _EDGEPOINTERUTIL_H_
+#define _EDGEPOINTERUTIL_H_
+
+typedef short EdgePointer;
+
+inline EdgePointer sym(EdgePointer a)
+{
+  return a ^ 2;
+}
+
+inline EdgePointer rot(EdgePointer a)
+{
+  return (((a) + 1) & 3) | ((a) & ~3);
+}
+
+inline EdgePointer rotinv(EdgePointer a)
+{
+  return (((a) + 3) & 3) | ((a) & ~3);
+}
+
+#endif //_EDGEPOINTERUTIL_H_
diff --git a/perftests/panorama/feature_mos/src/mosaic/Geometry.h b/perftests/panorama/feature_mos/src/mosaic/Geometry.h
new file mode 100644
index 0000000..0efa0f4
--- /dev/null
+++ b/perftests/panorama/feature_mos/src/mosaic/Geometry.h
@@ -0,0 +1,156 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+/////////////////////////////
+// Geometry.h
+// $Id: Geometry.h,v 1.2 2011/06/17 13:35:48 mbansal Exp $
+
+#pragma once
+#include "MosaicTypes.h"
+
+///////////////////////////////////////////////////////////////
+///////////////// BEG GLOBAL ROUTINES /////////////////////////
+///////////////////////////////////////////////////////////////
+
+
+inline double hypotSq(double a, double b)
+{
+    return ((a)*(a)+(b)*(b));
+}
+
+inline void ClipRect(double x, double y, BlendRect &brect)
+{
+    if (y < brect.bot) brect.bot = y;
+    if (y > brect.top) brect.top = y;
+    if (x < brect.lft) brect.lft = x;
+    if (x > brect.rgt) brect.rgt = x;
+}
+
+inline void ClipRect(BlendRect rrect, BlendRect &brect)
+{
+    if (rrect.bot < brect.bot) brect.bot = rrect.bot;
+    if (rrect.top > brect.top) brect.top = rrect.top;
+    if (rrect.lft < brect.lft) brect.lft = rrect.lft;
+    if (rrect.rgt > brect.rgt) brect.rgt = rrect.rgt;
+}
+
+// Clip x to be within [-border,width+border-1]
+inline void clipToSegment(int &x, int width, int border)
+{
+    if(x < -border)
+        x = -border;
+    else if(x >= width+border)
+        x = width + border - 1;
+}
+
+// Return true if x within [-border,width+border-1]
+inline bool inSegment(int x, int width, int border)
+{
+    return (x >= -border && x < width + border - 1);
+}
+
+inline void FindTriangleCentroid(double x0, double y0, double x1, double y1,
+                                    double x2, double y2,
+                                    double &mass, double &centX, double &centY)
+{
+    // Calculate the centroid of the triangle
+    centX = (x0 + x1 + x2) / 3.0;
+    centY = (y0 + y1 + y2) / 3.0;
+
+    // Calculate 2*Area for the triangle
+    if (y0 == y2)
+    {
+        if (x0 == x1)
+        {
+            mass = fabs((y1 - y0) * (x2 - x0)); // Special case 1a
+        }
+        else
+        {
+            mass = fabs((y1 - y0) * (x1 - x0)); // Special case 1b
+        }
+    }
+    else if (x0 == x2)
+    {
+        if (x0 == x1)
+        {
+            mass = fabs((x2 - x0) * (y2 - y0)); // Special case 2a
+        }
+        else
+        {
+            mass = fabs((x1 - x0) * (y2 - y0)); // Special case 2a
+        }
+    }
+    else if (x1 == x2)
+    {
+        mass = fabs((x1 - x0) * (y2 - y0)); // Special case 3
+    }
+    else
+    {
+        // Calculate line equation from x0,y0 to x2,y2
+        double dx = x2 - x0;
+        double dy = y2 - y0;
+        // Calculate the length of the side
+        double len1 = sqrt(dx * dx + dy * dy);
+        double m1 = dy / dx;
+        double b1 = y0 - m1 * x0;
+        // Calculate the line that goes through x1,y1 and is perpendicular to
+        // the other line
+        double m2 = 1.0 / m1;
+        double b2 = y1 - m2 * x1;
+        // Calculate the intersection of the two lines
+        if (fabs( m1 - m2 ) > 1.e-6)
+        {
+            double x = (b2 - b1) / (m1 - m2);
+            // the mass is the base * height
+            dx = x1 - x;
+            dy = y1 - m1 * x + b1;
+            mass = len1 * sqrt(dx * dx + dy * dy);
+        }
+        else
+        {
+            mass = fabs( (y1 - y0) * (x2 - x0) );
+        }
+    }
+}
+
+inline void FindQuadCentroid(double x0, double y0, double x1, double y1, double x2, double y2, double x3, double y3,
+                                     double &centX, double &centY)
+
+{
+    // To find the centroid:
+    // 1) Divide the quadrilateral into two triangles by scribing a diagonal
+    // 2) Calculate the centroid of each triangle (the intersection of the angle bisections).
+    // 3) Find the centroid of the quad by weighting each triangle centroids by their area.
+
+    // Calculate the corner points
+    double z;
+
+    // The quad is split from x0,y0 to x2,y2
+    double mass1, mass2, cent1x, cent2x, cent1y, cent2y;
+    FindTriangleCentroid(x0, y0, x1, y1, x2, y2, mass1, cent1x, cent1y);
+    FindTriangleCentroid(x0, y0, x3, y3, x2, y2, mass2, cent2x, cent2y);
+
+    // determine position of quad centroid
+    z = mass2 / (mass1 + mass2);
+    centX = cent1x + (cent2x - cent1x) * z;
+    centY = cent1y + (cent2y - cent1y) * z;
+}
+
+///////////////////////////////////////////////////////////////
+////////////////// END GLOBAL ROUTINES ////////////////////////
+///////////////////////////////////////////////////////////////
+
+
diff --git a/perftests/panorama/feature_mos/src/mosaic/ImageUtils.cpp b/perftests/panorama/feature_mos/src/mosaic/ImageUtils.cpp
new file mode 100644
index 0000000..6d0aac0
--- /dev/null
+++ b/perftests/panorama/feature_mos/src/mosaic/ImageUtils.cpp
@@ -0,0 +1,408 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+///////////////////////////////////////////////////
+// ImageUtils.cpp
+// $Id: ImageUtils.cpp,v 1.12 2011/06/17 13:35:48 mbansal Exp $
+
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/time.h>
+
+#include "ImageUtils.h"
+
+void ImageUtils::rgba2yvu(ImageType out, ImageType in, int width, int height)
+{
+  int r,g,b, a;
+  ImageType yimg = out;
+  ImageType vimg = yimg + width*height;
+  ImageType uimg = vimg + width*height;
+  ImageType image = in;
+
+  for (int ii = 0; ii < height; ii++) {
+    for (int ij = 0; ij < width; ij++) {
+      r = (*image++);
+      g = (*image++);
+      b = (*image++);
+      a = (*image++);
+
+      if (r < 0) r = 0;
+      if (r > 255) r = 255;
+      if (g < 0) g = 0;
+      if (g > 255) g = 255;
+      if (b < 0) b = 0;
+      if (b > 255) b = 255;
+
+      int val = (int) (REDY * r + GREENY * g + BLUEY * b) / 1000 + 16;
+      if (val < 0) val = 0;
+      if (val > 255) val = 255;
+      *(yimg) = val;
+
+      val = (int) (REDV * r - GREENV * g - BLUEV * b) / 1000 + 128;
+      if (val < 0) val = 0;
+      if (val > 255) val = 255;
+      *(vimg) = val;
+
+      val = (int) (-REDU * r - GREENU * g + BLUEU * b) / 1000 + 128;
+      if (val < 0) val = 0;
+      if (val > 255) val = 255;
+      *(uimg) = val;
+
+      yimg++;
+      uimg++;
+      vimg++;
+    }
+  }
+}
+
+
+void ImageUtils::rgb2yvu(ImageType out, ImageType in, int width, int height)
+{
+  int r,g,b;
+  ImageType yimg = out;
+  ImageType vimg = yimg + width*height;
+  ImageType uimg = vimg + width*height;
+  ImageType image = in;
+
+  for (int ii = 0; ii < height; ii++) {
+    for (int ij = 0; ij < width; ij++) {
+      r = (*image++);
+      g = (*image++);
+      b = (*image++);
+
+      if (r < 0) r = 0;
+      if (r > 255) r = 255;
+      if (g < 0) g = 0;
+      if (g > 255) g = 255;
+      if (b < 0) b = 0;
+      if (b > 255) b = 255;
+
+      int val = (int) (REDY * r + GREENY * g + BLUEY * b) / 1000 + 16;
+      if (val < 0) val = 0;
+      if (val > 255) val = 255;
+      *(yimg) = val;
+
+      val = (int) (REDV * r - GREENV * g - BLUEV * b) / 1000 + 128;
+      if (val < 0) val = 0;
+      if (val > 255) val = 255;
+      *(vimg) = val;
+
+      val = (int) (-REDU * r - GREENU * g + BLUEU * b) / 1000 + 128;
+      if (val < 0) val = 0;
+      if (val > 255) val = 255;
+      *(uimg) = val;
+
+      yimg++;
+      uimg++;
+      vimg++;
+    }
+  }
+}
+
+ImageType ImageUtils::rgb2gray(ImageType in, int width, int height)
+{
+  int r,g,b, nr, ng, nb, val;
+  ImageType gray = NULL;
+  ImageType image = in;
+  ImageType out = ImageUtils::allocateImage(width, height, 1);
+  ImageType outCopy = out;
+
+  for (int ii = 0; ii < height; ii++) {
+    for (int ij = 0; ij < width; ij++) {
+      r = (*image++);
+      g = (*image++);
+      b = (*image++);
+
+      if (r < 0) r = 0;
+      if (r > 255) r = 255;
+      if (g < 0) g = 0;
+      if (g > 255) g = 255;
+      if (b < 0) b = 0;
+      if (b > 255) b = 255;
+
+      (*outCopy) = ( 0.3*r + 0.59*g + 0.11*b);
+
+      outCopy++;
+    }
+  }
+
+  return out;
+}
+
+ImageType ImageUtils::rgb2gray(ImageType out, ImageType in, int width, int height)
+{
+  int r,g,b, nr, ng, nb, val;
+  ImageType gray = out;
+  ImageType image = in;
+  ImageType outCopy = out;
+
+  for (int ii = 0; ii < height; ii++) {
+    for (int ij = 0; ij < width; ij++) {
+      r = (*image++);
+      g = (*image++);
+      b = (*image++);
+
+      if (r < 0) r = 0;
+      if (r > 255) r = 255;
+      if (g < 0) g = 0;
+      if (g > 255) g = 255;
+      if (b < 0) b = 0;
+      if (b > 255) b = 255;
+
+      (*outCopy) = ( 0.3*r + 0.59*g + 0.11*b);
+
+      outCopy++;
+    }
+  }
+
+  return out;
+
+}
+
+ImageType *ImageUtils::imageTypeToRowPointers(ImageType in, int width, int height)
+{
+  int i;
+  int m_h = height;
+  int m_w = width;
+
+  ImageType *m_rows = new ImageType[m_h];
+
+  for (i=0;i<m_h;i++) {
+    m_rows[i] = &in[(m_w)*i];
+  }
+  return m_rows;
+}
+
+void ImageUtils::yvu2rgb(ImageType out, ImageType in, int width, int height)
+{
+  int y,v,u, r, g, b;
+  unsigned char *yimg = in;
+  unsigned char *vimg = yimg + width*height;
+  unsigned char *uimg = vimg + width*height;
+  unsigned char *image = out;
+
+  for (int i = 0; i < height; i++) {
+    for (int j = 0; j < width; j++) {
+
+      y = (*yimg);
+      v = (*vimg);
+      u = (*uimg);
+
+      if (y < 0) y = 0;
+      if (y > 255) y = 255;
+      if (u < 0) u = 0;
+      if (u > 255) u = 255;
+      if (v < 0) v = 0;
+      if (v > 255) v = 255;
+
+      b = (int) ( 1.164*(y - 16) + 2.018*(u-128));
+      g = (int) ( 1.164*(y - 16) - 0.813*(v-128) - 0.391*(u-128));
+      r = (int) ( 1.164*(y - 16) + 1.596*(v-128));
+
+      if (r < 0) r = 0;
+      if (r > 255) r = 255;
+      if (g < 0) g = 0;
+      if (g > 255) g = 255;
+      if (b < 0) b = 0;
+      if (b > 255) b = 255;
+
+      *(image++) = r;
+      *(image++) = g;
+      *(image++) = b;
+
+      yimg++;
+      uimg++;
+      vimg++;
+
+    }
+  }
+}
+
+void ImageUtils::yvu2bgr(ImageType out, ImageType in, int width, int height)
+{
+  int y,v,u, r, g, b;
+  unsigned char *yimg = in;
+  unsigned char *vimg = yimg + width*height;
+  unsigned char *uimg = vimg + width*height;
+  unsigned char *image = out;
+
+  for (int i = 0; i < height; i++) {
+    for (int j = 0; j < width; j++) {
+
+      y = (*yimg);
+      v = (*vimg);
+      u = (*uimg);
+
+      if (y < 0) y = 0;
+      if (y > 255) y = 255;
+      if (u < 0) u = 0;
+      if (u > 255) u = 255;
+      if (v < 0) v = 0;
+      if (v > 255) v = 255;
+
+      b = (int) ( 1.164*(y - 16) + 2.018*(u-128));
+      g = (int) ( 1.164*(y - 16) - 0.813*(v-128) - 0.391*(u-128));
+      r = (int) ( 1.164*(y - 16) + 1.596*(v-128));
+
+      if (r < 0) r = 0;
+      if (r > 255) r = 255;
+      if (g < 0) g = 0;
+      if (g > 255) g = 255;
+      if (b < 0) b = 0;
+      if (b > 255) b = 255;
+
+      *(image++) = b;
+      *(image++) = g;
+      *(image++) = r;
+
+      yimg++;
+      uimg++;
+      vimg++;
+
+    }
+  }
+}
+
+
+ImageType ImageUtils::readBinaryPPM(const char *filename, int &width, int &height)
+{
+
+  FILE *imgin = NULL;
+  int mval=0, format=0, eret;
+  ImageType ret = IMAGE_TYPE_NOIMAGE;
+
+  imgin = fopen(filename, "r");
+  if (imgin == NULL) {
+    fprintf(stderr, "Error: Filename %s not found\n", filename);
+    return ret;
+  }
+
+  eret = fscanf(imgin, "P%d\n", &format);
+  if (format != 6) {
+    fprintf(stderr, "Error: readBinaryPPM only supports PPM format (P6)\n");
+    return ret;
+  }
+
+  eret = fscanf(imgin, "%d %d\n", &width, &height);
+  eret = fscanf(imgin, "%d\n", &mval);
+  ret  = allocateImage(width, height, IMAGE_TYPE_NUM_CHANNELS);
+  eret = fread(ret, sizeof(ImageTypeBase), IMAGE_TYPE_NUM_CHANNELS*width*height, imgin);
+
+  fclose(imgin);
+
+  return ret;
+
+}
+
+void ImageUtils::writeBinaryPPM(ImageType image, const char *filename, int width, int height, int numChannels)
+{
+  FILE *imgout = fopen(filename, "w");
+
+  if (imgout == NULL) {
+    fprintf(stderr, "Error: Filename %s could not be opened for writing\n", filename);
+    return;
+  }
+
+  if (numChannels == 3) {
+    fprintf(imgout, "P6\n%d %d\n255\n", width, height);
+  } else if (numChannels == 1) {
+    fprintf(imgout, "P5\n%d %d\n255\n", width, height);
+  } else {
+    fprintf(stderr, "Error: writeBinaryPPM: Unsupported number of channels\n");
+  }
+  fwrite(image, sizeof(ImageTypeBase), numChannels*width*height, imgout);
+
+  fclose(imgout);
+
+}
+
+ImageType ImageUtils::allocateImage(int width, int height, int numChannels, short int border)
+{
+  int overallocation = 256;
+ return (ImageType) calloc(width*height*numChannels+overallocation, sizeof(ImageTypeBase));
+}
+
+
+void ImageUtils::freeImage(ImageType image)
+{
+  free(image);
+}
+
+
+// allocation of one color image used for tmp buffers, etc.
+// format of contiguous memory block:
+//    YUVInfo struct (type + BimageInfo for Y,U, and V),
+//    Y row pointers
+//    U row pointers
+//    V row pointers
+//    Y image pixels
+//    U image pixels
+//    V image pixels
+YUVinfo *YUVinfo::allocateImage(unsigned short width, unsigned short height)
+{
+    unsigned short heightUV, widthUV;
+
+    widthUV = width;
+    heightUV = height;
+
+    // figure out how much space to hold all pixels...
+    int size = ((width * height * 3) + 8);
+    unsigned char *position = 0;
+
+    // VC 8 does not like calling free on yuv->Y.ptr since it is in
+    // the middle of a block.  So rearrange the memory layout so after
+    // calling mapYUVInforToImage yuv->Y.ptr points to the begginning
+    // of the calloc'ed block.
+    YUVinfo *yuv = (YUVinfo *) calloc(sizeof(YUVinfo), 1);
+    if (yuv) {
+        yuv->Y.width  = yuv->Y.pitch = width;
+        yuv->Y.height = height;
+        yuv->Y.border = yuv->U.border = yuv->V.border = (unsigned short) 0;
+        yuv->U.width  = yuv->U.pitch = yuv->V.width = yuv->V.pitch = widthUV;
+        yuv->U.height = yuv->V.height = heightUV;
+
+        unsigned char* block = (unsigned char*) calloc(
+                sizeof(unsigned char *) * (height + heightUV + heightUV) +
+                sizeof(unsigned char) * size, 1);
+
+        position = block;
+        unsigned char **y = (unsigned char **) (block + size);
+
+        /* Initialize and assign row pointers */
+        yuv->Y.ptr = y;
+        yuv->V.ptr = &y[height];
+        yuv->U.ptr = &y[height + heightUV];
+    }
+    if (size)
+        mapYUVInfoToImage(yuv, position);
+    return yuv;
+}
+
+// wrap YUVInfo row pointers around 3 contiguous image (color component) planes.
+// position = starting pixel in image.
+void YUVinfo::mapYUVInfoToImage(YUVinfo *img, unsigned char *position)
+{
+    int i;
+    for (i = 0; i < img->Y.height; i++, position += img->Y.width)
+        img->Y.ptr[i] = position;
+    for (i = 0; i < img->V.height; i++, position += img->V.width)
+        img->V.ptr[i] = position;
+    for (i = 0; i < img->U.height; i++, position += img->U.width)
+        img->U.ptr[i] = position;
+}
+
+
diff --git a/perftests/panorama/feature_mos/src/mosaic/ImageUtils.h b/perftests/panorama/feature_mos/src/mosaic/ImageUtils.h
new file mode 100644
index 0000000..92965ca
--- /dev/null
+++ b/perftests/panorama/feature_mos/src/mosaic/ImageUtils.h
@@ -0,0 +1,173 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+///////////////////////////////////////////////////
+// ImageUtils.h
+// $Id: ImageUtils.h,v 1.9 2011/05/16 15:33:06 mbansal Exp $
+
+#ifndef IMAGE_UTILS_H
+#define IMAGE_UTILS_H
+
+#include <stdlib.h>
+
+/**
+ *  Definition of basic image types
+ */
+typedef unsigned char ImageTypeBase;
+typedef ImageTypeBase *ImageType;
+
+typedef short ImageTypeShortBase;
+typedef ImageTypeShortBase *ImageTypeShort;
+
+typedef float ImageTypeFloatBase;
+typedef ImageTypeFloatBase *ImageTypeFloat;
+
+
+class ImageUtils {
+public:
+
+  /**
+   *  Default number of channels in image.
+   */
+  static const int IMAGE_TYPE_NUM_CHANNELS = 3;
+
+  /**
+   *  Definition of an empty image.
+   */
+  static const int IMAGE_TYPE_NOIMAGE = 0;
+
+  /**
+   *  Convert image from BGR (interlaced) to YVU (non-interlaced)
+   *
+   *  Arguments:
+   *    out: Resulting image (note must be preallocated before
+   *    call)
+   *    in: Input image
+   *    width: Width of input image
+   *    height: Height of input image
+   */
+  static void rgb2yvu(ImageType out, ImageType in, int width, int height);
+
+  static void rgba2yvu(ImageType out, ImageType in, int width, int height);
+
+  /**
+   *  Convert image from YVU (non-interlaced) to BGR (interlaced)
+   *
+   *  Arguments:
+   *    out: Resulting image (note must be preallocated before
+   *    call)
+   *    in: Input image
+   *    width: Width of input image
+   *    height: Height of input image
+   */
+  static void yvu2rgb(ImageType out, ImageType in, int width, int height);
+  static void yvu2bgr(ImageType out, ImageType in, int width, int height);
+
+  /**
+   *  Convert image from BGR to grayscale
+   *
+   *  Arguments:
+   *    in: Input image
+   *    width: Width of input image
+   *    height: Height of input image
+   *
+   *  Return:
+   *    Pointer to resulting image (allocation is done here, free
+   *    must be done by caller)
+   */
+  static ImageType rgb2gray(ImageType in, int width, int height);
+  static ImageType rgb2gray(ImageType out, ImageType in, int width, int height);
+
+  /**
+   *  Read a binary PPM image
+   */
+  static ImageType readBinaryPPM(const char *filename, int &width, int &height);
+
+  /**
+   *  Write a binary PPM image
+   */
+  static void writeBinaryPPM(ImageType image, const char *filename, int width, int height, int numChannels = IMAGE_TYPE_NUM_CHANNELS);
+
+  /**
+   *  Allocate space for a standard image.
+   */
+  static ImageType allocateImage(int width, int height, int numChannels, short int border = 0);
+
+  /**
+   *  Free memory of image
+   */
+  static void freeImage(ImageType image);
+
+  static ImageType *imageTypeToRowPointers(ImageType out, int width, int height);
+  /**
+   *  Get time.
+   */
+  static double getTime();
+
+protected:
+
+  /**
+  *  Constants for YVU/RGB conversion
+  */
+  static const int REDY = 257;
+  static const int REDV = 439;
+  static const int REDU = 148;
+  static const int GREENY = 504;
+  static const int GREENV = 368;
+  static const int GREENU = 291;
+  static const int BLUEY = 98;
+  static const int BLUEV = 71;
+  static const int BLUEU = 439;
+
+};
+
+/**
+ * Structure containing an image and other bookkeeping items.
+ * Used in YUVinfo to store separate YVU image planes.
+ */
+typedef struct {
+  ImageType *ptr;
+  unsigned short width;
+  unsigned short height;
+  unsigned short border;
+  unsigned short pitch;
+} BimageInfo;
+
+/**
+ * A YUV image container,
+ */
+class YUVinfo {
+public:
+  static YUVinfo *allocateImage(unsigned short width, unsigned short height);
+  static void mapYUVInfoToImage(YUVinfo *img, unsigned char *position);
+
+  /**
+  * Y Plane
+  */
+  BimageInfo Y;
+
+  /**
+  *  V (1st color) plane
+  */
+  BimageInfo V;
+
+  /**
+  *  U (1st color) plane
+  */
+  BimageInfo U;
+};
+
+#endif
diff --git a/perftests/panorama/feature_mos/src/mosaic/Interp.h b/perftests/panorama/feature_mos/src/mosaic/Interp.h
new file mode 100644
index 0000000..19c4a40
--- /dev/null
+++ b/perftests/panorama/feature_mos/src/mosaic/Interp.h
@@ -0,0 +1,80 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+///////////////////////////////////////////////////////////
+// Interp.h
+// $Id: Interp.h,v 1.2 2011/06/17 13:35:48 mbansal Exp $
+
+#ifndef INTERP_H
+#define INTERP_H
+
+#include "Pyramid.h"
+
+#define CTAPS 40
+static double ciTable[81] = {
+        1, 0.998461, 0.993938, 0.98657, 0.9765,
+        0.963867, 0.948813, 0.931477, 0.912, 0.890523,
+        0.867188, 0.842133, 0.8155, 0.78743, 0.758062,
+        0.727539, 0.696, 0.663586, 0.630437, 0.596695,
+        0.5625, 0.527992, 0.493312, 0.458602, 0.424,
+        0.389648, 0.355687, 0.322258, 0.2895, 0.257555,
+        0.226562, 0.196664, 0.168, 0.140711, 0.114937,
+        0.0908203, 0.0685, 0.0481172, 0.0298125, 0.0137266,
+        0, -0.0118828, -0.0225625, -0.0320859, -0.0405,
+        -0.0478516, -0.0541875, -0.0595547, -0.064, -0.0675703,
+        -0.0703125, -0.0722734, -0.0735, -0.0740391, -0.0739375,
+        -0.0732422, -0.072, -0.0702578, -0.0680625, -0.0654609,
+        -0.0625, -0.0592266, -0.0556875, -0.0519297, -0.048,
+        -0.0439453, -0.0398125, -0.0356484, -0.0315, -0.0274141,
+        -0.0234375, -0.0196172, -0.016, -0.0126328, -0.0095625,
+        -0.00683594, -0.0045, -0.00260156, -0.0011875, -0.000304687, 0.0
+};
+
+inline double ciCalc(PyramidShort *img, int xi, int yi, double xfrac, double yfrac)
+{
+  double tmpf[4];
+
+  // Interpolate using 16 points
+  ImageTypeShortBase *in = img->ptr[yi-1] + xi - 1;
+  int off = (int)(xfrac * CTAPS);
+
+  tmpf[0] = in[0] * ciTable[off + 40];
+  tmpf[0] += in[1] * ciTable[off];
+  tmpf[0] += in[2] * ciTable[40 - off];
+  tmpf[0] += in[3] * ciTable[80 - off];
+  in += img->pitch;
+  tmpf[1] = in[0] * ciTable[off + 40];
+  tmpf[1] += in[1] * ciTable[off];
+  tmpf[1] += in[2] * ciTable[40 - off];
+  tmpf[1] += in[3] * ciTable[80 - off];
+  in += img->pitch;
+  tmpf[2] = in[0] * ciTable[off + 40];
+  tmpf[2] += in[1] * ciTable[off];
+  tmpf[2] += in[2] * ciTable[40 - off];
+  tmpf[2] += in[3] * ciTable[80 - off];
+  in += img->pitch;
+  tmpf[3] = in[0] * ciTable[off + 40];
+  tmpf[3] += in[1] * ciTable[off];
+  tmpf[3] += in[2] * ciTable[40 - off];
+  tmpf[3] += in[3] * ciTable[80 - off];
+
+  // this is the final interpolation
+  off = (int)(yfrac * CTAPS);
+  return (ciTable[off + 40] * tmpf[0] + ciTable[off] * tmpf[1] +
+          ciTable[40 - off] * tmpf[2] + ciTable[80 - off] * tmpf[3]);
+}
+
+#endif
diff --git a/perftests/panorama/feature_mos/src/mosaic/Log.h b/perftests/panorama/feature_mos/src/mosaic/Log.h
new file mode 100644
index 0000000..cf6f14b
--- /dev/null
+++ b/perftests/panorama/feature_mos/src/mosaic/Log.h
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+#ifndef LOG_H_
+#define LOG_H
+
+#include <android/log.h>
+#define LOGV(...) __android_log_print(ANDROID_LOG_SILENT, LOG_TAG, __VA_ARGS__)
+#define LOGI(...) __android_log_print(ANDROID_LOG_INFO, LOG_TAG, __VA_ARGS__)
+#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR, LOG_TAG, __VA_ARGS__)
+
+#endif
diff --git a/perftests/panorama/feature_mos/src/mosaic/MatrixUtils.h b/perftests/panorama/feature_mos/src/mosaic/MatrixUtils.h
new file mode 100644
index 0000000..a0b84d8
--- /dev/null
+++ b/perftests/panorama/feature_mos/src/mosaic/MatrixUtils.h
@@ -0,0 +1,141 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+///////////////////////////////////////////////////
+// Matrixutils.h
+// $Id: MatrixUtils.h,v 1.5 2011/05/16 15:33:06 mbansal Exp $
+
+
+#ifndef MATRIX_UTILS_H
+#define MATRIX_UTILS_H
+
+/* Simple class for 3x3 matrix, mainly used to convert from 9x1
+ * to 3x3
+ */
+class Matrix33 {
+public:
+
+  /**
+   *  Empty constructor
+   */
+  Matrix33() {
+    initialize();
+  }
+
+  /**
+   *  Constructor with identity initialization
+   *  Arguments:
+   *     identity: Specifies wether to initialize matrix to
+   *     identity or zeros
+   */
+  Matrix33(bool identity) {
+    initialize(identity);
+  }
+
+  /**
+   *  Initialize to identity matrix
+   */
+  void initialize(bool identity = false) {
+    mat[0][1] = mat[0][2] = mat[1][0] = mat[1][2] = mat[2][0] = mat[2][1] = 0.0;
+    if (identity) {
+      mat[0][0] = mat[1][1] = mat[2][2] = 1.0;
+    } else {
+      mat[0][0] = mat[1][1] = mat[2][2] = 0.0;
+    }
+  }
+
+  /**
+   *  Conver ta 9x1 matrix to a 3x3 matrix
+   */
+  static void convert9to33(double out[3][3], double in[9]) {
+    out[0][0] = in[0];
+    out[0][1] = in[1];
+    out[0][2] = in[2];
+
+    out[1][0] = in[3];
+    out[1][1] = in[4];
+    out[1][2] = in[5];
+
+    out[2][0] = in[6];
+    out[2][1] = in[7];
+    out[2][2] = in[8];
+
+  }
+
+  /* Matrix data */
+  double mat[3][3];
+
+};
+
+/* Simple class for 9x1 matrix, mainly used to convert from 3x3
+ * to 9x1
+ */
+class Matrix9 {
+public:
+
+  /**
+   *  Empty constructor
+   */
+  Matrix9() {
+    initialize();
+  }
+
+  /**
+   *  Constructor with identity initialization
+   *  Arguments:
+   *     identity: Specifies wether to initialize matrix to
+   *     identity or zeros
+   */
+  Matrix9(bool identity) {
+    initialize(identity);
+  }
+
+  /**
+   *  Initialize to identity matrix
+   */
+  void initialize(bool identity = false) {
+    mat[1] = mat[2] = mat[3] = mat[5] = mat[6] = mat[7] = 0.0;
+    if (identity) {
+      mat[0] = mat[4] = mat[8] = 1.0;
+    } else {
+      mat[0] = mat[4] = mat[8] = 0.0;
+    }
+  }
+
+  /**
+   *  Conver ta 3x3 matrix to a 9x1 matrix
+   */
+  static void convert33to9(double out[9], double in[3][3]) {
+    out[0] = in[0][0];
+    out[1] = in[0][1];
+    out[2] = in[0][2];
+
+    out[3] = in[1][0];
+    out[4] = in[1][1];
+    out[5] = in[1][2];
+
+    out[6] = in[2][0];
+    out[7] = in[2][1];
+    out[8] = in[2][2];
+
+  }
+
+  /* Matrix data */
+  double mat[9];
+
+};
+
+#endif
diff --git a/perftests/panorama/feature_mos/src/mosaic/Mosaic.cpp b/perftests/panorama/feature_mos/src/mosaic/Mosaic.cpp
new file mode 100644
index 0000000..4abc6f6
--- /dev/null
+++ b/perftests/panorama/feature_mos/src/mosaic/Mosaic.cpp
@@ -0,0 +1,255 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+///////////////////////////////////////////////////
+// Mosaic.pp
+// S.O. # :
+// Author(s): zkira
+// $Id: Mosaic.cpp,v 1.20 2011/06/24 04:22:14 mbansal Exp $
+
+#include <stdio.h>
+#include <string.h>
+
+#include "Mosaic.h"
+#include "trsMatrix.h"
+
+Mosaic::Mosaic()
+{
+    initialized = false;
+    imageMosaicYVU = NULL;
+    frames_size = 0;
+    max_frames = 200;
+}
+
+Mosaic::~Mosaic()
+{
+    for (int i = 0; i < frames_size; i++)
+    {
+        if (frames[i])
+            delete frames[i];
+    }
+    delete frames;
+    delete rframes;
+
+    for (int j = 0; j < owned_size; j++)
+        delete owned_frames[j];
+    delete owned_frames;
+
+    if (aligner != NULL)
+        delete aligner;
+    if (blender != NULL)
+        delete blender;
+}
+
+int Mosaic::initialize(int blendingType, int stripType, int width, int height, int nframes, bool quarter_res, float thresh_still)
+{
+    this->blendingType = blendingType;
+
+    // TODO: Review this logic if enabling FULL or PAN mode
+    if (blendingType == Blend::BLEND_TYPE_FULL ||
+            blendingType == Blend::BLEND_TYPE_PAN)
+    {
+        stripType = Blend::STRIP_TYPE_THIN;
+    }
+
+    this->stripType = stripType;
+    this->width = width;
+    this->height = height;
+
+
+    mosaicWidth = mosaicHeight = 0;
+    imageMosaicYVU = NULL;
+
+    frames = new MosaicFrame *[max_frames];
+    rframes = new MosaicFrame *[max_frames];
+
+    if(nframes>-1)
+    {
+        for(int i=0; i<nframes; i++)
+        {
+            frames[i] = new MosaicFrame(this->width,this->height,false); // Do no allocate memory for YUV data
+        }
+    }
+    else
+    {
+        for(int i=0; i<max_frames; i++)
+        {
+            frames[i] = NULL;
+        }
+    }
+
+    owned_frames = new ImageType[max_frames];
+    owned_size = 0;
+
+    aligner = new Align();
+    aligner->initialize(width, height,quarter_res,thresh_still);
+
+    if (blendingType == Blend::BLEND_TYPE_FULL ||
+            blendingType == Blend::BLEND_TYPE_PAN ||
+            blendingType == Blend::BLEND_TYPE_CYLPAN ||
+            blendingType == Blend::BLEND_TYPE_HORZ) {
+        blender = new Blend();
+        blender->initialize(blendingType, stripType, width, height);
+    } else {
+        blender = NULL;
+        return MOSAIC_RET_ERROR;
+    }
+
+    initialized = true;
+
+    return MOSAIC_RET_OK;
+}
+
+int Mosaic::addFrameRGB(ImageType imageRGB)
+{
+    ImageType imageYVU;
+    // Convert to YVU24 which is used by blending
+    imageYVU = ImageUtils::allocateImage(this->width, this->height, ImageUtils::IMAGE_TYPE_NUM_CHANNELS);
+    ImageUtils::rgb2yvu(imageYVU, imageRGB, width, height);
+
+    int existing_frames_size = frames_size;
+    int ret = addFrame(imageYVU);
+
+    if (frames_size > existing_frames_size)
+        owned_frames[owned_size++] = imageYVU;
+    else
+        ImageUtils::freeImage(imageYVU);
+
+    return ret;
+}
+
+int Mosaic::addFrame(ImageType imageYVU)
+{
+    if(frames[frames_size]==NULL)
+        frames[frames_size] = new MosaicFrame(this->width,this->height,false);
+
+    MosaicFrame *frame = frames[frames_size];
+
+    frame->image = imageYVU;
+
+    // Add frame to aligner
+    int ret = MOSAIC_RET_ERROR;
+    if (aligner != NULL)
+    {
+        // Note aligner takes in RGB images
+        int align_flag = Align::ALIGN_RET_OK;
+        align_flag = aligner->addFrame(frame->image);
+        aligner->getLastTRS(frame->trs);
+
+        if (frames_size >= max_frames)
+        {
+            return MOSAIC_RET_ERROR;
+        }
+
+        switch (align_flag)
+        {
+            case Align::ALIGN_RET_OK:
+                frames_size++;
+                ret = MOSAIC_RET_OK;
+                break;
+            case Align::ALIGN_RET_FEW_INLIERS:
+                frames_size++;
+                ret = MOSAIC_RET_FEW_INLIERS;
+                break;
+            case Align::ALIGN_RET_LOW_TEXTURE:
+                ret = MOSAIC_RET_LOW_TEXTURE;
+                break;
+            case Align::ALIGN_RET_ERROR:
+                ret = MOSAIC_RET_ERROR;
+                break;
+            default:
+                break;
+        }
+    }
+
+    return ret;
+}
+
+
+int Mosaic::createMosaic(float &progress, bool &cancelComputation)
+{
+    if (frames_size <= 0)
+    {
+        // Haven't accepted any frame in aligner. No need to do blending.
+        progress = TIME_PERCENT_ALIGN + TIME_PERCENT_BLEND
+                + TIME_PERCENT_FINAL;
+        return MOSAIC_RET_OK;
+    }
+
+    if (blendingType == Blend::BLEND_TYPE_PAN)
+    {
+
+        balanceRotations();
+
+    }
+
+    int ret = Blend::BLEND_RET_ERROR;
+
+    // Blend the mosaic (alignment has already been done)
+    if (blender != NULL)
+    {
+        ret = blender->runBlend((MosaicFrame **) frames, (MosaicFrame **) rframes, 
+                frames_size, imageMosaicYVU,
+                mosaicWidth, mosaicHeight, progress, cancelComputation);
+    }
+
+    switch(ret)
+    {
+        case Blend::BLEND_RET_ERROR:
+        case Blend::BLEND_RET_ERROR_MEMORY:
+            ret = MOSAIC_RET_ERROR;
+            break;
+        case Blend::BLEND_RET_CANCELLED:
+            ret = MOSAIC_RET_CANCELLED;
+            break;
+        case Blend::BLEND_RET_OK:
+            ret = MOSAIC_RET_OK;
+    }
+    return ret;
+}
+
+ImageType Mosaic::getMosaic(int &width, int &height)
+{
+    width = mosaicWidth;
+    height = mosaicHeight;
+
+    return imageMosaicYVU;
+}
+
+
+
+int Mosaic::balanceRotations()
+{
+    // Normalize to the mean angle of rotation (Smiley face)
+    double sineAngle = 0.0;
+
+    for (int i = 0; i < frames_size; i++) sineAngle += frames[i]->trs[0][1];
+    sineAngle /= frames_size;
+    // Calculate the cosineAngle (1 - sineAngle*sineAngle) = cosineAngle*cosineAngle
+    double cosineAngle = sqrt(1.0 - sineAngle*sineAngle);
+    double m[3][3] = {
+        { cosineAngle, -sineAngle, 0 },
+        { sineAngle, cosineAngle, 0},
+        { 0, 0, 1}};
+    double tmp[3][3];
+
+    for (int i = 0; i < frames_size; i++) {
+        memcpy(tmp, frames[i]->trs, sizeof(tmp));
+        mult33d(frames[i]->trs, m, tmp);
+    }
+
+    return MOSAIC_RET_OK;
+}
diff --git a/perftests/panorama/feature_mos/src/mosaic/Mosaic.h b/perftests/panorama/feature_mos/src/mosaic/Mosaic.h
new file mode 100644
index 0000000..9dea664
--- /dev/null
+++ b/perftests/panorama/feature_mos/src/mosaic/Mosaic.h
@@ -0,0 +1,226 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+///////////////////////////////////////////////////
+// Mosaic.h
+// S.O. # :
+// Author(s): zkira
+// $Id: Mosaic.h,v 1.16 2011/06/24 04:22:14 mbansal Exp $
+
+#ifndef MOSAIC_H
+#define MOSAIC_H
+
+#include "ImageUtils.h"
+#include "AlignFeatures.h"
+#include "Blend.h"
+#include "MosaicTypes.h"
+
+/*! \mainpage Mosaic
+
+    \section intro Introduction
+    The class Mosaic provides a simple interface to the panoramic mosaicing algorithm. The class allows passing in individual image frames to be stitched together, computes the alignment transformation between them, and then stitches and blends them together into a single panoramic output which can then be accessed as a single image. \
+
+    \section usage Usage
+    The class methods need to be called as outlined in the sample application which is created from the mosaic_main.cpp file in the directory src/mosaic/. A brief snapshot of the flow is given below:
+
+    \code
+    Mosaic mosaic;
+    // Define blending types to use, and the frame dimensions
+    int blendingType = Blend::BLEND_TYPE_CYLPAN;
+    int stripType = Blend::STRIP_TYPE_THIN;
+    int width = 640;
+    int height = 480;
+
+    while (<image frames are available>)
+    {
+        // Check for initialization and if not, initialize
+        if (!mosaic.isInitialized())
+        {
+          // Initialize mosaic processing
+          mosaic.initialize(blendingType, stripType, width, height, -1, false, 5.0f);
+        }
+
+        // Add to list of frames
+        mosaic.addFrameRGB(imageRGB);
+
+        // Free image
+        ImageUtils::freeImage(imageRGB);
+    }
+
+    // Create the mosaic
+    ret = mosaic.createMosaic();
+
+    // Get back the result
+    resultYVU = mosaic.getMosaic(mosaicWidth, mosaicHeight);
+
+    printf("Got mosaic of size %d,%d\n", mosaicWidth, mosaicHeight);
+
+    \endcode
+*/
+
+/*!
+ *  Main class that creates a mosaic by creating an aligner and blender.
+ */
+class Mosaic
+{
+
+public:
+
+  Mosaic();
+  ~Mosaic();
+
+   /*!
+    *   Creates the aligner and blender and initializes state.
+    *   \param blendingType Type of blending to perform
+    *   \param stripType    Type of strip to use. 0: thin, 1: wide. stripType
+    *                       is effective only when blendingType is CylPan or
+    *                       Horz. Otherwise, it is set to thin irrespective of the input.
+    *   \param width        Width of input images (note: all images must be same size)
+    *   \param height       Height of input images (note: all images must be same size)
+    *   \param nframes      Number of frames to pre-allocate; default value -1 will allocate each frame as it comes
+    *   \param quarter_res  Whether to compute alignment at quarter the input resolution (default = false)
+    *   \param thresh_still Minimum number of pixels of translation detected between the new frame and the last frame before this frame is added to be mosaiced. For the low-res processing at 320x180 resolution input, we set this to 5 pixels. To reject no frames, set this to 0.0 (default value).
+    *   \return             Return code signifying success or failure.
+    */
+  int initialize(int blendingType, int stripType, int width, int height, int nframes = -1, bool quarter_res = false, float thresh_still = 0.0);
+
+   /*!
+    *   Adds a YVU frame to the mosaic.
+    *   \param imageYVU     Pointer to a YVU image.
+    *   \return             Return code signifying success or failure.
+    */
+  int addFrame(ImageType imageYVU);
+
+   /*!
+    *   Adds a RGB frame to the mosaic.
+    *   \param imageRGB     Pointer to a RGB image.
+    *   \return             Return code signifying success or failure.
+    */
+  int addFrameRGB(ImageType imageRGB);
+
+   /*!
+    *   After adding all frames, call this function to perform the final blending.
+    *   \param progress     Variable to set the current progress in.
+    *   \return             Return code signifying success or failure.
+    */
+  int createMosaic(float &progress, bool &cancelComputation);
+
+    /*!
+    *   Obtains the resulting mosaic and its dimensions.
+    *   \param width        Width of the resulting mosaic (returned)
+    *   \param height       Height of the resulting mosaic (returned)
+    *   \return             Pointer to image.
+    */
+  ImageType getMosaic(int &width, int &height);
+
+    /*!
+    *   Provides access to the internal alignment object pointer.
+    *   \return             Pointer to the aligner object.
+    */
+  Align* getAligner() { return aligner; }
+
+    /*!
+    *   Obtain initialization state.
+    *
+    *   return              Returns true if initialized, false otherwise.
+    */
+  bool isInitialized() { return initialized; }
+
+
+  /*!
+   *  Return codes for mosaic.
+   */
+  static const int MOSAIC_RET_OK    = 1;
+  static const int MOSAIC_RET_ERROR = -1;
+  static const int MOSAIC_RET_CANCELLED = -2;
+  static const int MOSAIC_RET_LOW_TEXTURE = -3;
+  static const int MOSAIC_RET_FEW_INLIERS = 2;
+
+protected:
+
+  /**
+   * Size of image frames making up mosaic
+   */
+  int width, height;
+
+  /**
+   * Size of actual mosaic
+   */
+  int mosaicWidth, mosaicHeight;
+
+  /**
+   * Bounding box to crop the mosaic when the gray border is not desired.
+   */
+  MosaicRect mosaicCroppingRect;
+
+  ImageType imageMosaicYVU;
+
+  /**
+   * Collection of frames that will make up mosaic.
+   */
+  MosaicFrame **frames;
+
+  /**
+    * Subset of frames that are considered as relevant.
+    */
+  MosaicFrame **rframes;
+
+  int frames_size;
+  int max_frames;
+
+  /**
+    * Implicitly created frames, should be freed by Mosaic.
+    */
+  ImageType *owned_frames;
+  int owned_size;
+
+  /**
+   * Initialization state.
+   */
+  bool initialized;
+
+  /**
+   *  Type of blending to perform.
+   */
+  int blendingType;
+
+  /**
+    * Type of strip to use. 0: thin (default), 1: wide
+    */
+  int stripType;
+
+  /**
+   *  Pointer to aligner.
+   */
+  Align *aligner;
+
+  /**
+   *  Pointer to blender.
+   */
+  Blend *blender;
+
+  /**
+   *  Modifies TRS matrices so that rotations are balanced
+   *  about center of mosaic
+   *
+   * Side effect: TRS matrices of all mosaic frames
+   *              are modified
+   */
+  int balanceRotations();
+
+};
+
+#endif
diff --git a/perftests/panorama/feature_mos/src/mosaic/MosaicTypes.h b/perftests/panorama/feature_mos/src/mosaic/MosaicTypes.h
new file mode 100644
index 0000000..395ec45
--- /dev/null
+++ b/perftests/panorama/feature_mos/src/mosaic/MosaicTypes.h
@@ -0,0 +1,154 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+///////////////////////////////////////////////////
+// MosaicTypes.h
+// S.O. # :
+// Author(s): zkira
+// $Id: MosaicTypes.h,v 1.15 2011/06/17 13:35:48 mbansal Exp $
+
+
+#ifndef MOSAIC_TYPES_H
+#define MOSAIC_TYPES_H
+
+#include "ImageUtils.h"
+
+/**
+ *  Definition of rectangle in a mosaic.
+ */
+class MosaicRect
+{
+    public:
+        MosaicRect()
+        {
+            left = right = top = bottom = 0.0;
+        }
+
+        inline int Width()
+        {
+            return right - left;
+        }
+
+        inline int Height()
+        {
+            return bottom - top;
+        }
+
+        /**
+         *  Bounds of the rectangle
+         */
+        int left, right, top, bottom;
+};
+
+class BlendRect
+{
+    public:
+    double lft, rgt, top, bot;
+};
+
+/**
+ *  A frame making up the mosaic.
+ *  Note: Currently assumes a YVU image
+ *  containing separate Y,V, and U planes
+ *  in contiguous memory (in that order).
+ */
+class MosaicFrame {
+public:
+  ImageType image;
+  double trs[3][3];
+  int width, height;
+  BlendRect brect;  // This frame warped to the Mosaic coordinate system
+  BlendRect vcrect; // brect clipped using the voronoi neighbors
+  bool internal_allocation;
+
+  MosaicFrame() { };
+  MosaicFrame(int _width, int _height, bool allocate=true)
+  {
+    width = _width;
+    height = _height;
+    internal_allocation = allocate;
+    if(internal_allocation)
+        image = ImageUtils::allocateImage(width, height, ImageUtils::IMAGE_TYPE_NUM_CHANNELS);
+  }
+
+
+  ~MosaicFrame()
+  {
+    if(internal_allocation)
+        if (image)
+        free(image);
+  }
+
+  /**
+  *  Get the V plane of the image.
+  */
+  inline ImageType getV()
+  {
+    return (image + (width*height));
+  }
+
+  /**
+  *  Get the U plane of the image.
+  */
+  inline ImageType getU()
+  {
+    return (image + (width*height*2));
+  }
+
+  /**
+  *  Get a pixel from the V plane of the image.
+  */
+  inline int getV(int y, int x)
+  {
+    ImageType U = image + (width*height);
+    return U[y*width+x];
+  }
+
+  /**
+  *  Get a pixel from the U plane of the image.
+  */
+  inline int getU(int y, int x)
+  {
+    ImageType U = image + (width*height*2);
+    return U[y*width+x];
+  }
+
+};
+
+/**
+ *  Structure for describing a warp.
+ */
+typedef struct {
+  int horizontal;
+  double theta;
+  double x;
+  double y;
+  double width;
+  double radius;
+  double direction;
+  double correction;
+  int blendRange;
+  int blendRangeUV;
+  int nlevs;
+  int nlevsC;
+  int blendingType;
+  int stripType;
+  // Add an overlap to prevent a gap between pictures due to roundoffs
+  double roundoffOverlap;// 1.5
+
+} BlendParams;
+
+#endif
diff --git a/perftests/panorama/feature_mos/src/mosaic/Pyramid.cpp b/perftests/panorama/feature_mos/src/mosaic/Pyramid.cpp
new file mode 100644
index 0000000..b022d73
--- /dev/null
+++ b/perftests/panorama/feature_mos/src/mosaic/Pyramid.cpp
@@ -0,0 +1,270 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+// pyramid.cpp
+
+#include <stdio.h>
+#include <string.h>
+
+#include "Pyramid.h"
+
+// We allocate the entire pyramid into one contiguous storage. This makes
+// cleanup easier than fragmented stuff. In addition, we added a "pitch"
+// field, so pointer manipulation is much simpler when it would be faster.
+PyramidShort *PyramidShort::allocatePyramidPacked(real levels,
+        real width, real height, real border)
+{
+    real border2 = (real) (border << 1);
+    int lines, size = calcStorage(width, height, border2, levels, &lines);
+
+    PyramidShort *img = (PyramidShort *) calloc(sizeof(PyramidShort) * levels
+            + sizeof(short *) * lines +
+            + sizeof(short) * size, 1);
+
+    if (img) {
+        PyramidShort *curr, *last;
+        ImageTypeShort *y = (ImageTypeShort *) &img[levels];
+        ImageTypeShort position = (ImageTypeShort) &y[lines];
+        for (last = (curr = img) + levels; curr < last; curr++) {
+            curr->width = width;
+            curr->height = height;
+            curr->border = border;
+            curr->pitch = (real) (width + border2);
+            curr->ptr = y + border;
+
+            // Assign row pointers
+            for (int j = height + border2; j--; y++, position += curr->pitch) {
+                *y = position + border;
+            }
+
+            width >>= 1;
+            height >>= 1;
+        }
+    }
+
+    return img;
+}
+
+// Allocate an image of type short
+PyramidShort *PyramidShort::allocateImage(real width, real height, real border)
+{
+    real border2 = (real) (border << 1);
+    PyramidShort *img = (PyramidShort *)
+        calloc(sizeof(PyramidShort) + sizeof(short *) * (height + border2) +
+                sizeof(short) * (width + border2) * (height + border2), 1);
+
+    if (img) {
+        short **y = (short **) &img[1];
+        short *position = (short *) &y[height + border2];
+        img->width = width;
+        img->height = height;
+        img->border = border;
+        img->pitch = (real) (width + border2);
+        img->ptr = y + border;
+        position += border; // Move position down to origin of real image
+
+        // Assign row pointers
+        for (int j = height + border2; j--; y++, position += img->pitch) {
+            *y = position;
+        }
+    }
+
+    return img;
+}
+
+// Free the images
+void PyramidShort::freeImage(PyramidShort *image)
+{
+    if (image != NULL)
+        free(image);
+}
+
+// Calculate amount of storage needed taking into account the borders, etc.
+unsigned int PyramidShort::calcStorage(real width, real height, real border2,   int levels, int *lines)
+{
+    int size;
+
+    *lines = size = 0;
+
+    while(levels--) {
+        size += (width + border2) * (height + border2);
+        *lines += height + border2;
+        width >>= 1;
+        height >>= 1;
+    }
+
+    return size;
+}
+
+void PyramidShort::BorderSpread(PyramidShort *pyr, int left, int right,
+        int top, int bot)
+{
+    int off, off2, height, h, w;
+    ImageTypeShort base;
+
+    if (left || right) {
+        off = pyr->border - left;
+        off2 = pyr->width + off + pyr->border - right - 1;
+        h = pyr->border - top;
+        height = pyr->height + (h << 1);
+        base = pyr->ptr[-h] - off;
+
+        // spread in X
+        for (h = height; h--; base += pyr->pitch) {
+            for (w = left; w--;)
+                base[-1 - w] = base[0];
+            for (w = right; w--;)
+                base[off2 + w + 1] = base[off2];
+        }
+    }
+
+    if (top || bot) {
+        // spread in Y
+        base = pyr->ptr[top - pyr->border] - pyr->border;
+        for (h = top; h--; base -= pyr->pitch) {
+            memcpy(base - pyr->pitch, base, pyr->pitch * sizeof(short));
+        }
+
+        base = pyr->ptr[pyr->height + pyr->border - bot] - pyr->border;
+        for (h = bot; h--; base += pyr->pitch) {
+            memcpy(base, base - pyr->pitch, pyr->pitch * sizeof(short));
+        }
+    }
+}
+
+void PyramidShort::BorderExpandOdd(PyramidShort *in, PyramidShort *out, PyramidShort *scr,
+        int mode)
+{
+    int i,j;
+    int off = in->border / 2;
+
+    // Vertical Filter
+    for (j = -off; j < in->height + off; j++) {
+        int j2 = j * 2;
+        int limit = scr->width + scr->border;
+        for (i = -scr->border; i < limit; i++) {
+            int t1 = in->ptr[j][i];
+            int t2 = in->ptr[j+1][i];
+            scr->ptr[j2][i] = (short)
+                ((6 * t1 + (in->ptr[j-1][i] + t2) + 4) >> 3);
+            scr->ptr[j2+1][i] = (short)((t1 + t2 + 1) >> 1);
+        }
+    }
+
+    BorderSpread(scr, 0, 0, 3, 3);
+
+    // Horizontal Filter
+    int limit = out->height + out->border;
+    for (j = -out->border; j < limit; j++) {
+        for (i = -off; i < scr->width + off; i++) {
+            int i2 = i * 2;
+            int t1 = scr->ptr[j][i];
+            int t2 = scr->ptr[j][i+1];
+            out->ptr[j][i2] = (short) (out->ptr[j][i2] +
+                    (mode * ((6 * t1 +
+                              scr->ptr[j][i-1] + t2 + 4) >> 3)));
+            out->ptr[j][i2+1] = (short) (out->ptr[j][i2+1] +
+                    (mode * ((t1 + t2 + 1) >> 1)));
+        }
+    }
+
+}
+
+int PyramidShort::BorderExpand(PyramidShort *pyr, int nlev, int mode)
+{
+    PyramidShort *tpyr = pyr + nlev - 1;
+    PyramidShort *scr = allocateImage(pyr[1].width, pyr[0].height, pyr->border);
+    if (scr == NULL) return 0;
+
+    if (mode > 0) {
+        // Expand and add (reconstruct from Laplacian)
+        for (; tpyr > pyr; tpyr--) {
+            scr->width = tpyr[0].width;
+            scr->height = tpyr[-1].height;
+            BorderExpandOdd(tpyr, tpyr - 1, scr, 1);
+        }
+    }
+    else if (mode < 0) {
+        // Expand and subtract (build Laplacian)
+        while ((pyr++) < tpyr) {
+            scr->width = pyr[0].width;
+            scr->height = pyr[-1].height;
+            BorderExpandOdd(pyr, pyr - 1, scr, -1);
+        }
+    }
+
+    freeImage(scr);
+    return 1;
+}
+
+void PyramidShort::BorderReduceOdd(PyramidShort *in, PyramidShort *out, PyramidShort *scr)
+{
+    ImageTypeShortBase *s, *ns, *ls, *p, *np;
+
+    int off = scr->border - 2;
+    s = scr->ptr[-scr->border] - (off >> 1);
+    ns = s + scr->pitch;
+    ls = scr->ptr[scr->height + scr->border - 1] + scr->pitch - (off >> 1);
+    int width = scr->width + scr->border;
+    p = in->ptr[-scr->border] - off;
+    np = p + in->pitch;
+
+    // treat it as if the whole thing were the image
+    for (; s < ls; s = ns, ns += scr->pitch, p = np, np += in->pitch) {
+        for (int w = width; w--; s++, p += 2) {
+            *s = (short)((((int) p[-2]) + ((int) p[2]) + 8 +    // 1
+                        ((((int) p[-1]) + ((int) p[1])) << 2) + // 4
+                        ((int) *p) * 6) >> 4);          // 6
+        }
+    }
+
+    BorderSpread(scr, 5, 4 + ((in->width ^ 1) & 1), 0, 0); //
+
+    s = out->ptr[-(off >> 1)] - out->border;
+    ns = s + out->pitch;
+    ls = s + out->pitch * (out->height + off);
+    p = scr->ptr[-off] - out->border;
+    int pitch = scr->pitch;
+    int pitch2 = pitch << 1;
+    np = p + pitch2;
+    for (; s < ls; s = ns, ns += out->pitch, p = np, np += pitch2) {
+        for (int w = out->pitch; w--; s++, p++) {
+            *s = (short)((((int) p[-pitch2]) + ((int) p[pitch2]) + 8 + // 1
+                        ((((int) p[-pitch]) + ((int) p[pitch])) << 2) + // 4
+                        ((int) *p) * 6) >> 4);              // 6
+        }
+    }
+    BorderSpread(out, 0, 0, 5, 5);
+
+}
+
+int PyramidShort::BorderReduce(PyramidShort *pyr, int nlev)
+{
+    PyramidShort *scr = allocateImage(pyr[1].width, pyr[0].height, pyr->border);
+    if (scr == NULL)
+        return 0;
+
+    BorderSpread(pyr, pyr->border, pyr->border, pyr->border, pyr->border);
+    while (--nlev) {
+        BorderReduceOdd(pyr, pyr + 1, scr);
+        pyr++;
+        scr->width = pyr[1].width;
+        scr->height = pyr[0].height;
+    }
+
+    freeImage(scr);
+    return 1;
+}
diff --git a/perftests/panorama/feature_mos/src/mosaic/Pyramid.h b/perftests/panorama/feature_mos/src/mosaic/Pyramid.h
new file mode 100644
index 0000000..c5fe907
--- /dev/null
+++ b/perftests/panorama/feature_mos/src/mosaic/Pyramid.h
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+// Pyramid.h
+
+#ifndef PYRAMID_H
+#define PYRAMID_H
+
+#include "ImageUtils.h"
+
+typedef unsigned short int real;
+
+//  Structure containing a packed pyramid of type ImageTypeShort.  Used for pyramid
+//  blending, among other things.
+
+class PyramidShort
+{
+
+public:
+
+  ImageTypeShort *ptr;              // Pointer containing the image
+  real width, height;               // Width and height of input images
+  real numChannels;                 // Number of channels in input images
+  real border;                      // border size
+  real pitch;                       // Pitch.  Used for moving through image efficiently.
+
+  static PyramidShort *allocatePyramidPacked(real width, real height, real levels, real border = 0);
+  static PyramidShort *allocateImage(real width, real height, real border);
+  static void createPyramid(ImageType image, PyramidShort *pyramid, int last = 3 );
+  static void freeImage(PyramidShort *image);
+
+  static unsigned int calcStorage(real width, real height, real border2, int levels, int *lines);
+
+  static void BorderSpread(PyramidShort *pyr, int left, int right, int top, int bot);
+  static void BorderExpandOdd(PyramidShort *in, PyramidShort *out, PyramidShort *scr, int mode);
+  static int BorderExpand(PyramidShort *pyr, int nlev, int mode);
+  static int BorderReduce(PyramidShort *pyr, int nlev);
+  static void BorderReduceOdd(PyramidShort *in, PyramidShort *out, PyramidShort *scr);
+};
+
+#endif
diff --git a/perftests/panorama/feature_mos/src/mosaic/trsMatrix.cpp b/perftests/panorama/feature_mos/src/mosaic/trsMatrix.cpp
new file mode 100644
index 0000000..5fc6a86
--- /dev/null
+++ b/perftests/panorama/feature_mos/src/mosaic/trsMatrix.cpp
@@ -0,0 +1,94 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+// trsMatrix.cpp
+// $Id: trsMatrix.cpp,v 1.9 2011/06/17 13:35:48 mbansal Exp $
+
+#include "stdio.h"
+#include <math.h>
+#include "trsMatrix.h"
+
+void mult33d(double a[3][3], double b[3][3], double c[3][3])
+{
+    a[0][0] = b[0][0]*c[0][0] + b[0][1]*c[1][0] + b[0][2]*c[2][0];
+    a[0][1] = b[0][0]*c[0][1] + b[0][1]*c[1][1] + b[0][2]*c[2][1];
+    a[0][2] = b[0][0]*c[0][2] + b[0][1]*c[1][2] + b[0][2]*c[2][2];
+    a[1][0] = b[1][0]*c[0][0] + b[1][1]*c[1][0] + b[1][2]*c[2][0];
+    a[1][1] = b[1][0]*c[0][1] + b[1][1]*c[1][1] + b[1][2]*c[2][1];
+    a[1][2] = b[1][0]*c[0][2] + b[1][1]*c[1][2] + b[1][2]*c[2][2];
+    a[2][0] = b[2][0]*c[0][0] + b[2][1]*c[1][0] + b[2][2]*c[2][0];
+    a[2][1] = b[2][0]*c[0][1] + b[2][1]*c[1][1] + b[2][2]*c[2][1];
+    a[2][2] = b[2][0]*c[0][2] + b[2][1]*c[1][2] + b[2][2]*c[2][2];
+}
+
+
+// normProjMat33d
+// m = input matrix
+// return: result if successful
+int normProjMat33d(double m[3][3])
+{
+    double m22;
+
+    if(m[2][2] == 0.0)
+        {
+        return 0;
+}
+
+    m[0][0] /= m[2][2];
+    m[0][1] /= m[2][2];
+    m[0][2] /= m[2][2];
+    m[1][0] /= m[2][2];
+    m[1][1] /= m[2][2];
+    m[1][2] /= m[2][2];
+    m[2][0] /= m[2][2];
+    m[2][1] /= m[2][2];
+    m[2][2] = 1.0;
+
+    return 1;
+}
+
+// det33d
+// m = input matrix
+// returns: determinant
+double det33d(const double m[3][3])
+{
+    double result;
+
+    result  = m[0][0] * (m[1][1] * m[2][2] - m[1][2] * m[2][1]);
+    result += m[0][1] * (m[1][2] * m[2][0] - m[1][0] * m[2][2]);
+    result += m[0][2] * (m[1][0] * m[2][1] - m[1][1] * m[2][0]);
+
+    return result;
+}
+
+// inv33d
+//
+void inv33d(const double m[3][3], double out[3][3])
+{
+    double det = det33d(m);
+
+    out[0][0] = (m[1][1]*m[2][2] - m[1][2]*m[2][1]) / det;
+    out[1][0] = (m[1][2]*m[2][0] - m[1][0]*m[2][2]) / det;
+    out[2][0] = (m[1][0]*m[2][1] - m[1][1]*m[2][0]) / det;
+
+    out[0][1] = (m[0][2]*m[2][1] - m[0][1]*m[2][2]) / det;
+    out[1][1] = (m[0][0]*m[2][2] - m[0][2]*m[2][0]) / det;
+    out[2][1] = (m[0][1]*m[2][0] - m[0][0]*m[2][1]) / det;
+
+    out[0][2] = (m[0][1]*m[1][2] - m[0][2]*m[1][1]) / det;
+    out[1][2] = (m[0][2]*m[1][0] - m[0][0]*m[1][2]) / det;
+    out[2][2] = (m[0][0]*m[1][1] - m[0][1]*m[1][0]) / det;
+}
diff --git a/perftests/panorama/feature_mos/src/mosaic/trsMatrix.h b/perftests/panorama/feature_mos/src/mosaic/trsMatrix.h
new file mode 100644
index 0000000..054cc33
--- /dev/null
+++ b/perftests/panorama/feature_mos/src/mosaic/trsMatrix.h
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+///////////////////////////////////////////////////
+// trsMatrix.h
+// $Id: trsMatrix.h,v 1.8 2011/06/17 13:35:48 mbansal Exp $
+
+#ifndef TRSMATRIX_H_
+#define TRSMATRIX_H_
+
+
+// Calculate the determinant of a matrix
+double det33d(const double m[3][3]);
+
+// Invert a matrix
+void inv33d(const double m[3][3], double out[3][3]);
+
+// Multiply a = b * c
+void mult33d(double a[3][3], double b[3][3], double c[3][3]);
+
+// Normalize matrix so matrix[2][2] is '1'
+int normProjMat33d(double m[3][3]);
+
+inline double ProjZ(double trs[3][3], double x, double y, double f)
+{
+    return ((trs)[2][0]*(x) + (trs)[2][1]*(y) + (trs)[2][2]*(f));
+}
+
+inline double ProjX(double trs[3][3], double x, double y, double z, double f)
+{
+    return (((trs)[0][0]*(x) + (trs)[0][1]*(y) + (trs)[0][2]*(f)) / (z));
+}
+
+inline double ProjY(double trs[3][3], double x, double y, double z, double f)
+{
+    return (((trs)[1][0]*(x) + (trs)[1][1]*(y) + (trs)[1][2]*(f)) / (z));
+}
+
+
+#endif
diff --git a/perftests/panorama/feature_mos/src/mosaic_renderer/FrameBuffer.cpp b/perftests/panorama/feature_mos/src/mosaic_renderer/FrameBuffer.cpp
new file mode 100755
index 0000000..a956f23
--- /dev/null
+++ b/perftests/panorama/feature_mos/src/mosaic_renderer/FrameBuffer.cpp
@@ -0,0 +1,98 @@
+#include "FrameBuffer.h"
+
+FrameBuffer::FrameBuffer()
+{
+    Reset();
+}
+
+FrameBuffer::~FrameBuffer() {
+}
+
+void FrameBuffer::Reset() {
+    mFrameBufferName = -1;
+    mTextureName = -1;
+    mWidth = 0;
+    mHeight = 0;
+    mFormat = -1;
+}
+
+bool FrameBuffer::InitializeGLContext() {
+    Reset();
+    return CreateBuffers();
+}
+
+bool FrameBuffer::Init(int width, int height, GLenum format) {
+    if (mFrameBufferName == (GLuint)-1) {
+        if (!CreateBuffers()) {
+            return false;
+        }
+    }
+    glBindFramebuffer(GL_FRAMEBUFFER, mFrameBufferName);
+    glBindTexture(GL_TEXTURE_2D, mTextureName);
+
+    glTexImage2D(GL_TEXTURE_2D,
+                 0,
+                 format,
+                 width,
+                 height,
+                 0,
+                 format,
+                 GL_UNSIGNED_BYTE,
+                 NULL);
+    if (!checkGlError("bind/teximage")) {
+        return false;
+    }
+    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+    // This is necessary to work with user-generated frame buffers with
+    // dimensions that are NOT powers of 2.
+    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+
+    // Attach texture to frame buffer.
+    glFramebufferTexture2D(GL_FRAMEBUFFER,
+                           GL_COLOR_ATTACHMENT0,
+                           GL_TEXTURE_2D,
+                           mTextureName,
+                           0);
+    checkFramebufferStatus("FrameBuffer.cpp");
+    checkGlError("framebuffertexture2d");
+
+    if (!checkGlError("texture setup")) {
+        return false;
+    }
+    mWidth = width;
+    mHeight = height;
+    mFormat = format;
+    glBindFramebuffer(GL_FRAMEBUFFER, 0);
+    return true;
+}
+
+bool FrameBuffer::CreateBuffers() {
+    glGenFramebuffers(1, &mFrameBufferName);
+    glGenTextures(1, &mTextureName);
+    if (!checkGlError("texture generation")) {
+        return false;
+    }
+    return true;
+}
+
+GLuint FrameBuffer::GetTextureName() const {
+    return mTextureName;
+}
+
+GLuint FrameBuffer::GetFrameBufferName() const {
+    return mFrameBufferName;
+}
+
+GLenum FrameBuffer::GetFormat() const {
+    return mFormat;
+}
+
+int FrameBuffer::GetWidth() const {
+    return mWidth;
+}
+
+int FrameBuffer::GetHeight() const {
+    return mHeight;
+}
diff --git a/perftests/panorama/feature_mos/src/mosaic_renderer/FrameBuffer.h b/perftests/panorama/feature_mos/src/mosaic_renderer/FrameBuffer.h
new file mode 100755
index 0000000..314b126
--- /dev/null
+++ b/perftests/panorama/feature_mos/src/mosaic_renderer/FrameBuffer.h
@@ -0,0 +1,34 @@
+#pragma once
+
+#include <EGL/egl.h>
+#include <GLES2/gl2.h>
+#include <GLES2/gl2ext.h>
+
+#define checkGlError(op)  checkGLErrorDetail(__FILE__, __LINE__, (op))
+
+extern bool checkGLErrorDetail(const char* file, int line, const char* op);
+extern void checkFramebufferStatus(const char* name);
+
+class FrameBuffer {
+  public:
+    FrameBuffer();
+    virtual ~FrameBuffer();
+
+    bool InitializeGLContext();
+    bool Init(int width, int height, GLenum format);
+    GLuint GetTextureName() const;
+    GLuint GetFrameBufferName() const;
+    GLenum GetFormat() const;
+
+    int GetWidth() const;
+    int GetHeight() const;
+
+ private:
+    void Reset();
+    bool CreateBuffers();
+    GLuint mFrameBufferName;
+    GLuint mTextureName;
+    int mWidth;
+    int mHeight;
+    GLenum mFormat;
+};
diff --git a/perftests/panorama/feature_mos/src/mosaic_renderer/Renderer.cpp b/perftests/panorama/feature_mos/src/mosaic_renderer/Renderer.cpp
new file mode 100755
index 0000000..b9938eb
--- /dev/null
+++ b/perftests/panorama/feature_mos/src/mosaic_renderer/Renderer.cpp
@@ -0,0 +1,226 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+#include "Renderer.h"
+
+#include "mosaic/Log.h"
+#define LOG_TAG "Renderer"
+
+#include <GLES2/gl2ext.h>
+
+Renderer::Renderer()
+      : mGlProgram(0),
+        mInputTextureName(-1),
+        mInputTextureWidth(0),
+        mInputTextureHeight(0),
+        mSurfaceWidth(0),
+        mSurfaceHeight(0)
+{
+    InitializeGLContext();
+}
+
+Renderer::~Renderer() {
+}
+
+GLuint Renderer::loadShader(GLenum shaderType, const char* pSource) {
+    GLuint shader = glCreateShader(shaderType);
+    if (shader) {
+        glShaderSource(shader, 1, &pSource, NULL);
+        glCompileShader(shader);
+        GLint compiled = 0;
+        glGetShaderiv(shader, GL_COMPILE_STATUS, &compiled);
+        if (!compiled) {
+            GLint infoLen = 0;
+            glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &infoLen);
+            if (infoLen) {
+                char* buf = (char*) malloc(infoLen);
+                if (buf) {
+                    glGetShaderInfoLog(shader, infoLen, NULL, buf);
+                    LOGE("Could not compile shader %d:\n%s\n",
+                            shaderType, buf);
+                    free(buf);
+                }
+                glDeleteShader(shader);
+                shader = 0;
+            }
+        }
+    }
+    return shader;
+}
+
+GLuint Renderer::createProgram(const char* pVertexSource, const char* pFragmentSource)
+{
+    GLuint vertexShader = loadShader(GL_VERTEX_SHADER, pVertexSource);
+    if (!vertexShader)
+    {
+        return 0;
+    }
+
+    GLuint pixelShader = loadShader(GL_FRAGMENT_SHADER, pFragmentSource);
+    if (!pixelShader)
+    {
+        return 0;
+    }
+
+    GLuint program = glCreateProgram();
+    if (program)
+    {
+        glAttachShader(program, vertexShader);
+        checkGlError("glAttachShader");
+        glAttachShader(program, pixelShader);
+        checkGlError("glAttachShader");
+
+        glLinkProgram(program);
+        GLint linkStatus = GL_FALSE;
+        glGetProgramiv(program, GL_LINK_STATUS, &linkStatus);
+
+        LOGI("Program Linked (%d)!", program);
+
+        if (linkStatus != GL_TRUE)
+        {
+            GLint bufLength = 0;
+            glGetProgramiv(program, GL_INFO_LOG_LENGTH, &bufLength);
+            if (bufLength)
+            {
+                char* buf = (char*) malloc(bufLength);
+                if (buf)
+                {
+                    glGetProgramInfoLog(program, bufLength, NULL, buf);
+                    LOGE("Could not link program:\n%s\n", buf);
+                    free(buf);
+                }
+            }
+            glDeleteProgram(program);
+            program = 0;
+        }
+    }
+    return program;
+}
+
+// Set this renderer to use the default frame-buffer (screen) and
+// set the viewport size to be the given width and height (pixels).
+bool Renderer::SetupGraphics(int width, int height)
+{
+    bool succeeded = false;
+    do {
+        if (mGlProgram == 0)
+        {
+            if (!InitializeGLProgram())
+            {
+              break;
+            }
+        }
+        glUseProgram(mGlProgram);
+        if (!checkGlError("glUseProgram")) break;
+
+        glBindFramebuffer(GL_FRAMEBUFFER, 0);
+
+        mFrameBuffer = NULL;
+        mSurfaceWidth = width;
+        mSurfaceHeight = height;
+
+        glViewport(0, 0, mSurfaceWidth, mSurfaceHeight);
+        if (!checkGlError("glViewport")) break;
+        succeeded = true;
+    } while (false);
+
+    return succeeded;
+}
+
+
+// Set this renderer to use the specified FBO and
+// set the viewport size to be the width and height of this FBO.
+bool Renderer::SetupGraphics(FrameBuffer* buffer)
+{
+    bool succeeded = false;
+    do {
+        if (mGlProgram == 0)
+        {
+            if (!InitializeGLProgram())
+            {
+              break;
+            }
+        }
+        glUseProgram(mGlProgram);
+        if (!checkGlError("glUseProgram")) break;
+
+        glBindFramebuffer(GL_FRAMEBUFFER, buffer->GetFrameBufferName());
+
+        mFrameBuffer = buffer;
+        mSurfaceWidth = mFrameBuffer->GetWidth();
+        mSurfaceHeight = mFrameBuffer->GetHeight();
+
+        glViewport(0, 0, mSurfaceWidth, mSurfaceHeight);
+        if (!checkGlError("glViewport")) break;
+        succeeded = true;
+    } while (false);
+
+    return succeeded;
+}
+
+bool Renderer::Clear(float r, float g, float b, float a)
+{
+    bool succeeded = false;
+    do {
+        bool rt = (mFrameBuffer == NULL)?
+                SetupGraphics(mSurfaceWidth, mSurfaceHeight) :
+                SetupGraphics(mFrameBuffer);
+
+        if(!rt)
+            break;
+
+        glClearColor(r, g, b, a);
+        glClear(GL_COLOR_BUFFER_BIT);
+
+        succeeded = true;
+    } while (false);
+    return succeeded;
+
+}
+
+void Renderer::InitializeGLContext()
+{
+    if(mFrameBuffer != NULL)
+    {
+        delete mFrameBuffer;
+        mFrameBuffer = NULL;
+    }
+
+    mInputTextureName = -1;
+    mInputTextureType = GL_TEXTURE_2D;
+    mGlProgram = 0;
+}
+
+int Renderer::GetTextureName()
+{
+    return mInputTextureName;
+}
+
+void Renderer::SetInputTextureName(GLuint textureName)
+{
+    mInputTextureName = textureName;
+}
+
+void Renderer::SetInputTextureType(GLenum textureType)
+{
+    mInputTextureType = textureType;
+}
+
+void Renderer::SetInputTextureDimensions(int width, int height)
+{
+    mInputTextureWidth = width;
+    mInputTextureHeight = height;
+}
diff --git a/perftests/panorama/feature_mos/src/mosaic_renderer/Renderer.h b/perftests/panorama/feature_mos/src/mosaic_renderer/Renderer.h
new file mode 100755
index 0000000..a43e802
--- /dev/null
+++ b/perftests/panorama/feature_mos/src/mosaic_renderer/Renderer.h
@@ -0,0 +1,65 @@
+#pragma once
+
+#include "FrameBuffer.h"
+
+#include <GLES2/gl2.h>
+
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+class Renderer {
+  public:
+    Renderer();
+    virtual ~Renderer();
+
+    // Initialize OpenGL resources
+    // @return true if successful
+    virtual bool InitializeGLProgram() = 0;
+
+    bool SetupGraphics(FrameBuffer* buffer);
+    bool SetupGraphics(int width, int height);
+
+    bool Clear(float r, float g, float b, float a);
+
+    int GetTextureName();
+    void SetInputTextureName(GLuint textureName);
+    void SetInputTextureDimensions(int width, int height);
+    void SetInputTextureType(GLenum textureType);
+
+    void InitializeGLContext();
+
+  protected:
+
+    GLuint loadShader(GLenum shaderType, const char* pSource);
+    GLuint createProgram(const char*, const char* );
+
+    int SurfaceWidth() const { return mSurfaceWidth; }
+    int SurfaceHeight() const { return mSurfaceHeight; }
+
+    // Source code for shaders.
+    virtual const char* VertexShaderSource() const = 0;
+    virtual const char* FragmentShaderSource() const = 0;
+
+    // Redefine this to use special texture types such as
+    // GL_TEXTURE_EXTERNAL_OES.
+    GLenum InputTextureType() const { return mInputTextureType; }
+
+    GLuint mGlProgram;
+    GLuint mInputTextureName;
+    GLenum mInputTextureType;
+    int mInputTextureWidth;
+    int mInputTextureHeight;
+
+    // Attribute locations
+    GLint  mScalingtransLoc;
+    GLint maPositionHandle;
+    GLint maTextureHandle;
+
+
+    int mSurfaceWidth;      // Width of target surface.
+    int mSurfaceHeight;     // Height of target surface.
+
+    FrameBuffer *mFrameBuffer;
+};
+
diff --git a/perftests/panorama/feature_mos/src/mosaic_renderer/SurfaceTextureRenderer.cpp b/perftests/panorama/feature_mos/src/mosaic_renderer/SurfaceTextureRenderer.cpp
new file mode 100755
index 0000000..88aac36
--- /dev/null
+++ b/perftests/panorama/feature_mos/src/mosaic_renderer/SurfaceTextureRenderer.cpp
@@ -0,0 +1,186 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+#include "SurfaceTextureRenderer.h"
+
+#include <GLES2/gl2ext.h>
+const GLfloat g_vVertices[] = {
+    -1.f, -1.f, 0.0f, 1.0f,  // Position 0
+    0.0f,  0.0f,         // TexCoord 0
+     1.f, -1.f, 0.0f, 1.0f, // Position 1
+    1.0f,  0.0f,         // TexCoord 1
+    -1.f,  1.f, 0.0f, 1.0f, // Position 2
+    0.0f,  1.0f,         // TexCoord 2
+    1.f,   1.f, 0.0f, 1.0f, // Position 3
+    1.0f,  1.0f          // TexCoord 3
+};
+GLushort g_iIndices2[] = { 0, 1, 2, 3 };
+
+const int GL_TEXTURE_EXTERNAL_OES_ENUM = 0x8D65;
+
+const int VERTEX_STRIDE = 6 * sizeof(GLfloat);
+
+SurfaceTextureRenderer::SurfaceTextureRenderer() : Renderer() {
+    memset(mSTMatrix, 0.0, 16*sizeof(float));
+    mSTMatrix[0] = 1.0f;
+    mSTMatrix[5] = 1.0f;
+    mSTMatrix[10] = 1.0f;
+    mSTMatrix[15] = 1.0f;
+}
+
+SurfaceTextureRenderer::~SurfaceTextureRenderer() {
+}
+
+void SurfaceTextureRenderer::SetViewportMatrix(int w, int h, int W, int H)
+{
+    for(int i=0; i<16; i++)
+    {
+        mViewportMatrix[i] = 0.0f;
+    }
+
+    mViewportMatrix[0] = float(w)/float(W);
+    mViewportMatrix[5] = float(h)/float(H);
+    mViewportMatrix[10] = 1.0f;
+    mViewportMatrix[12] = -1.0f + float(w)/float(W);
+    mViewportMatrix[13] = -1.0f + float(h)/float(H);
+    mViewportMatrix[15] = 1.0f;
+}
+
+void SurfaceTextureRenderer::SetScalingMatrix(float xscale, float yscale)
+{
+    for(int i=0; i<16; i++)
+    {
+        mScalingMatrix[i] = 0.0f;
+    }
+
+    mScalingMatrix[0] = xscale;
+    mScalingMatrix[5] = yscale;
+    mScalingMatrix[10] = 1.0f;
+    mScalingMatrix[15] = 1.0f;
+}
+
+void SurfaceTextureRenderer::SetSTMatrix(float *stmat)
+{
+    memcpy(mSTMatrix, stmat, 16*sizeof(float));
+}
+
+
+bool SurfaceTextureRenderer::InitializeGLProgram()
+{
+    bool succeeded = false;
+    do {
+        GLuint glProgram;
+        glProgram = createProgram(VertexShaderSource(),
+                FragmentShaderSource());
+        if (!glProgram) {
+            break;
+        }
+
+        glUseProgram(glProgram);
+        if (!checkGlError("glUseProgram")) break;
+
+        maPositionHandle = glGetAttribLocation(glProgram, "aPosition");
+        checkGlError("glGetAttribLocation aPosition");
+        maTextureHandle = glGetAttribLocation(glProgram, "aTextureCoord");
+        checkGlError("glGetAttribLocation aTextureCoord");
+        muSTMatrixHandle = glGetUniformLocation(glProgram, "uSTMatrix");
+        checkGlError("glGetUniformLocation uSTMatrix");
+        mScalingtransLoc = glGetUniformLocation(glProgram, "u_scalingtrans");
+
+        glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
+        mGlProgram = glProgram;
+        succeeded = true;
+    } while (false);
+
+    if (!succeeded && (mGlProgram != 0))
+    {
+        glDeleteProgram(mGlProgram);
+        checkGlError("glDeleteProgram");
+        mGlProgram = 0;
+    }
+    return succeeded;
+}
+
+bool SurfaceTextureRenderer::DrawTexture(GLfloat *affine)
+{
+    bool succeeded = false;
+    do {
+        bool rt = (mFrameBuffer == NULL)?
+            SetupGraphics(mSurfaceWidth, mSurfaceHeight) :
+            SetupGraphics(mFrameBuffer);
+
+        if(!rt)
+            break;
+
+        glDisable(GL_BLEND);
+
+        glActiveTexture(GL_TEXTURE0);
+        if (!checkGlError("glActiveTexture")) break;
+
+        const GLenum texture_type = InputTextureType();
+        glBindTexture(texture_type, mInputTextureName);
+        if (!checkGlError("glBindTexture")) break;
+
+        glUniformMatrix4fv(mScalingtransLoc, 1, GL_FALSE, mScalingMatrix);
+        glUniformMatrix4fv(muSTMatrixHandle, 1, GL_FALSE, mSTMatrix);
+
+        // Load the vertex position
+        glVertexAttribPointer(maPositionHandle, 4, GL_FLOAT,
+                GL_FALSE, VERTEX_STRIDE, g_vVertices);
+        glEnableVertexAttribArray(maPositionHandle);
+        // Load the texture coordinate
+        glVertexAttribPointer(maTextureHandle, 2, GL_FLOAT,
+                GL_FALSE, VERTEX_STRIDE, &g_vVertices[4]);
+        glEnableVertexAttribArray(maTextureHandle);
+
+        // And, finally, execute the GL draw command.
+        glDrawElements(GL_TRIANGLE_STRIP, 4, GL_UNSIGNED_SHORT, g_iIndices2);
+
+        glBindFramebuffer(GL_FRAMEBUFFER, 0);
+        succeeded = true;
+    } while (false);
+    return succeeded;
+}
+
+const char* SurfaceTextureRenderer::VertexShaderSource() const
+{
+    static const char gVertexShader[] =
+        "uniform mat4 uSTMatrix;\n"
+        "uniform mat4 u_scalingtrans;  \n"
+        "attribute vec4 aPosition;\n"
+        "attribute vec4 aTextureCoord;\n"
+        "varying vec2 vTextureNormCoord;\n"
+        "void main() {\n"
+        "  gl_Position = u_scalingtrans * aPosition;\n"
+        "  vTextureNormCoord = (uSTMatrix * aTextureCoord).xy;\n"
+        "}\n";
+
+    return gVertexShader;
+}
+
+const char* SurfaceTextureRenderer::FragmentShaderSource() const
+{
+    static const char gFragmentShader[] =
+        "#extension GL_OES_EGL_image_external : require\n"
+        "precision mediump float;\n"
+        "varying vec2 vTextureNormCoord;\n"
+        "uniform samplerExternalOES sTexture;\n"
+        "void main() {\n"
+        "  gl_FragColor = texture2D(sTexture, vTextureNormCoord);\n"
+        "}\n";
+
+    return gFragmentShader;
+}
diff --git a/perftests/panorama/feature_mos/src/mosaic_renderer/SurfaceTextureRenderer.h b/perftests/panorama/feature_mos/src/mosaic_renderer/SurfaceTextureRenderer.h
new file mode 100755
index 0000000..ea2b81a
--- /dev/null
+++ b/perftests/panorama/feature_mos/src/mosaic_renderer/SurfaceTextureRenderer.h
@@ -0,0 +1,44 @@
+#pragma once
+
+#include "FrameBuffer.h"
+#include "Renderer.h"
+
+#include <GLES2/gl2.h>
+
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+class SurfaceTextureRenderer: public Renderer {
+  public:
+    SurfaceTextureRenderer();
+    virtual ~SurfaceTextureRenderer();
+
+    // Initialize OpenGL resources
+    // @return true if successful
+    bool InitializeGLProgram();
+
+    bool DrawTexture(GLfloat *affine);
+
+    void SetViewportMatrix(int w, int h, int W, int H);
+    void SetScalingMatrix(float xscale, float yscale);
+    void SetSTMatrix(float *stmat);
+
+ private:
+    // Source code for shaders.
+    const char* VertexShaderSource() const;
+    const char* FragmentShaderSource() const;
+
+    // Attribute locations
+    GLint  mScalingtransLoc;
+    GLint muSTMatrixHandle;
+    GLint maPositionHandle;
+    GLint maTextureHandle;
+
+    GLfloat mViewportMatrix[16];
+    GLfloat mScalingMatrix[16];
+
+    GLfloat mSTMatrix[16];
+
+};
+
diff --git a/perftests/panorama/feature_mos/src/mosaic_renderer/WarpRenderer.cpp b/perftests/panorama/feature_mos/src/mosaic_renderer/WarpRenderer.cpp
new file mode 100755
index 0000000..af6779a
--- /dev/null
+++ b/perftests/panorama/feature_mos/src/mosaic_renderer/WarpRenderer.cpp
@@ -0,0 +1,190 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+#include "WarpRenderer.h"
+
+#include <GLES2/gl2ext.h>
+
+const GLfloat g_vVertices[] = {
+    -1.f, 1.f, 0.0f, 1.0f,  // Position 0
+    0.0f,  1.0f,         // TexCoord 0
+     1.f, 1.f, 0.0f, 1.0f, // Position 1
+    1.0f,  1.0f,         // TexCoord 1
+    -1.f, -1.f, 0.0f, 1.0f, // Position 2
+    0.0f,  0.0f,         // TexCoord 2
+    1.f,  -1.f, 0.0f, 1.0f, // Position 3
+    1.0f,  0.0f          // TexCoord 3
+};
+
+const int VERTEX_STRIDE = 6 * sizeof(GLfloat);
+
+GLushort g_iIndices[] = { 0, 1, 2, 3 };
+
+WarpRenderer::WarpRenderer() : Renderer()
+{
+}
+
+WarpRenderer::~WarpRenderer() {
+}
+
+void WarpRenderer::SetViewportMatrix(int w, int h, int W, int H)
+{
+    for(int i=0; i<16; i++)
+    {
+        mViewportMatrix[i] = 0.0f;
+    }
+
+    mViewportMatrix[0] = float(w)/float(W);
+    mViewportMatrix[5] = float(h)/float(H);
+    mViewportMatrix[10] = 1.0f;
+    mViewportMatrix[12] = -1.0f + float(w)/float(W);
+    mViewportMatrix[13] = -1.0f + float(h)/float(H);
+    mViewportMatrix[15] = 1.0f;
+}
+
+void WarpRenderer::SetScalingMatrix(float xscale, float yscale)
+{
+    for(int i=0; i<16; i++)
+    {
+        mScalingMatrix[i] = 0.0f;
+    }
+
+    mScalingMatrix[0] = xscale;
+    mScalingMatrix[5] = yscale;
+    mScalingMatrix[10] = 1.0f;
+    mScalingMatrix[15] = 1.0f;
+}
+
+bool WarpRenderer::InitializeGLProgram()
+{
+    bool succeeded = false;
+    do {
+        GLuint glProgram;
+        glProgram = createProgram(VertexShaderSource(),
+                FragmentShaderSource());
+        if (!glProgram) {
+            break;
+        }
+
+        glUseProgram(glProgram);
+        if (!checkGlError("glUseProgram")) break;
+
+        // Get attribute locations
+        mPositionLoc     = glGetAttribLocation(glProgram, "a_position");
+        mAffinetransLoc  = glGetUniformLocation(glProgram, "u_affinetrans");
+        mViewporttransLoc = glGetUniformLocation(glProgram, "u_viewporttrans");
+        mScalingtransLoc = glGetUniformLocation(glProgram, "u_scalingtrans");
+        mTexCoordLoc     = glGetAttribLocation(glProgram, "a_texCoord");
+
+        // Get sampler location
+        mSamplerLoc      = glGetUniformLocation(glProgram, "s_texture");
+
+        mGlProgram = glProgram;
+        succeeded = true;
+    } while (false);
+
+    if (!succeeded && (mGlProgram != 0))
+    {
+        glDeleteProgram(mGlProgram);
+        checkGlError("glDeleteProgram");
+        mGlProgram = 0;
+    }
+    return succeeded;
+}
+
+bool WarpRenderer::DrawTexture(GLfloat *affine)
+{
+    bool succeeded = false;
+    do {
+        bool rt = (mFrameBuffer == NULL)?
+                SetupGraphics(mSurfaceWidth, mSurfaceHeight) :
+                SetupGraphics(mFrameBuffer);
+
+        if(!rt)
+            break;
+
+        glDisable(GL_BLEND);
+
+        glActiveTexture(GL_TEXTURE0);
+        if (!checkGlError("glActiveTexture")) break;
+
+        const GLenum texture_type = InputTextureType();
+        glBindTexture(texture_type, mInputTextureName);
+        if (!checkGlError("glBindTexture")) break;
+
+        // Set the sampler texture unit to 0
+        glUniform1i(mSamplerLoc, 0);
+
+        // Load the vertex position
+        glVertexAttribPointer(mPositionLoc, 4, GL_FLOAT,
+                GL_FALSE, VERTEX_STRIDE, g_vVertices);
+
+        // Load the texture coordinate
+        glVertexAttribPointer(mTexCoordLoc, 2, GL_FLOAT,
+                GL_FALSE, VERTEX_STRIDE, &g_vVertices[4]);
+
+        glEnableVertexAttribArray(mPositionLoc);
+        glEnableVertexAttribArray(mTexCoordLoc);
+
+        // pass matrix information to the vertex shader
+        glUniformMatrix4fv(mAffinetransLoc, 1, GL_FALSE, affine);
+        glUniformMatrix4fv(mViewporttransLoc, 1, GL_FALSE, mViewportMatrix);
+        glUniformMatrix4fv(mScalingtransLoc, 1, GL_FALSE, mScalingMatrix);
+
+        // And, finally, execute the GL draw command.
+        glDrawElements(GL_TRIANGLE_STRIP, 4, GL_UNSIGNED_SHORT, g_iIndices);
+
+        checkGlError("glDrawElements");
+
+        glBindFramebuffer(GL_FRAMEBUFFER, 0);
+        succeeded = true;
+    } while (false);
+    return succeeded;
+}
+
+const char* WarpRenderer::VertexShaderSource() const
+{
+    static const char gVertexShader[] =
+        "uniform mat4 u_affinetrans;  \n"
+        "uniform mat4 u_viewporttrans;  \n"
+        "uniform mat4 u_scalingtrans;  \n"
+        "attribute vec4 a_position;   \n"
+        "attribute vec2 a_texCoord;   \n"
+        "varying vec2 v_texCoord;     \n"
+        "void main()                  \n"
+        "{                            \n"
+        "   gl_Position = u_scalingtrans * u_viewporttrans * u_affinetrans * a_position; \n"
+        "   v_texCoord = a_texCoord;  \n"
+        "}                            \n";
+
+    return gVertexShader;
+}
+
+const char* WarpRenderer::FragmentShaderSource() const
+{
+    static const char gFragmentShader[] =
+        "precision mediump float;                            \n"
+        "varying vec2 v_texCoord;                            \n"
+        "uniform sampler2D s_texture;                        \n"
+        "void main()                                         \n"
+        "{                                                   \n"
+        "  vec4 color;                                       \n"
+        "  color = texture2D(s_texture, v_texCoord);       \n"
+        "  gl_FragColor = color;                             \n"
+        "}                                                   \n";
+
+    return gFragmentShader;
+}
diff --git a/perftests/panorama/feature_mos/src/mosaic_renderer/WarpRenderer.h b/perftests/panorama/feature_mos/src/mosaic_renderer/WarpRenderer.h
new file mode 100755
index 0000000..8e9a694
--- /dev/null
+++ b/perftests/panorama/feature_mos/src/mosaic_renderer/WarpRenderer.h
@@ -0,0 +1,48 @@
+#pragma once
+
+#include "FrameBuffer.h"
+#include "Renderer.h"
+
+#include <GLES2/gl2.h>
+
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+class WarpRenderer: public Renderer {
+  public:
+    WarpRenderer();
+    virtual ~WarpRenderer();
+
+    // Initialize OpenGL resources
+    // @return true if successful
+    bool InitializeGLProgram();
+
+    void SetViewportMatrix(int w, int h, int W, int H);
+    void SetScalingMatrix(float xscale, float yscale);
+
+    bool DrawTexture(GLfloat *affine);
+
+ private:
+    // Source code for shaders.
+    const char* VertexShaderSource() const;
+    const char* FragmentShaderSource() const;
+
+    GLuint mTexHandle;                  // Handle to s_texture.
+    GLuint mTexCoordHandle;             // Handle to a_texCoord.
+    GLuint mTriangleVerticesHandle;     // Handle to vPosition.
+
+    // Attribute locations
+    GLint  mPositionLoc;
+    GLint  mAffinetransLoc;
+    GLint  mViewporttransLoc;
+    GLint  mScalingtransLoc;
+    GLint  mTexCoordLoc;
+
+    GLfloat mViewportMatrix[16];
+    GLfloat mScalingMatrix[16];
+
+    // Sampler location
+    GLint mSamplerLoc;
+};
+
diff --git a/perftests/panorama/feature_mos/src/mosaic_renderer/YVURenderer.cpp b/perftests/panorama/feature_mos/src/mosaic_renderer/YVURenderer.cpp
new file mode 100755
index 0000000..f7dcf6f
--- /dev/null
+++ b/perftests/panorama/feature_mos/src/mosaic_renderer/YVURenderer.cpp
@@ -0,0 +1,160 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+#include "YVURenderer.h"
+
+#include <GLES2/gl2ext.h>
+
+const GLfloat g_vVertices[] = {
+    -1.f, 1.f, 0.0f, 1.0f,  // Position 0
+    0.0f,  1.0f,         // TexCoord 0
+     1.f, 1.f, 0.0f, 1.0f, // Position 1
+    1.0f,  1.0f,         // TexCoord 1
+    -1.f, -1.f, 0.0f, 1.0f, // Position 2
+    0.0f,  0.0f,         // TexCoord 2
+    1.f,  -1.f, 0.0f, 1.0f, // Position 3
+    1.0f,  0.0f          // TexCoord 3
+};
+
+const int VERTEX_STRIDE = 6 * sizeof(GLfloat);
+
+GLushort g_iIndices3[] = { 0, 1, 2, 3 };
+
+YVURenderer::YVURenderer() : Renderer()
+                   {
+}
+
+YVURenderer::~YVURenderer() {
+}
+
+bool YVURenderer::InitializeGLProgram()
+{
+    bool succeeded = false;
+    do {
+        GLuint glProgram;
+        glProgram = createProgram(VertexShaderSource(),
+                FragmentShaderSource());
+        if (!glProgram) {
+            break;
+        }
+
+        glUseProgram(glProgram);
+        if (!checkGlError("glUseProgram")) break;
+
+        // Get attribute locations
+        mPositionLoc     = glGetAttribLocation(glProgram, "a_Position");
+        mTexCoordLoc     = glGetAttribLocation(glProgram, "a_texCoord");
+
+        // Get sampler location
+        mSamplerLoc      = glGetUniformLocation(glProgram, "s_texture");
+
+        mGlProgram = glProgram;
+        succeeded = true;
+    } while (false);
+
+    if (!succeeded && (mGlProgram != 0))
+    {
+        glDeleteProgram(mGlProgram);
+        checkGlError("glDeleteProgram");
+        mGlProgram = 0;
+    }
+    return succeeded;
+}
+
+bool YVURenderer::DrawTexture()
+{
+    bool succeeded = false;
+    do {
+        bool rt = (mFrameBuffer == NULL)?
+                SetupGraphics(mSurfaceWidth, mSurfaceHeight) :
+                SetupGraphics(mFrameBuffer);
+
+        if(!rt)
+            break;
+
+        glDisable(GL_BLEND);
+
+        glActiveTexture(GL_TEXTURE0);
+        if (!checkGlError("glActiveTexture")) break;
+
+        const GLenum texture_type = InputTextureType();
+        glBindTexture(texture_type, mInputTextureName);
+        if (!checkGlError("glBindTexture")) break;
+
+        // Set the sampler texture unit to 0
+        glUniform1i(mSamplerLoc, 0);
+
+        // Load the vertex position
+        glVertexAttribPointer(mPositionLoc, 4, GL_FLOAT,
+                GL_FALSE, VERTEX_STRIDE, g_vVertices);
+
+        // Load the texture coordinate
+        glVertexAttribPointer(mTexCoordLoc, 2, GL_FLOAT,
+                GL_FALSE, VERTEX_STRIDE, &g_vVertices[4]);
+
+        glEnableVertexAttribArray(mPositionLoc);
+        glEnableVertexAttribArray(mTexCoordLoc);
+
+        // And, finally, execute the GL draw command.
+        glDrawElements(GL_TRIANGLE_STRIP, 4, GL_UNSIGNED_SHORT, g_iIndices3);
+
+        checkGlError("glDrawElements");
+
+        glBindFramebuffer(GL_FRAMEBUFFER, 0);
+        succeeded = true;
+    } while (false);
+    return succeeded;
+}
+
+const char* YVURenderer::VertexShaderSource() const
+{
+    // All this really does is copy the coordinates into
+    // variables for the fragment shader to pick up.
+    static const char gVertexShader[] =
+        "attribute vec4 a_Position;\n"
+        "attribute vec2 a_texCoord;\n"
+        "varying vec2 v_texCoord;\n"
+        "void main() {\n"
+        "  gl_Position = a_Position;\n"
+        "  v_texCoord = a_texCoord;\n"
+        "}\n";
+
+    return gVertexShader;
+}
+
+const char* YVURenderer::FragmentShaderSource() const
+{
+    static const char gFragmentShader[] =
+        "precision mediump float;\n"
+        "uniform sampler2D s_texture;\n"
+        "const vec4 coeff_y = vec4(0.257, 0.594, 0.098, 0.063);\n"
+        "const vec4 coeff_v = vec4(0.439, -0.368, -0.071, 0.500);\n"
+        "const vec4 coeff_u = vec4(-0.148, -0.291, 0.439, 0.500);\n"
+        "varying vec2 v_texCoord;\n"
+        "void main() {\n"
+        "  vec4 p;\n"
+        "  p = texture2D(s_texture, v_texCoord);\n"
+        "  gl_FragColor[0] = dot(p, coeff_y);\n"
+        "  p = texture2D(s_texture, v_texCoord);\n"
+        "  gl_FragColor[1] = dot(p, coeff_v);\n"
+        "  p = texture2D(s_texture, v_texCoord);\n"
+        "  gl_FragColor[2] = dot(p, coeff_u);\n"
+        "  p = texture2D(s_texture, v_texCoord);\n"
+        "  gl_FragColor[3] = dot(p, coeff_y);\n"
+        "}\n";
+
+    return gFragmentShader;
+}
diff --git a/perftests/panorama/feature_mos/src/mosaic_renderer/YVURenderer.h b/perftests/panorama/feature_mos/src/mosaic_renderer/YVURenderer.h
new file mode 100755
index 0000000..d14a4b9
--- /dev/null
+++ b/perftests/panorama/feature_mos/src/mosaic_renderer/YVURenderer.h
@@ -0,0 +1,35 @@
+#pragma once
+
+#include "FrameBuffer.h"
+#include "Renderer.h"
+
+#include <GLES2/gl2.h>
+
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+class YVURenderer: public Renderer {
+  public:
+    YVURenderer();
+    virtual ~YVURenderer();
+
+    // Initialize OpenGL resources
+    // @return true if successful
+    bool InitializeGLProgram();
+
+    bool DrawTexture();
+
+ private:
+    // Source code for shaders.
+    const char* VertexShaderSource() const;
+    const char* FragmentShaderSource() const;
+
+    // Attribute locations
+    GLint  mPositionLoc;
+    GLint  mTexCoordLoc;
+
+    // Sampler location
+    GLint mSamplerLoc;
+};
+
diff --git a/perftests/panorama/feature_stab/db_vlvm/db_bundle.h b/perftests/panorama/feature_stab/db_vlvm/db_bundle.h
new file mode 100644
index 0000000..e4fb8db
--- /dev/null
+++ b/perftests/panorama/feature_stab/db_vlvm/db_bundle.h
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+/* $Id: db_bundle.h,v 1.2 2011/06/17 14:03:30 mbansal Exp $ */
+
+#ifndef DB_BUNDLE_H
+#define DB_BUNDLE_H
+
+
+/*****************************************************************
+*    Lean and mean begins here                                   *
+*****************************************************************/
+/*!
+ * \defgroup LMBundle (LM) Bundle adjustment utilities (a.k.a. Levenberg-Marquardt algorithm)
+ */
+/*\{*/
+
+#include "db_utilities.h"
+
+/*!
+Solve for update dx such that diagmult(1+lambda,transpose(J)%J)%dx= -Jtf
+using only upper half of JtJ, destroying lower half below diagonal in the process
+dimension is n and d should point to n allocated doubles of scratch memory
+*/
+inline void db_Compute_dx(double *dx,double **JtJ,double *min_Jtf,double lambda,double *d,int n)
+{
+    int i;
+    double opl;
+
+    opl=1.0+lambda;
+    for(i=0;i<n;i++) d[i]=JtJ[i][i]*opl;
+
+    db_CholeskyDecompSeparateDiagonal(JtJ,d,n);
+    db_CholeskyBacksub(dx,JtJ,d,n,min_Jtf);
+}
+
+/*!
+Solve for update dx such that diagmult(1+lambda,transpose(J)%J)%dx= -Jtf
+using only upper half of JtJ, destroying lower half below diagonal in the process
+*/
+inline void db_Compute_dx_3x3(double dx[3],double JtJ[9],const double min_Jtf[3],double lambda)
+{
+    double d[3],opl;
+
+    opl=1.0+lambda;
+    d[0]=JtJ[0]*opl;
+    d[1]=JtJ[4]*opl;
+    d[2]=JtJ[8]*opl;
+    db_CholeskyDecomp3x3SeparateDiagonal(JtJ,d);
+    db_CholeskyBacksub3x3(dx,JtJ,d,min_Jtf);
+}
+
+/*\}*/
+
+#endif /* DB_BUNDLE_H */
diff --git a/perftests/panorama/feature_stab/db_vlvm/db_feature_detection.cpp b/perftests/panorama/feature_stab/db_vlvm/db_feature_detection.cpp
new file mode 100644
index 0000000..28cb4a7
--- /dev/null
+++ b/perftests/panorama/feature_stab/db_vlvm/db_feature_detection.cpp
@@ -0,0 +1,1770 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+/*$Id: db_feature_detection.cpp,v 1.4 2011/06/17 14:03:30 mbansal Exp $*/
+
+/*****************************************************************
+*    Lean and mean begins here                                   *
+*****************************************************************/
+
+#include "db_utilities.h"
+#include "db_feature_detection.h"
+#ifdef _VERBOSE_
+#include <iostream>
+#endif
+#include <float.h>
+
+#define DB_SUB_PIXEL
+
+#define BORDER 10 // 5
+
+float** db_AllocStrengthImage_f(float **im,int w,int h)
+{
+    int i,n,aw;
+    long c,size;
+    float **img,*aim,*p;
+
+    /*Determine number of 124 element chunks needed*/
+    n=(db_maxi(1,w-6)+123)/124;
+    /*Determine the total allocation width aw*/
+    aw=n*124+8;
+    /*Allocate*/
+    size=aw*h+16;
+    *im=new float [size];
+    /*Clean up*/
+    p=(*im);
+    for(c=0;c<size;c++) p[c]=0.0;
+    /*Get a 16 byte aligned pointer*/
+    aim=db_AlignPointer_f(*im,16);
+    /*Allocate pointer table*/
+    img=new float* [h];
+    /*Initialize the pointer table*/
+    for(i=0;i<h;i++)
+    {
+        img[i]=aim+aw*i+1;
+    }
+
+    return(img);
+}
+
+void db_FreeStrengthImage_f(float *im,float **img,int h)
+{
+    delete [] im;
+    delete [] img;
+}
+
+/*Compute derivatives Ix,Iy for a subrow of img with upper left (i,j) and width chunk_width
+Memory references occur one pixel outside the subrow*/
+inline void db_IxIyRow_f(float *Ix,float *Iy,const float * const *img,int i,int j,int chunk_width)
+{
+    int c;
+
+    for(c=0;c<chunk_width;c++)
+    {
+        Ix[c]=img[i][j+c-1]-img[i][j+c+1];
+        Iy[c]=img[i-1][j+c]-img[i+1][j+c];
+    }
+}
+
+/*Compute derivatives Ix,Iy for a subrow of img with upper left (i,j) and width 128
+Memory references occur one pixel outside the subrow*/
+inline void db_IxIyRow_u(int *dxx,const unsigned char * const *img,int i,int j,int nc)
+{
+#ifdef DB_USE_MMX
+    const unsigned char *r1,*r2,*r3;
+
+    r1=img[i-1]+j; r2=img[i]+j; r3=img[i+1]+j;
+
+    _asm
+    {
+        mov esi,16
+        mov eax,r1
+        mov ebx,r2
+        mov ecx,r3
+        mov edx,dxx
+
+        /*Get bitmask into mm7*/
+        mov       edi,7F7F7F7Fh
+        movd      mm7,edi
+        punpckldq mm7,mm7
+
+loopstart:
+        /***************dx part 1-12*********************************/
+        movq       mm0,[eax]       /*1 Get upper*/
+         pxor      mm6,mm6         /*2 Set to zero*/
+        movq       mm1,[ecx]       /*3 Get lower*/
+         psrlq     mm0,1           /*4 Shift*/
+        psrlq      mm1,1           /*5 Shift*/
+         pand      mm0,mm7         /*6 And*/
+        movq       mm2,[ebx-1]     /*13 Get left*/
+         pand      mm1,mm7         /*7 And*/
+        psubb      mm0,mm1         /*8 Subtract*/
+         pxor      mm5,mm5         /*14 Set to zero*/
+        movq       mm1,mm0         /*9 Copy*/
+         pcmpgtb   mm6,mm0         /*10 Create unpack mask*/
+        movq       mm3,[ebx+1]     /*15 Get right*/
+         punpcklbw mm0,mm6         /*11 Unpack low*/
+        punpckhbw  mm1,mm6         /*12 Unpack high*/
+        /***************dy part 13-24*********************************/
+         movq      mm4,mm0         /*25 Copy dx*/
+        psrlq      mm2,1           /*16 Shift*/
+         pmullw    mm0,mm0         /*26 Multiply dx*dx*/
+        psrlq      mm3,1           /*17 Shift*/
+         pand      mm2,mm7         /*18 And*/
+        pand       mm3,mm7         /*19 And*/
+         /*Stall*/
+        psubb      mm2,mm3         /*20 Subtract*/
+         /*Stall*/
+        movq       mm3,mm2         /*21 Copy*/
+         pcmpgtb   mm5,mm2         /*22 Create unpack mask*/
+        punpcklbw  mm2,mm5         /*23 Unpack low*/
+         /*Stall*/
+        punpckhbw  mm3,mm5         /*24 Unpack high*/
+        /***************dxx dxy dyy low part 25-49*********************************/
+         pmullw    mm4,mm2         /*27 Multiply dx*dy*/
+        pmullw     mm2,mm2         /*28 Multiply dy*dy*/
+         pxor      mm6,mm6         /*29 Set to zero*/
+        movq       mm5,mm0         /*30 Copy dx*dx*/
+         pcmpgtw   mm6,mm0         /*31 Create unpack mask for dx*dx*/
+        punpcklwd  mm0,mm6         /*32 Unpack dx*dx lows*/
+         /*Stall*/
+        punpckhwd  mm5,mm6         /*33 Unpack dx*dx highs*/
+         pxor      mm6,mm6         /*36 Set to zero*/
+        movq       [edx],mm0       /*34 Store dx*dx lows*/
+         movq      mm0,mm4         /*37 Copy dx*dy*/
+        movq       [edx+8],mm5     /*35 Store dx*dx highs*/
+         pcmpgtw   mm6,mm4         /*38 Create unpack mask for dx*dy*/
+        punpcklwd  mm4,mm6         /*39 Unpack dx*dy lows*/
+         /*Stall*/
+        punpckhwd  mm0,mm6         /*40 Unpack dx*dy highs*/
+         pxor      mm6,mm6         /*43 Set to zero*/
+        movq       [edx+512],mm4   /*41 Store dx*dy lows*/
+         movq      mm5,mm2         /*44 Copy dy*dy*/
+        movq       [edx+520],mm0   /*42 Store dx*dy highs*/
+         pcmpgtw   mm6,mm2         /*45 Create unpack mask for dy*dy*/
+        punpcklwd  mm2,mm6         /*46 Unpack dy*dy lows*/
+         movq      mm4,mm1         /*50 Copy dx*/
+        punpckhwd  mm5,mm6         /*47 Unpack dy*dy highs*/
+         pmullw    mm1,mm1         /*51 Multiply dx*dx*/
+        movq       [edx+1024],mm2  /*48 Store dy*dy lows*/
+         pmullw    mm4,mm3         /*52 Multiply dx*dy*/
+        movq       [edx+1032],mm5  /*49 Store dy*dy highs*/
+        /***************dxx dxy dyy high part 50-79*********************************/
+         pmullw    mm3,mm3         /*53 Multiply dy*dy*/
+        pxor       mm6,mm6         /*54 Set to zero*/
+         movq      mm5,mm1         /*55 Copy dx*dx*/
+        pcmpgtw    mm6,mm1         /*56 Create unpack mask for dx*dx*/
+         pxor      mm2,mm2         /*61 Set to zero*/
+        punpcklwd  mm1,mm6         /*57 Unpack dx*dx lows*/
+         movq      mm0,mm4         /*62 Copy dx*dy*/
+        punpckhwd  mm5,mm6         /*58 Unpack dx*dx highs*/
+         pcmpgtw   mm2,mm4         /*63 Create unpack mask for dx*dy*/
+        movq       [edx+16],mm1    /*59 Store dx*dx lows*/
+         punpcklwd mm4,mm2         /*64 Unpack dx*dy lows*/
+        movq       [edx+24],mm5    /*60 Store dx*dx highs*/
+         punpckhwd mm0,mm2         /*65 Unpack dx*dy highs*/
+        movq       [edx+528],mm4   /*66 Store dx*dy lows*/
+         pxor      mm6,mm6         /*68 Set to zero*/
+        movq       [edx+536],mm0   /*67 Store dx*dy highs*/
+         movq      mm5,mm3         /*69 Copy dy*dy*/
+        pcmpgtw    mm6,mm3         /*70 Create unpack mask for dy*dy*/
+         add       eax,8           /*75*/
+        punpcklwd  mm3,mm6         /*71 Unpack dy*dy lows*/
+         add       ebx,8           /*76*/
+        punpckhwd  mm5,mm6         /*72 Unpack dy*dy highs*/
+         add       ecx,8           /*77*/
+        movq       [edx+1040],mm3  /*73 Store dy*dy lows*/
+         /*Stall*/
+        movq       [edx+1048],mm5  /*74 Store dy*dy highs*/
+         /*Stall*/
+        add        edx,32          /*78*/
+         dec esi                   /*79*/
+        jnz loopstart
+
+        emms
+    }
+
+#else
+    int c;
+    int Ix,Iy;
+
+    for(c=0;c<nc;c++)
+    {
+        Ix=(img[i][j+c-1]-img[i][j+c+1])>>1;
+        Iy=(img[i-1][j+c]-img[i+1][j+c])>>1;
+        dxx[c]=Ix*Ix;
+        dxx[c+128]=Ix*Iy;
+        dxx[c+256]=Iy*Iy;
+    }
+#endif /*DB_USE_MMX*/
+}
+
+/*Filter vertically five rows of derivatives of length chunk_width into gxx,gxy,gyy*/
+inline void db_gxx_gxy_gyy_row_f(float *gxx,float *gxy,float *gyy,int chunk_width,
+                                 float *Ix0,float *Ix1,float *Ix2,float *Ix3,float *Ix4,
+                                 float *Iy0,float *Iy1,float *Iy2,float *Iy3,float *Iy4)
+{
+    int c;
+    float dx,dy;
+    float Ixx0,Ixy0,Iyy0,Ixx1,Ixy1,Iyy1,Ixx2,Ixy2,Iyy2,Ixx3,Ixy3,Iyy3,Ixx4,Ixy4,Iyy4;
+
+    for(c=0;c<chunk_width;c++)
+    {
+        dx=Ix0[c];
+        dy=Iy0[c];
+        Ixx0=dx*dx;
+        Ixy0=dx*dy;
+        Iyy0=dy*dy;
+
+        dx=Ix1[c];
+        dy=Iy1[c];
+        Ixx1=dx*dx;
+        Ixy1=dx*dy;
+        Iyy1=dy*dy;
+
+        dx=Ix2[c];
+        dy=Iy2[c];
+        Ixx2=dx*dx;
+        Ixy2=dx*dy;
+        Iyy2=dy*dy;
+
+        dx=Ix3[c];
+        dy=Iy3[c];
+        Ixx3=dx*dx;
+        Ixy3=dx*dy;
+        Iyy3=dy*dy;
+
+        dx=Ix4[c];
+        dy=Iy4[c];
+        Ixx4=dx*dx;
+        Ixy4=dx*dy;
+        Iyy4=dy*dy;
+
+        /*Filter vertically*/
+        gxx[c]=Ixx0+Ixx1*4.0f+Ixx2*6.0f+Ixx3*4.0f+Ixx4;
+        gxy[c]=Ixy0+Ixy1*4.0f+Ixy2*6.0f+Ixy3*4.0f+Ixy4;
+        gyy[c]=Iyy0+Iyy1*4.0f+Iyy2*6.0f+Iyy3*4.0f+Iyy4;
+    }
+}
+
+/*Filter vertically five rows of derivatives of length 128 into gxx,gxy,gyy*/
+inline void db_gxx_gxy_gyy_row_s(int *g,int *d0,int *d1,int *d2,int *d3,int *d4,int nc)
+{
+#ifdef DB_USE_MMX
+    int c;
+
+    _asm
+    {
+        mov c,64
+        mov eax,d0
+        mov ebx,d1
+        mov ecx,d2
+        mov edx,d3
+        mov edi,d4
+        mov esi,g
+
+loopstart:
+        /***************dxx part 1-14*********************************/
+        movq        mm0,[eax]      /*1 Get dxx0*/
+         /*Stall*/
+        movq        mm1,[ebx]      /*2 Get dxx1*/
+         /*Stall*/
+        movq        mm2,[ecx]      /*5 Get dxx2*/
+         pslld      mm1,2          /*3 Shift dxx1*/
+        movq        mm3,[edx]      /*10 Get dxx3*/
+         paddd      mm0,mm1        /*4 Accumulate dxx1*/
+        movq        mm4,[eax+512]  /*15 Get dxy0*/
+         pslld      mm2,1          /*6 Shift dxx2 1*/
+        paddd       mm0,mm2        /*7 Accumulate dxx2 1*/
+         pslld      mm2,1          /*8 Shift dxx2 2*/
+        movq        mm5,[ebx+512]  /*16 Get dxy1*/
+         paddd      mm0,mm2        /*9 Accumulate dxx2 2*/
+        pslld       mm3,2          /*11 Shift dxx3*/
+         /*Stall*/
+        paddd       mm0,mm3        /*12 Accumulate dxx3*/
+         pslld      mm5,2          /*17 Shift dxy1*/
+        paddd       mm0,[edi]      /*13 Accumulate dxx4*/
+         paddd      mm4,mm5        /*18 Accumulate dxy1*/
+        movq        mm6,[ecx+512]  /*19 Get dxy2*/
+         /*Stall*/
+        movq        [esi],mm0      /*14 Store dxx sums*/
+        /***************dxy part 15-28*********************************/
+         pslld      mm6,1          /*20 Shift dxy2 1*/
+        paddd       mm4,mm6        /*21 Accumulate dxy2 1*/
+         pslld      mm6,1          /*22 Shift dxy2 2*/
+        movq        mm0,[eax+1024] /*29 Get dyy0*/
+         paddd      mm4,mm6        /*23 Accumulate dxy2 2*/
+        movq        mm7,[edx+512]  /*24 Get dxy3*/
+         pslld      mm7,2          /*25 Shift dxy3*/
+        movq        mm1,[ebx+1024] /*30 Get dyy1*/
+         paddd      mm4,mm7        /*26 Accumulate dxy3*/
+        paddd       mm4,[edi+512]  /*27 Accumulate dxy4*/
+         pslld      mm1,2          /*31 Shift dyy1*/
+        movq        mm2,[ecx+1024] /*33 Get dyy2*/
+         paddd      mm0,mm1        /*32 Accumulate dyy1*/
+        movq        [esi+512],mm4  /*28 Store dxy sums*/
+         pslld      mm2,1          /*34 Shift dyy2 1*/
+        /***************dyy part 29-49*********************************/
+
+
+        movq        mm3,[edx+1024] /*38 Get dyy3*/
+         paddd      mm0,mm2        /*35 Accumulate dyy2 1*/
+        paddd       mm0,[edi+1024] /*41 Accumulate dyy4*/
+         pslld      mm2,1          /*36 Shift dyy2 2*/
+        paddd       mm0,mm2        /*37 Accumulate dyy2 2*/
+         pslld      mm3,2          /*39 Shift dyy3*/
+        paddd       mm0,mm3        /*40 Accumulate dyy3*/
+         add        eax,8           /*43*/
+        add         ebx,8           /*44*/
+         add        ecx,8           /*45*/
+        movq        [esi+1024],mm0 /*42 Store dyy sums*/
+         /*Stall*/
+        add         edx,8           /*46*/
+         add        edi,8           /*47*/
+        add         esi,8           /*48*/
+         dec        c               /*49*/
+        jnz         loopstart
+
+        emms
+    }
+
+#else
+    int c,dd;
+
+    for(c=0;c<nc;c++)
+    {
+        /*Filter vertically*/
+        dd=d2[c];
+        g[c]=d0[c]+(d1[c]<<2)+(dd<<2)+(dd<<1)+(d3[c]<<2)+d4[c];
+
+        dd=d2[c+128];
+        g[c+128]=d0[c+128]+(d1[c+128]<<2)+(dd<<2)+(dd<<1)+(d3[c+128]<<2)+d4[c+128];
+
+        dd=d2[c+256];
+        g[c+256]=d0[c+256]+(d1[c+256]<<2)+(dd<<2)+(dd<<1)+(d3[c+256]<<2)+d4[c+256];
+    }
+#endif /*DB_USE_MMX*/
+}
+
+/*Filter horizontally the three rows gxx,gxy,gyy into the strength subrow starting at i,j
+and with width chunk_width. gxx,gxy and gyy are assumed to be four pixels wider than chunk_width
+and starting at (i,j-2)*/
+inline void db_HarrisStrength_row_f(float **s,float *gxx,float *gxy,float *gyy,int i,int j,int chunk_width)
+{
+    float Gxx,Gxy,Gyy,det,trc;
+    int c;
+
+    for(c=0;c<chunk_width;c++)
+    {
+        Gxx=gxx[c]+gxx[c+1]*4.0f+gxx[c+2]*6.0f+gxx[c+3]*4.0f+gxx[c+4];
+        Gxy=gxy[c]+gxy[c+1]*4.0f+gxy[c+2]*6.0f+gxy[c+3]*4.0f+gxy[c+4];
+        Gyy=gyy[c]+gyy[c+1]*4.0f+gyy[c+2]*6.0f+gyy[c+3]*4.0f+gyy[c+4];
+
+        det=Gxx*Gyy-Gxy*Gxy;
+        trc=Gxx+Gyy;
+        s[i][j+c]=det-0.06f*trc*trc;
+    }
+}
+
+/*Filter g of length 128 in place with 14641. Output is shifted two steps
+and of length 124*/
+inline void db_Filter14641_128_i(int *g,int nc)
+{
+#ifdef DB_USE_MMX
+    int mask;
+
+    mask=0xFFFFFFFF;
+    _asm
+    {
+        mov esi,31
+        mov eax,g
+
+        /*Get bitmask 00000000FFFFFFFF into mm7*/
+        movd mm7,mask
+
+        /*Warming iteration one 1-16********************/
+        movq       mm6,[eax]      /*1 Load new data*/
+        paddd      mm0,mm6        /*2 Add 1* behind two steps*/
+        movq       mm2,mm6        /*3 Start with 1* in front two steps*/
+        pslld      mm6,1          /*4*/
+        paddd      mm1,mm6        /*5 Add 2* same place*/
+        pslld      mm6,1          /*6*/
+        paddd      mm1,mm6        /*7 Add 4* same place*/
+        pshufw     mm6,mm6,4Eh    /*8 Swap the two double-words using bitmask 01001110=4Eh*/
+        paddd      mm1,mm6        /*9 Add 4* swapped*/
+        movq       mm5,mm6        /*10 Copy*/
+        pand       mm6,mm7        /*11 Get low double-word only*/
+        paddd      mm2,mm6        /*12 Add 4* in front one step*/
+        pxor       mm6,mm5        /*13 Get high double-word only*/
+        paddd      mm0,mm6        /*14 Add 4* behind one step*/
+        movq       mm0,mm1        /*15 Shift along*/
+        movq       mm1,mm2        /*16 Shift along*/
+        /*Warming iteration two 17-32********************/
+        movq       mm4,[eax+8]    /*17 Load new data*/
+        paddd      mm0,mm4        /*18 Add 1* behind two steps*/
+        movq       mm2,mm4        /*19 Start with 1* in front two steps*/
+        pslld      mm4,1          /*20*/
+        paddd      mm1,mm4        /*21 Add 2* same place*/
+        pslld      mm4,1          /*22*/
+        paddd      mm1,mm4        /*23 Add 4* same place*/
+        pshufw     mm4,mm4,4Eh    /*24 Swap the two double-words using bitmask 01001110=4Eh*/
+        paddd      mm1,mm4        /*25 Add 4* swapped*/
+        movq       mm3,mm4        /*26 Copy*/
+        pand       mm4,mm7        /*27 Get low double-word only*/
+        paddd      mm2,mm4        /*28 Add 4* in front one step*/
+        pxor       mm4,mm3        /*29 Get high double-word only*/
+        paddd      mm0,mm4        /*30 Add 4* behind one step*/
+        movq       mm0,mm1        /*31 Shift along*/
+        movq       mm1,mm2        /*32 Shift along*/
+
+        /*Loop********************/
+loopstart:
+        /*First part of loop 33-47********/
+        movq        mm6,[eax+16]   /*33 Load new data*/
+         /*Stall*/
+        paddd       mm0,mm6        /*34 Add 1* behind two steps*/
+         movq       mm2,mm6        /*35 Start with 1* in front two steps*/
+        movq        mm4,[eax+24]   /*48 Load new data*/
+         pslld      mm6,1          /*36*/
+        paddd       mm1,mm6        /*37 Add 2* same place*/
+         pslld      mm6,1          /*38*/
+        paddd       mm1,mm6        /*39 Add 4* same place*/
+         pshufw     mm6,mm6,4Eh    /*40 Swap the two double-words using bitmask 01001110=4Eh*/
+        paddd       mm1,mm4        /*49 Add 1* behind two steps*/
+         movq       mm5,mm6        /*41 Copy*/
+        paddd       mm1,mm6        /*42 Add 4* swapped*/
+         pand       mm6,mm7        /*43 Get low double-word only*/
+        paddd       mm2,mm6        /*44 Add 4* in front one step*/
+         pxor       mm6,mm5        /*45 Get high double-word only*/
+        paddd       mm0,mm6        /*46 Add 4* behind one step*/
+         movq       mm6,mm4        /*50a Copy*/
+        pslld       mm4,1          /*51*/
+         /*Stall*/
+        movq        [eax],mm0      /*47 Store result two steps behind*/
+        /*Second part of loop 48-66********/
+         movq       mm0,mm6        /*50b Start with 1* in front two steps*/
+        paddd       mm2,mm4        /*52 Add 2* same place*/
+         pslld      mm4,1          /*53*/
+        paddd       mm2,mm4        /*54 Add 4* same place*/
+         pshufw     mm4,mm4,4Eh    /*55 Swap the two double-words using bitmask 01001110=4Eh*/
+        paddd       mm2,mm4        /*56 Add 4* swapped*/
+         movq       mm3,mm4        /*57 Copy*/
+        pand        mm4,mm7        /*58 Get low double-word only*/
+         /*Stall*/
+        paddd       mm0,mm4        /*59 Add 4* in front one step*/
+         pxor       mm4,mm3        /*60 Get high double-word only*/
+        paddd       mm1,mm4        /*61 Add 4* behind one step*/
+         add        eax,16         /*65*/
+        dec         esi            /*66*/
+         /*Stall*/
+        movq        [eax-8],mm1    /*62 Store result two steps behind*/
+         movq       mm1,mm0        /*63 Shift along*/
+        movq        mm0,mm2        /*64 Shift along*/
+        jnz loopstart
+
+        emms
+    }
+
+#else
+    int c;
+
+    for(c=0;c<nc-4;c++)
+    {
+        g[c]=g[c]+(g[c+1]<<2)+(g[c+2]<<2)+(g[c+2]<<1)+(g[c+3]<<2)+g[c+4];
+    }
+#endif /*DB_USE_MMX*/
+}
+
+/*Filter horizontally the three rows gxx,gxy,gyy of length 128 into the strength subrow s
+of length 124. gxx,gxy and gyy are assumed to be starting at (i,j-2) if s[i][j] is sought.
+s should be 16 byte aligned*/
+inline void db_HarrisStrength_row_s(float *s,int *gxx,int *gxy,int *gyy,int nc)
+{
+    float k;
+
+    k=0.06f;
+
+    db_Filter14641_128_i(gxx,nc);
+    db_Filter14641_128_i(gxy,nc);
+    db_Filter14641_128_i(gyy,nc);
+
+#ifdef DB_USE_SIMD
+
+
+    _asm
+    {
+        mov esi,15
+        mov eax,gxx
+        mov ebx,gxy
+        mov ecx,gyy
+        mov edx,s
+
+        /*broadcast k to all positions of xmm7*/
+        movss   xmm7,k
+        shufps  xmm7,xmm7,0
+
+        /*****Warm up 1-10**************************************/
+        cvtpi2ps  xmm0,[eax+8] /*1 Convert two integers into floating point of low double-word*/
+         /*Stall*/
+        cvtpi2ps  xmm1,[ebx+8] /*4 Convert two integers into floating point of low double-word*/
+         movlhps  xmm0,xmm0    /*2 Move them to the high double-word*/
+        cvtpi2ps  xmm2,[ecx+8] /*7 Convert two integers into floating point of low double-word*/
+         movlhps  xmm1,xmm1    /*5 Move them to the high double-word*/
+        cvtpi2ps  xmm0,[eax]   /*3 Convert two integers into floating point of low double-word*/
+         movlhps  xmm2,xmm2    /*8 Move them to the high double-word*/
+        cvtpi2ps  xmm1,[ebx]   /*6 Convert two integers into floating point of low double-word*/
+         movaps   xmm3,xmm0    /*10 Copy Cxx*/
+        cvtpi2ps  xmm2,[ecx]   /*9 Convert two integers into floating point of low double-word*/
+         /*Stall*/
+loopstart:
+        /*****First part of loop 11-18***********************/
+        mulps     xmm0,xmm2     /*11 Multiply to get Gxx*Gyy*/
+         addps    xmm2,xmm3     /*12 Add to get Gxx+Gyy*/
+        cvtpi2ps  xmm4,[eax+24] /*19 Convert two integers into floating point of low double-word*/
+         mulps    xmm1,xmm1     /*13 Multiply to get Gxy*Gxy*/
+        mulps     xmm2,xmm2     /*14 Multiply to get (Gxx+Gyy)*(Gxx+Gyy)*/
+         movlhps  xmm4,xmm4     /*20 Move them to the high double-word*/
+        cvtpi2ps  xmm4,[eax+16] /*21 Convert two integers into floating point of low double-word*/
+         /*Stall*/
+        subps     xmm0,xmm1     /*15 Subtract to get Gxx*Gyy-Gxy*Gxy*/
+         mulps    xmm2,xmm7     /*16 Multiply to get k*(Gxx+Gyy)*(Gxx+Gyy)*/
+        cvtpi2ps  xmm5,[ebx+24] /*22 Convert two integers into floating point of low double-word*/
+         /*Stall*/
+        movlhps   xmm5,xmm5     /*23 Move them to the high double-word*/
+         /*Stall*/
+        cvtpi2ps  xmm5,[ebx+16] /*24 Convert two integers into floating point of low double-word*/
+         subps    xmm0,xmm2     /*17 Subtract to get Gxx*Gyy-Gxy*Gxy-k*(Gxx+Gyy)*(Gxx+Gyy)*/
+        cvtpi2ps  xmm6,[ecx+24] /*25 Convert two integers into floating point of low double-word*/
+         /*Stall*/
+        movaps    [edx],xmm0    /*18 Store*/
+        /*****Second part of loop 26-40***********************/
+         movlhps  xmm6,xmm6     /*26 Move them to the high double-word*/
+        cvtpi2ps  xmm6,[ecx+16] /*27 Convert two integers into floating point of low double-word*/
+         movaps   xmm3,xmm4     /*28 Copy Cxx*/
+        mulps     xmm4,xmm6     /*29 Multiply to get Gxx*Gyy*/
+         addps    xmm6,xmm3     /*30 Add to get Gxx+Gyy*/
+        cvtpi2ps  xmm0,[eax+40] /*(1 Next) Convert two integers into floating point of low double-word*/
+         mulps    xmm5,xmm5     /*31 Multiply to get Gxy*Gxy*/
+        cvtpi2ps  xmm1,[ebx+40] /*(4 Next) Convert two integers into floating point of low double-word*/
+         mulps    xmm6,xmm6     /*32 Multiply to get (Gxx+Gyy)*(Gxx+Gyy)*/
+        cvtpi2ps  xmm2,[ecx+40] /*(7 Next) Convert two integers into floating point of low double-word*/
+         movlhps  xmm0,xmm0     /*(2 Next) Move them to the high double-word*/
+        subps     xmm4,xmm5     /*33 Subtract to get Gxx*Gyy-Gxy*Gxy*/
+         movlhps  xmm1,xmm1     /*(5 Next) Move them to the high double-word*/
+        cvtpi2ps  xmm0,[eax+32] /*(3 Next)Convert two integers into floating point of low double-word*/
+         mulps    xmm6,xmm7     /*34 Multiply to get k*(Gxx+Gyy)*(Gxx+Gyy)*/
+        cvtpi2ps  xmm1,[ebx+32] /*(6 Next) Convert two integers into floating point of low double-word*/
+         movlhps  xmm2,xmm2     /*(8 Next) Move them to the high double-word*/
+        movaps    xmm3,xmm0     /*(10 Next) Copy Cxx*/
+         add      eax,32        /*37*/
+        subps     xmm4,xmm6     /*35 Subtract to get Gxx*Gyy-Gxy*Gxy-k*(Gxx+Gyy)*(Gxx+Gyy)*/
+         add      ebx,32        /*38*/
+        cvtpi2ps  xmm2,[ecx+32] /*(9 Next) Convert two integers into floating point of low double-word*/
+         /*Stall*/
+        movaps    [edx+16],xmm4 /*36 Store*/
+         /*Stall*/
+        add       ecx,32        /*39*/
+         add      edx,32        /*40*/
+        dec       esi           /*41*/
+        jnz loopstart
+
+        /****Cool down***************/
+        mulps    xmm0,xmm2    /*Multiply to get Gxx*Gyy*/
+        addps    xmm2,xmm3    /*Add to get Gxx+Gyy*/
+        mulps    xmm1,xmm1    /*Multiply to get Gxy*Gxy*/
+        mulps    xmm2,xmm2    /*Multiply to get (Gxx+Gyy)*(Gxx+Gyy)*/
+        subps    xmm0,xmm1    /*Subtract to get Gxx*Gyy-Gxy*Gxy*/
+        mulps    xmm2,xmm7    /*Multiply to get k*(Gxx+Gyy)*(Gxx+Gyy)*/
+        subps    xmm0,xmm2    /*Subtract to get Gxx*Gyy-Gxy*Gxy-k*(Gxx+Gyy)*(Gxx+Gyy)*/
+        movaps   [edx],xmm0   /*Store*/
+    }
+
+#else
+    float Gxx,Gxy,Gyy,det,trc;
+    int c;
+
+    //for(c=0;c<124;c++)
+    for(c=0;c<nc-4;c++)
+    {
+        Gxx=(float)gxx[c];
+        Gxy=(float)gxy[c];
+        Gyy=(float)gyy[c];
+
+        det=Gxx*Gyy-Gxy*Gxy;
+        trc=Gxx+Gyy;
+        s[c]=det-k*trc*trc;
+    }
+#endif /*DB_USE_SIMD*/
+}
+
+/*Compute the Harris corner strength of the chunk [left,top,right,bottom] of img and
+store it into the corresponding region of s. left and top have to be at least 3 and
+right and bottom have to be at most width-4,height-4*/
+inline void db_HarrisStrengthChunk_f(float **s,const float * const *img,int left,int top,int right,int bottom,
+                                      /*temp should point to at least
+                                      13*(right-left+5) of allocated memory*/
+                                      float *temp)
+{
+    float *Ix[5],*Iy[5];
+    float *gxx,*gxy,*gyy;
+    int i,chunk_width,chunk_width_p4;
+
+    chunk_width=right-left+1;
+    chunk_width_p4=chunk_width+4;
+    gxx=temp;
+    gxy=gxx+chunk_width_p4;
+    gyy=gxy+chunk_width_p4;
+    for(i=0;i<5;i++)
+    {
+        Ix[i]=gyy+chunk_width_p4+(2*i*chunk_width_p4);
+        Iy[i]=Ix[i]+chunk_width_p4;
+    }
+
+    /*Fill four rows of the wrap-around derivative buffers*/
+    for(i=top-2;i<top+2;i++) db_IxIyRow_f(Ix[i%5],Iy[i%5],img,i,left-2,chunk_width_p4);
+
+    /*For each output row*/
+    for(i=top;i<=bottom;i++)
+    {
+        /*Step the derivative buffers*/
+        db_IxIyRow_f(Ix[(i+2)%5],Iy[(i+2)%5],img,(i+2),left-2,chunk_width_p4);
+
+        /*Filter Ix2,IxIy,Iy2 vertically into gxx,gxy,gyy*/
+        db_gxx_gxy_gyy_row_f(gxx,gxy,gyy,chunk_width_p4,
+                                 Ix[(i-2)%5],Ix[(i-1)%5],Ix[i%5],Ix[(i+1)%5],Ix[(i+2)%5],
+                                 Iy[(i-2)%5],Iy[(i-1)%5],Iy[i%5],Iy[(i+1)%5],Iy[(i+2)%5]);
+
+        /*Filter gxx,gxy,gyy horizontally and compute corner response s*/
+        db_HarrisStrength_row_f(s,gxx,gxy,gyy,i,left,chunk_width);
+    }
+}
+
+/*Compute the Harris corner strength of the chunk [left,top,left+123,bottom] of img and
+store it into the corresponding region of s. left and top have to be at least 3 and
+right and bottom have to be at most width-4,height-4. The left of the region in s should
+be 16 byte aligned*/
+inline void db_HarrisStrengthChunk_u(float **s,const unsigned char * const *img,int left,int top,int bottom,
+                                      /*temp should point to at least
+                                      18*128 of allocated memory*/
+                                      int *temp, int nc)
+{
+    int *Ixx[5],*Ixy[5],*Iyy[5];
+    int *gxx,*gxy,*gyy;
+    int i;
+
+    gxx=temp;
+    gxy=gxx+128;
+    gyy=gxy+128;
+    for(i=0;i<5;i++)
+    {
+        Ixx[i]=gyy+(3*i+1)*128;
+        Ixy[i]=gyy+(3*i+2)*128;
+        Iyy[i]=gyy+(3*i+3)*128;
+    }
+
+    /*Fill four rows of the wrap-around derivative buffers*/
+    for(i=top-2;i<top+2;i++) db_IxIyRow_u(Ixx[i%5],img,i,left-2,nc);
+
+    /*For each output row*/
+    for(i=top;i<=bottom;i++)
+    {
+        /*Step the derivative buffers*/
+        db_IxIyRow_u(Ixx[(i+2)%5],img,(i+2),left-2,nc);
+
+        /*Filter Ix2,IxIy,Iy2 vertically into gxx,gxy,gyy*/
+        db_gxx_gxy_gyy_row_s(gxx,Ixx[(i-2)%5],Ixx[(i-1)%5],Ixx[i%5],Ixx[(i+1)%5],Ixx[(i+2)%5],nc);
+
+        /*Filter gxx,gxy,gyy horizontally and compute corner response s*/
+        db_HarrisStrength_row_s(s[i]+left,gxx,gxy,gyy,nc);
+    }
+
+}
+
+/*Compute Harris corner strength of img. Strength is returned for the region
+with (3,3) as upper left and (w-4,h-4) as lower right, positioned in the
+same place in s. In other words,image should be at least 7 pixels wide and 7 pixels high
+for a meaningful result*/
+void db_HarrisStrength_f(float **s,const float * const *img,int w,int h,
+                                    /*temp should point to at least
+                                    13*(chunk_width+4) of allocated memory*/
+                                    float *temp,
+                                    int chunk_width)
+{
+    int x,next_x,last,right;
+
+    last=w-4;
+    for(x=3;x<=last;x=next_x)
+    {
+        next_x=x+chunk_width;
+        right=next_x-1;
+        if(right>last) right=last;
+        /*Compute the Harris strength of a chunk*/
+        db_HarrisStrengthChunk_f(s,img,x,3,right,h-4,temp);
+    }
+}
+
+/*Compute Harris corner strength of img. Strength is returned for the region
+with (3,3) as upper left and (w-4,h-4) as lower right, positioned in the
+same place in s. In other words,image should be at least 7 pixels wide and 7 pixels high
+for a meaningful result.Moreover, the image should be overallocated by 256 bytes.
+s[i][3] should by 16 byte aligned for any i*/
+void db_HarrisStrength_u(float **s, const unsigned char * const *img,int w,int h,
+                                    /*temp should point to at least
+                                    18*128 of allocated memory*/
+                                    int *temp)
+{
+    int x,next_x,last;
+    int nc;
+
+    last=w-4;
+    for(x=3;x<=last;x=next_x)
+    {
+        next_x=x+124;
+
+        // mayban: to revert to the original full chunks state, change the line below to: nc = 128;
+        nc = db_mini(128,last-x+1);
+        //nc = 128;
+
+        /*Compute the Harris strength of a chunk*/
+        db_HarrisStrengthChunk_u(s,img,x,3,h-4,temp,nc);
+    }
+}
+
+inline float db_Max_128Aligned16_f(float *v)
+{
+#ifdef DB_USE_SIMD
+    float back;
+
+    _asm
+    {
+        mov eax,v
+
+        /*Chunk1*/
+        movaps xmm0,[eax]
+        movaps xmm1,[eax+16]
+        movaps xmm2,[eax+32]
+        movaps xmm3,[eax+48]
+        movaps xmm4,[eax+64]
+        movaps xmm5,[eax+80]
+        movaps xmm6,[eax+96]
+        movaps xmm7,[eax+112]
+
+        /*Chunk2*/
+        maxps xmm0,[eax+128]
+        maxps xmm1,[eax+144]
+        maxps xmm2,[eax+160]
+        maxps xmm3,[eax+176]
+        maxps xmm4,[eax+192]
+        maxps xmm5,[eax+208]
+        maxps xmm6,[eax+224]
+        maxps xmm7,[eax+240]
+
+        /*Chunk3*/
+        maxps xmm0,[eax+256]
+        maxps xmm1,[eax+272]
+        maxps xmm2,[eax+288]
+        maxps xmm3,[eax+304]
+        maxps xmm4,[eax+320]
+        maxps xmm5,[eax+336]
+        maxps xmm6,[eax+352]
+        maxps xmm7,[eax+368]
+
+        /*Chunk4*/
+        maxps xmm0,[eax+384]
+        maxps xmm1,[eax+400]
+        maxps xmm2,[eax+416]
+        maxps xmm3,[eax+432]
+        maxps xmm4,[eax+448]
+        maxps xmm5,[eax+464]
+        maxps xmm6,[eax+480]
+        maxps xmm7,[eax+496]
+
+        /*Collect*/
+        maxps   xmm0,xmm1
+        maxps   xmm2,xmm3
+        maxps   xmm4,xmm5
+        maxps   xmm6,xmm7
+        maxps   xmm0,xmm2
+        maxps   xmm4,xmm6
+        maxps   xmm0,xmm4
+        movhlps xmm1,xmm0
+        maxps   xmm0,xmm1
+        shufps  xmm1,xmm0,1
+        maxps   xmm0,xmm1
+        movss   back,xmm0
+    }
+
+    return(back);
+#else
+    float val,max_val;
+    float *p,*stop_p;
+    max_val=v[0];
+    for(p=v+1,stop_p=v+128;p!=stop_p;)
+    {
+        val= *p++;
+        if(val>max_val) max_val=val;
+    }
+    return(max_val);
+#endif /*DB_USE_SIMD*/
+}
+
+inline float db_Max_64Aligned16_f(float *v)
+{
+#ifdef DB_USE_SIMD
+    float back;
+
+    _asm
+    {
+        mov eax,v
+
+        /*Chunk1*/
+        movaps xmm0,[eax]
+        movaps xmm1,[eax+16]
+        movaps xmm2,[eax+32]
+        movaps xmm3,[eax+48]
+        movaps xmm4,[eax+64]
+        movaps xmm5,[eax+80]
+        movaps xmm6,[eax+96]
+        movaps xmm7,[eax+112]
+
+        /*Chunk2*/
+        maxps xmm0,[eax+128]
+        maxps xmm1,[eax+144]
+        maxps xmm2,[eax+160]
+        maxps xmm3,[eax+176]
+        maxps xmm4,[eax+192]
+        maxps xmm5,[eax+208]
+        maxps xmm6,[eax+224]
+        maxps xmm7,[eax+240]
+
+        /*Collect*/
+        maxps   xmm0,xmm1
+        maxps   xmm2,xmm3
+        maxps   xmm4,xmm5
+        maxps   xmm6,xmm7
+        maxps   xmm0,xmm2
+        maxps   xmm4,xmm6
+        maxps   xmm0,xmm4
+        movhlps xmm1,xmm0
+        maxps   xmm0,xmm1
+        shufps  xmm1,xmm0,1
+        maxps   xmm0,xmm1
+        movss   back,xmm0
+    }
+
+    return(back);
+#else
+    float val,max_val;
+    float *p,*stop_p;
+    max_val=v[0];
+    for(p=v+1,stop_p=v+64;p!=stop_p;)
+    {
+        val= *p++;
+        if(val>max_val) max_val=val;
+    }
+    return(max_val);
+#endif /*DB_USE_SIMD*/
+}
+
+inline float db_Max_32Aligned16_f(float *v)
+{
+#ifdef DB_USE_SIMD
+    float back;
+
+    _asm
+    {
+        mov eax,v
+
+        /*Chunk1*/
+        movaps xmm0,[eax]
+        movaps xmm1,[eax+16]
+        movaps xmm2,[eax+32]
+        movaps xmm3,[eax+48]
+        movaps xmm4,[eax+64]
+        movaps xmm5,[eax+80]
+        movaps xmm6,[eax+96]
+        movaps xmm7,[eax+112]
+
+        /*Collect*/
+        maxps   xmm0,xmm1
+        maxps   xmm2,xmm3
+        maxps   xmm4,xmm5
+        maxps   xmm6,xmm7
+        maxps   xmm0,xmm2
+        maxps   xmm4,xmm6
+        maxps   xmm0,xmm4
+        movhlps xmm1,xmm0
+        maxps   xmm0,xmm1
+        shufps  xmm1,xmm0,1
+        maxps   xmm0,xmm1
+        movss   back,xmm0
+    }
+
+    return(back);
+#else
+    float val,max_val;
+    float *p,*stop_p;
+    max_val=v[0];
+    for(p=v+1,stop_p=v+32;p!=stop_p;)
+    {
+        val= *p++;
+        if(val>max_val) max_val=val;
+    }
+    return(max_val);
+#endif /*DB_USE_SIMD*/
+}
+
+inline float db_Max_16Aligned16_f(float *v)
+{
+#ifdef DB_USE_SIMD
+    float back;
+
+    _asm
+    {
+        mov eax,v
+
+        /*Chunk1*/
+        movaps xmm0,[eax]
+        movaps xmm1,[eax+16]
+        movaps xmm2,[eax+32]
+        movaps xmm3,[eax+48]
+
+        /*Collect*/
+        maxps   xmm0,xmm1
+        maxps   xmm2,xmm3
+        maxps   xmm0,xmm2
+        movhlps xmm1,xmm0
+        maxps   xmm0,xmm1
+        shufps  xmm1,xmm0,1
+        maxps   xmm0,xmm1
+        movss   back,xmm0
+    }
+
+    return(back);
+#else
+    float val,max_val;
+    float *p,*stop_p;
+    max_val=v[0];
+    for(p=v+1,stop_p=v+16;p!=stop_p;)
+    {
+        val= *p++;
+        if(val>max_val) max_val=val;
+    }
+    return(max_val);
+#endif /*DB_USE_SIMD*/
+}
+
+inline float db_Max_8Aligned16_f(float *v)
+{
+#ifdef DB_USE_SIMD
+    float back;
+
+    _asm
+    {
+        mov eax,v
+
+        /*Chunk1*/
+        movaps xmm0,[eax]
+        movaps xmm1,[eax+16]
+
+        /*Collect*/
+        maxps   xmm0,xmm1
+        movhlps xmm1,xmm0
+        maxps   xmm0,xmm1
+        shufps  xmm1,xmm0,1
+        maxps   xmm0,xmm1
+        movss   back,xmm0
+    }
+
+    return(back);
+#else
+    float val,max_val;
+    float *p,*stop_p;
+    max_val=v[0];
+    for(p=v+1,stop_p=v+8;p!=stop_p;)
+    {
+        val= *p++;
+        if(val>max_val) max_val=val;
+    }
+    return(max_val);
+#endif /*DB_USE_SIMD*/
+}
+
+inline float db_Max_Aligned16_f(float *v,int size)
+{
+    float val,max_val;
+    float *stop_v;
+
+    max_val=v[0];
+    for(;size>=128;size-=128)
+    {
+        val=db_Max_128Aligned16_f(v);
+        v+=128;
+        if(val>max_val) max_val=val;
+    }
+    if(size&64)
+    {
+        val=db_Max_64Aligned16_f(v);
+        v+=64;
+        if(val>max_val) max_val=val;
+    }
+    if(size&32)
+    {
+        val=db_Max_32Aligned16_f(v);
+        v+=32;
+        if(val>max_val) max_val=val;
+    }
+    if(size&16)
+    {
+        val=db_Max_16Aligned16_f(v);
+        v+=16;
+        if(val>max_val) max_val=val;
+    }
+    if(size&8)
+    {
+        val=db_Max_8Aligned16_f(v);
+        v+=8;
+        if(val>max_val) max_val=val;
+    }
+    if(size&7)
+    {
+        for(stop_v=v+(size&7);v!=stop_v;)
+        {
+            val= *v++;
+            if(val>max_val) max_val=val;
+        }
+    }
+
+    return(max_val);
+}
+
+/*Find maximum value of img in the region starting at (left,top)
+and with width w and height h. img[left] should be 16 byte aligned*/
+float db_MaxImage_Aligned16_f(float **img,int left,int top,int w,int h)
+{
+    float val,max_val;
+    int i,stop_i;
+
+    if(w && h)
+    {
+        stop_i=top+h;
+        max_val=img[top][left];
+
+        for(i=top;i<stop_i;i++)
+        {
+            val=db_Max_Aligned16_f(img[i]+left,w);
+            if(val>max_val) max_val=val;
+        }
+        return(max_val);
+    }
+    return(0.0);
+}
+
+inline void db_MaxVector_128_Aligned16_f(float *m,float *v1,float *v2)
+{
+#ifdef DB_USE_SIMD
+    _asm
+    {
+        mov eax,v1
+        mov ebx,v2
+        mov ecx,m
+
+        /*Chunk1*/
+        movaps xmm0,[eax]
+        movaps xmm1,[eax+16]
+        movaps xmm2,[eax+32]
+        movaps xmm3,[eax+48]
+        movaps xmm4,[eax+64]
+        movaps xmm5,[eax+80]
+        movaps xmm6,[eax+96]
+        movaps xmm7,[eax+112]
+        maxps  xmm0,[ebx]
+        maxps  xmm1,[ebx+16]
+        maxps  xmm2,[ebx+32]
+        maxps  xmm3,[ebx+48]
+        maxps  xmm4,[ebx+64]
+        maxps  xmm5,[ebx+80]
+        maxps  xmm6,[ebx+96]
+        maxps  xmm7,[ebx+112]
+        movaps [ecx],xmm0
+        movaps [ecx+16],xmm1
+        movaps [ecx+32],xmm2
+        movaps [ecx+48],xmm3
+        movaps [ecx+64],xmm4
+        movaps [ecx+80],xmm5
+        movaps [ecx+96],xmm6
+        movaps [ecx+112],xmm7
+
+        /*Chunk2*/
+        movaps xmm0,[eax+128]
+        movaps xmm1,[eax+144]
+        movaps xmm2,[eax+160]
+        movaps xmm3,[eax+176]
+        movaps xmm4,[eax+192]
+        movaps xmm5,[eax+208]
+        movaps xmm6,[eax+224]
+        movaps xmm7,[eax+240]
+        maxps  xmm0,[ebx+128]
+        maxps  xmm1,[ebx+144]
+        maxps  xmm2,[ebx+160]
+        maxps  xmm3,[ebx+176]
+        maxps  xmm4,[ebx+192]
+        maxps  xmm5,[ebx+208]
+        maxps  xmm6,[ebx+224]
+        maxps  xmm7,[ebx+240]
+        movaps [ecx+128],xmm0
+        movaps [ecx+144],xmm1
+        movaps [ecx+160],xmm2
+        movaps [ecx+176],xmm3
+        movaps [ecx+192],xmm4
+        movaps [ecx+208],xmm5
+        movaps [ecx+224],xmm6
+        movaps [ecx+240],xmm7
+
+        /*Chunk3*/
+        movaps xmm0,[eax+256]
+        movaps xmm1,[eax+272]
+        movaps xmm2,[eax+288]
+        movaps xmm3,[eax+304]
+        movaps xmm4,[eax+320]
+        movaps xmm5,[eax+336]
+        movaps xmm6,[eax+352]
+        movaps xmm7,[eax+368]
+        maxps  xmm0,[ebx+256]
+        maxps  xmm1,[ebx+272]
+        maxps  xmm2,[ebx+288]
+        maxps  xmm3,[ebx+304]
+        maxps  xmm4,[ebx+320]
+        maxps  xmm5,[ebx+336]
+        maxps  xmm6,[ebx+352]
+        maxps  xmm7,[ebx+368]
+        movaps [ecx+256],xmm0
+        movaps [ecx+272],xmm1
+        movaps [ecx+288],xmm2
+        movaps [ecx+304],xmm3
+        movaps [ecx+320],xmm4
+        movaps [ecx+336],xmm5
+        movaps [ecx+352],xmm6
+        movaps [ecx+368],xmm7
+
+        /*Chunk4*/
+        movaps xmm0,[eax+384]
+        movaps xmm1,[eax+400]
+        movaps xmm2,[eax+416]
+        movaps xmm3,[eax+432]
+        movaps xmm4,[eax+448]
+        movaps xmm5,[eax+464]
+        movaps xmm6,[eax+480]
+        movaps xmm7,[eax+496]
+        maxps  xmm0,[ebx+384]
+        maxps  xmm1,[ebx+400]
+        maxps  xmm2,[ebx+416]
+        maxps  xmm3,[ebx+432]
+        maxps  xmm4,[ebx+448]
+        maxps  xmm5,[ebx+464]
+        maxps  xmm6,[ebx+480]
+        maxps  xmm7,[ebx+496]
+        movaps [ecx+384],xmm0
+        movaps [ecx+400],xmm1
+        movaps [ecx+416],xmm2
+        movaps [ecx+432],xmm3
+        movaps [ecx+448],xmm4
+        movaps [ecx+464],xmm5
+        movaps [ecx+480],xmm6
+        movaps [ecx+496],xmm7
+    }
+#else
+    int i;
+    float a,b;
+    for(i=0;i<128;i++)
+    {
+        a=v1[i];
+        b=v2[i];
+        if(a>=b) m[i]=a;
+        else m[i]=b;
+    }
+#endif /*DB_USE_SIMD*/
+}
+
+inline void db_MaxVector_128_SecondSourceDestAligned16_f(float *m,float *v1,float *v2)
+{
+#ifdef DB_USE_SIMD
+    _asm
+    {
+        mov eax,v1
+        mov ebx,v2
+        mov ecx,m
+
+        /*Chunk1*/
+        movups xmm0,[eax]
+        movups xmm1,[eax+16]
+        movups xmm2,[eax+32]
+        movups xmm3,[eax+48]
+        movups xmm4,[eax+64]
+        movups xmm5,[eax+80]
+        movups xmm6,[eax+96]
+        movups xmm7,[eax+112]
+        maxps  xmm0,[ebx]
+        maxps  xmm1,[ebx+16]
+        maxps  xmm2,[ebx+32]
+        maxps  xmm3,[ebx+48]
+        maxps  xmm4,[ebx+64]
+        maxps  xmm5,[ebx+80]
+        maxps  xmm6,[ebx+96]
+        maxps  xmm7,[ebx+112]
+        movaps [ecx],xmm0
+        movaps [ecx+16],xmm1
+        movaps [ecx+32],xmm2
+        movaps [ecx+48],xmm3
+        movaps [ecx+64],xmm4
+        movaps [ecx+80],xmm5
+        movaps [ecx+96],xmm6
+        movaps [ecx+112],xmm7
+
+        /*Chunk2*/
+        movups xmm0,[eax+128]
+        movups xmm1,[eax+144]
+        movups xmm2,[eax+160]
+        movups xmm3,[eax+176]
+        movups xmm4,[eax+192]
+        movups xmm5,[eax+208]
+        movups xmm6,[eax+224]
+        movups xmm7,[eax+240]
+        maxps  xmm0,[ebx+128]
+        maxps  xmm1,[ebx+144]
+        maxps  xmm2,[ebx+160]
+        maxps  xmm3,[ebx+176]
+        maxps  xmm4,[ebx+192]
+        maxps  xmm5,[ebx+208]
+        maxps  xmm6,[ebx+224]
+        maxps  xmm7,[ebx+240]
+        movaps [ecx+128],xmm0
+        movaps [ecx+144],xmm1
+        movaps [ecx+160],xmm2
+        movaps [ecx+176],xmm3
+        movaps [ecx+192],xmm4
+        movaps [ecx+208],xmm5
+        movaps [ecx+224],xmm6
+        movaps [ecx+240],xmm7
+
+        /*Chunk3*/
+        movups xmm0,[eax+256]
+        movups xmm1,[eax+272]
+        movups xmm2,[eax+288]
+        movups xmm3,[eax+304]
+        movups xmm4,[eax+320]
+        movups xmm5,[eax+336]
+        movups xmm6,[eax+352]
+        movups xmm7,[eax+368]
+        maxps  xmm0,[ebx+256]
+        maxps  xmm1,[ebx+272]
+        maxps  xmm2,[ebx+288]
+        maxps  xmm3,[ebx+304]
+        maxps  xmm4,[ebx+320]
+        maxps  xmm5,[ebx+336]
+        maxps  xmm6,[ebx+352]
+        maxps  xmm7,[ebx+368]
+        movaps [ecx+256],xmm0
+        movaps [ecx+272],xmm1
+        movaps [ecx+288],xmm2
+        movaps [ecx+304],xmm3
+        movaps [ecx+320],xmm4
+        movaps [ecx+336],xmm5
+        movaps [ecx+352],xmm6
+        movaps [ecx+368],xmm7
+
+        /*Chunk4*/
+        movups xmm0,[eax+384]
+        movups xmm1,[eax+400]
+        movups xmm2,[eax+416]
+        movups xmm3,[eax+432]
+        movups xmm4,[eax+448]
+        movups xmm5,[eax+464]
+        movups xmm6,[eax+480]
+        movups xmm7,[eax+496]
+        maxps  xmm0,[ebx+384]
+        maxps  xmm1,[ebx+400]
+        maxps  xmm2,[ebx+416]
+        maxps  xmm3,[ebx+432]
+        maxps  xmm4,[ebx+448]
+        maxps  xmm5,[ebx+464]
+        maxps  xmm6,[ebx+480]
+        maxps  xmm7,[ebx+496]
+        movaps [ecx+384],xmm0
+        movaps [ecx+400],xmm1
+        movaps [ecx+416],xmm2
+        movaps [ecx+432],xmm3
+        movaps [ecx+448],xmm4
+        movaps [ecx+464],xmm5
+        movaps [ecx+480],xmm6
+        movaps [ecx+496],xmm7
+    }
+#else
+    int i;
+    float a,b;
+    for(i=0;i<128;i++)
+    {
+        a=v1[i];
+        b=v2[i];
+        if(a>=b) m[i]=a;
+        else m[i]=b;
+    }
+#endif /*DB_USE_SIMD*/
+}
+
+/*Compute Max-suppression-filtered image for a chunk of sf starting at (left,top), of width 124 and
+stopping at bottom. The output is shifted two steps left and overwrites 128 elements for each row.
+The input s should be of width at least 128, and exist for 2 pixels outside the specified region.
+s[i][left-2] and sf[i][left-2] should be 16 byte aligned. Top must be at least 3*/
+inline void db_MaxSuppressFilterChunk_5x5_Aligned16_f(float **sf,float **s,int left,int top,int bottom,
+                                      /*temp should point to at least
+                                      6*132 floats of 16-byte-aligned allocated memory*/
+                                      float *temp)
+{
+#ifdef DB_USE_SIMD
+    int i,lm2;
+    float *two[4];
+    float *four,*five;
+
+    lm2=left-2;
+
+    /*Set pointers to pre-allocated memory*/
+    four=temp;
+    five=four+132;
+    for(i=0;i<4;i++)
+    {
+        two[i]=five+(i+1)*132;
+    }
+
+    /*Set rests of four and five to zero to avoid
+    floating point exceptions*/
+    for(i=129;i<132;i++)
+    {
+        four[i]=0.0;
+        five[i]=0.0;
+    }
+
+    /*Fill three rows of the wrap-around max buffers*/
+    for(i=top-3;i<top;i++) db_MaxVector_128_Aligned16_f(two[i&3],s[i+1]+lm2,s[i+2]+lm2);
+
+    /*For each output row*/
+    for(;i<=bottom;i++)
+    {
+        /*Compute max of the lowest pair of rows in the five row window*/
+        db_MaxVector_128_Aligned16_f(two[i&3],s[i+1]+lm2,s[i+2]+lm2);
+        /*Compute max of the lowest and highest pair of rows in the five row window*/
+        db_MaxVector_128_Aligned16_f(four,two[i&3],two[(i-3)&3]);
+        /*Compute max of all rows*/
+        db_MaxVector_128_Aligned16_f(five,four,two[(i-1)&3]);
+        /*Compute max of 2x5 chunks*/
+        db_MaxVector_128_SecondSourceDestAligned16_f(five,five+1,five);
+        /*Compute max of pairs of 2x5 chunks*/
+        db_MaxVector_128_SecondSourceDestAligned16_f(five,five+3,five);
+        /*Compute max of pairs of 5x5 except middle*/
+        db_MaxVector_128_SecondSourceDestAligned16_f(sf[i]+lm2,four+2,five);
+    }
+
+#else
+    int i,j,right;
+    float sv;
+
+    right=left+128;
+    for(i=top;i<=bottom;i++) for(j=left;j<right;j++)
+    {
+        sv=s[i][j];
+
+        if( sv>s[i-2][j-2] && sv>s[i-2][j-1] && sv>s[i-2][j] && sv>s[i-2][j+1] && sv>s[i-2][j+2] &&
+            sv>s[i-1][j-2] && sv>s[i-1][j-1] && sv>s[i-1][j] && sv>s[i-1][j+1] && sv>s[i-1][j+2] &&
+            sv>s[  i][j-2] && sv>s[  i][j-1] &&                 sv>s[  i][j+1] && sv>s[  i][j+2] &&
+            sv>s[i+1][j-2] && sv>s[i+1][j-1] && sv>s[i+1][j] && sv>s[i+1][j+1] && sv>s[i+1][j+2] &&
+            sv>s[i+2][j-2] && sv>s[i+2][j-1] && sv>s[i+2][j] && sv>s[i+2][j+1] && sv>s[i+2][j+2])
+        {
+            sf[i][j-2]=0.0;
+        }
+        else sf[i][j-2]=sv;
+    }
+#endif /*DB_USE_SIMD*/
+}
+
+/*Compute Max-suppression-filtered image for a chunk of sf starting at (left,top) and
+stopping at bottom. The output is shifted two steps left. The input s should exist for 2 pixels
+outside the specified region. s[i][left-2] and sf[i][left-2] should be 16 byte aligned.
+Top must be at least 3. Reading and writing from and to the input and output images is done
+as if the region had a width equal to a multiple of 124. If this is not the case, the images
+should be over-allocated and the input cleared for a sufficient region*/
+void db_MaxSuppressFilter_5x5_Aligned16_f(float **sf,float **s,int left,int top,int right,int bottom,
+                                          /*temp should point to at least
+                                          6*132 floats of 16-byte-aligned allocated memory*/
+                                          float *temp)
+{
+    int x,next_x;
+
+    for(x=left;x<=right;x=next_x)
+    {
+        next_x=x+124;
+        db_MaxSuppressFilterChunk_5x5_Aligned16_f(sf,s,x,top,bottom,temp);
+    }
+}
+
+/*Extract corners from the chunk (left,top) to (right,bottom). Store in x_temp,y_temp and s_temp
+which should point to space of at least as many positions as there are pixels in the chunk*/
+inline int db_CornersFromChunk(float **strength,int left,int top,int right,int bottom,float threshold,double *x_temp,double *y_temp,double *s_temp)
+{
+    int i,j,nr;
+    float s;
+
+    nr=0;
+    for(i=top;i<=bottom;i++) for(j=left;j<=right;j++)
+    {
+        s=strength[i][j];
+
+        if(s>=threshold &&
+            s>strength[i-2][j-2] && s>strength[i-2][j-1] && s>strength[i-2][j] && s>strength[i-2][j+1] && s>strength[i-2][j+2] &&
+            s>strength[i-1][j-2] && s>strength[i-1][j-1] && s>strength[i-1][j] && s>strength[i-1][j+1] && s>strength[i-1][j+2] &&
+            s>strength[  i][j-2] && s>strength[  i][j-1] &&                       s>strength[  i][j+1] && s>strength[  i][j+2] &&
+            s>strength[i+1][j-2] && s>strength[i+1][j-1] && s>strength[i+1][j] && s>strength[i+1][j+1] && s>strength[i+1][j+2] &&
+            s>strength[i+2][j-2] && s>strength[i+2][j-1] && s>strength[i+2][j] && s>strength[i+2][j+1] && s>strength[i+2][j+2])
+        {
+            x_temp[nr]=(double) j;
+            y_temp[nr]=(double) i;
+            s_temp[nr]=(double) s;
+            nr++;
+        }
+    }
+    return(nr);
+}
+
+
+//Sub-pixel accuracy using 2D quadratic interpolation.(YCJ)
+inline void db_SubPixel(float **strength, const double xd, const double yd, double &xs, double &ys)
+{
+    int x = (int) xd;
+    int y = (int) yd;
+
+    float fxx = strength[y][x-1] - strength[y][x] - strength[y][x] + strength[y][x+1];
+    float fyy = strength[y-1][x] - strength[y][x] - strength[y][x] + strength[y+1][x];
+    float fxy = (strength[y-1][x-1] - strength[y-1][x+1] - strength[y+1][x-1] + strength[y+1][x+1])/(float)4.0;
+
+    float denom = (fxx * fyy - fxy * fxy) * (float) 2.0;
+
+    xs = xd;
+    ys = yd;
+
+    if ( db_absf(denom) <= FLT_EPSILON )
+    {
+        return;
+    }
+    else
+    {
+        float fx = strength[y][x+1] - strength[y][x-1];
+        float fy = strength[y+1][x] - strength[y-1][x];
+
+        float dx = (fyy * fx - fxy * fy) / denom;
+        float dy = (fxx * fy - fxy * fx) / denom;
+
+        if ( db_absf(dx) > 1.0 || db_absf(dy) > 1.0 )
+        {
+            return;
+        }
+        else
+        {
+            xs -= dx;
+            ys -= dy;
+        }
+    }
+
+    return;
+}
+
+/*Extract corners from the image part from (left,top) to (right,bottom).
+Store in x and y, extracting at most satnr corners in each block of size (bw,bh).
+The pointer temp_d should point to at least 5*bw*bh positions.
+area_factor holds how many corners max to extract per 10000 pixels*/
+void db_ExtractCornersSaturated(float **strength,int left,int top,int right,int bottom,
+                                int bw,int bh,unsigned long area_factor,
+                                float threshold,double *temp_d,
+                                double *x_coord,double *y_coord,int *nr_corners)
+{
+    double *x_temp,*y_temp,*s_temp,*select_temp;
+    double loc_thresh;
+    unsigned long bwbh,area,saturation;
+    int x,next_x,last_x;
+    int y,next_y,last_y;
+    int nr,nr_points,i,stop;
+
+    bwbh=bw*bh;
+    x_temp=temp_d;
+    y_temp=x_temp+bwbh;
+    s_temp=y_temp+bwbh;
+    select_temp=s_temp+bwbh;
+
+#ifdef DB_SUB_PIXEL
+    // subpixel processing may sometimes push the corner ourside the real border
+    // increasing border size:
+    left++;
+    top++;
+    bottom--;
+    right--;
+#endif /*DB_SUB_PIXEL*/
+
+    nr_points=0;
+    for(y=top;y<=bottom;y=next_y)
+    {
+        next_y=y+bh;
+        last_y=next_y-1;
+        if(last_y>bottom) last_y=bottom;
+        for(x=left;x<=right;x=next_x)
+        {
+            next_x=x+bw;
+            last_x=next_x-1;
+            if(last_x>right) last_x=right;
+
+            area=(last_x-x+1)*(last_y-y+1);
+            saturation=(area*area_factor)/10000;
+            nr=db_CornersFromChunk(strength,x,y,last_x,last_y,threshold,x_temp,y_temp,s_temp);
+            if(nr)
+            {
+                if(((unsigned long)nr)>saturation) loc_thresh=db_LeanQuickSelect(s_temp,nr,nr-saturation,select_temp);
+                else loc_thresh=threshold;
+
+                stop=nr_points+saturation;
+                for(i=0;(i<nr)&&(nr_points<stop);i++)
+                {
+                    if(s_temp[i]>=loc_thresh)
+                    {
+                        #ifdef DB_SUB_PIXEL
+                               db_SubPixel(strength, x_temp[i], y_temp[i], x_coord[nr_points], y_coord[nr_points]);
+                        #else
+                               x_coord[nr_points]=x_temp[i];
+                               y_coord[nr_points]=y_temp[i];
+                        #endif
+
+                        nr_points++;
+                    }
+                }
+            }
+        }
+    }
+    *nr_corners=nr_points;
+}
+
+db_CornerDetector_f::db_CornerDetector_f()
+{
+    m_w=0; m_h=0;
+}
+
+db_CornerDetector_f::~db_CornerDetector_f()
+{
+    Clean();
+}
+
+void db_CornerDetector_f::Clean()
+{
+    if(m_w!=0)
+    {
+        delete [] m_temp_f;
+        delete [] m_temp_d;
+        db_FreeStrengthImage_f(m_strength_mem,m_strength,m_h);
+    }
+    m_w=0; m_h=0;
+}
+
+unsigned long db_CornerDetector_f::Init(int im_width,int im_height,int target_nr_corners,
+                            int nr_horizontal_blocks,int nr_vertical_blocks,
+                            double absolute_threshold,double relative_threshold)
+{
+    int chunkwidth=208;
+    int block_width,block_height;
+    unsigned long area_factor;
+    int active_width,active_height;
+
+    active_width=db_maxi(1,im_width-10);
+    active_height=db_maxi(1,im_height-10);
+    block_width=db_maxi(1,active_width/nr_horizontal_blocks);
+    block_height=db_maxi(1,active_height/nr_vertical_blocks);
+
+    area_factor=db_minl(1000,db_maxl(1,(long)(10000.0*((double)target_nr_corners)/
+        (((double)active_width)*((double)active_height)))));
+
+    return(Start(im_width,im_height,block_width,block_height,area_factor,
+        absolute_threshold,relative_threshold,chunkwidth));
+}
+
+unsigned long db_CornerDetector_f::Start(int im_width,int im_height,
+                             int block_width,int block_height,unsigned long area_factor,
+                             double absolute_threshold,double relative_threshold,int chunkwidth)
+{
+    Clean();
+
+    m_w=im_width;
+    m_h=im_height;
+    m_cw=chunkwidth;
+    m_bw=block_width;
+    m_bh=block_height;
+    m_area_factor=area_factor;
+    m_r_thresh=relative_threshold;
+    m_a_thresh=absolute_threshold;
+    m_max_nr=db_maxl(1,1+(m_w*m_h*m_area_factor)/10000);
+
+    m_temp_f=new float[13*(m_cw+4)];
+    m_temp_d=new double[5*m_bw*m_bh];
+    m_strength=db_AllocStrengthImage_f(&m_strength_mem,m_w,m_h);
+
+    return(m_max_nr);
+}
+
+void db_CornerDetector_f::DetectCorners(const float * const *img,double *x_coord,double *y_coord,int *nr_corners) const
+{
+    float max_val,threshold;
+
+    db_HarrisStrength_f(m_strength,img,m_w,m_h,m_temp_f,m_cw);
+
+    if(m_r_thresh)
+    {
+        max_val=db_MaxImage_Aligned16_f(m_strength,3,3,m_w-6,m_h-6);
+        threshold= (float) db_maxd(m_a_thresh,max_val*m_r_thresh);
+    }
+    else threshold= (float) m_a_thresh;
+
+    db_ExtractCornersSaturated(m_strength,BORDER,BORDER,m_w-BORDER-1,m_h-BORDER-1,m_bw,m_bh,m_area_factor,threshold,
+        m_temp_d,x_coord,y_coord,nr_corners);
+}
+
+db_CornerDetector_u::db_CornerDetector_u()
+{
+    m_w=0; m_h=0;
+}
+
+db_CornerDetector_u::~db_CornerDetector_u()
+{
+    Clean();
+}
+
+db_CornerDetector_u::db_CornerDetector_u(const db_CornerDetector_u& cd)
+{
+    Start(cd.m_w, cd.m_h, cd.m_bw, cd.m_bh, cd.m_area_factor,
+        cd.m_a_thresh, cd.m_r_thresh);
+}
+
+db_CornerDetector_u& db_CornerDetector_u::operator=(const db_CornerDetector_u& cd)
+{
+    if ( this == &cd ) return *this;
+
+    Clean();
+
+    Start(cd.m_w, cd.m_h, cd.m_bw, cd.m_bh, cd.m_area_factor,
+        cd.m_a_thresh, cd.m_r_thresh);
+
+    return *this;
+}
+
+void db_CornerDetector_u::Clean()
+{
+    if(m_w!=0)
+    {
+        delete [] m_temp_i;
+        delete [] m_temp_d;
+        db_FreeStrengthImage_f(m_strength_mem,m_strength,m_h);
+    }
+    m_w=0; m_h=0;
+}
+
+unsigned long db_CornerDetector_u::Init(int im_width,int im_height,int target_nr_corners,
+                            int nr_horizontal_blocks,int nr_vertical_blocks,
+                            double absolute_threshold,double relative_threshold)
+{
+    int block_width,block_height;
+    unsigned long area_factor;
+    int active_width,active_height;
+
+    active_width=db_maxi(1,im_width-10);
+    active_height=db_maxi(1,im_height-10);
+    block_width=db_maxi(1,active_width/nr_horizontal_blocks);
+    block_height=db_maxi(1,active_height/nr_vertical_blocks);
+
+    area_factor=db_minl(1000,db_maxl(1,(long)(10000.0*((double)target_nr_corners)/
+        (((double)active_width)*((double)active_height)))));
+
+    return(Start(im_width,im_height,block_width,block_height,area_factor,
+        16.0*absolute_threshold,relative_threshold));
+}
+
+unsigned long db_CornerDetector_u::Start(int im_width,int im_height,
+                             int block_width,int block_height,unsigned long area_factor,
+                             double absolute_threshold,double relative_threshold)
+{
+    Clean();
+
+    m_w=im_width;
+    m_h=im_height;
+    m_bw=block_width;
+    m_bh=block_height;
+    m_area_factor=area_factor;
+    m_r_thresh=relative_threshold;
+    m_a_thresh=absolute_threshold;
+    m_max_nr=db_maxl(1,1+(m_w*m_h*m_area_factor)/10000);
+
+    m_temp_i=new int[18*128];
+    m_temp_d=new double[5*m_bw*m_bh];
+    m_strength=db_AllocStrengthImage_f(&m_strength_mem,m_w,m_h);
+
+    return(m_max_nr);
+}
+
+void db_CornerDetector_u::DetectCorners(const unsigned char * const *img,double *x_coord,double *y_coord,int *nr_corners,
+                                        const unsigned char * const *msk, unsigned char fgnd) const
+{
+    float max_val,threshold;
+
+    db_HarrisStrength_u(m_strength,img,m_w,m_h,m_temp_i);
+
+
+    if(m_r_thresh)
+    {
+        max_val=db_MaxImage_Aligned16_f(m_strength,3,3,m_w-6,m_h-6);
+        threshold= (float) db_maxd(m_a_thresh,max_val*m_r_thresh);
+    }
+    else threshold= (float) m_a_thresh;
+
+    db_ExtractCornersSaturated(m_strength,BORDER,BORDER,m_w-BORDER-1,m_h-BORDER-1,m_bw,m_bh,m_area_factor,threshold,
+        m_temp_d,x_coord,y_coord,nr_corners);
+
+
+    if ( msk )
+    {
+        int nr_corners_mask=0;
+
+        for ( int i = 0; i < *nr_corners; ++i)
+        {
+            int cor_x = db_roundi(*(x_coord+i));
+            int cor_y = db_roundi(*(y_coord+i));
+            if ( msk[cor_y][cor_x] == fgnd )
+            {
+                x_coord[nr_corners_mask] = x_coord[i];
+                y_coord[nr_corners_mask] = y_coord[i];
+                nr_corners_mask++;
+            }
+        }
+        *nr_corners = nr_corners_mask;
+    }
+}
+
+void db_CornerDetector_u::ExtractCorners(float ** strength, double *x_coord, double *y_coord, int *nr_corners) {
+    if ( m_w!=0 )
+        db_ExtractCornersSaturated(strength,BORDER,BORDER,m_w-BORDER-1,m_h-BORDER-1,m_bw,m_bh,m_area_factor,float(m_a_thresh),
+            m_temp_d,x_coord,y_coord,nr_corners);
+}
+
diff --git a/perftests/panorama/feature_stab/db_vlvm/db_feature_detection.h b/perftests/panorama/feature_stab/db_vlvm/db_feature_detection.h
new file mode 100644
index 0000000..68ffcc9
--- /dev/null
+++ b/perftests/panorama/feature_stab/db_vlvm/db_feature_detection.h
@@ -0,0 +1,179 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+/*$Id: db_feature_detection.h,v 1.3 2011/06/17 14:03:30 mbansal Exp $*/
+
+#ifndef DB_FEATURE_DETECTION_H
+#define DB_FEATURE_DETECTION_H
+
+/*****************************************************************
+*    Lean and mean begins here                                   *
+*****************************************************************/
+/*!
+ * \defgroup FeatureDetection Feature Detection
+ */
+#include "db_utilities.h"
+#include "db_utilities_constants.h"
+#include <stdlib.h> //for NULL
+
+/*!
+ * \class db_CornerDetector_f
+ * \ingroup FeatureDetection
+ * \brief Harris corner detector for float images.
+ *
+ *  This class performs Harris corner extraction on *float* images managed
+ * with functions in \ref LMImageBasicUtilities.
+ */
+class DB_API db_CornerDetector_f
+{
+public:
+    db_CornerDetector_f();
+    ~db_CornerDetector_f();
+
+    /*!
+     * Set parameters and pre-allocate memory. Return an upper bound
+     * on the number of corners detected in one frame.
+     * \param im_width      width
+     * \param im_height     height
+     * \param target_nr_corners
+     * \param nr_horizontal_blocks
+     * \param nr_vertical_blocks
+     * \param absolute_threshold
+     * \param relative_threshold
+     */
+    unsigned long Init(int im_width,int im_height,
+                            int target_nr_corners=DB_DEFAULT_TARGET_NR_CORNERS,
+                            int nr_horizontal_blocks=DB_DEFAULT_NR_FEATURE_BLOCKS,
+                            int nr_vertical_blocks=DB_DEFAULT_NR_FEATURE_BLOCKS,
+                            double absolute_threshold=DB_DEFAULT_ABS_CORNER_THRESHOLD,
+                            double relative_threshold=DB_DEFAULT_REL_CORNER_THRESHOLD);
+
+    /*!
+     * Detect the corners.
+     * x_coord and y_coord should be pre-allocated arrays of length returned by Init().
+     * \param img   row array pointer
+     * \param x_coord   corner locations
+     * \param y_coord   corner locations
+     * \param nr_corners    actual number of corners computed
+     */
+    void DetectCorners(const float * const *img,double *x_coord,double *y_coord,int *nr_corners) const;
+    void SetAbsoluteThreshold(double a_thresh) { m_a_thresh = a_thresh; };
+    void SetRelativeThreshold(double r_thresh) { m_r_thresh = r_thresh; };
+protected:
+    void Clean();
+    unsigned long Start(int im_width,int im_height,
+            int block_width,int block_height,unsigned long area_factor,
+            double absolute_threshold,double relative_threshold,int chunkwidth);
+
+    int m_w,m_h,m_cw,m_bw,m_bh;
+    /*Area factor holds the maximum number of corners to detect
+    per 10000 pixels*/
+    unsigned long m_area_factor,m_max_nr;
+    double m_a_thresh,m_r_thresh;
+    float *m_temp_f;
+    double *m_temp_d;
+    float **m_strength,*m_strength_mem;
+};
+/*!
+ * \class db_CornerDetector_u
+ * \ingroup FeatureDetection
+ * \brief Harris corner detector for byte images.
+ *
+ *  This class performs Harris corner extraction on *byte* images managed
+ * with functions in \ref LMImageBasicUtilities.
+ */
+class DB_API db_CornerDetector_u
+{
+public:
+    db_CornerDetector_u();
+    virtual ~db_CornerDetector_u();
+
+    /*!
+     Copy ctor duplicates settings.
+     Memory is not copied.
+     */
+    db_CornerDetector_u(const db_CornerDetector_u& cd);
+    /*!
+     Assignment optor duplicates settings.
+     Memory not copied.
+     */
+    db_CornerDetector_u& operator=(const db_CornerDetector_u& cd);
+
+    /*!
+     * Set parameters and pre-allocate memory. Return an upper bound
+     * on the number of corners detected in one frame
+     */
+    virtual unsigned long Init(int im_width,int im_height,
+                            int target_nr_corners=DB_DEFAULT_TARGET_NR_CORNERS,
+                            int nr_horizontal_blocks=DB_DEFAULT_NR_FEATURE_BLOCKS,
+                            int nr_vertical_blocks=DB_DEFAULT_NR_FEATURE_BLOCKS,
+                            double absolute_threshold=DB_DEFAULT_ABS_CORNER_THRESHOLD,
+                            double relative_threshold=DB_DEFAULT_REL_CORNER_THRESHOLD);
+
+    /*!
+     * Detect the corners.
+     * Observe that the image should be overallocated by at least 256 bytes
+     * at the end.
+     * x_coord and y_coord should be pre-allocated arrays of length returned by Init().
+     * Specifying image mask will restrict corner output to foreground regions.
+     * Foreground value can be specified using fgnd. By default any >0 mask value
+     * is considered to be foreground
+     * \param img   row array pointer
+     * \param x_coord   corner locations
+     * \param y_coord   corner locations
+     * \param nr_corners    actual number of corners computed
+     * \param msk       row array pointer to mask image
+     * \param fgnd      foreground value in the mask
+     */
+    virtual void DetectCorners(const unsigned char * const *img,double *x_coord,double *y_coord,int *nr_corners,
+        const unsigned char * const * msk=NULL, unsigned char fgnd=255) const;
+
+    /*!
+     Set absolute feature threshold
+     */
+    virtual void SetAbsoluteThreshold(double a_thresh) { m_a_thresh = a_thresh; };
+    /*!
+     Set relative feature threshold
+     */
+    virtual void SetRelativeThreshold(double r_thresh) { m_r_thresh = r_thresh; };
+
+    /*!
+     Extract corners from a pre-computed strength image.
+     \param strength    Harris strength image
+     \param x_coord corner locations
+     \param y_coord corner locations
+     \param nr_corners  actual number of corners computed
+     */
+    virtual void ExtractCorners(float ** strength, double *x_coord, double *y_coord, int *nr_corners);
+protected:
+    virtual void Clean();
+    /*The absolute threshold to this function should be 16.0 times
+    normal*/
+    unsigned long Start(int im_width,int im_height,
+            int block_width,int block_height,unsigned long area_factor,
+            double absolute_threshold,double relative_threshold);
+
+    int m_w,m_h,m_bw,m_bh;
+    /*Area factor holds the maximum number of corners to detect
+    per 10000 pixels*/
+    unsigned long m_area_factor,m_max_nr;
+    double m_a_thresh,m_r_thresh;
+    int *m_temp_i;
+    double *m_temp_d;
+    float **m_strength,*m_strength_mem;
+};
+
+#endif /*DB_FEATURE_DETECTION_H*/
diff --git a/perftests/panorama/feature_stab/db_vlvm/db_feature_matching.cpp b/perftests/panorama/feature_stab/db_vlvm/db_feature_matching.cpp
new file mode 100644
index 0000000..d278d0c
--- /dev/null
+++ b/perftests/panorama/feature_stab/db_vlvm/db_feature_matching.cpp
@@ -0,0 +1,3410 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+/*$Id: db_feature_matching.cpp,v 1.4 2011/06/17 14:03:30 mbansal Exp $*/
+
+/*****************************************************************
+*    Lean and mean begins here                                   *
+*****************************************************************/
+
+#include "db_utilities.h"
+#include "db_feature_matching.h"
+#ifdef _VERBOSE_
+#include <iostream>
+#endif
+
+
+int AffineWarpPoint_NN_LUT_x[11][11];
+int AffineWarpPoint_NN_LUT_y[11][11];
+
+float AffineWarpPoint_BL_LUT_x[11][11];
+float AffineWarpPoint_BL_LUT_y[11][11];
+
+
+inline float db_SignedSquareNormCorr7x7_u(unsigned char **f_img,unsigned char **g_img,int x_f,int y_f,int x_g,int y_g)
+{
+    unsigned char *pf,*pg;
+    float f,g,fgsum,f2sum,g2sum,fsum,gsum,fg_corr,den;
+    int xm_f,xm_g;
+
+    xm_f=x_f-3;
+    xm_g=x_g-3;
+    fgsum=0.0; f2sum=0.0; g2sum=0.0; fsum=0.0; gsum=0.0;
+
+    pf=f_img[y_f-3]+xm_f; pg=g_img[y_g-3]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f-2]+xm_f; pg=g_img[y_g-2]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f-1]+xm_f; pg=g_img[y_g-1]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f]+xm_f; pg=g_img[y_g]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f+1]+xm_f; pg=g_img[y_g+1]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f+2]+xm_f; pg=g_img[y_g+2]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f+3]+xm_f; pg=g_img[y_g+3]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    fg_corr=49.0f*fgsum-fsum*gsum;
+    den=(49.0f*f2sum-fsum*fsum)*(49.0f*g2sum-gsum*gsum);
+    if(den!=0.0)
+    {
+        if(fg_corr>=0.0) return(fg_corr*fg_corr/den);
+        return(-fg_corr*fg_corr/den);
+    }
+    return(0.0);
+}
+
+inline float db_SignedSquareNormCorr9x9_u(unsigned char **f_img,unsigned char **g_img,int x_f,int y_f,int x_g,int y_g)
+{
+    unsigned char *pf,*pg;
+    float f,g,fgsum,f2sum,g2sum,fsum,gsum,fg_corr,den;
+    int xm_f,xm_g;
+
+    xm_f=x_f-4;
+    xm_g=x_g-4;
+    fgsum=0.0; f2sum=0.0; g2sum=0.0; fsum=0.0; gsum=0.0;
+
+    pf=f_img[y_f-4]+xm_f; pg=g_img[y_g-4]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f-3]+xm_f; pg=g_img[y_g-3]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f-2]+xm_f; pg=g_img[y_g-2]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f-1]+xm_f; pg=g_img[y_g-1]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f]+xm_f; pg=g_img[y_g]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f+1]+xm_f; pg=g_img[y_g+1]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f+2]+xm_f; pg=g_img[y_g+2]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f+3]+xm_f; pg=g_img[y_g+3]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f+4]+xm_f; pg=g_img[y_g+4]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    fg_corr=81.0f*fgsum-fsum*gsum;
+    den=(81.0f*f2sum-fsum*fsum)*(81.0f*g2sum-gsum*gsum);
+    if(den!=0.0)
+    {
+        if(fg_corr>=0.0) return(fg_corr*fg_corr/den);
+        return(-fg_corr*fg_corr/den);
+    }
+    return(0.0);
+}
+
+inline float db_SignedSquareNormCorr11x11_u(unsigned char **f_img,unsigned char **g_img,int x_f,int y_f,int x_g,int y_g)
+{
+    unsigned char *pf,*pg;
+    float f,g,fgsum,f2sum,g2sum,fsum,gsum,fg_corr,den;
+    int xm_f,xm_g;
+
+    xm_f=x_f-5;
+    xm_g=x_g-5;
+    fgsum=0.0; f2sum=0.0; g2sum=0.0; fsum=0.0; gsum=0.0;
+
+    pf=f_img[y_f-5]+xm_f; pg=g_img[y_g-5]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f-4]+xm_f; pg=g_img[y_g-4]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f-3]+xm_f; pg=g_img[y_g-3]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f-2]+xm_f; pg=g_img[y_g-2]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f-1]+xm_f; pg=g_img[y_g-1]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f]+xm_f; pg=g_img[y_g]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f+1]+xm_f; pg=g_img[y_g+1]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f+2]+xm_f; pg=g_img[y_g+2]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f+3]+xm_f; pg=g_img[y_g+3]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f+4]+xm_f; pg=g_img[y_g+4]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f+5]+xm_f; pg=g_img[y_g+5]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    fg_corr=121.0f*fgsum-fsum*gsum;
+    den=(121.0f*f2sum-fsum*fsum)*(121.0f*g2sum-gsum*gsum);
+    if(den!=0.0)
+    {
+        if(fg_corr>=0.0) return(fg_corr*fg_corr/den);
+        return(-fg_corr*fg_corr/den);
+    }
+    return(0.0);
+}
+
+inline void db_SignedSquareNormCorr11x11_Pre_u(unsigned char **f_img,int x_f,int y_f,float *sum,float *recip)
+{
+    unsigned char *pf;
+    float den;
+    int f,f2sum,fsum;
+    int xm_f;
+
+    xm_f=x_f-5;
+
+    pf=f_img[y_f-5]+xm_f;
+    f= *pf++; f2sum=f*f;  fsum=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf;   f2sum+=f*f; fsum+=f;
+
+    pf=f_img[y_f-4]+xm_f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf;   f2sum+=f*f; fsum+=f;
+
+    pf=f_img[y_f-3]+xm_f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf;   f2sum+=f*f; fsum+=f;
+
+    pf=f_img[y_f-2]+xm_f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf;   f2sum+=f*f; fsum+=f;
+
+    pf=f_img[y_f-1]+xm_f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf;   f2sum+=f*f; fsum+=f;
+
+    pf=f_img[y_f]+xm_f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf;   f2sum+=f*f; fsum+=f;
+
+    pf=f_img[y_f+1]+xm_f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf;   f2sum+=f*f; fsum+=f;
+
+    pf=f_img[y_f+2]+xm_f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf;   f2sum+=f*f; fsum+=f;
+
+    pf=f_img[y_f+3]+xm_f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf;   f2sum+=f*f; fsum+=f;
+
+    pf=f_img[y_f+4]+xm_f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf;   f2sum+=f*f; fsum+=f;
+
+    pf=f_img[y_f+5]+xm_f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf;   f2sum+=f*f; fsum+=f;
+
+    *sum= (float) fsum;
+    den=(121.0f*f2sum-fsum*fsum);
+    *recip=(float)(((den!=0.0)?1.0/den:0.0));
+}
+
+inline void db_SignedSquareNormCorr5x5_PreAlign_u(short *patch,const unsigned char * const *f_img,int x_f,int y_f,float *sum,float *recip)
+{
+    float den;
+    int f2sum,fsum;
+    int xm_f=x_f-2;
+
+#ifndef DB_USE_SSE2
+    const unsigned char *pf;
+    short f;
+
+    pf=f_img[y_f-2]+xm_f;
+    f= *pf++; f2sum=f*f; fsum=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf;   f2sum+=f*f; fsum+=f; (*patch++)=f;
+
+    pf=f_img[y_f-1]+xm_f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf;   f2sum+=f*f; fsum+=f; (*patch++)=f;
+
+    pf=f_img[y_f]+xm_f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf;   f2sum+=f*f; fsum+=f; (*patch++)=f;
+
+    pf=f_img[y_f+1]+xm_f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf;   f2sum+=f*f; fsum+=f; (*patch++)=f;
+
+    pf=f_img[y_f+2]+xm_f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf;   f2sum+=f*f; fsum+=f; (*patch++)=f;
+    //int xwi;
+    //int ywi;
+    //f2sum=0;
+    //fsum=0;
+    //for (int r=-5;r<=5;r++){
+    //  ywi=y_f+r;
+    //  for (int c=-5;c<=5;c++){
+    //      xwi=x_f+c;
+    //      f=f_img[ywi][xwi];
+    //      f2sum+=f*f;
+    //      fsum+=f;
+    //      (*patch++)=f;
+    //  }
+    //}
+    (*patch++)=0; (*patch++)=0; (*patch++)=0; (*patch++)=0; (*patch++)=0;
+    (*patch++)=0; (*patch++)=0;
+#endif /* DB_USE_SSE2 */
+
+    *sum= (float) fsum;
+    den=(25.0f*f2sum-fsum*fsum);
+    *recip= (float)((den!=0.0)?1.0/den:0.0);
+}
+
+inline void db_SignedSquareNormCorr21x21_PreAlign_u(short *patch,const unsigned char * const *f_img,int x_f,int y_f,float *sum,float *recip)
+{
+    float den;
+    int f2sum,fsum;
+    int xm_f=x_f-10;
+    short f;
+
+    int xwi;
+    int ywi;
+    f2sum=0;
+    fsum=0;
+    for (int r=-10;r<=10;r++){
+        ywi=y_f+r;
+        for (int c=-10;c<=10;c++){
+            xwi=x_f+c;
+            f=f_img[ywi][xwi];
+            f2sum+=f*f;
+            fsum+=f;
+            (*patch++)=f;
+        }
+    }
+
+    for(int i=442; i<512; i++)
+        (*patch++)=0;
+
+    *sum= (float) fsum;
+    den=(441.0f*f2sum-fsum*fsum);
+    *recip= (float)((den!=0.0)?1.0/den:0.0);
+
+
+}
+
+/* Lay out the image in the patch, computing norm and
+*/
+inline void db_SignedSquareNormCorr11x11_PreAlign_u(short *patch,const unsigned char * const *f_img,int x_f,int y_f,float *sum,float *recip)
+{
+    float den;
+    int f2sum,fsum;
+    int xm_f=x_f-5;
+
+#ifndef DB_USE_SSE2
+    const unsigned char *pf;
+    short f;
+
+    pf=f_img[y_f-5]+xm_f;
+    f= *pf++; f2sum=f*f;  fsum=f;  (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf;   f2sum+=f*f; fsum+=f; (*patch++)=f;
+
+    pf=f_img[y_f-4]+xm_f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf;   f2sum+=f*f; fsum+=f; (*patch++)=f;
+
+    pf=f_img[y_f-3]+xm_f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf;   f2sum+=f*f; fsum+=f; (*patch++)=f;
+
+    pf=f_img[y_f-2]+xm_f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf;   f2sum+=f*f; fsum+=f; (*patch++)=f;
+
+    pf=f_img[y_f-1]+xm_f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf;   f2sum+=f*f; fsum+=f; (*patch++)=f;
+
+    pf=f_img[y_f]+xm_f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf;   f2sum+=f*f; fsum+=f; (*patch++)=f;
+
+    pf=f_img[y_f+1]+xm_f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf;   f2sum+=f*f; fsum+=f; (*patch++)=f;
+
+    pf=f_img[y_f+2]+xm_f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf;   f2sum+=f*f; fsum+=f; (*patch++)=f;
+
+    pf=f_img[y_f+3]+xm_f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf;   f2sum+=f*f; fsum+=f; (*patch++)=f;
+
+    pf=f_img[y_f+4]+xm_f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf;   f2sum+=f*f; fsum+=f; (*patch++)=f;
+
+    pf=f_img[y_f+5]+xm_f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf;   f2sum+=f*f; fsum+=f; (*patch++)=f;
+
+    //int xwi;
+    //int ywi;
+    //f2sum=0;
+    //fsum=0;
+    //for (int r=-5;r<=5;r++){
+    //  ywi=y_f+r;
+    //  for (int c=-5;c<=5;c++){
+    //      xwi=x_f+c;
+    //      f=f_img[ywi][xwi];
+    //      f2sum+=f*f;
+    //      fsum+=f;
+    //      (*patch++)=f;
+    //  }
+    //}
+
+    (*patch++)=0; (*patch++)=0; (*patch++)=0; (*patch++)=0; (*patch++)=0;
+    (*patch++)=0; (*patch++)=0;
+#else
+    const unsigned char *pf0 =f_img[y_f-5]+xm_f;
+    const unsigned char *pf1 =f_img[y_f-4]+xm_f;
+    const unsigned char *pf2 =f_img[y_f-3]+xm_f;
+    const unsigned char *pf3 =f_img[y_f-2]+xm_f;
+    const unsigned char *pf4 =f_img[y_f-1]+xm_f;
+    const unsigned char *pf5 =f_img[y_f  ]+xm_f;
+    const unsigned char *pf6 =f_img[y_f+1]+xm_f;
+    const unsigned char *pf7 =f_img[y_f+2]+xm_f;
+    const unsigned char *pf8 =f_img[y_f+3]+xm_f;
+    const unsigned char *pf9 =f_img[y_f+4]+xm_f;
+    const unsigned char *pf10=f_img[y_f+5]+xm_f;
+
+    /* pixel mask */
+    const unsigned char pm[16] = {
+        0xFF,0xFF,
+        0xFF,0xFF,
+        0xFF,0xFF,
+        0,0,0,0,0,
+        0,0,0,0,0};
+    const unsigned char * pm_p = pm;
+
+    _asm
+    {
+        mov         ecx,patch   /* load patch pointer */
+        mov         ebx, pm_p   /* load pixel mask pointer */
+        movdqu      xmm1,[ebx]  /* load pixel mask */
+
+        pxor        xmm5,xmm5   /* set xmm5 to 0 accumulator for sum squares */
+        pxor        xmm4,xmm4   /* set xmm4 to 0 accumulator for sum */
+        pxor        xmm0,xmm0   /* set xmm0 to 0 */
+
+        /* row 0 */
+        mov         eax,pf0     /* load image pointer */
+        movdqu      xmm7,[eax]  /* load 16 pixels */
+        movdqa      xmm6,xmm7
+
+        punpcklbw   xmm7,xmm0   /* unpack low pixels (first 8)*/
+        punpckhbw   xmm6,xmm0   /* unpack high pixels (last 8)*/
+
+        pand        xmm6,xmm1   /* mask out pixels 12-16 */
+
+        movdqa      [ecx+0*22],xmm7 /* move short values to patch */
+        movdqa      [ecx+0*22+16],xmm6  /* move short values to patch */
+
+        paddusw     xmm4,xmm7   /* accumulate sums */
+        pmaddwd     xmm7,xmm7   /* multiply 16 bit ints and add into 32 bit ints */
+        paddd       xmm5,xmm7   /* accumulate sum squares */
+
+        paddw       xmm4,xmm6   /* accumulate sums */
+        pmaddwd     xmm6,xmm6   /* multiply 16 bit uints into 16 bit uints */
+        paddd       xmm5,xmm6   /* accumulate sum squares */
+
+        /* row 1 */
+        mov         eax,pf1     /* load image pointer */
+        movdqu      xmm7,[eax]  /* load 16 pixels */
+        movdqa      xmm6,xmm7
+
+        punpcklbw   xmm7,xmm0   /* unpack low pixels (first 8)*/
+        punpckhbw   xmm6,xmm0   /* unpack high pixels (last 8)*/
+
+        pand        xmm6,xmm1   /* mask out pixels 12-16 */
+
+        movdqu      [ecx+1*22],xmm7 /* move short values to patch */
+        movdqu      [ecx+1*22+16],xmm6  /* move short values to patch */
+
+        paddusw     xmm4,xmm7   /* accumulate sums */
+        pmaddwd     xmm7,xmm7   /* multiply 16 bit ints and add into 32 bit ints */
+        paddd       xmm5,xmm7   /* accumulate sum squares */
+
+        paddw       xmm4,xmm6   /* accumulate sums */
+        pmaddwd     xmm6,xmm6   /* multiply 16 bit uints into 16 bit uints */
+        paddd       xmm5,xmm6   /* accumulate sum squares */
+
+        /* row 2 */
+        mov         eax,pf2     /* load image pointer */
+        movdqu      xmm7,[eax]  /* load 16 pixels */
+        movdqa      xmm6,xmm7
+
+        punpcklbw   xmm7,xmm0   /* unpack low pixels (first 8)*/
+        punpckhbw   xmm6,xmm0   /* unpack high pixels (last 8)*/
+
+        pand        xmm6,xmm1   /* mask out pixels 12-16 */
+
+        movdqu      [ecx+2*22],xmm7 /* move short values to patch */
+        movdqu      [ecx+2*22+16],xmm6  /* move short values to patch */
+
+        paddusw     xmm4,xmm7   /* accumulate sums */
+        pmaddwd     xmm7,xmm7   /* multiply 16 bit ints and add into 32 bit ints */
+        paddd       xmm5,xmm7   /* accumulate sum squares */
+
+        paddw       xmm4,xmm6   /* accumulate sums */
+        pmaddwd     xmm6,xmm6   /* multiply 16 bit uints into 16 bit uints */
+        paddd       xmm5,xmm6   /* accumulate sum squares */
+
+        /* row 3 */
+        mov         eax,pf3     /* load image pointer */
+        movdqu      xmm7,[eax]  /* load 16 pixels */
+        movdqa      xmm6,xmm7
+
+        punpcklbw   xmm7,xmm0   /* unpack low pixels (first 8)*/
+        punpckhbw   xmm6,xmm0   /* unpack high pixels (last 8)*/
+
+        pand        xmm6,xmm1   /* mask out pixels 12-16 */
+
+        movdqu      [ecx+3*22],xmm7 /* move short values to patch */
+        movdqu      [ecx+3*22+16],xmm6  /* move short values to patch */
+
+        paddusw     xmm4,xmm7   /* accumulate sums */
+        pmaddwd     xmm7,xmm7   /* multiply 16 bit ints and add into 32 bit ints */
+        paddd       xmm5,xmm7   /* accumulate sum squares */
+
+        paddw       xmm4,xmm6   /* accumulate sums */
+        pmaddwd     xmm6,xmm6   /* multiply 16 bit uints into 16 bit uints */
+        paddd       xmm5,xmm6   /* accumulate sum squares */
+
+        /* row 4 */
+        mov         eax,pf4     /* load image pointer */
+        movdqu      xmm7,[eax]  /* load 16 pixels */
+        movdqa      xmm6,xmm7
+
+        punpcklbw   xmm7,xmm0   /* unpack low pixels (first 8)*/
+        punpckhbw   xmm6,xmm0   /* unpack high pixels (last 8)*/
+
+        pand        xmm6,xmm1   /* mask out pixels 12-16 */
+
+        movdqu      [ecx+4*22],xmm7 /* move short values to patch */
+        movdqu      [ecx+4*22+16],xmm6  /* move short values to patch */
+
+        paddusw     xmm4,xmm7   /* accumulate sums */
+        pmaddwd     xmm7,xmm7   /* multiply 16 bit ints and add into 32 bit ints */
+        paddd       xmm5,xmm7   /* accumulate sum squares */
+
+        paddw       xmm4,xmm6   /* accumulate sums */
+        pmaddwd     xmm6,xmm6   /* multiply 16 bit uints into 16 bit uints */
+        paddd       xmm5,xmm6   /* accumulate sum squares */
+
+        /* row 5 */
+        mov         eax,pf5     /* load image pointer */
+        movdqu      xmm7,[eax]  /* load 16 pixels */
+        movdqa      xmm6,xmm7
+
+        punpcklbw   xmm7,xmm0   /* unpack low pixels (first 8)*/
+        punpckhbw   xmm6,xmm0   /* unpack high pixels (last 8)*/
+
+        pand        xmm6,xmm1   /* mask out pixels 12-16 */
+
+        movdqu      [ecx+5*22],xmm7 /* move short values to patch */
+        movdqu      [ecx+5*22+16],xmm6  /* move short values to patch */
+
+        paddusw     xmm4,xmm7   /* accumulate sums */
+        pmaddwd     xmm7,xmm7   /* multiply 16 bit ints and add into 32 bit ints */
+        paddd       xmm5,xmm7   /* accumulate sum squares */
+
+        paddw       xmm4,xmm6   /* accumulate sums */
+        pmaddwd     xmm6,xmm6   /* multiply 16 bit uints into 16 bit uints */
+        paddd       xmm5,xmm6   /* accumulate sum squares */
+
+        /* row 6 */
+        mov         eax,pf6     /* load image pointer */
+        movdqu      xmm7,[eax]  /* load 16 pixels */
+        movdqa      xmm6,xmm7
+
+        punpcklbw   xmm7,xmm0   /* unpack low pixels (first 8)*/
+        punpckhbw   xmm6,xmm0   /* unpack high pixels (last 8)*/
+
+        pand        xmm6,xmm1   /* mask out pixels 12-16 */
+
+        movdqu      [ecx+6*22],xmm7 /* move short values to patch */
+        movdqu      [ecx+6*22+16],xmm6  /* move short values to patch */
+
+        paddusw     xmm4,xmm7   /* accumulate sums */
+        pmaddwd     xmm7,xmm7   /* multiply 16 bit ints and add into 32 bit ints */
+        paddd       xmm5,xmm7   /* accumulate sum squares */
+
+        paddw       xmm4,xmm6   /* accumulate sums */
+        pmaddwd     xmm6,xmm6   /* multiply 16 bit uints into 16 bit uints */
+        paddd       xmm5,xmm6   /* accumulate sum squares */
+
+        /* row 7 */
+        mov         eax,pf7     /* load image pointer */
+        movdqu      xmm7,[eax]  /* load 16 pixels */
+        movdqa      xmm6,xmm7
+
+        punpcklbw   xmm7,xmm0   /* unpack low pixels (first 8)*/
+        punpckhbw   xmm6,xmm0   /* unpack high pixels (last 8)*/
+
+        pand        xmm6,xmm1   /* mask out pixels 12-16 */
+
+        movdqu      [ecx+7*22],xmm7 /* move short values to patch */
+        movdqu      [ecx+7*22+16],xmm6  /* move short values to patch */
+
+        paddusw     xmm4,xmm7   /* accumulate sums */
+        pmaddwd     xmm7,xmm7   /* multiply 16 bit ints and add into 32 bit ints */
+        paddd       xmm5,xmm7   /* accumulate sum squares */
+
+        paddw       xmm4,xmm6   /* accumulate sums */
+        pmaddwd     xmm6,xmm6   /* multiply 16 bit uints into 16 bit uints */
+        paddd       xmm5,xmm6   /* accumulate sum squares */
+
+        /* row 8 */
+        mov         eax,pf8     /* load image pointer */
+        movdqu      xmm7,[eax]  /* load 16 pixels */
+        movdqa      xmm6,xmm7
+
+        punpcklbw   xmm7,xmm0   /* unpack low pixels (first 8)*/
+        punpckhbw   xmm6,xmm0   /* unpack high pixels (last 8)*/
+
+        pand        xmm6,xmm1   /* mask out pixels 12-16 */
+
+        movdqa      [ecx+8*22],xmm7 /* move short values to patch */
+        movdqa      [ecx+8*22+16],xmm6  /* move short values to patch */
+
+        paddusw     xmm4,xmm7   /* accumulate sums */
+        pmaddwd     xmm7,xmm7   /* multiply 16 bit ints and add into 32 bit ints */
+        paddd       xmm5,xmm7   /* accumulate sum squares */
+
+        paddw       xmm4,xmm6   /* accumulate sums */
+        pmaddwd     xmm6,xmm6   /* multiply 16 bit uints into 16 bit uints */
+        paddd       xmm5,xmm6   /* accumulate sum squares */
+
+        /* row 9 */
+        mov         eax,pf9     /* load image pointer */
+        movdqu      xmm7,[eax]  /* load 16 pixels */
+        movdqa      xmm6,xmm7
+
+        punpcklbw   xmm7,xmm0   /* unpack low pixels (first 8)*/
+        punpckhbw   xmm6,xmm0   /* unpack high pixels (last 8)*/
+
+        pand        xmm6,xmm1   /* mask out pixels 12-16 */
+
+        movdqu      [ecx+9*22],xmm7 /* move short values to patch */
+        movdqu      [ecx+9*22+16],xmm6  /* move short values to patch */
+
+        paddusw     xmm4,xmm7   /* accumulate sums */
+        pmaddwd     xmm7,xmm7   /* multiply 16 bit ints and add into 32 bit ints */
+        paddd       xmm5,xmm7   /* accumulate sum squares */
+
+        paddw       xmm4,xmm6   /* accumulate sums */
+        pmaddwd     xmm6,xmm6   /* multiply 16 bit uints into 16 bit uints */
+        paddd       xmm5,xmm6   /* accumulate sum squares */
+
+        /* row 10 */
+        mov         eax,pf10    /* load image pointer */
+        movdqu      xmm7,[eax]  /* load 16 pixels */
+        movdqa      xmm6,xmm7
+
+        punpcklbw   xmm7,xmm0   /* unpack low pixels (first 8)*/
+        punpckhbw   xmm6,xmm0   /* unpack high pixels (last 8)*/
+
+        pand        xmm6,xmm1   /* mask out pixels 12-16 */
+
+        movdqu      [ecx+10*22],xmm7    /* move short values to patch */
+        movdqu      [ecx+10*22+16],xmm6 /* move short values to patch */
+
+        paddusw     xmm4,xmm7   /* accumulate sums */
+        pmaddwd     xmm7,xmm7   /* multiply 16 bit ints and add into 32 bit ints */
+        paddd       xmm5,xmm7   /* accumulate sum squares */
+
+        paddw       xmm4,xmm6   /* accumulate sums */
+        pmaddwd     xmm6,xmm6   /* multiply 16 bit ints and add into 32 bit ints */
+        paddd       xmm5,xmm6   /* accumulate sum squares */
+
+        /* add up the sum squares */
+        movhlps     xmm0,xmm5   /* high half to low half */
+        paddd       xmm5,xmm0   /* add high to low */
+        pshuflw     xmm0,xmm5, 0xE /* reshuffle */
+        paddd       xmm5,xmm0   /* add remaining */
+        movd        f2sum,xmm5
+
+        /* add up the sum */
+        movhlps     xmm0,xmm4
+        paddw       xmm4,xmm0   /* halves added */
+        pshuflw     xmm0,xmm4,0xE
+        paddw       xmm4,xmm0   /* quarters added */
+        pshuflw     xmm0,xmm4,0x1
+        paddw       xmm4,xmm0   /* eighth added */
+        movd        fsum, xmm4
+
+        emms
+    }
+
+    fsum = fsum & 0xFFFF;
+
+    patch[126] = 0;
+    patch[127] = 0;
+#endif /* DB_USE_SSE2 */
+
+    *sum= (float) fsum;
+    den=(121.0f*f2sum-fsum*fsum);
+    *recip= (float)((den!=0.0)?1.0/den:0.0);
+}
+
+void AffineWarpPointOffset(float &r_w,float &c_w,double Hinv[9],int r,int c)
+{
+    r_w=(float)(Hinv[3]*c+Hinv[4]*r);
+    c_w=(float)(Hinv[0]*c+Hinv[1]*r);
+}
+
+
+
+/*!
+Prewarp the patches with given affine transform. For a given homogeneous point "x", "H*x" is
+the warped point and for any displacement "d" in the warped image resulting in point "y", the
+corresponding point in the original image is given by "Hinv*y", which can be simplified for affine H.
+If "affine" is 1, then nearest neighbor method is used, else if it is 2, then
+bilinear method is used.
+ */
+inline void db_SignedSquareNormCorr11x11_PreAlign_AffinePatchWarp_u(short *patch,const unsigned char * const *f_img,
+                                                                    int xi,int yi,float *sum,float *recip,
+                                                                    const double Hinv[9],int affine)
+{
+    float den;
+    short f;
+    int f2sum,fsum;
+
+    f2sum=0;
+    fsum=0;
+
+    if (affine==1)
+    {
+        for (int r=0;r<11;r++){
+            for (int c=0;c<11;c++){
+                f=f_img[yi+AffineWarpPoint_NN_LUT_y[r][c]][xi+AffineWarpPoint_NN_LUT_x[r][c]];
+                f2sum+=f*f;
+                fsum+=f;
+                (*patch++)=f;
+            }
+        }
+    }
+    else if (affine==2)
+    {
+        for (int r=0;r<11;r++){
+            for (int c=0;c<11;c++){
+                f=db_BilinearInterpolation(yi+AffineWarpPoint_BL_LUT_y[r][c]
+                ,xi+AffineWarpPoint_BL_LUT_x[r][c],f_img);
+                f2sum+=f*f;
+                fsum+=f;
+                (*patch++)=f;
+            }
+        }
+    }
+
+
+
+    (*patch++)=0; (*patch++)=0; (*patch++)=0; (*patch++)=0; (*patch++)=0;
+    (*patch++)=0; (*patch++)=0;
+
+    *sum= (float) fsum;
+    den=(121.0f*f2sum-fsum*fsum);
+    *recip= (float)((den!=0.0)?1.0/den:0.0);
+}
+
+
+inline float db_SignedSquareNormCorr11x11_Post_u(unsigned char **f_img,unsigned char **g_img,int x_f,int y_f,int x_g,int y_g,
+                                                float fsum_gsum,float f_recip_g_recip)
+{
+    unsigned char *pf,*pg;
+    int fgsum;
+    float fg_corr;
+    int xm_f,xm_g;
+
+    xm_f=x_f-5;
+    xm_g=x_g-5;
+
+    pf=f_img[y_f-5]+xm_f; pg=g_img[y_g-5]+xm_g;
+    fgsum=(*pf++)*(*pg++);  fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++);
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++);
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++);
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf)*(*pg);
+
+    pf=f_img[y_f-4]+xm_f; pg=g_img[y_g-4]+xm_g;
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++);
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++);
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++);
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf)*(*pg);
+
+    pf=f_img[y_f-3]+xm_f; pg=g_img[y_g-3]+xm_g;
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++);
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++);
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++);
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf)*(*pg);
+
+    pf=f_img[y_f-2]+xm_f; pg=g_img[y_g-2]+xm_g;
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++);
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++);
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++);
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf)*(*pg);
+
+    pf=f_img[y_f-1]+xm_f; pg=g_img[y_g-1]+xm_g;
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++);
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++);
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++);
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf)*(*pg);
+
+    pf=f_img[y_f]+xm_f; pg=g_img[y_g]+xm_g;
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++);
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++);
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++);
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf)*(*pg);
+
+    pf=f_img[y_f+1]+xm_f; pg=g_img[y_g+1]+xm_g;
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++);
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++);
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++);
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf)*(*pg);
+
+    pf=f_img[y_f+2]+xm_f; pg=g_img[y_g+2]+xm_g;
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++);
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++);
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++);
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf)*(*pg);
+
+    pf=f_img[y_f+3]+xm_f; pg=g_img[y_g+3]+xm_g;
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++);
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++);
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++);
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf)*(*pg);
+
+    pf=f_img[y_f+4]+xm_f; pg=g_img[y_g+4]+xm_g;
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++);
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++);
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++);
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf)*(*pg);
+
+    pf=f_img[y_f+5]+xm_f; pg=g_img[y_g+5]+xm_g;
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++);
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++);
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++);
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf)*(*pg);
+
+    fg_corr=121.0f*fgsum-fsum_gsum;
+    if(fg_corr>=0.0) return(fg_corr*fg_corr*f_recip_g_recip);
+    return(-fg_corr*fg_corr*f_recip_g_recip);
+}
+
+float db_SignedSquareNormCorr21x21Aligned_Post_s(const short *f_patch,const short *g_patch,float fsum_gsum,float f_recip_g_recip)
+{
+    float fgsum,fg_corr;
+
+    fgsum= (float) db_ScalarProduct512_s(f_patch,g_patch);
+
+    fg_corr=441.0f*fgsum-fsum_gsum;
+    if(fg_corr>=0.0) return(fg_corr*fg_corr*f_recip_g_recip);
+    return(-fg_corr*fg_corr*f_recip_g_recip);
+}
+
+
+float db_SignedSquareNormCorr11x11Aligned_Post_s(const short *f_patch,const short *g_patch,float fsum_gsum,float f_recip_g_recip)
+{
+    float fgsum,fg_corr;
+
+    fgsum= (float) db_ScalarProduct128_s(f_patch,g_patch);
+
+    fg_corr=121.0f*fgsum-fsum_gsum;
+    if(fg_corr>=0.0) return(fg_corr*fg_corr*f_recip_g_recip);
+    return(-fg_corr*fg_corr*f_recip_g_recip);
+}
+
+float db_SignedSquareNormCorr5x5Aligned_Post_s(const short *f_patch,const short *g_patch,float fsum_gsum,float f_recip_g_recip)
+{
+    float fgsum,fg_corr;
+
+    fgsum= (float) db_ScalarProduct32_s(f_patch,g_patch);
+
+    fg_corr=25.0f*fgsum-fsum_gsum;
+    if(fg_corr>=0.0) return(fg_corr*fg_corr*f_recip_g_recip);
+    return(-fg_corr*fg_corr*f_recip_g_recip);
+}
+
+
+inline float db_SignedSquareNormCorr15x15_u(unsigned char **f_img,unsigned char **g_img,int x_f,int y_f,int x_g,int y_g)
+{
+    unsigned char *pf,*pg;
+    float f,g,fgsum,f2sum,g2sum,fsum,gsum,fg_corr,den;
+    int xm_f,xm_g;
+
+    xm_f=x_f-7;
+    xm_g=x_g-7;
+    fgsum=0.0; f2sum=0.0; g2sum=0.0; fsum=0.0; gsum=0.0;
+
+    pf=f_img[y_f-7]+xm_f; pg=g_img[y_g-7]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f-6]+xm_f; pg=g_img[y_g-6]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f-5]+xm_f; pg=g_img[y_g-5]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f-4]+xm_f; pg=g_img[y_g-4]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f-3]+xm_f; pg=g_img[y_g-3]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f-2]+xm_f; pg=g_img[y_g-2]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f-1]+xm_f; pg=g_img[y_g-1]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f]+xm_f; pg=g_img[y_g]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f+1]+xm_f; pg=g_img[y_g+1]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f+2]+xm_f; pg=g_img[y_g+2]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f+3]+xm_f; pg=g_img[y_g+3]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f+4]+xm_f; pg=g_img[y_g+4]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f+5]+xm_f; pg=g_img[y_g+5]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f+6]+xm_f; pg=g_img[y_g+6]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f+7]+xm_f; pg=g_img[y_g+7]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    fg_corr=225.0f*fgsum-fsum*gsum;
+    den=(225.0f*f2sum-fsum*fsum)*(225.0f*g2sum-gsum*gsum);
+    if(den!=0.0)
+    {
+        if(fg_corr>=0.0) return(fg_corr*fg_corr/den);
+        return(-fg_corr*fg_corr/den);
+    }
+    return(0.0);
+}
+
+inline float db_SignedSquareNormCorr7x7_f(float **f_img,float **g_img,int x_f,int y_f,int x_g,int y_g)
+{
+    float f,g,*pf,*pg,fgsum,f2sum,g2sum,fsum,gsum,fg_corr,den;
+    int xm_f,xm_g;
+
+    xm_f=x_f-3;
+    xm_g=x_g-3;
+    fgsum=0.0; f2sum=0.0; g2sum=0.0; fsum=0.0; gsum=0.0;
+
+    pf=f_img[y_f-3]+xm_f; pg=g_img[y_g-3]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f-2]+xm_f; pg=g_img[y_g-2]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f-1]+xm_f; pg=g_img[y_g-1]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f]+xm_f; pg=g_img[y_g]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f+1]+xm_f; pg=g_img[y_g+1]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f+2]+xm_f; pg=g_img[y_g+2]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f+3]+xm_f; pg=g_img[y_g+3]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    fg_corr=49.0f*fgsum-fsum*gsum;
+    den=(49.0f*f2sum-fsum*fsum)*(49.0f*g2sum-gsum*gsum);
+    if(den!=0.0)
+    {
+        if(fg_corr>=0.0) return(fg_corr*fg_corr/den);
+        return(-fg_corr*fg_corr/den);
+    }
+    return(0.0);
+}
+
+inline float db_SignedSquareNormCorr9x9_f(float **f_img,float **g_img,int x_f,int y_f,int x_g,int y_g)
+{
+    float f,g,*pf,*pg,fgsum,f2sum,g2sum,fsum,gsum,fg_corr,den;
+    int xm_f,xm_g;
+
+    xm_f=x_f-4;
+    xm_g=x_g-4;
+    fgsum=0.0; f2sum=0.0; g2sum=0.0; fsum=0.0; gsum=0.0;
+
+    pf=f_img[y_f-4]+xm_f; pg=g_img[y_g-4]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f-3]+xm_f; pg=g_img[y_g-3]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f-2]+xm_f; pg=g_img[y_g-2]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f-1]+xm_f; pg=g_img[y_g-1]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f]+xm_f; pg=g_img[y_g]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f+1]+xm_f; pg=g_img[y_g+1]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f+2]+xm_f; pg=g_img[y_g+2]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f+3]+xm_f; pg=g_img[y_g+3]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f+4]+xm_f; pg=g_img[y_g+4]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    fg_corr=81.0f*fgsum-fsum*gsum;
+    den=(81.0f*f2sum-fsum*fsum)*(81.0f*g2sum-gsum*gsum);
+    if(den!=0.0)
+    {
+        if(fg_corr>=0.0) return(fg_corr*fg_corr/den);
+        return(-fg_corr*fg_corr/den);
+    }
+    return(0.0);
+}
+
+inline float db_SignedSquareNormCorr11x11_f(float **f_img,float **g_img,int x_f,int y_f,int x_g,int y_g)
+{
+    float *pf,*pg;
+    float f,g,fgsum,f2sum,g2sum,fsum,gsum,fg_corr,den;
+    int xm_f,xm_g;
+
+    xm_f=x_f-5;
+    xm_g=x_g-5;
+    fgsum=0.0; f2sum=0.0; g2sum=0.0; fsum=0.0; gsum=0.0;
+
+    pf=f_img[y_f-5]+xm_f; pg=g_img[y_g-5]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f-4]+xm_f; pg=g_img[y_g-4]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f-3]+xm_f; pg=g_img[y_g-3]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f-2]+xm_f; pg=g_img[y_g-2]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f-1]+xm_f; pg=g_img[y_g-1]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f]+xm_f; pg=g_img[y_g]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f+1]+xm_f; pg=g_img[y_g+1]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f+2]+xm_f; pg=g_img[y_g+2]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f+3]+xm_f; pg=g_img[y_g+3]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f+4]+xm_f; pg=g_img[y_g+4]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f+5]+xm_f; pg=g_img[y_g+5]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    fg_corr=121.0f*fgsum-fsum*gsum;
+    den=(121.0f*f2sum-fsum*fsum)*(121.0f*g2sum-gsum*gsum);
+    if(den!=0.0)
+    {
+        if(fg_corr>=0.0) return(fg_corr*fg_corr/den);
+        return(-fg_corr*fg_corr/den);
+    }
+    return(0.0);
+}
+
+inline void db_SignedSquareNormCorr11x11_Pre_f(float **f_img,int x_f,int y_f,float *sum,float *recip)
+{
+    float *pf,den;
+    float f,f2sum,fsum;
+    int xm_f;
+
+    xm_f=x_f-5;
+
+    pf=f_img[y_f-5]+xm_f;
+    f= *pf++; f2sum=f*f;  fsum=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf;   f2sum+=f*f; fsum+=f;
+
+    pf=f_img[y_f-4]+xm_f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf;   f2sum+=f*f; fsum+=f;
+
+    pf=f_img[y_f-3]+xm_f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf;   f2sum+=f*f; fsum+=f;
+
+    pf=f_img[y_f-2]+xm_f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf;   f2sum+=f*f; fsum+=f;
+
+    pf=f_img[y_f-1]+xm_f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf;   f2sum+=f*f; fsum+=f;
+
+    pf=f_img[y_f]+xm_f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf;   f2sum+=f*f; fsum+=f;
+
+    pf=f_img[y_f+1]+xm_f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf;   f2sum+=f*f; fsum+=f;
+
+    pf=f_img[y_f+2]+xm_f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf;   f2sum+=f*f; fsum+=f;
+
+    pf=f_img[y_f+3]+xm_f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf;   f2sum+=f*f; fsum+=f;
+
+    pf=f_img[y_f+4]+xm_f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf;   f2sum+=f*f; fsum+=f;
+
+    pf=f_img[y_f+5]+xm_f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf++; f2sum+=f*f; fsum+=f;
+    f= *pf;   f2sum+=f*f; fsum+=f;
+
+    *sum=fsum;
+    den=(121.0f*f2sum-fsum*fsum);
+    *recip= (float) ((den!=0.0)?1.0/den:0.0);
+}
+
+inline void db_SignedSquareNormCorr11x11_PreAlign_f(float *patch,const float * const *f_img,int x_f,int y_f,float *sum,float *recip)
+{
+    const float *pf;
+    float den,f,f2sum,fsum;
+    int xm_f;
+
+    xm_f=x_f-5;
+
+    pf=f_img[y_f-5]+xm_f;
+    f= *pf++; f2sum=f*f;  fsum=f;  (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf;   f2sum+=f*f; fsum+=f; (*patch++)=f;
+
+    pf=f_img[y_f-4]+xm_f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf;   f2sum+=f*f; fsum+=f; (*patch++)=f;
+
+    pf=f_img[y_f-3]+xm_f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf;   f2sum+=f*f; fsum+=f; (*patch++)=f;
+
+    pf=f_img[y_f-2]+xm_f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf;   f2sum+=f*f; fsum+=f; (*patch++)=f;
+
+    pf=f_img[y_f-1]+xm_f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf;   f2sum+=f*f; fsum+=f; (*patch++)=f;
+
+    pf=f_img[y_f]+xm_f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf;   f2sum+=f*f; fsum+=f; (*patch++)=f;
+
+    pf=f_img[y_f+1]+xm_f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf;   f2sum+=f*f; fsum+=f; (*patch++)=f;
+
+    pf=f_img[y_f+2]+xm_f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf;   f2sum+=f*f; fsum+=f; (*patch++)=f;
+
+    pf=f_img[y_f+3]+xm_f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf;   f2sum+=f*f; fsum+=f; (*patch++)=f;
+
+    pf=f_img[y_f+4]+xm_f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf;   f2sum+=f*f; fsum+=f; (*patch++)=f;
+
+    pf=f_img[y_f+5]+xm_f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf++; f2sum+=f*f; fsum+=f; (*patch++)=f;
+    f= *pf;   f2sum+=f*f; fsum+=f; (*patch++)=f;
+
+    (*patch++)=0.0; (*patch++)=0.0; (*patch++)=0.0; (*patch++)=0.0; (*patch++)=0.0;
+    (*patch++)=0.0; (*patch++)=0.0;
+
+    *sum=fsum;
+    den=(121.0f*f2sum-fsum*fsum);
+    *recip= (float) ((den!=0.0)?1.0/den:0.0);
+}
+
+inline float db_SignedSquareNormCorr11x11_Post_f(float **f_img,float **g_img,int x_f,int y_f,int x_g,int y_g,
+                                                float fsum_gsum,float f_recip_g_recip)
+{
+    float *pf,*pg;
+    float fgsum,fg_corr;
+    int xm_f,xm_g;
+
+    xm_f=x_f-5;
+    xm_g=x_g-5;
+
+    pf=f_img[y_f-5]+xm_f; pg=g_img[y_g-5]+xm_g;
+    fgsum=(*pf++)*(*pg++);  fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++);
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++);
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++);
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf)*(*pg);
+
+    pf=f_img[y_f-4]+xm_f; pg=g_img[y_g-4]+xm_g;
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++);
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++);
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++);
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf)*(*pg);
+
+    pf=f_img[y_f-3]+xm_f; pg=g_img[y_g-3]+xm_g;
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++);
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++);
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++);
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf)*(*pg);
+
+    pf=f_img[y_f-2]+xm_f; pg=g_img[y_g-2]+xm_g;
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++);
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++);
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++);
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf)*(*pg);
+
+    pf=f_img[y_f-1]+xm_f; pg=g_img[y_g-1]+xm_g;
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++);
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++);
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++);
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf)*(*pg);
+
+    pf=f_img[y_f]+xm_f; pg=g_img[y_g]+xm_g;
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++);
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++);
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++);
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf)*(*pg);
+
+    pf=f_img[y_f+1]+xm_f; pg=g_img[y_g+1]+xm_g;
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++);
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++);
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++);
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf)*(*pg);
+
+    pf=f_img[y_f+2]+xm_f; pg=g_img[y_g+2]+xm_g;
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++);
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++);
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++);
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf)*(*pg);
+
+    pf=f_img[y_f+3]+xm_f; pg=g_img[y_g+3]+xm_g;
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++);
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++);
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++);
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf)*(*pg);
+
+    pf=f_img[y_f+4]+xm_f; pg=g_img[y_g+4]+xm_g;
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++);
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++);
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++);
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf)*(*pg);
+
+    pf=f_img[y_f+5]+xm_f; pg=g_img[y_g+5]+xm_g;
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++);
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++);
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++); fgsum+=(*pf++)*(*pg++);
+    fgsum+=(*pf++)*(*pg++); fgsum+=(*pf)*(*pg);
+
+    fg_corr=121.0f*fgsum-fsum_gsum;
+    if(fg_corr>=0.0) return(fg_corr*fg_corr*f_recip_g_recip);
+    return(-fg_corr*fg_corr*f_recip_g_recip);
+}
+
+inline float db_SignedSquareNormCorr11x11Aligned_Post_f(const float *f_patch,const float *g_patch,float fsum_gsum,float f_recip_g_recip)
+{
+    float fgsum,fg_corr;
+
+    fgsum=db_ScalarProduct128Aligned16_f(f_patch,g_patch);
+
+    fg_corr=121.0f*fgsum-fsum_gsum;
+    if(fg_corr>=0.0) return(fg_corr*fg_corr*f_recip_g_recip);
+    return(-fg_corr*fg_corr*f_recip_g_recip);
+}
+
+inline float db_SignedSquareNormCorr15x15_f(float **f_img,float **g_img,int x_f,int y_f,int x_g,int y_g)
+{
+    float *pf,*pg;
+    float f,g,fgsum,f2sum,g2sum,fsum,gsum,fg_corr,den;
+    int xm_f,xm_g;
+
+    xm_f=x_f-7;
+    xm_g=x_g-7;
+    fgsum=0.0; f2sum=0.0; g2sum=0.0; fsum=0.0; gsum=0.0;
+
+    pf=f_img[y_f-7]+xm_f; pg=g_img[y_g-7]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f-6]+xm_f; pg=g_img[y_g-6]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f-5]+xm_f; pg=g_img[y_g-5]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f-4]+xm_f; pg=g_img[y_g-4]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f-3]+xm_f; pg=g_img[y_g-3]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f-2]+xm_f; pg=g_img[y_g-2]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f-1]+xm_f; pg=g_img[y_g-1]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f]+xm_f; pg=g_img[y_g]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f+1]+xm_f; pg=g_img[y_g+1]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f+2]+xm_f; pg=g_img[y_g+2]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f+3]+xm_f; pg=g_img[y_g+3]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f+4]+xm_f; pg=g_img[y_g+4]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f+5]+xm_f; pg=g_img[y_g+5]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f+6]+xm_f; pg=g_img[y_g+6]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    pf=f_img[y_f+7]+xm_f; pg=g_img[y_g+7]+xm_g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf++; g= *pg++; fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+    f= *pf;   g= *pg;   fgsum+=f*g; f2sum+=f*f; g2sum+=g*g; fsum+=f; gsum+=g;
+
+    fg_corr=225.0f*fgsum-fsum*gsum;
+    den=(225.0f*f2sum-fsum*fsum)*(225.0f*g2sum-gsum*gsum);
+    if(den!=0.0)
+    {
+        if(fg_corr>=0.0) return(fg_corr*fg_corr/den);
+        return(-fg_corr*fg_corr/den);
+    }
+    return(0.0);
+}
+
+db_Bucket_f** db_AllocBuckets_f(int nr_h,int nr_v,int bd)
+{
+    int i,j;
+    db_Bucket_f **bp,*b;
+
+    b=new db_Bucket_f [(nr_h+2)*(nr_v+2)];
+    bp=new db_Bucket_f* [(nr_v+2)];
+    bp=bp+1;
+    for(i= -1;i<=nr_v;i++)
+    {
+        bp[i]=b+1+(nr_h+2)*(i+1);
+        for(j= -1;j<=nr_h;j++)
+        {
+            bp[i][j].ptr=new db_PointInfo_f [bd];
+        }
+    }
+
+    return(bp);
+}
+
+db_Bucket_u** db_AllocBuckets_u(int nr_h,int nr_v,int bd)
+{
+    int i,j;
+    db_Bucket_u **bp,*b;
+
+    b=new db_Bucket_u [(nr_h+2)*(nr_v+2)];
+    bp=new db_Bucket_u* [(nr_v+2)];
+    bp=bp+1;
+    for(i= -1;i<=nr_v;i++)
+    {
+        bp[i]=b+1+(nr_h+2)*(i+1);
+        for(j= -1;j<=nr_h;j++)
+        {
+            bp[i][j].ptr=new db_PointInfo_u [bd];
+        }
+    }
+
+    return(bp);
+}
+
+void db_FreeBuckets_f(db_Bucket_f **bp,int nr_h,int nr_v)
+{
+    int i,j;
+
+    for(i= -1;i<=nr_v;i++) for(j= -1;j<=nr_h;j++)
+    {
+        delete [] bp[i][j].ptr;
+    }
+    delete [] (bp[-1]-1);
+    delete [] (bp-1);
+}
+
+void db_FreeBuckets_u(db_Bucket_u **bp,int nr_h,int nr_v)
+{
+    int i,j;
+
+    for(i= -1;i<=nr_v;i++) for(j= -1;j<=nr_h;j++)
+    {
+        delete [] bp[i][j].ptr;
+    }
+    delete [] (bp[-1]-1);
+    delete [] (bp-1);
+}
+
+void db_EmptyBuckets_f(db_Bucket_f **bp,int nr_h,int nr_v)
+{
+    int i,j;
+    for(i= -1;i<=nr_v;i++) for(j= -1;j<=nr_h;j++) bp[i][j].nr=0;
+}
+
+void db_EmptyBuckets_u(db_Bucket_u **bp,int nr_h,int nr_v)
+{
+    int i,j;
+    for(i= -1;i<=nr_v;i++) for(j= -1;j<=nr_h;j++) bp[i][j].nr=0;
+}
+
+float* db_FillBuckets_f(float *patch_space,const float * const *f_img,db_Bucket_f **bp,int bw,int bh,int nr_h,int nr_v,int bd,const double *x,const double *y,int nr_corners)
+{
+    int i,xi,yi,xpos,ypos,nr;
+    db_Bucket_f *br;
+    db_PointInfo_f *pir;
+
+    db_EmptyBuckets_f(bp,nr_h,nr_v);
+    for(i=0;i<nr_corners;i++)
+    {
+        xi=(int) x[i];
+        yi=(int) y[i];
+        xpos=xi/bw;
+        ypos=yi/bh;
+        if(xpos>=0 && xpos<nr_h && ypos>=0 && ypos<nr_v)
+        {
+            br=&bp[ypos][xpos];
+            nr=br->nr;
+            if(nr<bd)
+            {
+                pir=&(br->ptr[nr]);
+                pir->x=xi;
+                pir->y=yi;
+                pir->id=i;
+                pir->pir=0;
+                pir->patch=patch_space;
+                br->nr=nr+1;
+
+                db_SignedSquareNormCorr11x11_PreAlign_f(patch_space,f_img,xi,yi,&(pir->sum),&(pir->recip));
+                patch_space+=128;
+            }
+        }
+    }
+    return(patch_space);
+}
+
+short* db_FillBuckets_u(short *patch_space,const unsigned char * const *f_img,db_Bucket_u **bp,int bw,int bh,int nr_h,int nr_v,int bd,const double *x,const double *y,int nr_corners,int use_smaller_matching_window, int use_21)
+{
+    int i,xi,yi,xpos,ypos,nr;
+    db_Bucket_u *br;
+    db_PointInfo_u *pir;
+
+    db_EmptyBuckets_u(bp,nr_h,nr_v);
+    for(i=0;i<nr_corners;i++)
+    {
+        xi=(int)db_roundi(x[i]);
+        yi=(int)db_roundi(y[i]);
+        xpos=xi/bw;
+        ypos=yi/bh;
+        if(xpos>=0 && xpos<nr_h && ypos>=0 && ypos<nr_v)
+        {
+            br=&bp[ypos][xpos];
+            nr=br->nr;
+            if(nr<bd)
+            {
+                pir=&(br->ptr[nr]);
+                pir->x=xi;
+                pir->y=yi;
+                pir->id=i;
+                pir->pir=0;
+                pir->patch=patch_space;
+                br->nr=nr+1;
+
+                if(use_21)
+                {
+                    db_SignedSquareNormCorr21x21_PreAlign_u(patch_space,f_img,xi,yi,&(pir->sum),&(pir->recip));
+                    patch_space+=512;
+                }
+                else
+                {
+                if(!use_smaller_matching_window)
+                {
+                    db_SignedSquareNormCorr11x11_PreAlign_u(patch_space,f_img,xi,yi,&(pir->sum),&(pir->recip));
+                    patch_space+=128;
+                }
+                else
+                {
+                    db_SignedSquareNormCorr5x5_PreAlign_u(patch_space,f_img,xi,yi,&(pir->sum),&(pir->recip));
+                    patch_space+=32;
+                }
+                }
+            }
+        }
+    }
+    return(patch_space);
+}
+
+
+
+float* db_FillBucketsPrewarped_f(float *patch_space,const float *const *f_img,db_Bucket_f **bp,int bw,int bh,int nr_h,int nr_v,int bd,const double *x,const double *y,int nr_corners,const double H[9])
+{
+    int i,xi,yi,xpos,ypos,nr,wxi,wyi;
+    db_Bucket_f *br;
+    db_PointInfo_f *pir;
+    double xd[2],wx[2];
+
+    db_EmptyBuckets_f(bp,nr_h,nr_v);
+    for(i=0;i<nr_corners;i++)
+    {
+        xd[0]=x[i];
+        xd[1]=y[i];
+        xi=(int) xd[0];
+        yi=(int) xd[1];
+        db_ImageHomographyInhomogenous(wx,H,xd);
+        wxi=(int) wx[0];
+        wyi=(int) wx[1];
+
+        xpos=((wxi+bw)/bw)-1;
+        ypos=((wyi+bh)/bh)-1;
+        if(xpos>= -1 && xpos<=nr_h && ypos>= -1 && ypos<=nr_v)
+        {
+            br=&bp[ypos][xpos];
+            nr=br->nr;
+            if(nr<bd)
+            {
+                pir=&(br->ptr[nr]);
+                pir->x=wxi;
+                pir->y=wyi;
+                pir->id=i;
+                pir->pir=0;
+                pir->patch=patch_space;
+                br->nr=nr+1;
+
+                db_SignedSquareNormCorr11x11_PreAlign_f(patch_space,f_img,xi,yi,&(pir->sum),&(pir->recip));
+                patch_space+=128;
+            }
+        }
+    }
+    return(patch_space);
+}
+
+short* db_FillBucketsPrewarped_u(short *patch_space,const unsigned char * const *f_img,db_Bucket_u **bp,
+                                 int bw,int bh,int nr_h,int nr_v,int bd,const double *x,const double *y,
+                                 int nr_corners,const double H[9])
+{
+    int i,xi,yi,xpos,ypos,nr,wxi,wyi;
+    db_Bucket_u *br;
+    db_PointInfo_u *pir;
+    double xd[2],wx[2];
+
+    db_EmptyBuckets_u(bp,nr_h,nr_v);
+    for(i=0;i<nr_corners;i++)
+    {
+        xd[0]=x[i];
+        xd[1]=y[i];
+        xi=(int) db_roundi(xd[0]);
+        yi=(int) db_roundi(xd[1]);
+        db_ImageHomographyInhomogenous(wx,H,xd);
+        wxi=(int) wx[0];
+        wyi=(int) wx[1];
+
+        xpos=((wxi+bw)/bw)-1;
+        ypos=((wyi+bh)/bh)-1;
+        if(xpos>= -1 && xpos<=nr_h && ypos>= -1 && ypos<=nr_v)
+        {
+            br=&bp[ypos][xpos];
+            nr=br->nr;
+            if(nr<bd)
+            {
+                pir=&(br->ptr[nr]);
+                pir->x=wxi;
+                pir->y=wyi;
+                pir->id=i;
+                pir->pir=0;
+                pir->patch=patch_space;
+                br->nr=nr+1;
+
+                db_SignedSquareNormCorr11x11_PreAlign_u(patch_space,f_img,xi,yi,&(pir->sum),&(pir->recip));
+                patch_space+=128;
+            }
+        }
+    }
+    return(patch_space);
+}
+
+
+
+short* db_FillBucketsPrewarpedAffine_u(short *patch_space,const unsigned char * const *f_img,db_Bucket_u **bp,
+                                 int bw,int bh,int nr_h,int nr_v,int bd,const double *x,const double *y,
+                                 int nr_corners,const double H[9],const double Hinv[9],const int warpboundsp[4],
+                                 int affine)
+{
+    int i,xi,yi,xpos,ypos,nr,wxi,wyi;
+    db_Bucket_u *br;
+    db_PointInfo_u *pir;
+    double xd[2],wx[2];
+
+    db_EmptyBuckets_u(bp,nr_h,nr_v);
+    for(i=0;i<nr_corners;i++)
+    {
+        xd[0]=x[i];
+        xd[1]=y[i];
+        xi=(int) db_roundi(xd[0]);
+        yi=(int) db_roundi(xd[1]);
+        db_ImageHomographyInhomogenous(wx,H,xd);
+        wxi=(int) wx[0];
+        wyi=(int) wx[1];
+
+        xpos=((wxi+bw)/bw)-1;
+        ypos=((wyi+bh)/bh)-1;
+
+
+        if (xpos>= -1 && xpos<=nr_h && ypos>= -1 && ypos<=nr_v)
+        {
+            if( xi>warpboundsp[0] && xi<warpboundsp[1] && yi>warpboundsp[2] && yi<warpboundsp[3])
+            {
+
+                br=&bp[ypos][xpos];
+                nr=br->nr;
+                if(nr<bd)
+                {
+                    pir=&(br->ptr[nr]);
+                    pir->x=wxi;
+                    pir->y=wyi;
+                    pir->id=i;
+                    pir->pir=0;
+                    pir->patch=patch_space;
+                    br->nr=nr+1;
+
+                    db_SignedSquareNormCorr11x11_PreAlign_AffinePatchWarp_u(patch_space,f_img,xi,yi,&(pir->sum),&(pir->recip),Hinv,affine);
+                    patch_space+=128;
+                }
+            }
+        }
+    }
+    return(patch_space);
+}
+
+
+
+inline void db_MatchPointPair_f(db_PointInfo_f *pir_l,db_PointInfo_f *pir_r,
+                            unsigned long kA,unsigned long kB)
+{
+    int x_l,y_l,x_r,y_r,xm,ym;
+    double score;
+
+    x_l=pir_l->x;
+    y_l=pir_l->y;
+    x_r=pir_r->x;
+    y_r=pir_r->y;
+    xm=x_l-x_r;
+    ym=y_l-y_r;
+    /*Check if disparity is within the maximum disparity
+    with the formula xm^2*256+ym^2*kA<kB
+    where kA=256*w^2/h^2
+    and   kB=256*max_disp^2*w^2*/
+    if(((xm*xm)<<8)+ym*ym*kA<kB)
+    {
+        /*Correlate*/
+        score=db_SignedSquareNormCorr11x11Aligned_Post_f(pir_l->patch,pir_r->patch,
+            (pir_l->sum)*(pir_r->sum),
+            (pir_l->recip)*(pir_r->recip));
+
+        if((!(pir_l->pir)) || (score>pir_l->s))
+        {
+            /*Update left corner*/
+            pir_l->s=score;
+            pir_l->pir=pir_r;
+        }
+        if((!(pir_r->pir)) || (score>pir_r->s))
+        {
+            /*Update right corner*/
+            pir_r->s=score;
+            pir_r->pir=pir_l;
+        }
+    }
+}
+
+inline void db_MatchPointPair_u(db_PointInfo_u *pir_l,db_PointInfo_u *pir_r,
+                            unsigned long kA,unsigned long kB, unsigned int rect_window,bool use_smaller_matching_window, int use_21)
+{
+    int xm,ym;
+    double score;
+    bool compute_score;
+
+
+    if( rect_window )
+        compute_score = ((unsigned)db_absi(pir_l->x - pir_r->x)<kA && (unsigned)db_absi(pir_l->y - pir_r->y)<kB);
+    else
+    {   /*Check if disparity is within the maximum disparity
+        with the formula xm^2*256+ym^2*kA<kB
+        where kA=256*w^2/h^2
+        and   kB=256*max_disp^2*w^2*/
+        xm= pir_l->x - pir_r->x;
+        ym= pir_l->y - pir_r->y;
+        compute_score = ((xm*xm)<<8)+ym*ym*kA < kB;
+    }
+
+    if ( compute_score )
+    {
+        if(use_21)
+        {
+            score=db_SignedSquareNormCorr21x21Aligned_Post_s(pir_l->patch,pir_r->patch,
+                (pir_l->sum)*(pir_r->sum),
+                (pir_l->recip)*(pir_r->recip));
+        }
+        else
+        {
+        /*Correlate*/
+        if(!use_smaller_matching_window)
+        {
+            score=db_SignedSquareNormCorr11x11Aligned_Post_s(pir_l->patch,pir_r->patch,
+                (pir_l->sum)*(pir_r->sum),
+                (pir_l->recip)*(pir_r->recip));
+        }
+        else
+        {
+            score=db_SignedSquareNormCorr5x5Aligned_Post_s(pir_l->patch,pir_r->patch,
+                (pir_l->sum)*(pir_r->sum),
+                (pir_l->recip)*(pir_r->recip));
+        }
+        }
+
+        if((!(pir_l->pir)) || (score>pir_l->s))
+        {
+            /*Update left corner*/
+            pir_l->s=score;
+            pir_l->pir=pir_r;
+        }
+        if((!(pir_r->pir)) || (score>pir_r->s))
+        {
+            /*Update right corner*/
+            pir_r->s=score;
+            pir_r->pir=pir_l;
+        }
+    }
+}
+
+inline void db_MatchPointAgainstBucket_f(db_PointInfo_f *pir_l,db_Bucket_f *b_r,
+                                       unsigned long kA,unsigned long kB)
+{
+    int p_r,nr;
+    db_PointInfo_f *pir_r;
+
+    nr=b_r->nr;
+    pir_r=b_r->ptr;
+    for(p_r=0;p_r<nr;p_r++) db_MatchPointPair_f(pir_l,pir_r+p_r,kA,kB);
+}
+
+inline void db_MatchPointAgainstBucket_u(db_PointInfo_u *pir_l,db_Bucket_u *b_r,
+                                       unsigned long kA,unsigned long kB,int rect_window, bool use_smaller_matching_window, int use_21)
+{
+    int p_r,nr;
+    db_PointInfo_u *pir_r;
+
+    nr=b_r->nr;
+    pir_r=b_r->ptr;
+
+    for(p_r=0;p_r<nr;p_r++) db_MatchPointPair_u(pir_l,pir_r+p_r,kA,kB, rect_window, use_smaller_matching_window, use_21);
+
+}
+
+void db_MatchBuckets_f(db_Bucket_f **bp_l,db_Bucket_f **bp_r,int nr_h,int nr_v,
+                     unsigned long kA,unsigned long kB)
+{
+    int i,j,k,a,b,br_nr;
+    db_Bucket_f *br;
+    db_PointInfo_f *pir_l;
+
+    /*For all buckets*/
+    for(i=0;i<nr_v;i++) for(j=0;j<nr_h;j++)
+    {
+        br=&bp_l[i][j];
+        br_nr=br->nr;
+        /*For all points in bucket*/
+        for(k=0;k<br_nr;k++)
+        {
+            pir_l=br->ptr+k;
+            for(a=i-1;a<=i+1;a++)
+            {
+                for(b=j-1;b<=j+1;b++)
+                {
+                    db_MatchPointAgainstBucket_f(pir_l,&bp_r[a][b],kA,kB);
+                }
+            }
+        }
+    }
+}
+
+void db_MatchBuckets_u(db_Bucket_u **bp_l,db_Bucket_u **bp_r,int nr_h,int nr_v,
+                     unsigned long kA,unsigned long kB,int rect_window,bool use_smaller_matching_window, int use_21)
+{
+    int i,j,k,a,b,br_nr;
+    db_Bucket_u *br;
+    db_PointInfo_u *pir_l;
+
+    /*For all buckets*/
+    for(i=0;i<nr_v;i++) for(j=0;j<nr_h;j++)
+    {
+        br=&bp_l[i][j];
+        br_nr=br->nr;
+        /*For all points in bucket*/
+        for(k=0;k<br_nr;k++)
+        {
+            pir_l=br->ptr+k;
+            for(a=i-1;a<=i+1;a++)
+            {
+                for(b=j-1;b<=j+1;b++)
+                {
+                    db_MatchPointAgainstBucket_u(pir_l,&bp_r[a][b],kA,kB,rect_window,use_smaller_matching_window, use_21);
+                }
+            }
+        }
+    }
+}
+
+void db_CollectMatches_f(db_Bucket_f **bp_l,int nr_h,int nr_v,unsigned long target,int *id_l,int *id_r,int *nr_matches)
+{
+    int i,j,k,br_nr;
+    unsigned long count;
+    db_Bucket_f *br;
+    db_PointInfo_f *pir,*pir2;
+
+    count=0;
+    /*For all buckets*/
+    for(i=0;i<nr_v;i++) for(j=0;j<nr_h;j++)
+    {
+        br=&bp_l[i][j];
+        br_nr=br->nr;
+        /*For all points in bucket*/
+        for(k=0;k<br_nr;k++)
+        {
+            pir=br->ptr+k;
+            pir2=pir->pir;
+            if(pir2)
+            {
+                /*This point has a best match*/
+                if((pir2->pir)==pir)
+                {
+                    /*We have a mutually consistent match*/
+                    if(count<target)
+                    {
+                        id_l[count]=pir->id;
+                        id_r[count]=pir2->id;
+                        count++;
+                    }
+                }
+            }
+        }
+    }
+    *nr_matches=count;
+}
+
+void db_CollectMatches_u(db_Bucket_u **bp_l,int nr_h,int nr_v,unsigned long target,int *id_l,int *id_r,int *nr_matches)
+{
+    int i,j,k,br_nr;
+    unsigned long count;
+    db_Bucket_u *br;
+    db_PointInfo_u *pir,*pir2;
+
+    count=0;
+    /*For all buckets*/
+    for(i=0;i<nr_v;i++) for(j=0;j<nr_h;j++)
+    {
+        br=&bp_l[i][j];
+        br_nr=br->nr;
+        /*For all points in bucket*/
+        for(k=0;k<br_nr;k++)
+        {
+            pir=br->ptr+k;
+            pir2=pir->pir;
+            if(pir2)
+            {
+                /*This point has a best match*/
+                if((pir2->pir)==pir)
+                {
+                    /*We have a mutually consistent match*/
+                    if(count<target)
+                    {
+                        id_l[count]=pir->id;
+                        id_r[count]=pir2->id;
+                        count++;
+                    }
+                }
+            }
+        }
+    }
+    *nr_matches=count;
+}
+
+db_Matcher_f::db_Matcher_f()
+{
+    m_w=0; m_h=0;
+}
+
+db_Matcher_f::~db_Matcher_f()
+{
+    Clean();
+}
+
+void db_Matcher_f::Clean()
+{
+    if(m_w)
+    {
+        /*Free buckets*/
+        db_FreeBuckets_f(m_bp_l,m_nr_h,m_nr_v);
+        db_FreeBuckets_f(m_bp_r,m_nr_h,m_nr_v);
+        /*Free space for patch layouts*/
+        delete [] m_patch_space;
+    }
+    m_w=0; m_h=0;
+}
+
+unsigned long db_Matcher_f::Init(int im_width,int im_height,double max_disparity,int target_nr_corners)
+{
+    Clean();
+    m_w=im_width;
+    m_h=im_height;
+    m_bw=db_maxi(1,(int) (max_disparity*((double)im_width)));
+    m_bh=db_maxi(1,(int) (max_disparity*((double)im_height)));
+    m_nr_h=1+(im_width-1)/m_bw;
+    m_nr_v=1+(im_height-1)/m_bh;
+    m_bd=db_maxi(1,(int)(((double)target_nr_corners)*
+        max_disparity*max_disparity));
+    m_target=target_nr_corners;
+    m_kA=(long)(256.0*((double)(m_w*m_w))/((double)(m_h*m_h)));
+    m_kB=(long)(256.0*max_disparity*max_disparity*((double)(m_w*m_w)));
+
+    /*Alloc bucket structure*/
+    m_bp_l=db_AllocBuckets_f(m_nr_h,m_nr_v,m_bd);
+    m_bp_r=db_AllocBuckets_f(m_nr_h,m_nr_v,m_bd);
+
+    /*Alloc 16byte-aligned space for patch layouts*/
+    m_patch_space=new float [2*(m_nr_h+2)*(m_nr_v+2)*m_bd*128+16];
+    m_aligned_patch_space=db_AlignPointer_f(m_patch_space,16);
+
+    return(m_target);
+}
+
+void db_Matcher_f::Match(const float * const *l_img,const float * const *r_img,
+        const double *x_l,const double *y_l,int nr_l,const double *x_r,const double *y_r,int nr_r,
+        int *id_l,int *id_r,int *nr_matches,const double H[9])
+{
+    float *ps;
+
+    /*Insert the corners into bucket structure*/
+    ps=db_FillBuckets_f(m_aligned_patch_space,l_img,m_bp_l,m_bw,m_bh,m_nr_h,m_nr_v,m_bd,x_l,y_l,nr_l);
+    if(H==0) db_FillBuckets_f(ps,r_img,m_bp_r,m_bw,m_bh,m_nr_h,m_nr_v,m_bd,x_r,y_r,nr_r);
+    else db_FillBucketsPrewarped_f(ps,r_img,m_bp_r,m_bw,m_bh,m_nr_h,m_nr_v,m_bd,x_r,y_r,nr_r,H);
+
+    /*Compute all the necessary match scores*/
+    db_MatchBuckets_f(m_bp_l,m_bp_r,m_nr_h,m_nr_v,m_kA,m_kB);
+
+    /*Collect the correspondences*/
+    db_CollectMatches_f(m_bp_l,m_nr_h,m_nr_v,m_target,id_l,id_r,nr_matches);
+}
+
+db_Matcher_u::db_Matcher_u()
+{
+    m_w=0; m_h=0;
+    m_rect_window = 0;
+    m_bw=m_bh=m_nr_h=m_nr_v=m_bd=m_target=0;
+    m_bp_l=m_bp_r=0;
+    m_patch_space=m_aligned_patch_space=0;
+}
+
+db_Matcher_u::db_Matcher_u(const db_Matcher_u& cm)
+{
+    Init(cm.m_w, cm.m_h, cm.m_max_disparity, cm.m_target, cm.m_max_disparity_v);
+}
+
+db_Matcher_u& db_Matcher_u::operator= (const db_Matcher_u& cm)
+{
+    if ( this == &cm ) return *this;
+    Init(cm.m_w, cm.m_h, cm.m_max_disparity, cm.m_target, cm.m_max_disparity_v);
+    return *this;
+}
+
+
+db_Matcher_u::~db_Matcher_u()
+{
+    Clean();
+}
+
+void db_Matcher_u::Clean()
+{
+    if(m_w)
+    {
+        /*Free buckets*/
+        db_FreeBuckets_u(m_bp_l,m_nr_h,m_nr_v);
+        db_FreeBuckets_u(m_bp_r,m_nr_h,m_nr_v);
+        /*Free space for patch layouts*/
+        delete [] m_patch_space;
+    }
+    m_w=0; m_h=0;
+}
+
+
+unsigned long db_Matcher_u::Init(int im_width,int im_height,double max_disparity,int target_nr_corners,
+                                 double max_disparity_v, bool use_smaller_matching_window, int use_21)
+{
+    Clean();
+    m_w=im_width;
+    m_h=im_height;
+    m_max_disparity=max_disparity;
+    m_max_disparity_v=max_disparity_v;
+
+    if ( max_disparity_v != DB_DEFAULT_NO_DISPARITY )
+    {
+        m_rect_window = 1;
+
+        m_bw=db_maxi(1,(int)(max_disparity*((double)im_width)));
+        m_bh=db_maxi(1,(int)(max_disparity_v*((double)im_height)));
+
+        m_bd=db_maxi(1,(int)(((double)target_nr_corners)*max_disparity*max_disparity_v));
+
+        m_kA=(int)(max_disparity*m_w);
+        m_kB=(int)(max_disparity_v*m_h);
+
+    } else
+    {
+        m_bw=(int)db_maxi(1,(int)(max_disparity*((double)im_width)));
+        m_bh=(int)db_maxi(1,(int)(max_disparity*((double)im_height)));
+
+        m_bd=db_maxi(1,(int)(((double)target_nr_corners)*max_disparity*max_disparity));
+
+        m_kA=(long)(256.0*((double)(m_w*m_w))/((double)(m_h*m_h)));
+        m_kB=(long)(256.0*max_disparity*max_disparity*((double)(m_w*m_w)));
+    }
+
+    m_nr_h=1+(im_width-1)/m_bw;
+    m_nr_v=1+(im_height-1)/m_bh;
+
+    m_target=target_nr_corners;
+
+    /*Alloc bucket structure*/
+    m_bp_l=db_AllocBuckets_u(m_nr_h,m_nr_v,m_bd);
+    m_bp_r=db_AllocBuckets_u(m_nr_h,m_nr_v,m_bd);
+
+    m_use_smaller_matching_window = use_smaller_matching_window;
+    m_use_21 = use_21;
+
+    if(m_use_21)
+    {
+        /*Alloc 64byte-aligned space for patch layouts*/
+        m_patch_space=new short [2*(m_nr_h+2)*(m_nr_v+2)*m_bd*512+64];
+        m_aligned_patch_space=db_AlignPointer_s(m_patch_space,64);
+    }
+    else
+    {
+    if(!m_use_smaller_matching_window)
+    {
+        /*Alloc 16byte-aligned space for patch layouts*/
+        m_patch_space=new short [2*(m_nr_h+2)*(m_nr_v+2)*m_bd*128+16];
+        m_aligned_patch_space=db_AlignPointer_s(m_patch_space,16);
+    }
+    else
+    {
+        /*Alloc 4byte-aligned space for patch layouts*/
+        m_patch_space=new short [2*(m_nr_h+2)*(m_nr_v+2)*m_bd*32+4];
+        m_aligned_patch_space=db_AlignPointer_s(m_patch_space,4);
+    }
+    }
+
+    return(m_target);
+}
+
+void db_Matcher_u::Match(const unsigned char * const *l_img,const unsigned char * const *r_img,
+        const double *x_l,const double *y_l,int nr_l,const double *x_r,const double *y_r,int nr_r,
+        int *id_l,int *id_r,int *nr_matches,const double H[9],int affine)
+{
+    short *ps;
+
+    /*Insert the corners into bucket structure*/
+    ps=db_FillBuckets_u(m_aligned_patch_space,l_img,m_bp_l,m_bw,m_bh,m_nr_h,m_nr_v,m_bd,x_l,y_l,nr_l,m_use_smaller_matching_window,m_use_21);
+    if(H==0)
+        db_FillBuckets_u(ps,r_img,m_bp_r,m_bw,m_bh,m_nr_h,m_nr_v,m_bd,x_r,y_r,nr_r,m_use_smaller_matching_window,m_use_21);
+    else
+    {
+        if (affine)
+        {
+            double Hinv[9];
+            db_InvertAffineTransform(Hinv,H);
+            float r_w, c_w;
+            float stretch_x[2];
+            float stretch_y[2];
+            AffineWarpPointOffset(r_w,c_w,Hinv, 5,5);
+            stretch_x[0]=db_absf(c_w);stretch_y[0]=db_absf(r_w);
+            AffineWarpPointOffset(r_w,c_w,Hinv, 5,-5);
+            stretch_x[1]=db_absf(c_w);stretch_y[1]=db_absf(r_w);
+            int max_stretxh_x=(int) (db_maxd(stretch_x[0],stretch_x[1]));
+            int max_stretxh_y=(int) (db_maxd(stretch_y[0],stretch_y[1]));
+            int warpbounds[4]={max_stretxh_x,m_w-1-max_stretxh_x,max_stretxh_y,m_h-1-max_stretxh_y};
+
+            for (int r=-5;r<=5;r++){
+                for (int c=-5;c<=5;c++){
+                    AffineWarpPointOffset(r_w,c_w,Hinv,r,c);
+                    AffineWarpPoint_BL_LUT_y[r+5][c+5]=r_w;
+                    AffineWarpPoint_BL_LUT_x[r+5][c+5]=c_w;
+
+                    AffineWarpPoint_NN_LUT_y[r+5][c+5]=db_roundi(r_w);
+                    AffineWarpPoint_NN_LUT_x[r+5][c+5]=db_roundi(c_w);
+
+                }
+            }
+
+            db_FillBucketsPrewarpedAffine_u(ps,r_img,m_bp_r,m_bw,m_bh,m_nr_h,m_nr_v,m_bd,
+                x_r,y_r,nr_r,H,Hinv,warpbounds,affine);
+        }
+        else
+            db_FillBucketsPrewarped_u(ps,r_img,m_bp_r,m_bw,m_bh,m_nr_h,m_nr_v,m_bd,x_r,y_r,nr_r,H);
+    }
+
+
+    /*Compute all the necessary match scores*/
+    db_MatchBuckets_u(m_bp_l,m_bp_r,m_nr_h,m_nr_v,m_kA,m_kB, m_rect_window,m_use_smaller_matching_window,m_use_21);
+
+    /*Collect the correspondences*/
+    db_CollectMatches_u(m_bp_l,m_nr_h,m_nr_v,m_target,id_l,id_r,nr_matches);
+}
+
+int db_Matcher_u::IsAllocated()
+{
+    return (int)(m_w != 0);
+}
diff --git a/perftests/panorama/feature_stab/db_vlvm/db_feature_matching.h b/perftests/panorama/feature_stab/db_vlvm/db_feature_matching.h
new file mode 100644
index 0000000..6c056b9
--- /dev/null
+++ b/perftests/panorama/feature_stab/db_vlvm/db_feature_matching.h
@@ -0,0 +1,260 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+/*$Id: db_feature_matching.h,v 1.3 2011/06/17 14:03:30 mbansal Exp $*/
+
+#ifndef DB_FEATURE_MATCHING_H
+#define DB_FEATURE_MATCHING_H
+
+/*****************************************************************
+*    Lean and mean begins here                                   *
+*****************************************************************/
+/*!
+ * \defgroup FeatureMatching Feature Matching
+ */
+#include "db_utilities.h"
+#include "db_utilities_constants.h"
+
+DB_API void db_SignedSquareNormCorr21x21_PreAlign_u(short *patch,const unsigned char * const *f_img,int x_f,int y_f,float *sum,float *recip);
+DB_API void db_SignedSquareNormCorr11x11_PreAlign_u(short *patch,const unsigned char * const *f_img,int x_f,int y_f,float *sum,float *recip);
+float db_SignedSquareNormCorr21x21Aligned_Post_s(const short *f_patch,const short *g_patch,float fsum_gsum,float f_recip_g_recip);
+float db_SignedSquareNormCorr11x11Aligned_Post_s(const short *f_patch,const short *g_patch,float fsum_gsum,float f_recip_g_recip);
+
+class db_PointInfo_f
+{
+public:
+    /*Coordinates of point*/
+    int x;
+    int y;
+    /*Id nr of point*/
+    int id;
+    /*Best match score*/
+    double s;
+    /*Best match candidate*/
+    db_PointInfo_f *pir;
+    /*Precomputed coefficients
+    of image patch*/
+    float sum;
+    float recip;
+    /*Pointer to patch layout*/
+    const float *patch;
+};
+
+class db_Bucket_f
+{
+public:
+    db_PointInfo_f *ptr;
+    int nr;
+};
+
+class db_PointInfo_u
+{
+public:
+    /*Coordinates of point*/
+    int x;
+    int y;
+    /*Id nr of point*/
+    int id;
+    /*Best match score*/
+    double s;
+    /*Best match candidate*/
+    db_PointInfo_u *pir;
+    /*Precomputed coefficients
+    of image patch*/
+    float sum;
+    float recip;
+    /*Pointer to patch layout*/
+    const short *patch;
+};
+
+class db_Bucket_u
+{
+public:
+    db_PointInfo_u *ptr;
+    int nr;
+};
+/*!
+ * \class db_Matcher_f
+ * \ingroup FeatureMatching
+ * \brief Feature matcher for float images.
+ *
+ * Normalized correlation feature matcher for <b>float</b> images.
+ * Correlation window size is constant and set to 11x11.
+ * See \ref FeatureDetection to detect Harris corners.
+ * Images are managed with functions in \ref LMImageBasicUtilities.
+ */
+class DB_API db_Matcher_f
+{
+public:
+    db_Matcher_f();
+    ~db_Matcher_f();
+
+    /*!
+     * Set parameters and pre-allocate memory. Return an upper bound
+     * on the number of matches.
+     * \param im_width          width
+     * \param im_height         height
+     * \param max_disparity     maximum distance (as fraction of image size) between matches
+     * \param target_nr_corners maximum number of matches
+     * \return maximum number of matches
+     */
+    unsigned long Init(int im_width,int im_height,
+        double max_disparity=DB_DEFAULT_MAX_DISPARITY,
+        int target_nr_corners=DB_DEFAULT_TARGET_NR_CORNERS);
+
+    /*!
+     * Match two sets of features.
+     * If the prewarp H is not NULL it will be applied to the features
+     * in the right image before matching.
+     * Parameters id_l and id_r must point to arrays of size target_nr_corners
+     * (returned by Init()).
+     * The results of matching are in id_l and id_r.
+     * Interpretaqtion of results: if id_l[i] = m and id_r[i] = n,
+     * feature at (x_l[m],y_l[m]) matched to (x_r[n],y_r[n]).
+     * \param l_img     left image
+     * \param r_img     right image
+     * \param x_l       left x coordinates of features
+     * \param y_l       left y coordinates of features
+     * \param nr_l      number of features in left image
+     * \param x_r       right x coordinates of features
+     * \param y_r       right y coordinates of features
+     * \param nr_r      number of features in right image
+     * \param id_l      indices of left features that matched
+     * \param id_r      indices of right features that matched
+     * \param nr_matches    number of features actually matched
+     * \param H         image homography (prewarp) to be applied to right image features
+     */
+    void Match(const float * const *l_img,const float * const *r_img,
+        const double *x_l,const double *y_l,int nr_l,const double *x_r,const double *y_r,int nr_r,
+        int *id_l,int *id_r,int *nr_matches,const double H[9]=0);
+
+protected:
+    void Clean();
+
+    int m_w,m_h,m_bw,m_bh,m_nr_h,m_nr_v,m_bd,m_target;
+    unsigned long m_kA,m_kB;
+    db_Bucket_f **m_bp_l;
+    db_Bucket_f **m_bp_r;
+    float *m_patch_space,*m_aligned_patch_space;
+};
+/*!
+ * \class db_Matcher_u
+ * \ingroup FeatureMatching
+ * \brief Feature matcher for byte images.
+ *
+ * Normalized correlation feature matcher for <b>byte</b> images.
+ * Correlation window size is constant and set to 11x11.
+ * See \ref FeatureDetection to detect Harris corners.
+ * Images are managed with functions in \ref LMImageBasicUtilities.
+ *
+ * If the prewarp matrix H is supplied, the feature coordinates are warped by H before being placed in
+ * appropriate buckets. If H is an affine transform and the "affine" parameter is set to 1 or 2,
+ * then the correlation patches themselves are warped before being placed in the patch space.
+ */
+class DB_API db_Matcher_u
+{
+public:
+    db_Matcher_u();
+
+    int GetPatchSize(){return 11;};
+
+    virtual ~db_Matcher_u();
+
+    /*!
+     Copy ctor duplicates settings.
+     Memory not copied.
+     */
+    db_Matcher_u(const db_Matcher_u& cm);
+
+    /*!
+     Assignment optor duplicates settings
+     Memory not copied.
+     */
+    db_Matcher_u& operator= (const db_Matcher_u& cm);
+
+    /*!
+     * Set parameters and pre-allocate memory. Return an upper bound
+     * on the number of matches.
+     * If max_disparity_v is DB_DEFAULT_NO_DISPARITY, look for matches
+     * in a ellipse around a feature of radius max_disparity*im_width by max_disparity*im_height.
+     * If max_disparity_v is specified, use a rectangle max_disparity*im_width by max_disparity_v*im_height.
+     * \param im_width          width
+     * \param im_height         height
+     * \param max_disparity     maximum distance (as fraction of image size) between matches
+     * \param target_nr_corners maximum number of matches
+     * \param max_disparity_v   maximum vertical disparity (distance between matches)
+     * \param use_smaller_matching_window   if set to true, uses a correlation window of 5x5 instead of the default 11x11
+     * \return maximum number of matches
+     */
+    virtual unsigned long Init(int im_width,int im_height,
+        double max_disparity=DB_DEFAULT_MAX_DISPARITY,
+        int target_nr_corners=DB_DEFAULT_TARGET_NR_CORNERS,
+        double max_disparity_v=DB_DEFAULT_NO_DISPARITY,
+        bool use_smaller_matching_window=false, int use_21=0);
+
+    /*!
+     * Match two sets of features.
+     * If the prewarp H is not NULL it will be applied to the features
+     * in the right image before matching.
+     * Parameters id_l and id_r must point to arrays of size target_nr_corners
+     * (returned by Init()).
+     * The results of matching are in id_l and id_r.
+     * Interpretaqtion of results: if id_l[i] = m and id_r[i] = n,
+     * feature at (x_l[m],y_l[m]) matched to (x_r[n],y_r[n]).
+     * \param l_img     left image
+     * \param r_img     right image
+     * \param x_l       left x coordinates of features
+     * \param y_l       left y coordinates of features
+     * \param nr_l      number of features in left image
+     * \param x_r       right x coordinates of features
+     * \param y_r       right y coordinates of features
+     * \param nr_r      number of features in right image
+     * \param id_l      indices of left features that matched
+     * \param id_r      indices of right features that matched
+     * \param nr_matches    number of features actually matched
+     * \param H         image homography (prewarp) to be applied to right image features
+     * \param affine    prewarp the 11x11 patches by given affine transform. 0 means no warping,
+                        1 means nearest neighbor, 2 means bilinear warping.
+     */
+    virtual void Match(const unsigned char * const *l_img,const unsigned char * const *r_img,
+        const double *x_l,const double *y_l,int nr_l,const double *x_r,const double *y_r,int nr_r,
+        int *id_l,int *id_r,int *nr_matches,const double H[9]=0,int affine=0);
+
+    /*!
+     * Checks if Init() was called.
+     * \return 1 if Init() was called, 0 otherwise.
+     */
+    int IsAllocated();
+
+protected:
+    virtual void Clean();
+
+
+    int m_w,m_h,m_bw,m_bh,m_nr_h,m_nr_v,m_bd,m_target;
+    unsigned long m_kA,m_kB;
+    db_Bucket_u **m_bp_l;
+    db_Bucket_u **m_bp_r;
+    short *m_patch_space,*m_aligned_patch_space;
+
+    double m_max_disparity, m_max_disparity_v;
+    int m_rect_window;
+    bool m_use_smaller_matching_window;
+    int m_use_21;
+};
+
+
+
+#endif /*DB_FEATURE_MATCHING_H*/
diff --git a/perftests/panorama/feature_stab/db_vlvm/db_framestitching.cpp b/perftests/panorama/feature_stab/db_vlvm/db_framestitching.cpp
new file mode 100644
index 0000000..b574f7a
--- /dev/null
+++ b/perftests/panorama/feature_stab/db_vlvm/db_framestitching.cpp
@@ -0,0 +1,169 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+/* $Id: db_framestitching.cpp,v 1.2 2011/06/17 14:03:30 mbansal Exp $ */
+
+#include "db_utilities.h"
+#include "db_framestitching.h"
+
+
+
+/*****************************************************************
+*    Lean and mean begins here                                   *
+*****************************************************************/
+
+inline void db_RotationFromMOuterProductSum(double R[9],double *score,double M[9])
+{
+    double N[16],q[4],lambda[4],lambda_max;
+    double y[4];
+    int nr_roots;
+
+    N[0]=   M[0]+M[4]+M[8];
+    N[5]=   M[0]-M[4]-M[8];
+    N[10]= -M[0]+M[4]-M[8];
+    N[15]= -M[0]-M[4]+M[8];
+    N[1] =N[4] =M[5]-M[7];
+    N[2] =N[8] =M[6]-M[2];
+    N[3] =N[12]=M[1]-M[3];
+    N[6] =N[9] =M[1]+M[3];
+    N[7] =N[13]=M[6]+M[2];
+    N[11]=N[14]=M[5]+M[7];
+
+    /*get the quaternion representing the rotation
+    by finding the eigenvector corresponding to the most
+    positive eigenvalue. Force eigenvalue solutions, since the matrix
+    is symmetric and solutions might otherwise be lost
+    when the data is planar*/
+    db_RealEigenvalues4x4(lambda,&nr_roots,N,1);
+    if(nr_roots)
+    {
+        lambda_max=lambda[0];
+        if(nr_roots>=2)
+        {
+            if(lambda[1]>lambda_max) lambda_max=lambda[1];
+            if(nr_roots>=3)
+            {
+                if(lambda[2]>lambda_max) lambda_max=lambda[2];
+                {
+                    if(nr_roots>=4) if(lambda[3]>lambda_max) lambda_max=lambda[3];
+                }
+            }
+        }
+    }
+    else lambda_max=1.0;
+    db_EigenVector4x4(q,lambda_max,N);
+
+    /*Compute the rotation matrix*/
+    db_QuaternionToRotation(R,q);
+
+    if(score)
+    {
+        /*Compute score=transpose(q)*N*q */
+        db_Multiply4x4_4x1(y,N,q);
+        *score=db_ScalarProduct4(q,y);
+    }
+}
+
+void db_StitchSimilarity3DRaw(double *scale,double R[9],double t[3],
+                            double **Xp,double **X,int nr_points,int orientation_preserving,
+                            int allow_scaling,int allow_rotation,int allow_translation)
+{
+    int i;
+    double c[3],cp[3],r[3],rp[3],M[9],s,sp,sc;
+    double Rr[9],score_p,score_r;
+    double *temp,*temp_p;
+
+    if(allow_translation)
+    {
+        db_PointCentroid3D(c,X,nr_points);
+        db_PointCentroid3D(cp,Xp,nr_points);
+    }
+    else
+    {
+        db_Zero3(c);
+        db_Zero3(cp);
+    }
+
+    db_Zero9(M);
+    s=sp=0;
+    for(i=0;i<nr_points;i++)
+    {
+        temp=   *X++;
+        temp_p= *Xp++;
+        r[0]=(*temp++)-c[0];
+        r[1]=(*temp++)-c[1];
+        r[2]=(*temp++)-c[2];
+        rp[0]=(*temp_p++)-cp[0];
+        rp[1]=(*temp_p++)-cp[1];
+        rp[2]=(*temp_p++)-cp[2];
+
+        M[0]+=r[0]*rp[0];
+        M[1]+=r[0]*rp[1];
+        M[2]+=r[0]*rp[2];
+        M[3]+=r[1]*rp[0];
+        M[4]+=r[1]*rp[1];
+        M[5]+=r[1]*rp[2];
+        M[6]+=r[2]*rp[0];
+        M[7]+=r[2]*rp[1];
+        M[8]+=r[2]*rp[2];
+
+        s+=db_sqr(r[0])+db_sqr(r[1])+db_sqr(r[2]);
+        sp+=db_sqr(rp[0])+db_sqr(rp[1])+db_sqr(rp[2]);
+    }
+
+    /*Compute scale*/
+    if(allow_scaling) sc=sqrt(db_SafeDivision(sp,s));
+    else sc=1.0;
+    *scale=sc;
+
+    /*Compute rotation*/
+    if(allow_rotation)
+    {
+        if(orientation_preserving)
+        {
+            db_RotationFromMOuterProductSum(R,0,M);
+        }
+        else
+        {
+            /*Try preserving*/
+            db_RotationFromMOuterProductSum(R,&score_p,M);
+            /*Try reversing*/
+            M[6]= -M[6];
+            M[7]= -M[7];
+            M[8]= -M[8];
+            db_RotationFromMOuterProductSum(Rr,&score_r,M);
+            if(score_r>score_p)
+            {
+                /*Reverse is better*/
+                R[0]=Rr[0]; R[1]=Rr[1]; R[2]= -Rr[2];
+                R[3]=Rr[3]; R[4]=Rr[4]; R[5]= -Rr[5];
+                R[6]=Rr[6]; R[7]=Rr[7]; R[8]= -Rr[8];
+            }
+        }
+    }
+    else db_Identity3x3(R);
+
+    /*Compute translation*/
+    if(allow_translation)
+    {
+        t[0]=cp[0]-sc*(R[0]*c[0]+R[1]*c[1]+R[2]*c[2]);
+        t[1]=cp[1]-sc*(R[3]*c[0]+R[4]*c[1]+R[5]*c[2]);
+        t[2]=cp[2]-sc*(R[6]*c[0]+R[7]*c[1]+R[8]*c[2]);
+    }
+    else db_Zero3(t);
+}
+
+
diff --git a/perftests/panorama/feature_stab/db_vlvm/db_framestitching.h b/perftests/panorama/feature_stab/db_vlvm/db_framestitching.h
new file mode 100644
index 0000000..5fef5f3
--- /dev/null
+++ b/perftests/panorama/feature_stab/db_vlvm/db_framestitching.h
@@ -0,0 +1,94 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+/* $Id: db_framestitching.h,v 1.2 2011/06/17 14:03:31 mbansal Exp $ */
+
+#ifndef DB_FRAMESTITCHING_H
+#define DB_FRAMESTITCHING_H
+/*!
+ * \defgroup FrameStitching Frame Stitching (2D and 3D homography estimation)
+ */
+/*\{*/
+
+
+/*****************************************************************
+*    Lean and mean begins here                                   *
+*****************************************************************/
+/*!
+ * \defgroup LMFrameStitching (LM) Frame Stitching (2D and 3D homography estimation)
+ */
+/*\{*/
+
+/*!
+Find scale, rotation and translation of the similarity that
+takes the nr_points inhomogenous 3D points X to Xp
+(left to right according to Horn), i.e. for the homogenous equivalents
+Xp and X we would have
+\code
+    Xp~
+    [sR t]*X
+    [0  1]
+\endcode
+If orientation_preserving is true, R is restricted such that det(R)>0.
+allow_scaling, allow_rotation and allow_translation allow s,R and t
+to differ from 1,Identity and 0
+
+Full similarity takes the following on 550MHz:
+\code
+4.5 microseconds with       3 points
+4.7 microseconds with       4 points
+5.0 microseconds with       5 points
+5.2 microseconds with       6 points
+5.8 microseconds with      10 points
+20  microseconds with     100 points
+205 microseconds with    1000 points
+2.9 milliseconds with   10000 points
+50  milliseconds with  100000 points
+0.5 seconds      with 1000000 points
+\endcode
+Without orientation_preserving:
+\code
+4 points is minimal for (s,R,t) (R,t)
+3 points is minimal for (s,R) (R)
+2 points is minimal for (s,t)
+1 point is minimal for  (s) (t)
+\endcode
+With orientation_preserving:
+\code
+3 points is minimal for (s,R,t) (R,t)
+2 points is minimal for (s,R) (s,t) (R)
+1 point is minimal for  (s) (t)
+\endcode
+
+\param scale                    scale
+\param R                        rotation
+\param t                        translation
+\param Xp                       inhomogenouse 3D points in first coordinate system
+\param X                        inhomogenouse 3D points in second coordinate system
+\param nr_points                number of points
+\param orientation_preserving   if true, R is restricted such that det(R)>0.
+\param allow_scaling            estimate scale
+\param allow_rotation           estimate rotation
+\param allow_translation        estimate translation
+*/
+DB_API void db_StitchSimilarity3DRaw(double *scale,double R[9],double t[3],
+                            double **Xp,double **X,int nr_points,int orientation_preserving=1,
+                            int allow_scaling=1,int allow_rotation=1,int allow_translation=1);
+
+
+/*\}*/
+
+#endif /* DB_FRAMESTITCHING_H */
diff --git a/perftests/panorama/feature_stab/db_vlvm/db_image_homography.cpp b/perftests/panorama/feature_stab/db_vlvm/db_image_homography.cpp
new file mode 100644
index 0000000..aaad7f8
--- /dev/null
+++ b/perftests/panorama/feature_stab/db_vlvm/db_image_homography.cpp
@@ -0,0 +1,332 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+/* $Id: db_image_homography.cpp,v 1.2 2011/06/17 14:03:31 mbansal Exp $ */
+
+#include "db_utilities.h"
+#include "db_image_homography.h"
+#include "db_framestitching.h"
+#include "db_metrics.h"
+
+
+
+/*****************************************************************
+*    Lean and mean begins here                                   *
+*****************************************************************/
+
+/*Compute the linear constraint on H obtained by requiring that the
+ratio between coordinate i_num and i_den of xp is equal to the ratio
+between coordinate i_num and i_den of Hx. i_zero should be set to
+the coordinate not equal to i_num or i_den. No normalization is used*/
+inline void db_SProjImagePointPointConstraint(double c[9],int i_num,int i_den,int i_zero,
+                           double xp[3],double x[3])
+{
+    db_MultiplyScalarCopy3(c+3*i_den,x,  xp[i_num]);
+    db_MultiplyScalarCopy3(c+3*i_num,x, -xp[i_den]);
+    db_Zero3(c+3*i_zero);
+}
+
+/*Compute two constraints on H generated by the correspondence (Xp,X),
+assuming that Xp ~= H*X. No normalization is used*/
+inline void db_SProjImagePointPointConstraints(double c1[9],double c2[9],double xp[3],double x[3])
+{
+    int ma_ind;
+
+    /*Find index of coordinate of Xp with largest absolute value*/
+    ma_ind=db_MaxAbsIndex3(xp);
+
+    /*Generate 2 constraints,
+    each constraint is generated by considering the ratio between a
+    coordinate and the largest absolute value coordinate*/
+    switch(ma_ind)
+    {
+    case 0:
+        db_SProjImagePointPointConstraint(c1,1,0,2,xp,x);
+        db_SProjImagePointPointConstraint(c2,2,0,1,xp,x);
+        break;
+    case 1:
+        db_SProjImagePointPointConstraint(c1,0,1,2,xp,x);
+        db_SProjImagePointPointConstraint(c2,2,1,0,xp,x);
+        break;
+    default:
+        db_SProjImagePointPointConstraint(c1,0,2,1,xp,x);
+        db_SProjImagePointPointConstraint(c2,1,2,0,xp,x);
+    }
+}
+
+inline void db_SAffineImagePointPointConstraints(double c1[7],double c2[7],double xp[3],double x[3])
+{
+    double ct1[9],ct2[9];
+
+    db_SProjImagePointPointConstraints(ct1,ct2,xp,x);
+    db_Copy6(c1,ct1); c1[6]=ct1[8];
+    db_Copy6(c2,ct2); c2[6]=ct2[8];
+}
+
+void db_StitchProjective2D_4Points(double H[9],
+                                      double x1[3],double x2[3],double x3[3],double x4[3],
+                                      double xp1[3],double xp2[3],double xp3[3],double xp4[3])
+{
+    double c[72];
+
+    /*Collect the constraints*/
+    db_SProjImagePointPointConstraints(c   ,c+9 ,xp1,x1);
+    db_SProjImagePointPointConstraints(c+18,c+27,xp2,x2);
+    db_SProjImagePointPointConstraints(c+36,c+45,xp3,x3);
+    db_SProjImagePointPointConstraints(c+54,c+63,xp4,x4);
+    /*Solve for the nullvector*/
+    db_NullVector8x9Destructive(H,c);
+}
+
+void db_StitchAffine2D_3Points(double H[9],
+                                      double x1[3],double x2[3],double x3[3],
+                                      double xp1[3],double xp2[3],double xp3[3])
+{
+    double c[42];
+
+    /*Collect the constraints*/
+    db_SAffineImagePointPointConstraints(c   ,c+7 ,xp1,x1);
+    db_SAffineImagePointPointConstraints(c+14,c+21,xp2,x2);
+    db_SAffineImagePointPointConstraints(c+28,c+35,xp3,x3);
+    /*Solve for the nullvector*/
+    db_NullVector6x7Destructive(H,c);
+    db_MultiplyScalar6(H,db_SafeReciprocal(H[6]));
+    H[6]=H[7]=0; H[8]=1.0;
+}
+
+/*Compute up to three solutions for the focal length given two point correspondences
+generated by a rotation with a common unknown focal length. No specific normalization
+of the input points is required. If signed_disambiguation is true, the points are
+required to be in front of the camera*/
+inline void db_CommonFocalLengthFromRotation_2Point(double fsol[3],int *nr_sols,double x1[3],double x2[3],double xp1[3],double xp2[3],int signed_disambiguation=1)
+{
+    double m,ax,ay,apx,apy,bx,by,bpx,bpy;
+    double p1[2],p2[2],p3[2],p4[2],p5[2],p6[2];
+    double p7[3],p8[4],p9[5],p10[3],p11[4];
+    double roots[3];
+    int nr_roots,i,j;
+
+    /*Solve for focal length using the equation
+    <a,b>^2*<ap,ap><bp,bp>=<ap,bp>^2*<a,a><b,b>
+    where a and ap are the homogenous vectors in the first image
+    after focal length scaling and b,bp are the vectors in the
+    second image*/
+
+    /*Normalize homogenous coordinates so that last coordinate is one*/
+    m=db_SafeReciprocal(x1[2]);
+    ax=x1[0]*m;
+    ay=x1[1]*m;
+    m=db_SafeReciprocal(xp1[2]);
+    apx=xp1[0]*m;
+    apy=xp1[1]*m;
+    m=db_SafeReciprocal(x2[2]);
+    bx=x2[0]*m;
+    by=x2[1]*m;
+    m=db_SafeReciprocal(xp2[2]);
+    bpx=xp2[0]*m;
+    bpy=xp2[1]*m;
+
+    /*Compute cubic in l=1/(f^2)
+    by dividing out the root l=0 from the equation
+    (l(ax*bx+ay*by)+1)^2*(l(apx^2+apy^2)+1)*(l(bpx^2+bpy^2)+1)=
+    (l(apx*bpx+apy*bpy)+1)^2*(l(ax^2+ay^2)+1)*(l(bx^2+by^2)+1)*/
+    p1[1]=ax*bx+ay*by;
+    p2[1]=db_sqr(apx)+db_sqr(apy);
+    p3[1]=db_sqr(bpx)+db_sqr(bpy);
+    p4[1]=apx*bpx+apy*bpy;
+    p5[1]=db_sqr(ax)+db_sqr(ay);
+    p6[1]=db_sqr(bx)+db_sqr(by);
+    p1[0]=p2[0]=p3[0]=p4[0]=p5[0]=p6[0]=1;
+
+    db_MultiplyPoly1_1(p7,p1,p1);
+    db_MultiplyPoly1_2(p8,p2,p7);
+    db_MultiplyPoly1_3(p9,p3,p8);
+
+    db_MultiplyPoly1_1(p10,p4,p4);
+    db_MultiplyPoly1_2(p11,p5,p10);
+    db_SubtractPolyProduct1_3(p9,p6,p11);
+    /*Cubic starts at p9[1]*/
+    db_SolveCubic(roots,&nr_roots,p9[4],p9[3],p9[2],p9[1]);
+
+    for(j=0,i=0;i<nr_roots;i++)
+    {
+        if(roots[i]>0)
+        {
+            if((!signed_disambiguation) || (db_PolyEval1(p1,roots[i])*db_PolyEval1(p4,roots[i])>0))
+            {
+                fsol[j++]=db_SafeSqrtReciprocal(roots[i]);
+            }
+        }
+    }
+    *nr_sols=j;
+}
+
+int db_StitchRotationCommonFocalLength_3Points(double H[9],double x1[3],double x2[3],double x3[3],double xp1[3],double xp2[3],double xp3[3],double *f,int signed_disambiguation)
+{
+    double fsol[3];
+    int nr_sols,i,best_sol,done;
+    double cost,best_cost;
+    double m,hyp[27],x1_temp[3],x2_temp[3],xp1_temp[3],xp2_temp[3];
+    double *hyp_point,ft;
+    double y[2];
+
+    db_CommonFocalLengthFromRotation_2Point(fsol,&nr_sols,x1,x2,xp1,xp2,signed_disambiguation);
+    if(nr_sols)
+    {
+        db_DeHomogenizeImagePoint(y,xp3);
+        done=0;
+        for(i=0;i<nr_sols;i++)
+        {
+            ft=fsol[i];
+            m=db_SafeReciprocal(ft);
+            x1_temp[0]=x1[0]*m;
+            x1_temp[1]=x1[1]*m;
+            x1_temp[2]=x1[2];
+            x2_temp[0]=x2[0]*m;
+            x2_temp[1]=x2[1]*m;
+            x2_temp[2]=x2[2];
+            xp1_temp[0]=xp1[0]*m;
+            xp1_temp[1]=xp1[1]*m;
+            xp1_temp[2]=xp1[2];
+            xp2_temp[0]=xp2[0]*m;
+            xp2_temp[1]=xp2[1]*m;
+            xp2_temp[2]=xp2[2];
+
+            hyp_point=hyp+9*i;
+            db_StitchCameraRotation_2Points(hyp_point,x1_temp,x2_temp,xp1_temp,xp2_temp);
+            hyp_point[2]*=ft;
+            hyp_point[5]*=ft;
+            hyp_point[6]*=m;
+            hyp_point[7]*=m;
+            cost=db_SquaredReprojectionErrorHomography(y,hyp_point,x3);
+
+            if(!done || cost<best_cost)
+            {
+                done=1;
+                best_cost=cost;
+                best_sol=i;
+            }
+        }
+
+        if(f) *f=fsol[best_sol];
+        db_Copy9(H,hyp+9*best_sol);
+        return(1);
+    }
+    else
+    {
+        db_Identity3x3(H);
+        if(f) *f=1.0;
+        return(0);
+    }
+}
+
+void db_StitchSimilarity2DRaw(double *scale,double R[4],double t[2],
+                            double **Xp,double **X,int nr_points,int orientation_preserving,
+                            int allow_scaling,int allow_rotation,int allow_translation)
+{
+    int i;
+    double c[2],cp[2],r[2],rp[2],M[4],s,sp,sc;
+    double *temp,*temp_p;
+    double Aacc,Bacc,Aacc2,Bacc2,divisor,divisor2,m,Am,Bm;
+
+    if(allow_translation)
+    {
+        db_PointCentroid2D(c,X,nr_points);
+        db_PointCentroid2D(cp,Xp,nr_points);
+    }
+    else
+    {
+        db_Zero2(c);
+        db_Zero2(cp);
+    }
+
+    db_Zero4(M);
+    s=sp=0;
+    for(i=0;i<nr_points;i++)
+    {
+        temp=   *X++;
+        temp_p= *Xp++;
+        r[0]=(*temp++)-c[0];
+        r[1]=(*temp++)-c[1];
+        rp[0]=(*temp_p++)-cp[0];
+        rp[1]=(*temp_p++)-cp[1];
+
+        M[0]+=r[0]*rp[0];
+        M[1]+=r[0]*rp[1];
+        M[2]+=r[1]*rp[0];
+        M[3]+=r[1]*rp[1];
+
+        s+=db_sqr(r[0])+db_sqr(r[1]);
+        sp+=db_sqr(rp[0])+db_sqr(rp[1]);
+    }
+
+    /*Compute scale*/
+    if(allow_scaling) sc=sqrt(db_SafeDivision(sp,s));
+    else sc=1.0;
+    *scale=sc;
+
+    /*Compute rotation*/
+    if(allow_rotation)
+    {
+        /*orientation preserving*/
+        Aacc=M[0]+M[3];
+        Bacc=M[2]-M[1];
+        /*orientation reversing*/
+        Aacc2=M[0]-M[3];
+        Bacc2=M[2]+M[1];
+        if(Aacc!=0.0 || Bacc!=0.0)
+        {
+            divisor=sqrt(Aacc*Aacc+Bacc*Bacc);
+            m=db_SafeReciprocal(divisor);
+            Am=Aacc*m;
+            Bm=Bacc*m;
+            R[0]=  Am;
+            R[1]=  Bm;
+            R[2]= -Bm;
+            R[3]=  Am;
+        }
+        else
+        {
+            db_Identity2x2(R);
+            divisor=0.0;
+        }
+        if(!orientation_preserving && (Aacc2!=0.0 || Bacc2!=0.0))
+        {
+            divisor2=sqrt(Aacc2*Aacc2+Bacc2*Bacc2);
+            if(divisor2>divisor)
+            {
+                m=db_SafeReciprocal(divisor2);
+                Am=Aacc2*m;
+                Bm=Bacc2*m;
+                R[0]=  Am;
+                R[1]=  Bm;
+                R[2]=  Bm;
+                R[3]= -Am;
+            }
+        }
+    }
+    else db_Identity2x2(R);
+
+    /*Compute translation*/
+    if(allow_translation)
+    {
+        t[0]=cp[0]-sc*(R[0]*c[0]+R[1]*c[1]);
+        t[1]=cp[1]-sc*(R[2]*c[0]+R[3]*c[1]);
+    }
+    else db_Zero2(t);
+}
+
+
diff --git a/perftests/panorama/feature_stab/db_vlvm/db_image_homography.h b/perftests/panorama/feature_stab/db_vlvm/db_image_homography.h
new file mode 100644
index 0000000..165447d
--- /dev/null
+++ b/perftests/panorama/feature_stab/db_vlvm/db_image_homography.h
@@ -0,0 +1,183 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+/* $Id: db_image_homography.h,v 1.2 2011/06/17 14:03:31 mbansal Exp $ */
+
+#ifndef DB_IMAGE_HOMOGRAPHY
+#define DB_IMAGE_HOMOGRAPHY
+
+
+
+/*****************************************************************
+*    Lean and mean begins here                                   *
+*****************************************************************/
+
+#include "db_framestitching.h"
+/*!
+ * \defgroup LMImageHomography (LM) Image Homography Estimation (feature based)
+ */
+/*\{*/
+/*!
+Solve for projective H such that xp~Hx. Prior normalization is not necessary,
+although desirable for numerical conditioning
+\param H    image projective (out)
+\param x1   image 1 point 1
+\param x2   image 1 point 2
+\param x3   image 1 point 3
+\param x4   image 1 point 4
+\param xp1  image 2 point 1
+\param xp2  image 2 point 2
+\param xp3  image 2 point 3
+\param xp4  image 2 point 4
+*/
+DB_API void db_StitchProjective2D_4Points(double H[9],
+                                      double x1[3],double x2[3],double x3[3],double x4[3],
+                                      double xp1[3],double xp2[3],double xp3[3],double xp4[3]);
+
+/*!
+Solve for affine H such that xp~Hx. Prior normalization is not necessary,
+although desirable for numerical conditioning
+\param H    image projective (out)
+\param x1   image 1 point 1
+\param x2   image 1 point 2
+\param x3   image 1 point 3
+\param xp1  image 2 point 1
+\param xp2  image 2 point 2
+\param xp3  image 2 point 3
+*/
+DB_API void db_StitchAffine2D_3Points(double H[9],
+                                      double x1[3],double x2[3],double x3[3],
+                                      double xp1[3],double xp2[3],double xp3[3]);
+
+/*!
+Solve for rotation R such that xp~Rx.
+Image points have to be of unit norm for the least squares to be meaningful.
+\param R    image rotation (out)
+\param x1   image 1 point 1
+\param x2   image 1 point 2
+\param xp1  image 2 point 1
+\param xp2  image 2 point 2
+*/
+inline void db_StitchCameraRotation_2Points(double R[9],
+                                            /*Image points have to be of unit norm
+                                            for the least squares to be meaningful*/
+                                            double x1[3],double x2[3],
+                                            double xp1[3],double xp2[3])
+{
+    double* x[2];
+    double* xp[2];
+    double scale,t[3];
+
+    x[0]=x1;
+    x[1]=x2;
+    xp[0]=xp1;
+    xp[1]=xp2;
+    db_StitchSimilarity3DRaw(&scale,R,t,xp,x,2,1,0,1,0);
+}
+
+/*!
+Solve for a homography H generated by a rotation R with a common unknown focal length f, i.e.
+H=diag(f,f,1)*R*diag(1/f,1/f,1) such that xp~Hx.
+If signed_disambiguation is true, the points are
+required to be in front of the camera. No specific normalization of the homogenous points
+is required, although it could be desirable to keep x1,x2,xp1 and xp2 of reasonable magnitude.
+If a solution is obtained the function returns 1, otherwise 0. If the focal length is desired
+a valid pointer should be passed in f
+*/
+DB_API int db_StitchRotationCommonFocalLength_3Points(double H[9],double x1[3],double x2[3],double x3[3],
+                                                      double xp1[3],double xp2[3],double xp3[3],double *f=0,int signed_disambiguation=1);
+
+/*!
+Find scale, rotation and translation of the similarity that
+takes the nr_points inhomogenous 2D points X to Xp,
+i.e. for the homogenous equivalents
+Xp and X we would have
+\code
+Xp~
+[sR t]*X
+[0  1]
+\endcode
+If orientation_preserving is true, R is restricted such that det(R)>0.
+allow_scaling, allow_rotation and allow_translation allow s,R and t
+to differ from 1,Identity and 0
+
+Full similarity takes the following on 550MHz:
+\code
+0.9 microseconds with       2 points
+1.0 microseconds with       3 points
+1.1 microseconds with       4 points
+1.3 microseconds with       5 points
+1.4 microseconds with       6 points
+1.7 microseconds with      10 points
+9   microseconds with     100 points
+130 microseconds with    1000 points
+1.3 milliseconds with   10000 points
+35  milliseconds with  100000 points
+350 milliseconds with 1000000 points
+\endcode
+
+Without orientation_preserving:
+\code
+3 points is minimal for (s,R,t) (R,t)
+2 points is minimal for (s,t) (s,R) (R)
+1 point is minimal for  (s) (t)
+\endcode
+
+With orientation_preserving:
+\code
+2 points is minimal for (s,R,t) (R,t) (s,t)
+1 point is minimal for (s,R) (R) (s) (t)
+\endcode
+\param scale        (out)
+\param R            2D rotation (out)
+\param t            2D translation (out)
+\param Xp           (nr_points x 2) pointer to array of image points
+\param X            (nr_points x 2 ) pointer to array of image points
+\param nr_points    number of points
+\param orientation_preserving
+\param allow_scaling    compute scale (if 0, scale=1)
+\param allow_rotation   compute rotation (if 0, R=[I])
+\param allow_translation compute translation (if 0 t = [0,0]')
+*/
+DB_API void db_StitchSimilarity2DRaw(double *scale,double R[4],double t[2],
+                            double **Xp,double **X,int nr_points,int orientation_preserving=1,
+                            int allow_scaling=1,int allow_rotation=1,int allow_translation=1);
+/*!
+See db_StitchRotationCommonFocalLength_3Points().
+\param H            Image similarity transformation (out)
+\param Xp           (nr_points x 2) pointer to array of image points
+\param X            (nr_points x 2) pointer to array of image points
+\param nr_points    number of points
+\param orientation_preserving
+\param allow_scaling    compute scale (if 0, scale=1)
+\param allow_rotation   compute rotation (if 0, R=[I])
+\param allow_translation compute translation (if 0 t = [0,0]')
+*/
+inline void db_StitchSimilarity2D(double H[9],double **Xp,double **X,int nr_points,int orientation_preserving=1,
+                                  int allow_scaling=1,int allow_rotation=1,int allow_translation=1)
+{
+    double s,R[4],t[2];
+
+    db_StitchSimilarity2DRaw(&s,R,t,Xp,X,nr_points,orientation_preserving,
+        allow_scaling,allow_rotation,allow_translation);
+
+    H[0]=s*R[0]; H[1]=s*R[1]; H[2]=t[0];
+    H[3]=s*R[2]; H[4]=s*R[3]; H[5]=t[1];
+    db_Zero2(H+6);
+    H[8]=1.0;
+}
+/*\}*/
+#endif /* DB_IMAGE_HOMOGRAPHY */
diff --git a/perftests/panorama/feature_stab/db_vlvm/db_metrics.h b/perftests/panorama/feature_stab/db_vlvm/db_metrics.h
new file mode 100644
index 0000000..6b95458
--- /dev/null
+++ b/perftests/panorama/feature_stab/db_vlvm/db_metrics.h
@@ -0,0 +1,408 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+/* $Id: db_metrics.h,v 1.3 2011/06/17 14:03:31 mbansal Exp $ */
+
+#ifndef DB_METRICS
+#define DB_METRICS
+
+
+
+/*****************************************************************
+*    Lean and mean begins here                                   *
+*****************************************************************/
+
+#include "db_utilities.h"
+/*!
+ * \defgroup LMMetrics (LM) Metrics
+ */
+/*\{*/
+
+
+
+
+/*!
+Compute function value fp and Jacobian J of robustifier given input value f*/
+inline void db_CauchyDerivative(double J[4],double fp[2],const double f[2],double one_over_scale2)
+{
+    double x2,y2,r,r2,r2s,one_over_r2,fu,r_fu,one_over_r_fu;
+    double one_plus_r2s,half_dfu_dx,half_dfu_dy,coeff,coeff2,coeff3;
+    int at_zero;
+
+    /*The robustifier takes the input (x,y) and makes a new
+    vector (xp,yp) where
+    xp=sqrt(log(1+(x^2+y^2)*one_over_scale2))*x/sqrt(x^2+y^2)
+    yp=sqrt(log(1+(x^2+y^2)*one_over_scale2))*y/sqrt(x^2+y^2)
+    The new vector has the property
+    xp^2+yp^2=log(1+(x^2+y^2)*one_over_scale2)
+    i.e. when it is square-summed it gives the robust
+    reprojection error
+    Define
+    r2=(x^2+y^2) and
+    r2s=r2*one_over_scale2
+    fu=log(1+r2s)/r2
+    then
+    xp=sqrt(fu)*x
+    yp=sqrt(fu)*y
+    and
+    d(r2)/dx=2x
+    d(r2)/dy=2y
+    and
+    dfu/dx=d(r2)/dx*(r2s/(1+r2s)-log(1+r2s))/(r2*r2)
+    dfu/dy=d(r2)/dy*(r2s/(1+r2s)-log(1+r2s))/(r2*r2)
+    and
+    d(xp)/dx=1/(2sqrt(fu))*(dfu/dx)*x+sqrt(fu)
+    d(xp)/dy=1/(2sqrt(fu))*(dfu/dy)*x
+    d(yp)/dx=1/(2sqrt(fu))*(dfu/dx)*y
+    d(yp)/dy=1/(2sqrt(fu))*(dfu/dy)*y+sqrt(fu)
+    */
+
+    x2=db_sqr(f[0]);
+    y2=db_sqr(f[1]);
+    r2=x2+y2;
+    r=sqrt(r2);
+
+    if(r2<=0.0) at_zero=1;
+    else
+    {
+        one_over_r2=1.0/r2;
+        r2s=r2*one_over_scale2;
+        one_plus_r2s=1.0+r2s;
+        fu=log(one_plus_r2s)*one_over_r2;
+        r_fu=sqrt(fu);
+        if(r_fu<=0.0) at_zero=1;
+        else
+        {
+            one_over_r_fu=1.0/r_fu;
+            fp[0]=r_fu*f[0];
+            fp[1]=r_fu*f[1];
+            /*r2s is always >= 0*/
+            coeff=(r2s/one_plus_r2s*one_over_r2-fu)*one_over_r2;
+            half_dfu_dx=f[0]*coeff;
+            half_dfu_dy=f[1]*coeff;
+            coeff2=one_over_r_fu*half_dfu_dx;
+            coeff3=one_over_r_fu*half_dfu_dy;
+
+            J[0]=coeff2*f[0]+r_fu;
+            J[1]=coeff3*f[0];
+            J[2]=coeff2*f[1];
+            J[3]=coeff3*f[1]+r_fu;
+            at_zero=0;
+        }
+    }
+    if(at_zero)
+    {
+        /*Close to zero the robustifying mapping
+        becomes identity*sqrt(one_over_scale2)*/
+        fp[0]=0.0;
+        fp[1]=0.0;
+        J[0]=sqrt(one_over_scale2);
+        J[1]=0.0;
+        J[2]=0.0;
+        J[3]=J[0];
+    }
+}
+
+inline double db_SquaredReprojectionErrorHomography(const double y[2],const double H[9],const double x[3])
+{
+    double x0,x1,x2,mult;
+    double sd;
+
+    x0=H[0]*x[0]+H[1]*x[1]+H[2]*x[2];
+    x1=H[3]*x[0]+H[4]*x[1]+H[5]*x[2];
+    x2=H[6]*x[0]+H[7]*x[1]+H[8]*x[2];
+    mult=1.0/((x2!=0.0)?x2:1.0);
+    sd=db_sqr((y[0]-x0*mult))+db_sqr((y[1]-x1*mult));
+
+    return(sd);
+}
+
+inline double db_SquaredInhomogenousHomographyError(const double y[2],const double H[9],const double x[2])
+{
+    double x0,x1,x2,mult;
+    double sd;
+
+    x0=H[0]*x[0]+H[1]*x[1]+H[2];
+    x1=H[3]*x[0]+H[4]*x[1]+H[5];
+    x2=H[6]*x[0]+H[7]*x[1]+H[8];
+    mult=1.0/((x2!=0.0)?x2:1.0);
+    sd=db_sqr((y[0]-x0*mult))+db_sqr((y[1]-x1*mult));
+
+    return(sd);
+}
+
+/*!
+Return a constant divided by likelihood of a Cauchy distributed
+reprojection error given the image point y, homography H, image point
+point x and the squared scale coefficient one_over_scale2=1.0/(scale*scale)
+where scale is the half width at half maximum (hWahM) of the
+Cauchy distribution*/
+inline double db_ExpCauchyInhomogenousHomographyError(const double y[2],const double H[9],const double x[2],
+                                                      double one_over_scale2)
+{
+    double sd;
+    sd=db_SquaredInhomogenousHomographyError(y,H,x);
+    return(1.0+sd*one_over_scale2);
+}
+
+/*!
+Compute residual vector f between image point y and homography Hx of
+image point x. Also compute Jacobian of f with respect
+to an update dx of H*/
+inline void db_DerivativeInhomHomographyError(double Jf_dx[18],double f[2],const double y[2],const double H[9],
+                                              const double x[2])
+{
+    double xh,yh,zh,mult,mult2,xh_mult2,yh_mult2;
+    /*The Jacobian of the inhomogenous coordinates with respect to
+    the homogenous is
+    [1/zh  0  -xh/(zh*zh)]
+    [ 0  1/zh -yh/(zh*zh)]
+    The Jacobian of the homogenous coordinates with respect to dH is
+    [x0 x1 1  0  0 0  0  0 0]
+    [ 0  0 0 x0 x1 1  0  0 0]
+    [ 0  0 0  0  0 0 x0 x1 1]
+    The output Jacobian is minus their product, i.e.
+    [-x0/zh -x1/zh -1/zh    0      0     0    x0*xh/(zh*zh) x1*xh/(zh*zh) xh/(zh*zh)]
+    [   0      0     0   -x0/zh -x1/zh -1/zh  x0*yh/(zh*zh) x1*yh/(zh*zh) yh/(zh*zh)]*/
+
+    /*Compute warped point, which is the same as
+    homogenous coordinates of reprojection*/
+    xh=H[0]*x[0]+H[1]*x[1]+H[2];
+    yh=H[3]*x[0]+H[4]*x[1]+H[5];
+    zh=H[6]*x[0]+H[7]*x[1]+H[8];
+    mult=1.0/((zh!=0.0)?zh:1.0);
+    /*Compute inhomogenous residual*/
+    f[0]=y[0]-xh*mult;
+    f[1]=y[1]-yh*mult;
+    /*Compute Jacobian*/
+    mult2=mult*mult;
+    xh_mult2=xh*mult2;
+    yh_mult2=yh*mult2;
+    Jf_dx[0]= -x[0]*mult;
+    Jf_dx[1]= -x[1]*mult;
+    Jf_dx[2]= -mult;
+    Jf_dx[3]=0;
+    Jf_dx[4]=0;
+    Jf_dx[5]=0;
+    Jf_dx[6]=x[0]*xh_mult2;
+    Jf_dx[7]=x[1]*xh_mult2;
+    Jf_dx[8]=xh_mult2;
+    Jf_dx[9]=0;
+    Jf_dx[10]=0;
+    Jf_dx[11]=0;
+    Jf_dx[12]=Jf_dx[0];
+    Jf_dx[13]=Jf_dx[1];
+    Jf_dx[14]=Jf_dx[2];
+    Jf_dx[15]=x[0]*yh_mult2;
+    Jf_dx[16]=x[1]*yh_mult2;
+    Jf_dx[17]=yh_mult2;
+}
+
+/*!
+Compute robust residual vector f between image point y and homography Hx of
+image point x. Also compute Jacobian of f with respect
+to an update dH of H*/
+inline void db_DerivativeCauchyInhomHomographyReprojection(double Jf_dx[18],double f[2],const double y[2],const double H[9],
+                                                           const double x[2],double one_over_scale2)
+{
+    double Jf_dx_loc[18],f_loc[2];
+    double J[4],J0,J1,J2,J3;
+
+    /*Compute reprojection Jacobian*/
+    db_DerivativeInhomHomographyError(Jf_dx_loc,f_loc,y,H,x);
+    /*Compute robustifier Jacobian*/
+    db_CauchyDerivative(J,f,f_loc,one_over_scale2);
+
+    /*Multiply the robustifier Jacobian with
+    the reprojection Jacobian*/
+    J0=J[0];J1=J[1];J2=J[2];J3=J[3];
+    Jf_dx[0]=J0*Jf_dx_loc[0];
+    Jf_dx[1]=J0*Jf_dx_loc[1];
+    Jf_dx[2]=J0*Jf_dx_loc[2];
+    Jf_dx[3]=                J1*Jf_dx_loc[12];
+    Jf_dx[4]=                J1*Jf_dx_loc[13];
+    Jf_dx[5]=                J1*Jf_dx_loc[14];
+    Jf_dx[6]=J0*Jf_dx_loc[6]+J1*Jf_dx_loc[15];
+    Jf_dx[7]=J0*Jf_dx_loc[7]+J1*Jf_dx_loc[16];
+    Jf_dx[8]=J0*Jf_dx_loc[8]+J1*Jf_dx_loc[17];
+    Jf_dx[9]= J2*Jf_dx_loc[0];
+    Jf_dx[10]=J2*Jf_dx_loc[1];
+    Jf_dx[11]=J2*Jf_dx_loc[2];
+    Jf_dx[12]=                J3*Jf_dx_loc[12];
+    Jf_dx[13]=                J3*Jf_dx_loc[13];
+    Jf_dx[14]=                J3*Jf_dx_loc[14];
+    Jf_dx[15]=J2*Jf_dx_loc[6]+J3*Jf_dx_loc[15];
+    Jf_dx[16]=J2*Jf_dx_loc[7]+J3*Jf_dx_loc[16];
+    Jf_dx[17]=J2*Jf_dx_loc[8]+J3*Jf_dx_loc[17];
+}
+/*!
+Compute residual vector f between image point y and rotation of
+image point x by R. Also compute Jacobian of f with respect
+to an update dx of R*/
+inline void db_DerivativeInhomRotationReprojection(double Jf_dx[6],double f[2],const double y[2],const double R[9],
+                                                   const double x[2])
+{
+    double xh,yh,zh,mult,mult2,xh_mult2,yh_mult2;
+    /*The Jacobian of the inhomogenous coordinates with respect to
+    the homogenous is
+    [1/zh  0  -xh/(zh*zh)]
+    [ 0  1/zh -yh/(zh*zh)]
+    The Jacobian at zero of the homogenous coordinates with respect to
+    [sin(phi) sin(ohm) sin(kap)] is
+    [-rx2   0   rx1 ]
+    [  0   rx2 -rx0 ]
+    [ rx0 -rx1   0  ]
+    The output Jacobian is minus their product, i.e.
+    [1+xh*xh/(zh*zh) -xh*yh/(zh*zh)   -yh/zh]
+    [xh*yh/(zh*zh)   -1-yh*yh/(zh*zh)  xh/zh]*/
+
+    /*Compute rotated point, which is the same as
+    homogenous coordinates of reprojection*/
+    xh=R[0]*x[0]+R[1]*x[1]+R[2];
+    yh=R[3]*x[0]+R[4]*x[1]+R[5];
+    zh=R[6]*x[0]+R[7]*x[1]+R[8];
+    mult=1.0/((zh!=0.0)?zh:1.0);
+    /*Compute inhomogenous residual*/
+    f[0]=y[0]-xh*mult;
+    f[1]=y[1]-yh*mult;
+    /*Compute Jacobian*/
+    mult2=mult*mult;
+    xh_mult2=xh*mult2;
+    yh_mult2=yh*mult2;
+    Jf_dx[0]= 1.0+xh*xh_mult2;
+    Jf_dx[1]= -yh*xh_mult2;
+    Jf_dx[2]= -yh*mult;
+    Jf_dx[3]= -Jf_dx[1];
+    Jf_dx[4]= -1-yh*yh_mult2;
+    Jf_dx[5]= xh*mult;
+}
+
+/*!
+Compute robust residual vector f between image point y and rotation of
+image point x by R. Also compute Jacobian of f with respect
+to an update dx of R*/
+inline void db_DerivativeCauchyInhomRotationReprojection(double Jf_dx[6],double f[2],const double y[2],const double R[9],
+                                                         const double x[2],double one_over_scale2)
+{
+    double Jf_dx_loc[6],f_loc[2];
+    double J[4],J0,J1,J2,J3;
+
+    /*Compute reprojection Jacobian*/
+    db_DerivativeInhomRotationReprojection(Jf_dx_loc,f_loc,y,R,x);
+    /*Compute robustifier Jacobian*/
+    db_CauchyDerivative(J,f,f_loc,one_over_scale2);
+
+    /*Multiply the robustifier Jacobian with
+    the reprojection Jacobian*/
+    J0=J[0];J1=J[1];J2=J[2];J3=J[3];
+    Jf_dx[0]=J0*Jf_dx_loc[0]+J1*Jf_dx_loc[3];
+    Jf_dx[1]=J0*Jf_dx_loc[1]+J1*Jf_dx_loc[4];
+    Jf_dx[2]=J0*Jf_dx_loc[2]+J1*Jf_dx_loc[5];
+    Jf_dx[3]=J2*Jf_dx_loc[0]+J3*Jf_dx_loc[3];
+    Jf_dx[4]=J2*Jf_dx_loc[1]+J3*Jf_dx_loc[4];
+    Jf_dx[5]=J2*Jf_dx_loc[2]+J3*Jf_dx_loc[5];
+}
+
+
+
+/*!
+// remove the outliers whose projection error is larger than pre-defined
+*/
+inline int db_RemoveOutliers_Homography(const double H[9], double *x_i,double *xp_i, double *wp,double *im, double *im_p, double *im_r, double *im_raw,double *im_raw_p,int point_count,double scale, double thresh=DB_OUTLIER_THRESHOLD)
+{
+    double temp_valueE, t2;
+    int c;
+    int k1=0;
+    int k2=0;
+    int k3=0;
+    int numinliers=0;
+    int ind1;
+    int ind2;
+    int ind3;
+    int isinlier;
+
+    // experimentally determined
+    t2=1.0/(thresh*thresh*thresh*thresh);
+
+    // count the inliers
+    for(c=0;c<point_count;c++)
+    {
+        ind1=c<<1;
+        ind2=c<<2;
+        ind3=3*c;
+
+        temp_valueE=db_SquaredInhomogenousHomographyError(im_p+ind3,H,im+ind3);
+
+        isinlier=((temp_valueE<=t2)?1:0);
+
+        // if it is inlier, then copy the 3d and 2d correspondences
+        if (isinlier)
+        {
+            numinliers++;
+
+            x_i[k1]=x_i[ind1];
+            x_i[k1+1]=x_i[ind1+1];
+
+            xp_i[k1]=xp_i[ind1];
+            xp_i[k1+1]=xp_i[ind1+1];
+
+            k1=k1+2;
+
+            // original normalized pixel coordinates
+            im[k3]=im[ind3];
+            im[k3+1]=im[ind3+1];
+            im[k3+2]=im[ind3+2];
+
+            im_r[k3]=im_r[ind3];
+            im_r[k3+1]=im_r[ind3+1];
+            im_r[k3+2]=im_r[ind3+2];
+
+            im_p[k3]=im_p[ind3];
+            im_p[k3+1]=im_p[ind3+1];
+            im_p[k3+2]=im_p[ind3+2];
+
+            // left and right raw pixel coordinates
+            im_raw[k3] = im_raw[ind3];
+            im_raw[k3+1] = im_raw[ind3+1];
+            im_raw[k3+2] = im_raw[ind3+2]; // the index
+
+            im_raw_p[k3] = im_raw_p[ind3];
+            im_raw_p[k3+1] = im_raw_p[ind3+1];
+            im_raw_p[k3+2] = im_raw_p[ind3+2]; // the index
+
+            k3=k3+3;
+
+            // 3D coordinates
+            wp[k2]=wp[ind2];
+            wp[k2+1]=wp[ind2+1];
+            wp[k2+2]=wp[ind2+2];
+            wp[k2+3]=wp[ind2+3];
+
+            k2=k2+4;
+
+        }
+    }
+
+    return numinliers;
+}
+
+
+
+
+
+/*\}*/
+
+#endif /* DB_METRICS */
diff --git a/perftests/panorama/feature_stab/db_vlvm/db_rob_image_homography.cpp b/perftests/panorama/feature_stab/db_vlvm/db_rob_image_homography.cpp
new file mode 100644
index 0000000..82dec0c
--- /dev/null
+++ b/perftests/panorama/feature_stab/db_vlvm/db_rob_image_homography.cpp
@@ -0,0 +1,1082 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+/* $Id: db_rob_image_homography.cpp,v 1.2 2011/06/17 14:03:31 mbansal Exp $ */
+
+#include "db_utilities.h"
+#include "db_rob_image_homography.h"
+#include "db_bundle.h"
+
+
+
+/*****************************************************************
+*    Lean and mean begins here                                   *
+*****************************************************************/
+
+#include "db_image_homography.h"
+
+#ifdef _VERBOSE_
+#include <iostream>
+using namespace std;
+#endif /*VERBOSE*/
+
+inline double db_RobImageHomography_Cost(double H[9],int point_count,double *x_i,double *xp_i,double one_over_scale2)
+{
+    int c;
+    double back,acc,*x_i_temp,*xp_i_temp;
+
+    for(back=0.0,c=0;c<point_count;)
+    {
+        /*Take log of product of ten reprojection
+        errors to reduce nr of expensive log operations*/
+        if(c+9<point_count)
+        {
+            x_i_temp=x_i+(c<<1);
+            xp_i_temp=xp_i+(c<<1);
+
+            acc=db_ExpCauchyInhomogenousHomographyError(xp_i_temp,H,x_i_temp,one_over_scale2);
+            acc*=db_ExpCauchyInhomogenousHomographyError(xp_i_temp+2,H,x_i_temp+2,one_over_scale2);
+            acc*=db_ExpCauchyInhomogenousHomographyError(xp_i_temp+4,H,x_i_temp+4,one_over_scale2);
+            acc*=db_ExpCauchyInhomogenousHomographyError(xp_i_temp+6,H,x_i_temp+6,one_over_scale2);
+            acc*=db_ExpCauchyInhomogenousHomographyError(xp_i_temp+8,H,x_i_temp+8,one_over_scale2);
+            acc*=db_ExpCauchyInhomogenousHomographyError(xp_i_temp+10,H,x_i_temp+10,one_over_scale2);
+            acc*=db_ExpCauchyInhomogenousHomographyError(xp_i_temp+12,H,x_i_temp+12,one_over_scale2);
+            acc*=db_ExpCauchyInhomogenousHomographyError(xp_i_temp+14,H,x_i_temp+14,one_over_scale2);
+            acc*=db_ExpCauchyInhomogenousHomographyError(xp_i_temp+16,H,x_i_temp+16,one_over_scale2);
+            acc*=db_ExpCauchyInhomogenousHomographyError(xp_i_temp+18,H,x_i_temp+18,one_over_scale2);
+            c+=10;
+        }
+        else
+        {
+            for(acc=1.0;c<point_count;c++)
+            {
+                acc*=db_ExpCauchyInhomogenousHomographyError(xp_i+(c<<1),H,x_i+(c<<1),one_over_scale2);
+            }
+        }
+        back+=log(acc);
+    }
+    return(back);
+}
+
+inline double db_RobImageHomography_Statistics(double H[9],int point_count,double *x_i,double *xp_i,double one_over_scale2,db_Statistics *stat,double thresh=DB_OUTLIER_THRESHOLD)
+{
+    int c,i;
+    double t2,frac;
+
+    t2=thresh*thresh;
+    for(i=0,c=0;c<point_count;c++)
+    {
+        i+=(db_SquaredInhomogenousHomographyError(xp_i+(c<<1),H,x_i+(c<<1))*one_over_scale2<=t2)?1:0;
+    }
+    frac=((double)i)/((double)(db_maxi(point_count,1)));
+
+#ifdef _VERBOSE_
+    std::cout << "Inlier Percentage RobImageHomography: " << frac*100.0 << "% out of " << point_count << " constraints" << std::endl;
+#endif /*_VERBOSE_*/
+
+    if(stat)
+    {
+        stat->nr_points=point_count;
+        stat->one_over_scale2=one_over_scale2;
+        stat->nr_inliers=i;
+        stat->inlier_fraction=frac;
+
+        stat->cost=db_RobImageHomography_Cost(H,point_count,x_i,xp_i,one_over_scale2);
+        stat->model_dimension=0;
+        /*stat->nr_parameters=;*/
+
+        stat->lambda1=log(4.0);
+        stat->lambda2=log(4.0*((double)db_maxi(1,stat->nr_points)));
+        stat->lambda3=10.0;
+        stat->gric=stat->cost+stat->lambda1*stat->model_dimension*((double)stat->nr_points)+stat->lambda2*((double)stat->nr_parameters);
+        stat->inlier_evidence=((double)stat->nr_inliers)-stat->lambda3*((double)stat->nr_parameters);
+    }
+
+    return(frac);
+}
+
+/*Compute min_Jtf and upper right of JtJ. Return cost.*/
+inline double db_RobImageHomography_Jacobians(double JtJ[81],double min_Jtf[9],double H[9],int point_count,double *x_i,double *xp_i,double one_over_scale2)
+{
+    double back,Jf_dx[18],f[2],temp,temp2;
+    int i;
+
+    db_Zero(JtJ,81);
+    db_Zero(min_Jtf,9);
+    for(back=0.0,i=0;i<point_count;i++)
+    {
+        /*Compute reprojection error vector and its Jacobian
+        for this point*/
+        db_DerivativeCauchyInhomHomographyReprojection(Jf_dx,f,xp_i+(i<<1),H,x_i+(i<<1),one_over_scale2);
+        /*Perform
+        min_Jtf-=Jf_dx*f[0] and
+        min_Jtf-=(Jf_dx+9)*f[1] to accumulate -Jt%f*/
+        db_RowOperation9(min_Jtf,Jf_dx,f[0]);
+        db_RowOperation9(min_Jtf,Jf_dx+9,f[1]);
+        /*Accumulate upper right of JtJ with outer product*/
+        temp=Jf_dx[0]; temp2=Jf_dx[9];
+        JtJ[0]+=temp*Jf_dx[0]+temp2*Jf_dx[9];
+        JtJ[1]+=temp*Jf_dx[1]+temp2*Jf_dx[10];
+        JtJ[2]+=temp*Jf_dx[2]+temp2*Jf_dx[11];
+        JtJ[3]+=temp*Jf_dx[3]+temp2*Jf_dx[12];
+        JtJ[4]+=temp*Jf_dx[4]+temp2*Jf_dx[13];
+        JtJ[5]+=temp*Jf_dx[5]+temp2*Jf_dx[14];
+        JtJ[6]+=temp*Jf_dx[6]+temp2*Jf_dx[15];
+        JtJ[7]+=temp*Jf_dx[7]+temp2*Jf_dx[16];
+        JtJ[8]+=temp*Jf_dx[8]+temp2*Jf_dx[17];
+        temp=Jf_dx[1]; temp2=Jf_dx[10];
+        JtJ[10]+=temp*Jf_dx[1]+temp2*Jf_dx[10];
+        JtJ[11]+=temp*Jf_dx[2]+temp2*Jf_dx[11];
+        JtJ[12]+=temp*Jf_dx[3]+temp2*Jf_dx[12];
+        JtJ[13]+=temp*Jf_dx[4]+temp2*Jf_dx[13];
+        JtJ[14]+=temp*Jf_dx[5]+temp2*Jf_dx[14];
+        JtJ[15]+=temp*Jf_dx[6]+temp2*Jf_dx[15];
+        JtJ[16]+=temp*Jf_dx[7]+temp2*Jf_dx[16];
+        JtJ[17]+=temp*Jf_dx[8]+temp2*Jf_dx[17];
+        temp=Jf_dx[2]; temp2=Jf_dx[11];
+        JtJ[20]+=temp*Jf_dx[2]+temp2*Jf_dx[11];
+        JtJ[21]+=temp*Jf_dx[3]+temp2*Jf_dx[12];
+        JtJ[22]+=temp*Jf_dx[4]+temp2*Jf_dx[13];
+        JtJ[23]+=temp*Jf_dx[5]+temp2*Jf_dx[14];
+        JtJ[24]+=temp*Jf_dx[6]+temp2*Jf_dx[15];
+        JtJ[25]+=temp*Jf_dx[7]+temp2*Jf_dx[16];
+        JtJ[26]+=temp*Jf_dx[8]+temp2*Jf_dx[17];
+        temp=Jf_dx[3]; temp2=Jf_dx[12];
+        JtJ[30]+=temp*Jf_dx[3]+temp2*Jf_dx[12];
+        JtJ[31]+=temp*Jf_dx[4]+temp2*Jf_dx[13];
+        JtJ[32]+=temp*Jf_dx[5]+temp2*Jf_dx[14];
+        JtJ[33]+=temp*Jf_dx[6]+temp2*Jf_dx[15];
+        JtJ[34]+=temp*Jf_dx[7]+temp2*Jf_dx[16];
+        JtJ[35]+=temp*Jf_dx[8]+temp2*Jf_dx[17];
+        temp=Jf_dx[4]; temp2=Jf_dx[13];
+        JtJ[40]+=temp*Jf_dx[4]+temp2*Jf_dx[13];
+        JtJ[41]+=temp*Jf_dx[5]+temp2*Jf_dx[14];
+        JtJ[42]+=temp*Jf_dx[6]+temp2*Jf_dx[15];
+        JtJ[43]+=temp*Jf_dx[7]+temp2*Jf_dx[16];
+        JtJ[44]+=temp*Jf_dx[8]+temp2*Jf_dx[17];
+        temp=Jf_dx[5]; temp2=Jf_dx[14];
+        JtJ[50]+=temp*Jf_dx[5]+temp2*Jf_dx[14];
+        JtJ[51]+=temp*Jf_dx[6]+temp2*Jf_dx[15];
+        JtJ[52]+=temp*Jf_dx[7]+temp2*Jf_dx[16];
+        JtJ[53]+=temp*Jf_dx[8]+temp2*Jf_dx[17];
+        temp=Jf_dx[6]; temp2=Jf_dx[15];
+        JtJ[60]+=temp*Jf_dx[6]+temp2*Jf_dx[15];
+        JtJ[61]+=temp*Jf_dx[7]+temp2*Jf_dx[16];
+        JtJ[62]+=temp*Jf_dx[8]+temp2*Jf_dx[17];
+        temp=Jf_dx[7]; temp2=Jf_dx[16];
+        JtJ[70]+=temp*Jf_dx[7]+temp2*Jf_dx[16];
+        JtJ[71]+=temp*Jf_dx[8]+temp2*Jf_dx[17];
+        temp=Jf_dx[8]; temp2=Jf_dx[17];
+        JtJ[80]+=temp*Jf_dx[8]+temp2*Jf_dx[17];
+
+        /*Add square-sum to cost*/
+        back+=db_sqr(f[0])+db_sqr(f[1]);
+    }
+
+    return(back);
+}
+
+/*Compute min_Jtf and upper right of JtJ. Return cost*/
+inline double db_RobCamRotation_Jacobians(double JtJ[9],double min_Jtf[3],double H[9],int point_count,double *x_i,double *xp_i,double one_over_scale2)
+{
+    double back,Jf_dx[6],f[2];
+    int i,j;
+
+    db_Zero(JtJ,9);
+    db_Zero(min_Jtf,3);
+    for(back=0.0,i=0;i<point_count;i++)
+    {
+        /*Compute reprojection error vector and its Jacobian
+        for this point*/
+        j=(i<<1);
+        db_DerivativeCauchyInhomRotationReprojection(Jf_dx,f,xp_i+j,H,x_i+j,one_over_scale2);
+        /*Perform
+        min_Jtf-=Jf_dx*f[0] and
+        min_Jtf-=(Jf_dx+3)*f[1] to accumulate -Jt%f*/
+        db_RowOperation3(min_Jtf,Jf_dx,f[0]);
+        db_RowOperation3(min_Jtf,Jf_dx+3,f[1]);
+        /*Accumulate upper right of JtJ with outer product*/
+        JtJ[0]+=Jf_dx[0]*Jf_dx[0]+Jf_dx[3]*Jf_dx[3];
+        JtJ[1]+=Jf_dx[0]*Jf_dx[1]+Jf_dx[3]*Jf_dx[4];
+        JtJ[2]+=Jf_dx[0]*Jf_dx[2]+Jf_dx[3]*Jf_dx[5];
+        JtJ[4]+=Jf_dx[1]*Jf_dx[1]+Jf_dx[4]*Jf_dx[4];
+        JtJ[5]+=Jf_dx[1]*Jf_dx[2]+Jf_dx[4]*Jf_dx[5];
+        JtJ[8]+=Jf_dx[2]*Jf_dx[2]+Jf_dx[5]*Jf_dx[5];
+
+        /*Add square-sum to cost*/
+        back+=db_sqr(f[0])+db_sqr(f[1]);
+    }
+
+    return(back);
+}
+
+void db_RobCamRotation_Polish(double H[9],int point_count,double *x_i,double *xp_i,double one_over_scale2,
+                               int max_iterations,double improvement_requirement)
+{
+    int i,update,stop;
+    double lambda,cost,current_cost;
+    double JtJ[9],min_Jtf[3],dx[3],H_p_dx[9];
+
+    lambda=0.001;
+    for(update=1,stop=0,i=0;(stop<2) && (i<max_iterations);i++)
+    {
+        /*if first time since improvement, compute Jacobian and residual*/
+        if(update)
+        {
+            current_cost=db_RobCamRotation_Jacobians(JtJ,min_Jtf,H,point_count,x_i,xp_i,one_over_scale2);
+            update=0;
+        }
+
+#ifdef _VERBOSE_
+        /*std::cout << "Cost:" << current_cost << " ";*/
+#endif /*_VERBOSE_*/
+
+        /*Come up with a hypothesis dx
+        based on the current lambda*/
+        db_Compute_dx_3x3(dx,JtJ,min_Jtf,lambda);
+
+        /*Compute Cost(x+dx)*/
+        db_UpdateRotation(H_p_dx,H,dx);
+        cost=db_RobImageHomography_Cost(H_p_dx,point_count,x_i,xp_i,one_over_scale2);
+
+        /*Is there an improvement?*/
+        if(cost<current_cost)
+        {
+            /*improvement*/
+            if(current_cost-cost<current_cost*improvement_requirement) stop++;
+            else stop=0;
+            lambda*=0.1;
+            /*Move to the hypothesised position x+dx*/
+            current_cost=cost;
+            db_Copy9(H,H_p_dx);
+            db_OrthonormalizeRotation(H);
+            update=1;
+
+#ifdef _VERBOSE_
+        std::cout << "Step" << i << "Imp,Lambda=" << lambda << "Cost:" << current_cost << std::endl;
+#endif /*_VERBOSE_*/
+        }
+        else
+        {
+            /*no improvement*/
+            lambda*=10.0;
+            stop=0;
+        }
+    }
+}
+
+inline void db_RobImageHomographyFetchJacobian(double **JtJ_ref,double *min_Jtf,double **JtJ_temp_ref,double *min_Jtf_temp,int n,int *fetch_vector)
+{
+    int i,j,t;
+    double *t1,*t2;
+
+    for(i=0;i<n;i++)
+    {
+        t=fetch_vector[i];
+        min_Jtf[i]=min_Jtf_temp[t];
+        t1=JtJ_ref[i];
+        t2=JtJ_temp_ref[t];
+        for(j=i;j<n;j++)
+        {
+            t1[j]=t2[fetch_vector[j]];
+        }
+    }
+}
+
+inline void db_RobImageHomographyMultiplyJacobian(double **JtJ_ref,double *min_Jtf,double **JtJ_temp_ref,double *min_Jtf_temp,double **JE_dx_ref,int n)
+{
+    double JtJ_JE[72],*JtJ_JE_ref[9];
+
+    db_SetupMatrixRefs(JtJ_JE_ref,9,8,JtJ_JE);
+
+    db_SymmetricExtendUpperToLower(JtJ_temp_ref,9,9);
+    db_MultiplyMatricesAB(JtJ_JE_ref,JtJ_temp_ref,JE_dx_ref,9,9,n);
+    db_UpperMultiplyMatricesAtB(JtJ_ref,JE_dx_ref,JtJ_JE_ref,n,9,n);
+    db_MultiplyMatrixVectorAtb(min_Jtf,JE_dx_ref,min_Jtf_temp,n,9);
+}
+
+inline void db_RobImageHomographyJH_Js(double **JE_dx_ref,int j,double H[9])
+{
+    /*Update of upper 2x2 is multiplication by
+    [s 0][ cos(theta) sin(theta)]
+    [0 s][-sin(theta) cos(theta)]*/
+    JE_dx_ref[0][j]=H[0];
+    JE_dx_ref[1][j]=H[1];
+    JE_dx_ref[2][j]=0;
+    JE_dx_ref[3][j]=H[2];
+    JE_dx_ref[4][j]=H[3];
+    JE_dx_ref[5][j]=0;
+    JE_dx_ref[6][j]=0;
+    JE_dx_ref[7][j]=0;
+    JE_dx_ref[8][j]=0;
+}
+
+inline void db_RobImageHomographyJH_JR(double **JE_dx_ref,int j,double H[9])
+{
+    /*Update of upper 2x2 is multiplication by
+    [s 0][ cos(theta) sin(theta)]
+    [0 s][-sin(theta) cos(theta)]*/
+    JE_dx_ref[0][j]=  H[3];
+    JE_dx_ref[1][j]=  H[4];
+    JE_dx_ref[2][j]=0;
+    JE_dx_ref[3][j]= -H[0];
+    JE_dx_ref[4][j]= -H[1];
+    JE_dx_ref[5][j]=0;
+    JE_dx_ref[6][j]=0;
+    JE_dx_ref[7][j]=0;
+    JE_dx_ref[8][j]=0;
+}
+
+inline void db_RobImageHomographyJH_Jt(double **JE_dx_ref,int j,int k,double H[9])
+{
+    JE_dx_ref[0][j]=0;
+    JE_dx_ref[1][j]=0;
+    JE_dx_ref[2][j]=1.0;
+    JE_dx_ref[3][j]=0;
+    JE_dx_ref[4][j]=0;
+    JE_dx_ref[5][j]=0;
+    JE_dx_ref[6][j]=0;
+    JE_dx_ref[7][j]=0;
+    JE_dx_ref[8][j]=0;
+
+    JE_dx_ref[0][k]=0;
+    JE_dx_ref[1][k]=0;
+    JE_dx_ref[2][k]=0;
+    JE_dx_ref[3][k]=0;
+    JE_dx_ref[4][k]=0;
+    JE_dx_ref[5][k]=1.0;
+    JE_dx_ref[6][k]=0;
+    JE_dx_ref[7][k]=0;
+    JE_dx_ref[8][k]=0;
+}
+
+inline void db_RobImageHomographyJH_dRotFocal(double **JE_dx_ref,int j,int k,int l,int m,double H[9])
+{
+    double f,fi,fi2;
+    double R[9],J[9];
+
+    /*Updated matrix is diag(f+df,f+df)*dR*R*diag(1/(f+df),1/(f+df),1)*/
+    f=db_FocalAndRotFromCamRotFocalHomography(R,H);
+    fi=db_SafeReciprocal(f);
+    fi2=db_sqr(fi);
+    db_JacobianOfRotatedPointStride(J,R,3);
+    JE_dx_ref[0][j]=   J[0];
+    JE_dx_ref[1][j]=   J[1];
+    JE_dx_ref[2][j]=f* J[2];
+    JE_dx_ref[3][j]=   J[3];
+    JE_dx_ref[4][j]=   J[4];
+    JE_dx_ref[5][j]=f* J[5];
+    JE_dx_ref[6][j]=fi*J[6];
+    JE_dx_ref[7][j]=fi*J[7];
+    JE_dx_ref[8][j]=   J[8];
+    db_JacobianOfRotatedPointStride(J,R+1,3);
+    JE_dx_ref[0][k]=   J[0];
+    JE_dx_ref[1][k]=   J[1];
+    JE_dx_ref[2][k]=f* J[2];
+    JE_dx_ref[3][k]=   J[3];
+    JE_dx_ref[4][k]=   J[4];
+    JE_dx_ref[5][k]=f* J[5];
+    JE_dx_ref[6][k]=fi*J[6];
+    JE_dx_ref[7][k]=fi*J[7];
+    JE_dx_ref[8][k]=   J[8];
+    db_JacobianOfRotatedPointStride(J,R+2,3);
+    JE_dx_ref[0][l]=   J[0];
+    JE_dx_ref[1][l]=   J[1];
+    JE_dx_ref[2][l]=f* J[2];
+    JE_dx_ref[3][l]=   J[3];
+    JE_dx_ref[4][l]=   J[4];
+    JE_dx_ref[5][l]=f* J[5];
+    JE_dx_ref[6][l]=fi*J[6];
+    JE_dx_ref[7][l]=fi*J[7];
+    JE_dx_ref[8][l]=   J[8];
+
+    JE_dx_ref[0][m]=0;
+    JE_dx_ref[1][m]=0;
+    JE_dx_ref[2][m]=H[2];
+    JE_dx_ref[3][m]=0;
+    JE_dx_ref[4][m]=0;
+    JE_dx_ref[5][m]=H[5];
+    JE_dx_ref[6][m]= -fi2*H[6];
+    JE_dx_ref[7][m]= -fi2*H[7];
+    JE_dx_ref[8][m]=0;
+}
+
+inline double db_RobImageHomography_Jacobians_Generic(double *JtJ_ref[8],double min_Jtf[8],int *num_param,int *frozen_coord,double H[9],int point_count,double *x_i,double *xp_i,int homography_type,double one_over_scale2)
+{
+    double back;
+    int i,j,fetch_vector[8],n;
+    double JtJ_temp[81],min_Jtf_temp[9],JE_dx[72];
+    double *JE_dx_ref[9],*JtJ_temp_ref[9];
+
+    /*Compute cost and JtJ,min_Jtf with respect to H*/
+    back=db_RobImageHomography_Jacobians(JtJ_temp,min_Jtf_temp,H,point_count,x_i,xp_i,one_over_scale2);
+
+    /*Compute JtJ,min_Jtf with respect to the right parameters
+    The formulas are
+    JtJ=transpose(JE_dx)*JtJ*JE_dx and
+    min_Jtf=transpose(JE_dx)*min_Jtf,
+    where the 9xN matrix JE_dx is the Jacobian of H with respect
+    to the update*/
+    db_SetupMatrixRefs(JtJ_temp_ref,9,9,JtJ_temp);
+    db_SetupMatrixRefs(JE_dx_ref,9,8,JE_dx);
+    switch(homography_type)
+    {
+        case DB_HOMOGRAPHY_TYPE_SIMILARITY:
+        case DB_HOMOGRAPHY_TYPE_SIMILARITY_U:
+            n=4;
+            db_RobImageHomographyJH_Js(JE_dx_ref,0,H);
+            db_RobImageHomographyJH_JR(JE_dx_ref,1,H);
+            db_RobImageHomographyJH_Jt(JE_dx_ref,2,3,H);
+            db_RobImageHomographyMultiplyJacobian(JtJ_ref,min_Jtf,JtJ_temp_ref,min_Jtf_temp,JE_dx_ref,n);
+            break;
+        case DB_HOMOGRAPHY_TYPE_ROTATION:
+        case DB_HOMOGRAPHY_TYPE_ROTATION_U:
+            n=1;
+            db_RobImageHomographyJH_JR(JE_dx_ref,0,H);
+            db_RobImageHomographyMultiplyJacobian(JtJ_ref,min_Jtf,JtJ_temp_ref,min_Jtf_temp,JE_dx_ref,n);
+            break;
+        case DB_HOMOGRAPHY_TYPE_SCALING:
+            n=1;
+            db_RobImageHomographyJH_Js(JE_dx_ref,0,H);
+            db_RobImageHomographyMultiplyJacobian(JtJ_ref,min_Jtf,JtJ_temp_ref,min_Jtf_temp,JE_dx_ref,n);
+            break;
+        case DB_HOMOGRAPHY_TYPE_S_T:
+            n=3;
+            db_RobImageHomographyJH_Js(JE_dx_ref,0,H);
+            db_RobImageHomographyJH_Jt(JE_dx_ref,1,2,H);
+            db_RobImageHomographyMultiplyJacobian(JtJ_ref,min_Jtf,JtJ_temp_ref,min_Jtf_temp,JE_dx_ref,n);
+            break;
+        case DB_HOMOGRAPHY_TYPE_R_T:
+            n=3;
+            db_RobImageHomographyJH_JR(JE_dx_ref,0,H);
+            db_RobImageHomographyJH_Jt(JE_dx_ref,1,2,H);
+            db_RobImageHomographyMultiplyJacobian(JtJ_ref,min_Jtf,JtJ_temp_ref,min_Jtf_temp,JE_dx_ref,n);
+            break;
+        case DB_HOMOGRAPHY_TYPE_R_S:
+            n=2;
+            db_RobImageHomographyJH_Js(JE_dx_ref,0,H);
+            db_RobImageHomographyJH_JR(JE_dx_ref,1,H);
+            db_RobImageHomographyMultiplyJacobian(JtJ_ref,min_Jtf,JtJ_temp_ref,min_Jtf_temp,JE_dx_ref,n);
+            break;
+
+        case DB_HOMOGRAPHY_TYPE_TRANSLATION:
+            n=2;
+            fetch_vector[0]=2;
+            fetch_vector[1]=5;
+            db_RobImageHomographyFetchJacobian(JtJ_ref,min_Jtf,JtJ_temp_ref,min_Jtf_temp,n,fetch_vector);
+            break;
+        case DB_HOMOGRAPHY_TYPE_AFFINE:
+            n=6;
+            fetch_vector[0]=0;
+            fetch_vector[1]=1;
+            fetch_vector[2]=2;
+            fetch_vector[3]=3;
+            fetch_vector[4]=4;
+            fetch_vector[5]=5;
+            db_RobImageHomographyFetchJacobian(JtJ_ref,min_Jtf,JtJ_temp_ref,min_Jtf_temp,n,fetch_vector);
+            break;
+        case DB_HOMOGRAPHY_TYPE_PROJECTIVE:
+            n=8;
+            *frozen_coord=db_MaxAbsIndex9(H);
+            for(j=0,i=0;i<9;i++) if(i!=(*frozen_coord))
+            {
+                fetch_vector[j]=i;
+                j++;
+            }
+            db_RobImageHomographyFetchJacobian(JtJ_ref,min_Jtf,JtJ_temp_ref,min_Jtf_temp,n,fetch_vector);
+            break;
+        case DB_HOMOGRAPHY_TYPE_CAMROTATION_F:
+        case DB_HOMOGRAPHY_TYPE_CAMROTATION_F_UD:
+            n=4;
+            db_RobImageHomographyJH_dRotFocal(JE_dx_ref,0,1,2,3,H);
+            db_RobImageHomographyMultiplyJacobian(JtJ_ref,min_Jtf,JtJ_temp_ref,min_Jtf_temp,JE_dx_ref,n);
+            break;
+    }
+    *num_param=n;
+
+    return(back);
+}
+
+inline void db_ImageHomographyUpdateGeneric(double H_p_dx[9],double H[9],double *dx,int homography_type,int frozen_coord)
+{
+    switch(homography_type)
+    {
+        case DB_HOMOGRAPHY_TYPE_SIMILARITY:
+        case DB_HOMOGRAPHY_TYPE_SIMILARITY_U:
+            db_Copy9(H_p_dx,H);
+            db_MultiplyScaleOntoImageHomography(H,1.0+dx[0]);
+            db_MultiplyRotationOntoImageHomography(H,dx[1]);
+            H_p_dx[2]+=dx[2];
+            H_p_dx[5]+=dx[3];
+            break;
+        case DB_HOMOGRAPHY_TYPE_ROTATION:
+        case DB_HOMOGRAPHY_TYPE_ROTATION_U:
+            db_MultiplyRotationOntoImageHomography(H,dx[0]);
+            break;
+        case DB_HOMOGRAPHY_TYPE_SCALING:
+            db_MultiplyScaleOntoImageHomography(H,1.0+dx[0]);
+            break;
+        case DB_HOMOGRAPHY_TYPE_S_T:
+            db_Copy9(H_p_dx,H);
+            db_MultiplyScaleOntoImageHomography(H,1.0+dx[0]);
+            H_p_dx[2]+=dx[1];
+            H_p_dx[5]+=dx[2];
+            break;
+        case DB_HOMOGRAPHY_TYPE_R_T:
+            db_Copy9(H_p_dx,H);
+            db_MultiplyRotationOntoImageHomography(H,dx[0]);
+            H_p_dx[2]+=dx[1];
+            H_p_dx[5]+=dx[2];
+            break;
+        case DB_HOMOGRAPHY_TYPE_R_S:
+            db_Copy9(H_p_dx,H);
+            db_MultiplyScaleOntoImageHomography(H,1.0+dx[0]);
+            db_MultiplyRotationOntoImageHomography(H,dx[1]);
+            break;
+        case DB_HOMOGRAPHY_TYPE_TRANSLATION:
+            db_Copy9(H_p_dx,H);
+            H_p_dx[2]+=dx[0];
+            H_p_dx[5]+=dx[1];
+            break;
+        case DB_HOMOGRAPHY_TYPE_AFFINE:
+            db_UpdateImageHomographyAffine(H_p_dx,H,dx);
+            break;
+        case DB_HOMOGRAPHY_TYPE_PROJECTIVE:
+            db_UpdateImageHomographyProjective(H_p_dx,H,dx,frozen_coord);
+            break;
+        case DB_HOMOGRAPHY_TYPE_CAMROTATION_F:
+        case DB_HOMOGRAPHY_TYPE_CAMROTATION_F_UD:
+            db_UpdateRotFocalHomography(H_p_dx,H,dx);
+            break;
+    }
+}
+
+void db_RobCamRotation_Polish_Generic(double H[9],int point_count,int homography_type,double *x_i,double *xp_i,double one_over_scale2,
+                               int max_iterations,double improvement_requirement)
+{
+    int i,update,stop,n;
+    int frozen_coord = 0;
+    double lambda,cost,current_cost;
+    double JtJ[72],min_Jtf[9],dx[8],H_p_dx[9];
+    double *JtJ_ref[9],d[8];
+
+    lambda=0.001;
+    for(update=1,stop=0,i=0;(stop<2) && (i<max_iterations);i++)
+    {
+        /*if first time since improvement, compute Jacobian and residual*/
+        if(update)
+        {
+            db_SetupMatrixRefs(JtJ_ref,9,8,JtJ);
+            current_cost=db_RobImageHomography_Jacobians_Generic(JtJ_ref,min_Jtf,&n,&frozen_coord,H,point_count,x_i,xp_i,homography_type,one_over_scale2);
+            update=0;
+        }
+
+#ifdef _VERBOSE_
+        /*std::cout << "Cost:" << current_cost << " ";*/
+#endif /*_VERBOSE_*/
+
+        /*Come up with a hypothesis dx
+        based on the current lambda*/
+        db_Compute_dx(dx,JtJ_ref,min_Jtf,lambda,d,n);
+
+        /*Compute Cost(x+dx)*/
+        db_ImageHomographyUpdateGeneric(H_p_dx,H,dx,homography_type,frozen_coord);
+        cost=db_RobImageHomography_Cost(H_p_dx,point_count,x_i,xp_i,one_over_scale2);
+
+        /*Is there an improvement?*/
+        if(cost<current_cost)
+        {
+            /*improvement*/
+            if(current_cost-cost<current_cost*improvement_requirement) stop++;
+            else stop=0;
+            lambda*=0.1;
+            /*Move to the hypothesised position x+dx*/
+            current_cost=cost;
+            db_Copy9(H,H_p_dx);
+            update=1;
+
+#ifdef _VERBOSE_
+        std::cout << "Step" << i << "Imp,Lambda=" << lambda << "Cost:" << current_cost << std::endl;
+#endif /*_VERBOSE_*/
+        }
+        else
+        {
+            /*no improvement*/
+            lambda*=10.0;
+            stop=0;
+        }
+    }
+}
+void db_RobImageHomography(
+                              /*Best homography*/
+                              double H[9],
+                              /*2DPoint to 2DPoint constraints
+                              Points are assumed to be given in
+                              homogenous coordinates*/
+                              double *im, double *im_p,
+                              /*Nr of points in total*/
+                              int nr_points,
+                              /*Calibration matrices
+                              used to normalize the points*/
+                              double K[9],
+                              double Kp[9],
+                              /*Pre-allocated space temp_d
+                              should point to at least
+                              12*nr_samples+10*nr_points
+                              allocated positions*/
+                              double *temp_d,
+                              /*Pre-allocated space temp_i
+                              should point to at least
+                              max(nr_samples,nr_points)
+                              allocated positions*/
+                              int *temp_i,
+                              int homography_type,
+                              db_Statistics *stat,
+                              int max_iterations,
+                              int max_points,
+                              double scale,
+                              int nr_samples,
+                              int chunk_size,
+                              /////////////////////////////////////////////
+                              // regular use: set outlierremoveflagE =0;
+                              // flag for the outlier removal
+                              int outlierremoveflagE,
+                              // if flag is 1, then the following variables
+                              // need the input
+                              //////////////////////////////////////
+                              // 3D coordinates
+                              double *wp,
+                              // its corresponding stereo pair's points
+                              double *im_r,
+                              // raw image coordinates
+                              double *im_raw, double *im_raw_p,
+                              // final matches
+                              int *finalNumE)
+{
+    /*Random seed*/
+    int r_seed;
+
+    int point_count_new;
+    /*Counters*/
+    int i,j,c,point_count,hyp_count;
+    int last_hyp,new_last_hyp,last_corr;
+    int pos,point_pos,last_point;
+    /*Accumulator*/
+    double acc;
+    /*Hypothesis pointer*/
+    double *hyp_point;
+    /*Random sample*/
+    int s[4];
+    /*Pivot for hypothesis pruning*/
+    double pivot;
+    /*Best hypothesis position*/
+    int best_pos;
+    /*Best score*/
+    double lowest_cost;
+    /*One over the squared scale of
+    Cauchy distribution*/
+    double one_over_scale2;
+    /*temporary pointers*/
+    double *x_i_temp,*xp_i_temp;
+    /*Temporary space for inverse calibration matrices*/
+    double K_inv[9];
+    double Kp_inv[9];
+    /*Temporary space for homography*/
+    double H_temp[9],H_temp2[9];
+    /*Pointers to homogenous coordinates*/
+    double *x_h_point,*xp_h_point;
+    /*Array of pointers to inhomogenous coordinates*/
+    double *X[3],*Xp[3];
+    /*Similarity parameters*/
+    int orientation_preserving,allow_scaling,allow_rotation,allow_translation,sample_size;
+
+    /*Homogenous coordinates of image points in first image*/
+    double *x_h;
+    /*Homogenous coordinates of image points in second image*/
+    double *xp_h;
+    /*Inhomogenous coordinates of image points in first image*/
+    double *x_i;
+    /*Inhomogenous coordinates of image points in second image*/
+    double *xp_i;
+    /*Homography hypotheses*/
+    double *hyp_H_array;
+    /*Cost array*/
+    double *hyp_cost_array;
+    /*Permutation of the hypotheses*/
+    int *hyp_perm;
+    /*Sample of the points*/
+    int *point_perm;
+    /*Temporary space for quick-select
+    2*nr_samples*/
+    double *temp_select;
+
+    /*Get inverse calibration matrices*/
+    db_InvertCalibrationMatrix(K_inv,K);
+    db_InvertCalibrationMatrix(Kp_inv,Kp);
+    /*Compute scale coefficient*/
+    one_over_scale2=1.0/(scale*scale);
+    /*Initialize random seed*/
+    r_seed=12345;
+    /*Set pointers to pre-allocated space*/
+    hyp_cost_array=temp_d;
+    hyp_H_array=temp_d+nr_samples;
+    temp_select=temp_d+10*nr_samples;
+    x_h=temp_d+12*nr_samples;
+    xp_h=temp_d+12*nr_samples+3*nr_points;
+    x_i=temp_d+12*nr_samples+6*nr_points;
+    xp_i=temp_d+12*nr_samples+8*nr_points;
+    hyp_perm=temp_i;
+    point_perm=temp_i;
+
+    /*Prepare a randomly permuted subset of size
+    point_count from the input points*/
+
+    point_count=db_mini(nr_points,(int)(chunk_size*log((double)nr_samples)/DB_LN2));
+
+    point_count_new = point_count;
+
+    for(i=0;i<nr_points;i++) point_perm[i]=i;
+
+    for(last_point=nr_points-1,i=0;i<point_count;i++,last_point--)
+    {
+        pos=db_RandomInt(r_seed,last_point);
+        point_pos=point_perm[pos];
+        point_perm[pos]=point_perm[last_point];
+
+        /*Normalize image points with calibration
+        matrices and move them to x_h and xp_h*/
+        c=3*point_pos;
+        j=3*i;
+        x_h_point=x_h+j;
+        xp_h_point=xp_h+j;
+        db_Multiply3x3_3x1(x_h_point,K_inv,im+c);
+        db_Multiply3x3_3x1(xp_h_point,Kp_inv,im_p+c);
+
+        db_HomogenousNormalize3(x_h_point);
+        db_HomogenousNormalize3(xp_h_point);
+
+        /*Dehomogenize image points and move them
+        to x_i and xp_i*/
+        c=(i<<1);
+        db_DeHomogenizeImagePoint(x_i+c,x_h_point); // 2-dimension
+        db_DeHomogenizeImagePoint(xp_i+c,xp_h_point); //2-dimension
+    }
+
+
+    /*Generate Hypotheses*/
+    hyp_count=0;
+    switch(homography_type)
+    {
+    case DB_HOMOGRAPHY_TYPE_SIMILARITY:
+    case DB_HOMOGRAPHY_TYPE_SIMILARITY_U:
+    case DB_HOMOGRAPHY_TYPE_TRANSLATION:
+    case DB_HOMOGRAPHY_TYPE_ROTATION:
+    case DB_HOMOGRAPHY_TYPE_ROTATION_U:
+    case DB_HOMOGRAPHY_TYPE_SCALING:
+    case DB_HOMOGRAPHY_TYPE_S_T:
+    case DB_HOMOGRAPHY_TYPE_R_T:
+    case DB_HOMOGRAPHY_TYPE_R_S:
+
+        switch(homography_type)
+        {
+        case DB_HOMOGRAPHY_TYPE_SIMILARITY:
+            orientation_preserving=1;
+            allow_scaling=1;
+            allow_rotation=1;
+            allow_translation=1;
+            sample_size=2;
+            break;
+        case DB_HOMOGRAPHY_TYPE_SIMILARITY_U:
+            orientation_preserving=0;
+            allow_scaling=1;
+            allow_rotation=1;
+            allow_translation=1;
+            sample_size=3;
+            break;
+        case DB_HOMOGRAPHY_TYPE_TRANSLATION:
+            orientation_preserving=1;
+            allow_scaling=0;
+            allow_rotation=0;
+            allow_translation=1;
+            sample_size=1;
+            break;
+        case DB_HOMOGRAPHY_TYPE_ROTATION:
+            orientation_preserving=1;
+            allow_scaling=0;
+            allow_rotation=1;
+            allow_translation=0;
+            sample_size=1;
+            break;
+        case DB_HOMOGRAPHY_TYPE_ROTATION_U:
+            orientation_preserving=0;
+            allow_scaling=0;
+            allow_rotation=1;
+            allow_translation=0;
+            sample_size=2;
+            break;
+        case DB_HOMOGRAPHY_TYPE_SCALING:
+            orientation_preserving=1;
+            allow_scaling=1;
+            allow_rotation=0;
+            allow_translation=0;
+            sample_size=1;
+            break;
+        case DB_HOMOGRAPHY_TYPE_S_T:
+            orientation_preserving=1;
+            allow_scaling=1;
+            allow_rotation=0;
+            allow_translation=1;
+            sample_size=2;
+            break;
+        case DB_HOMOGRAPHY_TYPE_R_T:
+            orientation_preserving=1;
+            allow_scaling=0;
+            allow_rotation=1;
+            allow_translation=1;
+            sample_size=2;
+            break;
+        case DB_HOMOGRAPHY_TYPE_R_S:
+            orientation_preserving=1;
+            allow_scaling=1;
+            allow_rotation=0;
+            allow_translation=0;
+            sample_size=1;
+            break;
+        }
+
+        if(point_count>=sample_size) for(i=0;i<nr_samples;i++)
+        {
+            db_RandomSample(s,3,point_count,r_seed);
+            X[0]= &x_i[s[0]<<1];
+            X[1]= &x_i[s[1]<<1];
+            X[2]= &x_i[s[2]<<1];
+            Xp[0]= &xp_i[s[0]<<1];
+            Xp[1]= &xp_i[s[1]<<1];
+            Xp[2]= &xp_i[s[2]<<1];
+            db_StitchSimilarity2D(&hyp_H_array[9*hyp_count],Xp,X,sample_size,orientation_preserving,
+                                  allow_scaling,allow_rotation,allow_translation);
+            hyp_count++;
+        }
+        break;
+
+    case DB_HOMOGRAPHY_TYPE_CAMROTATION:
+        if(point_count>=2) for(i=0;i<nr_samples;i++)
+        {
+            db_RandomSample(s,2,point_count,r_seed);
+            db_StitchCameraRotation_2Points(&hyp_H_array[9*hyp_count],
+                                      &x_h[3*s[0]],&x_h[3*s[1]],
+                                      &xp_h[3*s[0]],&xp_h[3*s[1]]);
+            hyp_count++;
+        }
+        break;
+
+    case DB_HOMOGRAPHY_TYPE_CAMROTATION_F:
+        if(point_count>=3) for(i=0;i<nr_samples;i++)
+        {
+            db_RandomSample(s,3,point_count,r_seed);
+            hyp_count+=db_StitchRotationCommonFocalLength_3Points(&hyp_H_array[9*hyp_count],
+                                      &x_h[3*s[0]],&x_h[3*s[1]],&x_h[3*s[2]],
+                                      &xp_h[3*s[0]],&xp_h[3*s[1]],&xp_h[3*s[2]]);
+        }
+        break;
+
+    case DB_HOMOGRAPHY_TYPE_CAMROTATION_F_UD:
+        if(point_count>=3) for(i=0;i<nr_samples;i++)
+        {
+            db_RandomSample(s,3,point_count,r_seed);
+            hyp_count+=db_StitchRotationCommonFocalLength_3Points(&hyp_H_array[9*hyp_count],
+                                      &x_h[3*s[0]],&x_h[3*s[1]],&x_h[3*s[2]],
+                                      &xp_h[3*s[0]],&xp_h[3*s[1]],&xp_h[3*s[2]],NULL,0);
+        }
+        break;
+
+    case DB_HOMOGRAPHY_TYPE_AFFINE:
+        if(point_count>=3) for(i=0;i<nr_samples;i++)
+        {
+            db_RandomSample(s,3,point_count,r_seed);
+            db_StitchAffine2D_3Points(&hyp_H_array[9*hyp_count],
+                                      &x_h[3*s[0]],&x_h[3*s[1]],&x_h[3*s[2]],
+                                      &xp_h[3*s[0]],&xp_h[3*s[1]],&xp_h[3*s[2]]);
+            hyp_count++;
+        }
+        break;
+
+    case DB_HOMOGRAPHY_TYPE_PROJECTIVE:
+    default:
+        if(point_count>=4) for(i=0;i<nr_samples;i++)
+        {
+            db_RandomSample(s,4,point_count,r_seed);
+            db_StitchProjective2D_4Points(&hyp_H_array[9*hyp_count],
+                                      &x_h[3*s[0]],&x_h[3*s[1]],&x_h[3*s[2]],&x_h[3*s[3]],
+                                      &xp_h[3*s[0]],&xp_h[3*s[1]],&xp_h[3*s[2]],&xp_h[3*s[3]]);
+            hyp_count++;
+        }
+    }
+
+    if(hyp_count)
+    {
+        /*Count cost in chunks and decimate hypotheses
+        until only one remains or the correspondences are
+        exhausted*/
+        for(i=0;i<hyp_count;i++)
+        {
+            hyp_perm[i]=i;
+            hyp_cost_array[i]=0.0;
+        }
+        for(i=0,last_hyp=hyp_count-1;(last_hyp>0) && (i<point_count);i+=chunk_size)
+        {
+            /*Update cost with the next chunk*/
+            last_corr=db_mini(i+chunk_size-1,point_count-1);
+            for(j=0;j<=last_hyp;j++)
+            {
+                hyp_point=hyp_H_array+9*hyp_perm[j];
+                for(c=i;c<=last_corr;)
+                {
+                    /*Take log of product of ten reprojection
+                    errors to reduce nr of expensive log operations*/
+                    if(c+9<=last_corr)
+                    {
+                        x_i_temp=x_i+(c<<1);
+                        xp_i_temp=xp_i+(c<<1);
+
+                        acc=db_ExpCauchyInhomogenousHomographyError(xp_i_temp,hyp_point,x_i_temp,one_over_scale2);
+                        acc*=db_ExpCauchyInhomogenousHomographyError(xp_i_temp+2,hyp_point,x_i_temp+2,one_over_scale2);
+                        acc*=db_ExpCauchyInhomogenousHomographyError(xp_i_temp+4,hyp_point,x_i_temp+4,one_over_scale2);
+                        acc*=db_ExpCauchyInhomogenousHomographyError(xp_i_temp+6,hyp_point,x_i_temp+6,one_over_scale2);
+                        acc*=db_ExpCauchyInhomogenousHomographyError(xp_i_temp+8,hyp_point,x_i_temp+8,one_over_scale2);
+                        acc*=db_ExpCauchyInhomogenousHomographyError(xp_i_temp+10,hyp_point,x_i_temp+10,one_over_scale2);
+                        acc*=db_ExpCauchyInhomogenousHomographyError(xp_i_temp+12,hyp_point,x_i_temp+12,one_over_scale2);
+                        acc*=db_ExpCauchyInhomogenousHomographyError(xp_i_temp+14,hyp_point,x_i_temp+14,one_over_scale2);
+                        acc*=db_ExpCauchyInhomogenousHomographyError(xp_i_temp+16,hyp_point,x_i_temp+16,one_over_scale2);
+                        acc*=db_ExpCauchyInhomogenousHomographyError(xp_i_temp+18,hyp_point,x_i_temp+18,one_over_scale2);
+                        c+=10;
+                    }
+                    else
+                    {
+                        for(acc=1.0;c<=last_corr;c++)
+                        {
+                            acc*=db_ExpCauchyInhomogenousHomographyError(xp_i+(c<<1),hyp_point,x_i+(c<<1),one_over_scale2);
+                        }
+                    }
+                    hyp_cost_array[j]+=log(acc);
+                }
+            }
+            if (chunk_size<point_count){
+                /*Prune out half of the hypotheses*/
+                new_last_hyp=(last_hyp+1)/2-1;
+                pivot=db_LeanQuickSelect(hyp_cost_array,last_hyp+1,new_last_hyp,temp_select);
+                for(j=0,c=0;(j<=last_hyp) && (c<=new_last_hyp);j++)
+                {
+                    if(hyp_cost_array[j]<=pivot)
+                    {
+                        hyp_cost_array[c]=hyp_cost_array[j];
+                        hyp_perm[c]=hyp_perm[j];
+                        c++;
+                    }
+                }
+                last_hyp=new_last_hyp;
+            }
+        }
+        /*Find the best hypothesis*/
+        lowest_cost=hyp_cost_array[0];
+        best_pos=0;
+        for(j=1;j<=last_hyp;j++)
+        {
+            if(hyp_cost_array[j]<lowest_cost)
+            {
+                lowest_cost=hyp_cost_array[j];
+                best_pos=j;
+            }
+        }
+
+        /*Move the best hypothesis*/
+        db_Copy9(H_temp,hyp_H_array+9*hyp_perm[best_pos]);
+
+        // outlier removal
+        if (outlierremoveflagE) // no polishment needed
+        {
+            point_count_new = db_RemoveOutliers_Homography(H_temp,x_i,xp_i,wp,im,im_p,im_r,im_raw,im_raw_p,point_count,one_over_scale2);
+        }
+        else
+        {
+            /*Polish*/
+            switch(homography_type)
+            {
+            case DB_HOMOGRAPHY_TYPE_SIMILARITY:
+            case DB_HOMOGRAPHY_TYPE_SIMILARITY_U:
+            case DB_HOMOGRAPHY_TYPE_TRANSLATION:
+            case DB_HOMOGRAPHY_TYPE_ROTATION:
+            case DB_HOMOGRAPHY_TYPE_ROTATION_U:
+            case DB_HOMOGRAPHY_TYPE_SCALING:
+            case DB_HOMOGRAPHY_TYPE_S_T:
+            case DB_HOMOGRAPHY_TYPE_R_T:
+            case DB_HOMOGRAPHY_TYPE_R_S:
+            case DB_HOMOGRAPHY_TYPE_AFFINE:
+            case DB_HOMOGRAPHY_TYPE_PROJECTIVE:
+            case DB_HOMOGRAPHY_TYPE_CAMROTATION_F:
+            case DB_HOMOGRAPHY_TYPE_CAMROTATION_F_UD:
+                db_RobCamRotation_Polish_Generic(H_temp,db_mini(point_count,max_points),homography_type,x_i,xp_i,one_over_scale2,max_iterations);
+                break;
+            case DB_HOMOGRAPHY_TYPE_CAMROTATION:
+                db_RobCamRotation_Polish(H_temp,db_mini(point_count,max_points),x_i,xp_i,one_over_scale2,max_iterations);
+                break;
+            }
+
+        }
+
+    }
+    else db_Identity3x3(H_temp);
+
+    switch(homography_type)
+    {
+    case DB_HOMOGRAPHY_TYPE_PROJECTIVE:
+        if(stat) stat->nr_parameters=8;
+        break;
+    case DB_HOMOGRAPHY_TYPE_AFFINE:
+        if(stat) stat->nr_parameters=6;
+        break;
+    case DB_HOMOGRAPHY_TYPE_SIMILARITY:
+    case DB_HOMOGRAPHY_TYPE_SIMILARITY_U:
+    case DB_HOMOGRAPHY_TYPE_CAMROTATION_F:
+    case DB_HOMOGRAPHY_TYPE_CAMROTATION_F_UD:
+        if(stat) stat->nr_parameters=4;
+        break;
+    case DB_HOMOGRAPHY_TYPE_CAMROTATION:
+        if(stat) stat->nr_parameters=3;
+        break;
+    case DB_HOMOGRAPHY_TYPE_TRANSLATION:
+    case DB_HOMOGRAPHY_TYPE_S_T:
+    case DB_HOMOGRAPHY_TYPE_R_T:
+    case DB_HOMOGRAPHY_TYPE_R_S:
+        if(stat) stat->nr_parameters=2;
+        break;
+    case DB_HOMOGRAPHY_TYPE_ROTATION:
+    case DB_HOMOGRAPHY_TYPE_ROTATION_U:
+    case DB_HOMOGRAPHY_TYPE_SCALING:
+        if(stat) stat->nr_parameters=1;
+        break;
+    }
+
+    db_RobImageHomography_Statistics(H_temp,db_mini(point_count,max_points),x_i,xp_i,one_over_scale2,stat);
+
+    /*Put on the calibration matrices*/
+    db_Multiply3x3_3x3(H_temp2,H_temp,K_inv);
+    db_Multiply3x3_3x3(H,Kp,H_temp2);
+
+    if (finalNumE)
+        *finalNumE = point_count_new;
+
+}
diff --git a/perftests/panorama/feature_stab/db_vlvm/db_rob_image_homography.h b/perftests/panorama/feature_stab/db_vlvm/db_rob_image_homography.h
new file mode 100644
index 0000000..59cde7d
--- /dev/null
+++ b/perftests/panorama/feature_stab/db_vlvm/db_rob_image_homography.h
@@ -0,0 +1,148 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+/* $Id: db_rob_image_homography.h,v 1.3 2011/06/17 14:03:31 mbansal Exp $ */
+
+#ifndef DB_ROB_IMAGE_HOMOGRAPHY
+#define DB_ROB_IMAGE_HOMOGRAPHY
+
+#include "db_utilities.h"
+#include "db_robust.h"
+#include "db_metrics.h"
+
+#include <stdlib.h> // for NULL
+
+
+/*****************************************************************
+*    Lean and mean begins here                                   *
+*****************************************************************/
+/*!
+ * \defgroup LMRobImageHomography (LM) Robust Image Homography
+ */
+/*\{*/
+
+#define DB_HOMOGRAPHY_TYPE_DEFAULT           0
+#define DB_HOMOGRAPHY_TYPE_PROJECTIVE        0
+#define DB_HOMOGRAPHY_TYPE_AFFINE            1
+#define DB_HOMOGRAPHY_TYPE_SIMILARITY        2
+#define DB_HOMOGRAPHY_TYPE_SIMILARITY_U      3
+#define DB_HOMOGRAPHY_TYPE_TRANSLATION       4
+#define DB_HOMOGRAPHY_TYPE_ROTATION          5
+#define DB_HOMOGRAPHY_TYPE_ROTATION_U        6
+#define DB_HOMOGRAPHY_TYPE_SCALING           7
+#define DB_HOMOGRAPHY_TYPE_S_T               8
+#define DB_HOMOGRAPHY_TYPE_R_T               9
+#define DB_HOMOGRAPHY_TYPE_R_S              10
+#define DB_HOMOGRAPHY_TYPE_CAMROTATION      11
+#define DB_HOMOGRAPHY_TYPE_CAMROTATION_F    12
+#define DB_HOMOGRAPHY_TYPE_CAMROTATION_F_UD 13
+
+/*!
+Solve for homography H such that xp~Hx
+\param H    best homography
+
+2D point to 2D point constraints:
+
+\param im           first image points
+\param im_p         second image points
+\param nr_points    number of points
+
+Calibration matrices:
+
+\param K    first camera
+\param Kp   second camera
+
+ Temporary space:
+
+ \param temp_d      pre-allocated space of size 12*nr_samples+10*nr_points doubles
+ \param temp_i      pre-allocated space of size max(nr_samples,nr_points) ints
+
+ Statistics for this estimation
+
+ \param stat        NULL - do not compute
+
+ \param homography_type see DB_HOMOGRAPHY_TYPE_* definitions above
+
+ Estimation parameters:
+
+ \param max_iterations  max number of polishing steps
+ \param max_points      only use this many points
+ \param scale           Cauchy scale coefficient (see db_ExpCauchyReprojectionError() )
+ \param nr_samples      number of times to compute a hypothesis
+ \param chunk_size      size of cost chunks
+*/
+DB_API void db_RobImageHomography(
+                              /*Best homography*/
+                              double H[9],
+                              /*2DPoint to 2DPoint constraints
+                              Points are assumed to be given in
+                              homogenous coordinates*/
+                              double *im,double *im_p,
+                              /*Nr of points in total*/
+                              int nr_points,
+                              /*Calibration matrices
+                              used to normalize the points*/
+                              double K[9],
+                              double Kp[9],
+                              /*Pre-allocated space temp_d
+                              should point to at least
+                              12*nr_samples+10*nr_points
+                              allocated positions*/
+                              double *temp_d,
+                              /*Pre-allocated space temp_i
+                              should point to at least
+                              max(nr_samples,nr_points)
+                              allocated positions*/
+                              int *temp_i,
+                              int homography_type=DB_HOMOGRAPHY_TYPE_DEFAULT,
+                              db_Statistics *stat=NULL,
+                              int max_iterations=DB_DEFAULT_MAX_ITERATIONS,
+                              int max_points=DB_DEFAULT_MAX_POINTS,
+                              double scale=DB_POINT_STANDARDDEV,
+                              int nr_samples=DB_DEFAULT_NR_SAMPLES,
+                              int chunk_size=DB_DEFAULT_CHUNK_SIZE,
+                              ///////////////////////////////////////////////////
+                              // flag for the outlier removal
+                              int outlierremoveflagE = 0,
+                              // if flag is 1, then the following variables
+                              // need to input
+                              ///////////////////////////////////////////////////
+                              // 3D coordinates
+                              double *wp=NULL,
+                              // its corresponding stereo pair's points
+                              double *im_r=NULL,
+                              // raw image coordinates
+                              double *im_raw=NULL, double *im_raw_p=NULL,
+                              // final matches
+                              int *final_NumE=0);
+
+DB_API double db_RobImageHomography_Cost(double H[9],int point_count,double *x_i,
+                                                double *xp_i,double one_over_scale2);
+
+
+DB_API void db_RobCamRotation_Polish(double H[9],int point_count,double *x_i,
+                                     double *xp_i, double one_over_scale2,
+                                     int max_iterations=DB_DEFAULT_MAX_ITERATIONS,
+                                     double improvement_requirement=DB_DEFAULT_IMP_REQ);
+
+
+DB_API void db_RobCamRotation_Polish_Generic(double H[9],int point_count,int homography_type,
+                                             double *x_i,double *xp_i,double one_over_scale2,
+                                             int max_iterations=DB_DEFAULT_MAX_ITERATIONS,
+                                             double improvement_requirement=DB_DEFAULT_IMP_REQ);
+
+
+#endif /* DB_ROB_IMAGE_HOMOGRAPHY */
diff --git a/perftests/panorama/feature_stab/db_vlvm/db_robust.h b/perftests/panorama/feature_stab/db_vlvm/db_robust.h
new file mode 100644
index 0000000..be0794c
--- /dev/null
+++ b/perftests/panorama/feature_stab/db_vlvm/db_robust.h
@@ -0,0 +1,61 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+/* $Id: db_robust.h,v 1.4 2011/06/17 14:03:31 mbansal Exp $ */
+
+#ifndef DB_ROBUST
+#define DB_ROBUST
+
+
+
+/*****************************************************************
+*    Lean and mean begins here                                   *
+*****************************************************************/
+/*!
+ * \defgroup LMRobust (LM) Robust Estimation
+ */
+
+/*!
+    \struct     db_Statistics
+    \ingroup    LMRobust
+    \brief      (LnM) Sampling problem statistics
+    \date       Mon Sep 10 10:28:08 EDT 2007
+    \par        Copyright: 2007 Sarnoff Corporation.  All Rights Reserved
+ */
+ struct db_stat_struct
+ {
+     int nr_points;
+     int nr_inliers;
+     double inlier_fraction;
+     double cost;
+     double one_over_scale2;
+     double lambda1;
+     double lambda2;
+     double lambda3;
+     int nr_parameters;
+     int model_dimension;
+     double gric;
+     double inlier_evidence;
+     double posestd[6];
+     double rotationvecCov[9];
+     double translationvecCov[9];
+     int posecov_inliercount;
+     int posecovready;
+     double median_reprojection_error;
+ };
+ typedef db_stat_struct db_Statistics;
+
+#endif /* DB_ROBUST */
diff --git a/perftests/panorama/feature_stab/db_vlvm/db_utilities.cpp b/perftests/panorama/feature_stab/db_vlvm/db_utilities.cpp
new file mode 100644
index 0000000..ce2093b
--- /dev/null
+++ b/perftests/panorama/feature_stab/db_vlvm/db_utilities.cpp
@@ -0,0 +1,176 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+/* $Id: db_utilities.cpp,v 1.4 2011/06/17 14:03:31 mbansal Exp $ */
+
+#include "db_utilities.h"
+#include <string.h>
+#include <stdio.h>
+
+float** db_SetupImageReferences_f(float *im,int w,int h)
+{
+    int i;
+    float **img;
+    assert(im);
+    img=new float* [h];
+    for(i=0;i<h;i++)
+    {
+        img[i]=im+w*i;
+    }
+    return(img);
+}
+
+unsigned char** db_SetupImageReferences_u(unsigned char *im,int w,int h)
+{
+    int i;
+    unsigned char **img;
+
+    assert(im);
+
+    img=new unsigned char* [h];
+    for(i=0;i<h;i++)
+    {
+        img[i]=im+w*i;
+    }
+    return(img);
+}
+float** db_AllocImage_f(int w,int h,int over_allocation)
+{
+    float **img,*im;
+
+    im=new float [w*h+over_allocation];
+    img=db_SetupImageReferences_f(im,w,h);
+
+    return(img);
+}
+
+unsigned char** db_AllocImage_u(int w,int h,int over_allocation)
+{
+    unsigned char **img,*im;
+
+    im=new unsigned char [w*h+over_allocation];
+    img=db_SetupImageReferences_u(im,w,h);
+
+    return(img);
+}
+
+void db_FreeImage_f(float **img,int h)
+{
+    delete [] (img[0]);
+    delete [] img;
+}
+
+void db_FreeImage_u(unsigned char **img,int h)
+{
+    delete [] (img[0]);
+    delete [] img;
+}
+
+// ----------------------------------------------------------------------------------------------------------- ;
+//
+// copy image (source to destination)
+// ---> must be a 2D image array with the same image size
+// ---> the size of the input and output images must be same
+//
+// ------------------------------------------------------------------------------------------------------------ ;
+void db_CopyImage_u(unsigned char **d,const unsigned char * const *s, int w, int h, int over_allocation)
+{
+    int i;
+
+    for (i=0;i<h;i++)
+    {
+        memcpy(d[i],s[i],w*sizeof(unsigned char));
+    }
+
+    memcpy(&d[h],&d[h],over_allocation);
+
+}
+
+inline void db_WarpImageLutFast_u(const unsigned char * const * src, unsigned char ** dst, int w, int h,
+                                  const float * const * lut_x, const float * const * lut_y)
+{
+    assert(src && dst);
+    int xd=0, yd=0;
+
+    for ( int i = 0; i < w; ++i )
+        for ( int j = 0; j < h; ++j )
+        {
+            //xd = static_cast<unsigned int>(lut_x[j][i]);
+            //yd = static_cast<unsigned int>(lut_y[j][i]);
+            xd = (unsigned int)(lut_x[j][i]);
+            yd = (unsigned int)(lut_y[j][i]);
+            if ( xd >= w || yd >= h ||
+                 xd < 0 || yd < 0)
+                dst[j][i] = 0;
+            else
+                dst[j][i] = src[yd][xd];
+        }
+}
+
+inline void db_WarpImageLutBilinear_u(const unsigned char * const * src, unsigned char ** dst, int w, int h,
+                                      const float * const * lut_x,const float * const* lut_y)
+{
+    assert(src && dst);
+    double xd=0.0, yd=0.0;
+
+    for ( int i = 0; i < w; ++i )
+        for ( int j = 0; j < h; ++j )
+        {
+            xd = static_cast<double>(lut_x[j][i]);
+            yd = static_cast<double>(lut_y[j][i]);
+            if ( xd > w   || yd > h ||
+                 xd < 0.0 || yd < 0.0)
+                dst[j][i] = 0;
+            else
+                dst[j][i] = db_BilinearInterpolation(yd, xd, src);
+        }
+}
+
+
+void db_WarpImageLut_u(const unsigned char * const * src, unsigned char ** dst, int w, int h,
+                       const float * const * lut_x,const float * const * lut_y, int type)
+{
+    switch (type)
+    {
+    case DB_WARP_FAST:
+        db_WarpImageLutFast_u(src,dst,w,h,lut_x,lut_y);
+        break;
+    case DB_WARP_BILINEAR:
+        db_WarpImageLutBilinear_u(src,dst,w,h,lut_x,lut_y);
+        break;
+    default:
+        break;
+    }
+}
+
+
+void db_PrintDoubleVector(double *a,long size)
+{
+    printf("[ ");
+    for(long i=0;i<size;i++) printf("%lf ",a[i]);
+    printf("]");
+}
+
+void db_PrintDoubleMatrix(double *a,long rows,long cols)
+{
+    printf("[\n");
+    for(long i=0;i<rows;i++)
+    {
+        for(long j=0;j<cols;j++) printf("%lf ",a[i*cols+j]);
+        printf("\n");
+    }
+    printf("]");
+}
diff --git a/perftests/panorama/feature_stab/db_vlvm/db_utilities.h b/perftests/panorama/feature_stab/db_vlvm/db_utilities.h
new file mode 100644
index 0000000..fa9c877
--- /dev/null
+++ b/perftests/panorama/feature_stab/db_vlvm/db_utilities.h
@@ -0,0 +1,571 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+/* $Id: db_utilities.h,v 1.3 2011/06/17 14:03:31 mbansal Exp $ */
+
+#ifndef DB_UTILITIES_H
+#define DB_UTILITIES_H
+
+
+#ifdef _WIN32
+#pragma warning(disable: 4275)
+#pragma warning(disable: 4251)
+#pragma warning(disable: 4786)
+#pragma warning(disable: 4800)
+#pragma warning(disable: 4018) /* signed-unsigned mismatch */
+#endif /* _WIN32 */
+
+#ifdef _WIN32
+    #ifdef DBDYNAMIC_EXPORTS
+        #define DB_API __declspec(dllexport)
+    #else
+        #ifdef DBDYNAMIC_IMPORTS
+            #define DB_API __declspec(dllimport)
+        #else
+            #define DB_API
+        #endif
+    #endif
+#else
+    #define DB_API
+#endif /* _WIN32 */
+
+#ifdef _VERBOSE_
+#include <iostream>
+#endif
+
+#include <math.h>
+
+#include <assert.h>
+#include "db_utilities_constants.h"
+/*!
+ * \defgroup LMBasicUtilities (LM) Utility Functions (basic math, linear algebra and array manipulations)
+ */
+/*\{*/
+
+/*!
+ * Round double into int using fld and fistp instructions.
+ */
+inline int db_roundi (double x) {
+#ifdef WIN32_ASM
+    int n;
+    __asm
+    {
+        fld x;
+        fistp n;
+    }
+    return n;
+#else
+    return static_cast<int>(floor(x+0.5));
+#endif
+}
+
+/*!
+ * Square a double.
+ */
+inline double db_sqr(double a)
+{
+    return(a*a);
+}
+
+/*!
+ * Square a long.
+ */
+inline long db_sqr(long a)
+{
+    return(a*a);
+}
+
+/*!
+ * Square an int.
+ */
+inline long db_sqr(int a)
+{
+    return(a*a);
+}
+
+/*!
+ * Maximum of two doubles.
+ */
+inline double db_maxd(double a,double b)
+{
+    if(b>a) return(b);
+    else return(a);
+}
+/*!
+ * Minumum of two doubles.
+ */
+inline double db_mind(double a,double b)
+{
+    if(b<a) return(b);
+    else return(a);
+}
+
+
+/*!
+ * Maximum of two ints.
+ */
+inline int db_maxi(int a,int b)
+{
+    if(b>a) return(b);
+    else return(a);
+}
+
+/*!
+ * Minimum of two numbers.
+ */
+inline int db_mini(int a,int b)
+{
+    if(b<a) return(b);
+    else return(a);
+}
+/*!
+ * Maximum of two numbers.
+ */
+inline long db_maxl(long a,long b)
+{
+    if(b>a) return(b);
+    else return(a);
+}
+
+/*!
+ * Minimum of two numbers.
+ */
+inline long db_minl(long a,long b)
+{
+    if(b<a) return(b);
+    else return(a);
+}
+
+/*!
+ * Sign of a number.
+ * \return -1.0 if negative, 1.0 if positive.
+ */
+inline double db_sign(double x)
+{
+    if(x>=0.0) return(1.0);
+    else return(-1.0);
+}
+/*!
+ * Absolute value.
+ */
+inline int db_absi(int a)
+{
+    if(a<0) return(-a);
+    else return(a);
+}
+/*!
+ * Absolute value.
+ */
+inline float db_absf(float a)
+{
+    if(a<0) return(-a);
+    else return(a);
+}
+
+/*!
+ * Absolute value.
+ */
+inline double db_absd(double a)
+{
+    if(a<0) return(-a);
+    else return(a);
+}
+
+/*!
+ * Reciprocal (1/a). Prevents divide by 0.
+ * \return 1/a if a != 0. 1.0 otherwise.
+ */
+inline double db_SafeReciprocal(double a)
+{
+    return((a!=0.0)?(1.0/a):1.0);
+}
+
+/*!
+ * Division. Prevents divide by 0.
+ * \return a/b if b!=0. a otherwise.
+ */
+inline double db_SafeDivision(double a,double b)
+{
+    return((b!=0.0)?(a/b):a);
+}
+
+/*!
+ * Square root. Prevents imaginary output.
+ * \return sqrt(a) if a > 0.0. 0.0 otherewise.
+ */
+inline double db_SafeSqrt(double a)
+{
+    return((a>=0.0)?(sqrt(a)):0.0);
+}
+
+/*!
+ * Square root of a reciprocal. Prevents divide by 0 and imaginary output.
+ * \return sqrt(1/a) if a > 0.0. 1.0 otherewise.
+ */
+inline double db_SafeSqrtReciprocal(double a)
+{
+    return((a>0.0)?(sqrt(1.0/a)):1.0);
+}
+/*!
+ * Cube root.
+ */
+inline double db_CubRoot(double x)
+{
+    if(x>=0.0) return(pow(x,1.0/3.0));
+    else return(-pow(-x,1.0/3.0));
+}
+/*!
+ * Sum of squares of elements of x.
+ */
+inline double db_SquareSum3(const double x[3])
+{
+    return(db_sqr(x[0])+db_sqr(x[1])+db_sqr(x[2]));
+}
+/*!
+ * Sum of squares of elements of x.
+ */
+inline double db_SquareSum7(double x[7])
+{
+    return(db_sqr(x[0])+db_sqr(x[1])+db_sqr(x[2])+
+        db_sqr(x[3])+db_sqr(x[4])+db_sqr(x[5])+
+        db_sqr(x[6]));
+}
+/*!
+ * Sum of squares of elements of x.
+ */
+inline double db_SquareSum9(double x[9])
+{
+    return(db_sqr(x[0])+db_sqr(x[1])+db_sqr(x[2])+
+        db_sqr(x[3])+db_sqr(x[4])+db_sqr(x[5])+
+        db_sqr(x[6])+db_sqr(x[7])+db_sqr(x[8]));
+}
+/*!
+ * Copy a vector.
+ * \param xd destination
+ * \param xs source
+ */
+void inline db_Copy3(double xd[3],const double xs[3])
+{
+    xd[0]=xs[0];xd[1]=xs[1];xd[2]=xs[2];
+}
+/*!
+ * Copy a vector.
+ * \param xd destination
+ * \param xs source
+ */
+void inline db_Copy6(double xd[6],const double xs[6])
+{
+    xd[0]=xs[0];xd[1]=xs[1];xd[2]=xs[2];
+    xd[3]=xs[3];xd[4]=xs[4];xd[5]=xs[5];
+}
+/*!
+ * Copy a vector.
+ * \param xd destination
+ * \param xs source
+ */
+void inline db_Copy9(double xd[9],const double xs[9])
+{
+    xd[0]=xs[0];xd[1]=xs[1];xd[2]=xs[2];
+    xd[3]=xs[3];xd[4]=xs[4];xd[5]=xs[5];
+    xd[6]=xs[6];xd[7]=xs[7];xd[8]=xs[8];
+}
+
+/*!
+ * Scalar product: Transpose(A)*B.
+ */
+inline double db_ScalarProduct4(const double A[4],const double B[4])
+{
+    return(A[0]*B[0]+A[1]*B[1]+A[2]*B[2]+A[3]*B[3]);
+}
+/*!
+ * Scalar product: Transpose(A)*B.
+ */
+inline double db_ScalarProduct7(const double A[7],const double B[7])
+{
+    return(A[0]*B[0]+A[1]*B[1]+A[2]*B[2]+
+        A[3]*B[3]+A[4]*B[4]+A[5]*B[5]+
+        A[6]*B[6]);
+}
+/*!
+ * Scalar product: Transpose(A)*B.
+ */
+inline double db_ScalarProduct9(const double A[9],const double B[9])
+{
+    return(A[0]*B[0]+A[1]*B[1]+A[2]*B[2]+
+        A[3]*B[3]+A[4]*B[4]+A[5]*B[5]+
+        A[6]*B[6]+A[7]*B[7]+A[8]*B[8]);
+}
+/*!
+ * Vector addition: S=A+B.
+ */
+inline void db_AddVectors6(double S[6],const double A[6],const double B[6])
+{
+    S[0]=A[0]+B[0]; S[1]=A[1]+B[1]; S[2]=A[2]+B[2]; S[3]=A[3]+B[3]; S[4]=A[4]+B[4];
+    S[5]=A[5]+B[5];
+}
+/*!
+ * Multiplication: C(3x1)=A(3x3)*B(3x1).
+ */
+inline void db_Multiply3x3_3x1(double y[3],const double A[9],const double x[3])
+{
+    y[0]=A[0]*x[0]+A[1]*x[1]+A[2]*x[2];
+    y[1]=A[3]*x[0]+A[4]*x[1]+A[5]*x[2];
+    y[2]=A[6]*x[0]+A[7]*x[1]+A[8]*x[2];
+}
+inline void db_Multiply3x3_3x3(double C[9], const double A[9],const double B[9])
+{
+    C[0]=A[0]*B[0]+A[1]*B[3]+A[2]*B[6];
+    C[1]=A[0]*B[1]+A[1]*B[4]+A[2]*B[7];
+    C[2]=A[0]*B[2]+A[1]*B[5]+A[2]*B[8];
+
+    C[3]=A[3]*B[0]+A[4]*B[3]+A[5]*B[6];
+    C[4]=A[3]*B[1]+A[4]*B[4]+A[5]*B[7];
+    C[5]=A[3]*B[2]+A[4]*B[5]+A[5]*B[8];
+
+    C[6]=A[6]*B[0]+A[7]*B[3]+A[8]*B[6];
+    C[7]=A[6]*B[1]+A[7]*B[4]+A[8]*B[7];
+    C[8]=A[6]*B[2]+A[7]*B[5]+A[8]*B[8];
+}
+/*!
+ * Multiplication: C(4x1)=A(4x4)*B(4x1).
+ */
+inline void db_Multiply4x4_4x1(double y[4],const double A[16],const double x[4])
+{
+    y[0]=A[0]*x[0]+A[1]*x[1]+A[2]*x[2]+A[3]*x[3];
+    y[1]=A[4]*x[0]+A[5]*x[1]+A[6]*x[2]+A[7]*x[3];
+    y[2]=A[8]*x[0]+A[9]*x[1]+A[10]*x[2]+A[11]*x[3];
+    y[3]=A[12]*x[0]+A[13]*x[1]+A[14]*x[2]+A[15]*x[3];
+}
+/*!
+ * Scalar multiplication in place: A(3)=mult*A(3).
+ */
+inline void db_MultiplyScalar3(double *A,double mult)
+{
+    (*A++) *= mult; (*A++) *= mult; (*A++) *= mult;
+}
+
+/*!
+ * Scalar multiplication: A(3)=mult*B(3).
+ */
+inline void db_MultiplyScalarCopy3(double *A,const double *B,double mult)
+{
+    (*A++)=(*B++)*mult; (*A++)=(*B++)*mult; (*A++)=(*B++)*mult;
+}
+
+/*!
+ * Scalar multiplication: A(4)=mult*B(4).
+ */
+inline void db_MultiplyScalarCopy4(double *A,const double *B,double mult)
+{
+    (*A++)=(*B++)*mult; (*A++)=(*B++)*mult; (*A++)=(*B++)*mult; (*A++)=(*B++)*mult;
+}
+/*!
+ * Scalar multiplication: A(7)=mult*B(7).
+ */
+inline void db_MultiplyScalarCopy7(double *A,const double *B,double mult)
+{
+    (*A++)=(*B++)*mult; (*A++)=(*B++)*mult; (*A++)=(*B++)*mult; (*A++)=(*B++)*mult; (*A++)=(*B++)*mult;
+    (*A++)=(*B++)*mult; (*A++)=(*B++)*mult;
+}
+/*!
+ * Scalar multiplication: A(9)=mult*B(9).
+ */
+inline void db_MultiplyScalarCopy9(double *A,const double *B,double mult)
+{
+    (*A++)=(*B++)*mult; (*A++)=(*B++)*mult; (*A++)=(*B++)*mult; (*A++)=(*B++)*mult; (*A++)=(*B++)*mult;
+    (*A++)=(*B++)*mult; (*A++)=(*B++)*mult; (*A++)=(*B++)*mult; (*A++)=(*B++)*mult;
+}
+
+/*!
+ * \defgroup LMImageBasicUtilities (LM) Basic Image Utility Functions
+
+ Images in db are simply 2D arrays of unsigned char or float types.
+ Only the very basic operations are supported: allocation/deallocation,
+copying, simple pyramid construction and LUT warping. These images are used
+by db_CornerDetector_u and db_Matcher_u. The db_Image class is an attempt
+to wrap these images. It has not been tested well.
+
+ */
+/*\{*/
+/*!
+ * Given a float image array, allocates and returns the set of row poiners.
+ * \param im    image pointer
+ * \param w     image width
+ * \param h     image height
+ */
+DB_API float** db_SetupImageReferences_f(float *im,int w,int h);
+/*!
+ * Allocate a float image.
+ * Note: for feature detection images must be overallocated by 256 bytes.
+ * \param w                 width
+ * \param h                 height
+ * \param over_allocation   allocate this many extra bytes at the end
+ * \return row array pointer
+ */
+DB_API float** db_AllocImage_f(int w,int h,int over_allocation=256);
+/*!
+ * Free a float image
+ * \param img   row array pointer
+ * \param h     image height (number of rows)
+ */
+DB_API void db_FreeImage_f(float **img,int h);
+/*!
+ * Given an unsigned char image array, allocates and returns the set of row poiners.
+ * \param im    image pointer
+ * \param w     image width
+ * \param h     image height
+ */
+DB_API unsigned char** db_SetupImageReferences_u(unsigned char *im,int w,int h);
+/*!
+ * Allocate an unsigned char image.
+ * Note: for feature detection images must be overallocated by 256 bytes.
+ * \param w                 width
+ * \param h                 height
+ * \param over_allocation   allocate this many extra bytes at the end
+ * \return row array pointer
+ */
+DB_API unsigned char** db_AllocImage_u(int w,int h,int over_allocation=256);
+/*!
+ * Free an unsigned char image
+ * \param img   row array pointer
+ * \param h     image height (number of rows)
+ */
+DB_API void db_FreeImage_u(unsigned char **img,int h);
+
+/*!
+ Copy an image from s to d. Both s and d must be pre-allocated at of the same size.
+ Copy is done row by row.
+ \param s   source
+ \param d   destination
+ \param w   width
+ \param h   height
+ \param over_allocation copy this many bytes after the end of the last line
+ */
+DB_API void db_CopyImage_u(unsigned char **d,const unsigned char * const *s,int w,int h,int over_allocation=0);
+
+DB_API inline unsigned char db_BilinearInterpolation(double y, double x, const unsigned char * const * v)
+{
+    int floor_x=(int) x;
+    int floor_y=(int) y;
+
+    int ceil_x=floor_x+1;
+    int ceil_y=floor_y+1;
+
+    unsigned char f00 = v[floor_y][floor_x];
+    unsigned char f01 = v[floor_y][ceil_x];
+    unsigned char f10 = v[ceil_y][floor_x];
+    unsigned char f11 = v[ceil_y][ceil_x];
+
+    double xl = x-floor_x;
+    double yl = y-floor_y;
+
+    return (unsigned char)(f00*(1-yl)*(1-xl) + f10*yl*(1-xl) + f01*(1-yl)*xl + f11*yl*xl);
+}
+/*\}*/
+/*!
+ * \ingroup LMRotation
+ * Compute an incremental rotation matrix using the update dx=[sin(phi) sin(ohm) sin(kap)]
+ */
+inline void db_IncrementalRotationMatrix(double R[9],const double dx[3])
+{
+    double sp,so,sk,om_sp2,om_so2,om_sk2,cp,co,ck,sp_so,cp_so;
+
+    /*Store sines*/
+    sp=dx[0]; so=dx[1]; sk=dx[2];
+    om_sp2=1.0-sp*sp;
+    om_so2=1.0-so*so;
+    om_sk2=1.0-sk*sk;
+    /*Compute cosines*/
+    cp=(om_sp2>=0.0)?sqrt(om_sp2):1.0;
+    co=(om_so2>=0.0)?sqrt(om_so2):1.0;
+    ck=(om_sk2>=0.0)?sqrt(om_sk2):1.0;
+    /*Compute matrix*/
+    sp_so=sp*so;
+    cp_so=cp*so;
+    R[0]=sp_so*sk+cp*ck; R[1]=co*sk; R[2]=cp_so*sk-sp*ck;
+    R[3]=sp_so*ck-cp*sk; R[4]=co*ck; R[5]=cp_so*ck+sp*sk;
+    R[6]=sp*co;          R[7]= -so;  R[8]=cp*co;
+}
+/*!
+ * Zero out 2 vector in place.
+ */
+void inline db_Zero2(double x[2])
+{
+    x[0]=x[1]=0;
+}
+/*!
+ * Zero out 3 vector in place.
+ */
+void inline db_Zero3(double x[3])
+{
+    x[0]=x[1]=x[2]=0;
+}
+/*!
+ * Zero out 4 vector in place.
+ */
+void inline db_Zero4(double x[4])
+{
+    x[0]=x[1]=x[2]=x[3]=0;
+}
+/*!
+ * Zero out 9 vector in place.
+ */
+void inline db_Zero9(double x[9])
+{
+    x[0]=x[1]=x[2]=x[3]=x[4]=x[5]=x[6]=x[7]=x[8]=0;
+}
+
+#define DB_WARP_FAST        0
+#define DB_WARP_BILINEAR    1
+
+/*!
+ * Perform a look-up table warp.
+ * The LUTs must be float images of the same size as source image.
+ * The source value x_s is determined from destination (x_d,y_d) through lut_x
+ * and y_s is determined from lut_y:
+   \code
+   x_s = lut_x[y_d][x_d];
+   y_s = lut_y[y_d][x_d];
+   \endcode
+
+ * \param src   source image
+ * \param dst   destination image
+ * \param w     width
+ * \param h     height
+ * \param lut_x LUT for x
+ * \param lut_y LUT for y
+ * \param type  warp type (DB_WARP_FAST or DB_WARP_BILINEAR)
+ */
+DB_API void db_WarpImageLut_u(const unsigned char * const * src,unsigned char ** dst, int w, int h,
+                               const float * const * lut_x, const float * const * lut_y, int type=DB_WARP_BILINEAR);
+
+DB_API void db_PrintDoubleVector(double *a,long size);
+DB_API void db_PrintDoubleMatrix(double *a,long rows,long cols);
+
+#include "db_utilities_constants.h"
+#include "db_utilities_algebra.h"
+#include "db_utilities_indexing.h"
+#include "db_utilities_linalg.h"
+#include "db_utilities_poly.h"
+#include "db_utilities_geometry.h"
+#include "db_utilities_random.h"
+#include "db_utilities_rotation.h"
+#include "db_utilities_camera.h"
+
+#define DB_INVALID (-1)
+
+
+#endif /* DB_UTILITIES_H */
diff --git a/perftests/panorama/feature_stab/db_vlvm/db_utilities_algebra.h b/perftests/panorama/feature_stab/db_vlvm/db_utilities_algebra.h
new file mode 100644
index 0000000..2aedd74
--- /dev/null
+++ b/perftests/panorama/feature_stab/db_vlvm/db_utilities_algebra.h
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+/* $Id: db_utilities_algebra.h,v 1.3 2011/06/17 14:03:31 mbansal Exp $ */
+
+#ifndef DB_UTILITIES_ALGEBRA
+#define DB_UTILITIES_ALGEBRA
+
+#include "db_utilities.h"
+
+
+
+/*****************************************************************
+*    Lean and mean begins here                                   *
+*****************************************************************/
+/*!
+ * \defgroup LMAlgebra (LM) Algebra utilities
+ */
+/*\{*/
+
+inline void db_HomogenousNormalize3(double *x)
+{
+    db_MultiplyScalar3(x,db_SafeSqrtReciprocal(db_SquareSum3(x)));
+}
+
+/*\}*/
+
+#endif /* DB_UTILITIES_ALGEBRA */
diff --git a/perftests/panorama/feature_stab/db_vlvm/db_utilities_camera.cpp b/perftests/panorama/feature_stab/db_vlvm/db_utilities_camera.cpp
new file mode 100644
index 0000000..dceba9b
--- /dev/null
+++ b/perftests/panorama/feature_stab/db_vlvm/db_utilities_camera.cpp
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+/* $Id: db_utilities_camera.cpp,v 1.3 2011/06/17 14:03:31 mbansal Exp $ */
+
+#include "db_utilities_camera.h"
+#include "db_utilities.h"
+#include <assert.h>
+
+
+
+/*****************************************************************
+*    Lean and mean begins here                                   *
+*****************************************************************/
+
+void db_Approx3DCalMat(double K[9],double Kinv[9],int im_width,int im_height,double f_correction,int field)
+{
+    double iw,ih,av_size,field_fact;
+
+    if(field) field_fact=2.0;
+    else field_fact=1.0;
+
+    iw=(double)im_width;
+    ih=(double)(im_height*field_fact);
+    av_size=(iw+ih)/2.0;
+    K[0]=f_correction*av_size;
+    K[1]=0;
+    K[2]=iw/2.0;
+    K[3]=0;
+    K[4]=f_correction*av_size/field_fact;
+    K[5]=ih/2.0/field_fact;
+    K[6]=0;
+    K[7]=0;
+    K[8]=1;
+
+    db_InvertCalibrationMatrix(Kinv,K);
+}
diff --git a/perftests/panorama/feature_stab/db_vlvm/db_utilities_camera.h b/perftests/panorama/feature_stab/db_vlvm/db_utilities_camera.h
new file mode 100644
index 0000000..26ba442
--- /dev/null
+++ b/perftests/panorama/feature_stab/db_vlvm/db_utilities_camera.h
@@ -0,0 +1,332 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+/* $Id: db_utilities_camera.h,v 1.3 2011/06/17 14:03:31 mbansal Exp $ */
+
+#ifndef DB_UTILITIES_CAMERA
+#define DB_UTILITIES_CAMERA
+
+#include "db_utilities.h"
+
+
+
+/*****************************************************************
+*    Lean and mean begins here                                   *
+*****************************************************************/
+/*!
+ * \defgroup LMCamera (LM) Camera Utilities
+ */
+/*\{*/
+
+#include "db_utilities.h"
+
+#define DB_RADDISTMODE_BOUGEUT  4
+#define DB_RADDISTMODE_2NDORDER 5
+#define DB_RADDISTMODE_IDENTITY 6
+
+/*!
+Give reasonable guess of the calibration matrix for normalization purposes.
+Use real K matrix when doing real geometry.
+focal length = (w+h)/2.0*f_correction.
+\param K            calibration matrix (out)
+\param Kinv         inverse of K (out)
+\param im_width     image width
+\param im_height    image height
+\param f_correction focal length correction factor
+\param field        set to 1 if this is a field image (fy = fx/2)
+\return K(3x3) intrinsic calibration matrix
+*/
+DB_API void db_Approx3DCalMat(double K[9],double Kinv[9],int im_width,int im_height,double f_correction=1.0,int field=0);
+
+/*!
+ Make a 2x2 identity matrix
+ */
+void inline db_Identity2x2(double A[4])
+{
+    A[0]=1;A[1]=0;
+    A[2]=0;A[3]=1;
+}
+/*!
+ Make a 3x3 identity matrix
+ */
+void inline db_Identity3x3(double A[9])
+{
+    A[0]=1;A[1]=0;A[2]=0;
+    A[3]=0;A[4]=1;A[5]=0;
+    A[6]=0;A[7]=0;A[8]=1;
+}
+/*!
+ Invert intrinsic calibration matrix K(3x3)
+ If fx or fy is 0, I is returned.
+ */
+void inline db_InvertCalibrationMatrix(double Kinv[9],const double K[9])
+{
+    double a,b,c,d,e,f,ainv,dinv,adinv;
+
+    a=K[0];b=K[1];c=K[2];d=K[4];e=K[5];f=K[8];
+    if((a==0.0)||(d==0.0)) db_Identity3x3(Kinv);
+    else
+    {
+        Kinv[3]=0.0;
+        Kinv[6]=0.0;
+        Kinv[7]=0.0;
+        Kinv[8]=1.0;
+
+        ainv=1.0/a;
+        dinv=1.0/d;
+        adinv=ainv*dinv;
+        Kinv[0]=f*ainv;
+        Kinv[1]= -b*f*adinv;
+        Kinv[2]=(b*e-c*d)*adinv;
+        Kinv[4]=f*dinv;
+        Kinv[5]= -e*dinv;
+    }
+}
+/*!
+ De-homogenize image point: xd(1:2) = xs(1:2)/xs(3).
+ If xs(3) is 0, xd will become 0
+ \param xd  destination point
+ \param xs  source point
+ */
+void inline db_DeHomogenizeImagePoint(double xd[2],const double xs[3])
+{
+    double temp,div;
+
+    temp=xs[2];
+    if(temp!=0)
+    {
+        div=1.0/temp;
+        xd[0]=xs[0]*div;xd[1]=xs[1]*div;
+    }
+    else
+    {
+        xd[0]=0.0;xd[1]=0.0;
+    }
+}
+
+
+/*!
+ Orthonormalize 3D rotation R
+ */
+inline void db_OrthonormalizeRotation(double R[9])
+{
+    double s,mult;
+    /*Normalize first vector*/
+    s=db_sqr(R[0])+db_sqr(R[1])+db_sqr(R[2]);
+    mult=sqrt(1.0/(s?s:1));
+    R[0]*=mult; R[1]*=mult; R[2]*=mult;
+    /*Subtract scalar product from second vector*/
+    s=R[0]*R[3]+R[1]*R[4]+R[2]*R[5];
+    R[3]-=s*R[0]; R[4]-=s*R[1]; R[5]-=s*R[2];
+    /*Normalize second vector*/
+    s=db_sqr(R[3])+db_sqr(R[4])+db_sqr(R[5]);
+    mult=sqrt(1.0/(s?s:1));
+    R[3]*=mult; R[4]*=mult; R[5]*=mult;
+    /*Get third vector by vector product*/
+    R[6]=R[1]*R[5]-R[4]*R[2];
+    R[7]=R[2]*R[3]-R[5]*R[0];
+    R[8]=R[0]*R[4]-R[3]*R[1];
+}
+/*!
+Update a rotation with the update dx=[sin(phi) sin(ohm) sin(kap)]
+*/
+inline void db_UpdateRotation(double R_p_dx[9],double R[9],const double dx[3])
+{
+    double R_temp[9];
+    /*Update rotation*/
+    db_IncrementalRotationMatrix(R_temp,dx);
+    db_Multiply3x3_3x3(R_p_dx,R_temp,R);
+}
+/*!
+ Compute xp = Hx for inhomogenous image points.
+ */
+inline void db_ImageHomographyInhomogenous(double xp[2],const double H[9],const double x[2])
+{
+    double x3,m;
+
+    x3=H[6]*x[0]+H[7]*x[1]+H[8];
+    if(x3!=0.0)
+    {
+        m=1.0/x3;
+        xp[0]=m*(H[0]*x[0]+H[1]*x[1]+H[2]);
+        xp[1]=m*(H[3]*x[0]+H[4]*x[1]+H[5]);
+    }
+    else
+    {
+        xp[0]=xp[1]=0.0;
+    }
+}
+inline double db_FocalFromCamRotFocalHomography(const double H[9])
+{
+    double k1,k2;
+
+    k1=db_sqr(H[2])+db_sqr(H[5]);
+    k2=db_sqr(H[6])+db_sqr(H[7]);
+    if(k1>=k2)
+    {
+        return(db_SafeSqrt(db_SafeDivision(k1,1.0-db_sqr(H[8]))));
+    }
+    else
+    {
+        return(db_SafeSqrt(db_SafeDivision(1.0-db_sqr(H[8]),k2)));
+    }
+}
+
+inline double db_FocalAndRotFromCamRotFocalHomography(double R[9],const double H[9])
+{
+    double back,fi;
+
+    back=db_FocalFromCamRotFocalHomography(H);
+    fi=db_SafeReciprocal(back);
+    R[0]=H[0];      R[1]=H[1];      R[2]=fi*H[2];
+    R[3]=H[3];      R[4]=H[4];      R[5]=fi*H[5];
+    R[6]=back*H[6]; R[7]=back*H[7]; R[8]=H[8];
+    return(back);
+}
+/*!
+Compute Jacobian at zero of three coordinates dR*x with
+respect to the update dR([sin(phi) sin(ohm) sin(kap)]) given x.
+
+The Jacobian at zero of the homogenous coordinates with respect to
+    [sin(phi) sin(ohm) sin(kap)] is
+\code
+    [-rx2   0   rx1 ]
+    [  0   rx2 -rx0 ]
+    [ rx0 -rx1   0  ].
+\endcode
+
+*/
+inline void db_JacobianOfRotatedPointStride(double J[9],const double x[3],int stride)
+{
+    /*The Jacobian at zero of the homogenous coordinates with respect to
+    [sin(phi) sin(ohm) sin(kap)] is
+    [-rx2   0   rx1 ]
+    [  0   rx2 -rx0 ]
+    [ rx0 -rx1   0  ]*/
+
+    J[0]= -x[stride<<1];
+    J[1]=0;
+    J[2]=  x[stride];
+    J[3]=0;
+    J[4]=  x[stride<<1];
+    J[5]= -x[0];
+    J[6]=  x[0];
+    J[7]= -x[stride];
+    J[8]=0;
+}
+/*!
+ Invert an affine (if possible)
+ \param Hinv    inverted matrix
+ \param H       input matrix
+ \return true if success and false if matrix is ill-conditioned (det < 1e-7)
+ */
+inline bool db_InvertAffineTransform(double Hinv[9],const double H[9])
+{
+    double det=H[0]*H[4]-H[3]*H[1];
+    if (det<1e-7)
+    {
+        db_Copy9(Hinv,H);
+        return false;
+    }
+    else
+    {
+        Hinv[0]=H[4]/det;
+        Hinv[1]=-H[1]/det;
+        Hinv[3]=-H[3]/det;
+        Hinv[4]=H[0]/det;
+        Hinv[2]= -Hinv[0]*H[2]-Hinv[1]*H[5];
+        Hinv[5]= -Hinv[3]*H[2]-Hinv[4]*H[5];
+    }
+    return true;
+}
+
+/*!
+Update of upper 2x2 is multiplication by
+\code
+[s 0][ cos(theta) sin(theta)]
+[0 s][-sin(theta) cos(theta)]
+\endcode
+*/
+inline void db_MultiplyScaleOntoImageHomography(double H[9],double s)
+{
+
+    H[0]*=s;
+    H[1]*=s;
+    H[3]*=s;
+    H[4]*=s;
+}
+/*!
+Update of upper 2x2 is multiplication by
+\code
+[s 0][ cos(theta) sin(theta)]
+[0 s][-sin(theta) cos(theta)]
+\endcode
+*/
+inline void db_MultiplyRotationOntoImageHomography(double H[9],double theta)
+{
+    double c,s,H0,H1;
+
+
+    c=cos(theta);
+    s=db_SafeSqrt(1.0-db_sqr(c));
+    H0=  c*H[0]+s*H[3];
+    H[3]= -s*H[0]+c*H[3];
+    H[0]=H0;
+    H1=c*H[1]+s*H[4];
+    H[4]= -s*H[1]+c*H[4];
+    H[1]=H1;
+}
+
+inline void db_UpdateImageHomographyAffine(double H_p_dx[9],const double H[9],const double dx[6])
+{
+    db_AddVectors6(H_p_dx,H,dx);
+    db_Copy3(H_p_dx+6,H+6);
+}
+
+inline void db_UpdateImageHomographyProjective(double H_p_dx[9],const double H[9],const double dx[8],int frozen_coord)
+{
+    int i,j;
+
+    for(j=0,i=0;i<9;i++)
+    {
+        if(i!=frozen_coord)
+        {
+            H_p_dx[i]=H[i]+dx[j];
+            j++;
+        }
+        else H_p_dx[i]=H[i];
+    }
+}
+
+inline void db_UpdateRotFocalHomography(double H_p_dx[9],const double H[9],const double dx[4])
+{
+    double f,fp,fpi;
+    double R[9],dR[9];
+
+    /*Updated matrix is diag(f+df,f+df)*dR*R*diag(1/(f+df),1/(f+df),1)*/
+    f=db_FocalAndRotFromCamRotFocalHomography(R,H);
+    db_IncrementalRotationMatrix(dR,dx);
+    db_Multiply3x3_3x3(H_p_dx,dR,R);
+    fp=f+dx[3];
+    fpi=db_SafeReciprocal(fp);
+    H_p_dx[2]*=fp;
+    H_p_dx[5]*=fp;
+    H_p_dx[6]*=fpi;
+    H_p_dx[7]*=fpi;
+}
+
+/*\}*/
+#endif /* DB_UTILITIES_CAMERA */
diff --git a/perftests/panorama/feature_stab/db_vlvm/db_utilities_constants.h b/perftests/panorama/feature_stab/db_vlvm/db_utilities_constants.h
new file mode 100644
index 0000000..07565ef
--- /dev/null
+++ b/perftests/panorama/feature_stab/db_vlvm/db_utilities_constants.h
@@ -0,0 +1,208 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+/* $Id: db_utilities_constants.h,v 1.2 2011/06/17 14:03:31 mbansal Exp $ */
+
+#ifndef DB_UTILITIES_CONSTANTS
+#define DB_UTILITIES_CONSTANTS
+
+/*****************************************************************
+*    Lean and mean begins here                                   *
+*****************************************************************/
+
+/****************Constants********************/
+#define DB_E             2.7182818284590452354
+#define DB_LOG2E         1.4426950408889634074
+#define DB_LOG10E        0.43429448190325182765
+#define DB_LN2           0.69314718055994530942
+#define DB_LN10          2.30258509299404568402
+#define DB_PI            3.1415926535897932384626433832795
+#define DB_PI_2          1.57079632679489661923
+#define DB_PI_4          0.78539816339744830962
+#define DB_1_PI          0.31830988618379067154
+#define DB_2_PI          0.63661977236758134308
+#define DB_SQRTPI        1.7724538509055160272981674833411
+#define DB_SQRT_2PI      2.506628274631000502415765284811
+#define DB_2_SQRTPI      1.12837916709551257390
+#define DB_SQRT2         1.41421356237309504880
+#define DB_SQRT3         1.7320508075688772935274463415059
+#define DB_SQRT1_2       0.70710678118654752440
+#define DB_EPS           2.220446049250313e-016 /* for 32 bit double */
+
+/****************Default Parameters********************/
+/*Preemptive ransac parameters*/
+#define DB_DEFAULT_NR_SAMPLES 500
+#define DB_DEFAULT_CHUNK_SIZE 100
+#define DB_DEFAULT_GROUP_SIZE 10
+
+/*Optimisation parameters*/
+#define DB_DEFAULT_MAX_POINTS 1000
+#define DB_DEFAULT_MAX_ITERATIONS 25
+#define DB_DEFAULT_IMP_REQ 0.001
+
+/*Feature standard deviation parameters*/
+#define DB_POINT_STANDARDDEV (1.0/(826.0)) /*1 pixel for CIF (fraction of (image width+image height)/2)*/
+#define DB_OUTLIER_THRESHOLD 3.0 /*In number of DB_POINT_STANDARDDEV's*/
+#define DB_WORST_CASE 50.0 /*In number of DB_POINT_STANDARDDEV's*/
+
+/*Front-end parameters*/
+#define DB_DEFAULT_TARGET_NR_CORNERS 5000
+#define DB_DEFAULT_NR_FEATURE_BLOCKS 10
+#define DB_DEFAULT_ABS_CORNER_THRESHOLD 50000000.0
+#define DB_DEFAULT_REL_CORNER_THRESHOLD 0.00005
+#define DB_DEFAULT_MAX_DISPARITY 0.1
+#define DB_DEFAULT_NO_DISPARITY -1.0
+#define DB_DEFAULT_MAX_TRACK_LENGTH 300
+
+#define DB_DEFAULT_MAX_NR_CAMERAS 1000
+
+#define DB_DEFAULT_TRIPLE_STEP 2
+#define DB_DEFAULT_DOUBLE_STEP 2
+#define DB_DEFAULT_SINGLE_STEP 1
+#define DB_DEFAULT_NR_SINGLES 10
+#define DB_DEFAULT_NR_DOUBLES 1
+#define DB_DEFAULT_NR_TRIPLES 1
+
+#define DB_DEFAULT_TRIFOCAL_FOUR_STEPS 40
+
+#define DB_DEFAULT_EPIPOLAR_ERROR 1 /*in pixels*/
+
+////////////////////////// DOXYGEN /////////////////////
+
+/*!
+ * \def DB_DEFAULT_GROUP_SIZE
+ * \ingroup LMRobust
+ * \brief Default group size for db_PreemptiveRansac class.
+ * Group size is the number of observation costs multiplied together
+ * before a log of the product is added to the total cost.
+*/
+
+/*!
+ * \def DB_DEFAULT_TARGET_NR_CORNERS
+ * \ingroup FeatureDetection
+ * \brief Default target number of corners
+*/
+/*!
+ * \def DB_DEFAULT_NR_FEATURE_BLOCKS
+ * \ingroup FeatureDetection
+ * \brief Default number of regions (horizontal or vertical) that are considered separately
+ * for feature detection. The greater the number, the more uniform the distribution of
+ * detected features.
+*/
+/*!
+ * \def DB_DEFAULT_ABS_CORNER_THRESHOLD
+ * \ingroup FeatureDetection
+ * \brief Absolute feature strength threshold.
+*/
+/*!
+ * \def DB_DEFAULT_REL_CORNER_THRESHOLD
+ * \ingroup FeatureDetection
+ * \brief Relative feature strength threshold.
+*/
+/*!
+ * \def DB_DEFAULT_MAX_DISPARITY
+ * \ingroup FeatureMatching
+ * \brief Maximum disparity (as fraction of image size) allowed in feature matching
+*/
+ /*!
+ * \def DB_DEFAULT_NO_DISPARITY
+ * \ingroup FeatureMatching
+ * \brief Indicates that vertical disparity is the same as horizontal disparity.
+*/
+///////////////////////////////////////////////////////////////////////////////////
+ /*!
+ * \def DB_E
+ * \ingroup LMBasicUtilities
+ * \brief e
+*/
+ /*!
+ * \def DB_LOG2E
+ * \ingroup LMBasicUtilities
+ * \brief log2(e)
+*/
+ /*!
+ * \def DB_LOG10E
+ * \ingroup LMBasicUtilities
+ * \brief log10(e)
+*/
+ /*!
+ * \def DB_LOG10E
+ * \ingroup LMBasicUtilities
+ * \brief log10(e)
+*/
+/*!
+ * \def DB_LN2
+ * \ingroup LMBasicUtilities
+ * \brief ln(2)
+*/
+/*!
+ * \def DB_LN10
+ * \ingroup LMBasicUtilities
+ * \brief ln(10)
+*/
+/*!
+ * \def DB_PI
+ * \ingroup LMBasicUtilities
+ * \brief Pi
+*/
+/*!
+ * \def DB_PI_2
+ * \ingroup LMBasicUtilities
+ * \brief Pi/2
+*/
+/*!
+ * \def DB_PI_4
+ * \ingroup LMBasicUtilities
+ * \brief Pi/4
+*/
+/*!
+ * \def DB_1_PI
+ * \ingroup LMBasicUtilities
+ * \brief 1/Pi
+*/
+/*!
+ * \def DB_2_PI
+ * \ingroup LMBasicUtilities
+ * \brief 2/Pi
+*/
+/*!
+ * \def DB_SQRTPI
+ * \ingroup LMBasicUtilities
+ * \brief sqrt(Pi)
+*/
+/*!
+ * \def DB_SQRT_2PI
+ * \ingroup LMBasicUtilities
+ * \brief sqrt(2*Pi)
+*/
+/*!
+ * \def DB_SQRT2
+ * \ingroup LMBasicUtilities
+ * \brief sqrt(2)
+*/
+/*!
+ * \def DB_SQRT3
+ * \ingroup LMBasicUtilities
+ * \brief sqrt(3)
+*/
+/*!
+ * \def DB_SQRT1_2
+ * \ingroup LMBasicUtilities
+ * \brief sqrt(1/2)
+*/
+#endif /* DB_UTILITIES_CONSTANTS */
+
+
diff --git a/perftests/panorama/feature_stab/db_vlvm/db_utilities_geometry.h b/perftests/panorama/feature_stab/db_vlvm/db_utilities_geometry.h
new file mode 100644
index 0000000..f215584
--- /dev/null
+++ b/perftests/panorama/feature_stab/db_vlvm/db_utilities_geometry.h
@@ -0,0 +1,121 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+/* $Id: db_utilities_geometry.h,v 1.3 2011/06/17 14:03:31 mbansal Exp $ */
+
+#ifndef DB_UTILITIES_GEOMETRY_H
+#define DB_UTILITIES_GEOMETRY_H
+
+#include "db_utilities.h"
+
+
+
+/*****************************************************************
+*    Lean and mean begins here                                   *
+*****************************************************************/
+/*! Get the inhomogenous 2D-point centroid of nr_point inhomogenous
+points in X*/
+inline void db_PointCentroid2D(double c[2],const double *X,int nr_points)
+{
+    int i;
+    double cx,cy,m;
+
+    cx=0;cy=0;
+    for(i=0;i<nr_points;i++)
+    {
+        cx+= *X++;
+        cy+= *X++;
+    }
+    if(nr_points)
+    {
+        m=1.0/((double)nr_points);
+        c[0]=cx*m;
+        c[1]=cy*m;
+    }
+    else c[0]=c[1]=0;
+}
+
+inline void db_PointCentroid2D(double c[2],const double * const *X,int nr_points)
+{
+    int i;
+    double cx,cy,m;
+    const double *temp;
+
+    cx=0;cy=0;
+    for(i=0;i<nr_points;i++)
+    {
+        temp= *X++;
+        cx+=temp[0];
+        cy+=temp[1];
+    }
+    if(nr_points)
+    {
+        m=1.0/((double)nr_points);
+        c[0]=cx*m;
+        c[1]=cy*m;
+    }
+    else c[0]=c[1]=0;
+}
+
+/*! Get the inhomogenous 3D-point centroid of nr_point inhomogenous
+points in X*/
+inline void db_PointCentroid3D(double c[3],const double *X,int nr_points)
+{
+    int i;
+    double cx,cy,cz,m;
+
+    cx=0;cy=0;cz=0;
+    for(i=0;i<nr_points;i++)
+    {
+        cx+= *X++;
+        cy+= *X++;
+        cz+= *X++;
+    }
+    if(nr_points)
+    {
+        m=1.0/((double)nr_points);
+        c[0]=cx*m;
+        c[1]=cy*m;
+        c[2]=cz*m;
+    }
+    else c[0]=c[1]=c[2]=0;
+}
+
+inline void db_PointCentroid3D(double c[3],const double * const *X,int nr_points)
+{
+    int i;
+    double cx,cy,cz,m;
+    const double *temp;
+
+    cx=0;cy=0;cz=0;
+    for(i=0;i<nr_points;i++)
+    {
+        temp= *X++;
+        cx+=temp[0];
+        cy+=temp[1];
+        cz+=temp[2];
+    }
+    if(nr_points)
+    {
+        m=1.0/((double)nr_points);
+        c[0]=cx*m;
+        c[1]=cy*m;
+        c[2]=cz*m;
+    }
+    else c[0]=c[1]=c[2]=0;
+}
+
+#endif /* DB_UTILITIES_GEOMETRY_H */
diff --git a/perftests/panorama/feature_stab/db_vlvm/db_utilities_indexing.cpp b/perftests/panorama/feature_stab/db_vlvm/db_utilities_indexing.cpp
new file mode 100644
index 0000000..30ce03a
--- /dev/null
+++ b/perftests/panorama/feature_stab/db_vlvm/db_utilities_indexing.cpp
@@ -0,0 +1,120 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+/* $Id: db_utilities_indexing.cpp,v 1.3 2011/06/17 14:03:31 mbansal Exp $ */
+
+#include "db_utilities_indexing.h"
+#include "db_utilities.h"
+
+
+
+/*****************************************************************
+*    Lean and mean begins here                                   *
+*****************************************************************/
+
+void db_Zero(double *d,long nr)
+{
+    long i;
+    for(i=0;i<nr;i++) d[i]=0.0;
+}
+
+/*This routine breaks number in source into values smaller and larger than
+a pivot element. Values equal to the pivot are ignored*/
+void db_LeanPartitionOnPivot(double pivot,double *dest,const double *source,long first,long last,long *first_equal,long *last_equal)
+{
+    double temp;
+    const double *s_point;
+    const double *s_top;
+    double *d_bottom;
+    double *d_top;
+
+    s_point=source+first;
+    s_top=source+last;
+    d_bottom=dest+first;
+    d_top=dest+last;
+
+    for(;s_point<=s_top;)
+    {
+        temp= *(s_point++);
+        if(temp<pivot) *(d_bottom++)=temp;
+        else if(temp>pivot) *(d_top--)=temp;
+    }
+    *first_equal=d_bottom-dest;
+    *last_equal=d_top-dest;
+}
+
+double db_LeanQuickSelect(const double *s,long nr_elements,long pos,double *temp)
+{
+  long first=0;
+  long last=nr_elements-1;
+  double pivot;
+  long first_equal,last_equal;
+  double *tempA;
+  double *tempB;
+  double *tempC;
+  const double *source;
+  double *dest;
+
+  tempA=temp;
+  tempB=temp+nr_elements;
+  source=s;
+  dest=tempA;
+
+  for(;last-first>2;)
+  {
+      pivot=db_TripleMedian(source[first],source[last],source[(first+last)/2]);
+      db_LeanPartitionOnPivot(pivot,dest,source,first,last,&first_equal,&last_equal);
+
+      if(first_equal>pos) last=first_equal-1;
+      else if(last_equal<pos) first=last_equal+1;
+      else
+      {
+        return(pivot);
+      }
+
+      /*Swap pointers*/
+      tempC=tempA;
+      tempA=tempB;
+      tempB=tempC;
+      source=tempB;
+      dest=tempA;
+  }
+  pivot=db_TripleMedian(source[first],source[last],source[(first+last)/2]);
+
+  return(pivot);
+}
+
+float* db_AlignPointer_f(float *p,unsigned long nr_bytes)
+{
+    float *ap;
+    unsigned long m;
+
+    m=((unsigned long)p)%nr_bytes;
+    if(m) ap=(float*) (((unsigned long)p)-m+nr_bytes);
+    else ap=p;
+    return(ap);
+}
+
+short* db_AlignPointer_s(short *p,unsigned long nr_bytes)
+{
+    short *ap;
+    unsigned long m;
+
+    m=((unsigned long)p)%nr_bytes;
+    if(m) ap=(short*) (((unsigned long)p)-m+nr_bytes);
+    else ap=p;
+    return(ap);
+}
diff --git a/perftests/panorama/feature_stab/db_vlvm/db_utilities_indexing.h b/perftests/panorama/feature_stab/db_vlvm/db_utilities_indexing.h
new file mode 100644
index 0000000..01eeb9e
--- /dev/null
+++ b/perftests/panorama/feature_stab/db_vlvm/db_utilities_indexing.h
@@ -0,0 +1,270 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+/* $Id: db_utilities_indexing.h,v 1.3 2011/06/17 14:03:31 mbansal Exp $ */
+
+#ifndef DB_UTILITIES_INDEXING
+#define DB_UTILITIES_INDEXING
+
+
+
+/*****************************************************************
+*    Lean and mean begins here                                   *
+*****************************************************************/
+
+#include "db_utilities.h"
+
+/*!
+ * \defgroup LMIndexing (LM) Indexing Utilities (Order Statistics, Matrix Operations)
+ */
+/*\{*/
+
+inline void db_SetupMatrixRefs(double **ar,long rows,long cols,double *a)
+{
+    long i;
+    for(i=0;i<rows;i++) ar[i]=&a[i*cols];
+}
+
+inline void db_SymmetricExtendUpperToLower(double **A,int rows,int cols)
+{
+    int i,j;
+    for(i=1;i<rows;i++) for(j=0;j<i;j++) A[i][j]=A[j][i];
+}
+
+void inline db_MultiplyMatrixVectorAtb(double *c,const double * const *At,const double *b,int arows,int acols)
+{
+    int i,j;
+    double acc;
+
+    for(i=0;i<arows;i++)
+    {
+        acc=0;
+        for(j=0;j<acols;j++) acc+=At[j][i]*b[j];
+        c[i]=acc;
+    }
+}
+
+inline void db_MultiplyMatricesAB(double **C,const double * const *A,const double * const *B,int arows,int acols,int bcols)
+{
+    int i,j,k;
+    double acc;
+
+    for(i=0;i<arows;i++) for(j=0;j<bcols;j++)
+    {
+        acc=0;
+        for(k=0;k<acols;k++) acc+=A[i][k]*B[k][j];
+        C[i][j]=acc;
+    }
+}
+
+inline void db_UpperMultiplyMatricesAtB(double **Cu,const double * const *At,const double * const *B,int arows,int acols,int bcols)
+{
+    int i,j,k;
+    double acc;
+
+    for(i=0;i<arows;i++) for(j=i;j<bcols;j++)
+    {
+        acc=0;
+        for(k=0;k<acols;k++) acc+=At[k][i]*B[k][j];
+        Cu[i][j]=acc;
+    }
+}
+
+DB_API void db_Zero(double *d,long nr);
+
+inline int db_MaxIndex2(double s[2])
+{
+    if(s[0]>=s[1]) return(0);
+    return(1);
+}
+
+inline int db_MaxIndex3(const double s[3])
+{
+    double best;
+    int pos;
+
+    best=s[0];pos=0;
+    if(s[1]>best){best=s[1];pos=1;}
+    if(s[2]>best){best=s[2];pos=2;}
+    return(pos);
+}
+
+inline int db_MaxIndex4(const double s[4])
+{
+    double best;
+    int pos;
+
+    best=s[0];pos=0;
+    if(s[1]>best){best=s[1];pos=1;}
+    if(s[2]>best){best=s[2];pos=2;}
+    if(s[3]>best){best=s[3];pos=3;}
+    return(pos);
+}
+
+inline int db_MaxIndex5(const double s[5])
+{
+    double best;
+    int pos;
+
+    best=s[0];pos=0;
+    if(s[1]>best){best=s[1];pos=1;}
+    if(s[2]>best){best=s[2];pos=2;}
+    if(s[3]>best){best=s[3];pos=3;}
+    if(s[4]>best){best=s[4];pos=4;}
+    return(pos);
+}
+
+inline int db_MaxIndex6(const double s[6])
+{
+    double best;
+    int pos;
+
+    best=s[0];pos=0;
+    if(s[1]>best){best=s[1];pos=1;}
+    if(s[2]>best){best=s[2];pos=2;}
+    if(s[3]>best){best=s[3];pos=3;}
+    if(s[4]>best){best=s[4];pos=4;}
+    if(s[5]>best){best=s[5];pos=5;}
+    return(pos);
+}
+
+inline int db_MaxIndex7(const double s[7])
+{
+    double best;
+    int pos;
+
+    best=s[0];pos=0;
+    if(s[1]>best){best=s[1];pos=1;}
+    if(s[2]>best){best=s[2];pos=2;}
+    if(s[3]>best){best=s[3];pos=3;}
+    if(s[4]>best){best=s[4];pos=4;}
+    if(s[5]>best){best=s[5];pos=5;}
+    if(s[6]>best){best=s[6];pos=6;}
+    return(pos);
+}
+
+inline int db_MinIndex7(const double s[7])
+{
+    double best;
+    int pos;
+
+    best=s[0];pos=0;
+    if(s[1]<best){best=s[1];pos=1;}
+    if(s[2]<best){best=s[2];pos=2;}
+    if(s[3]<best){best=s[3];pos=3;}
+    if(s[4]<best){best=s[4];pos=4;}
+    if(s[5]<best){best=s[5];pos=5;}
+    if(s[6]<best){best=s[6];pos=6;}
+    return(pos);
+}
+
+inline int db_MinIndex9(const double s[9])
+{
+    double best;
+    int pos;
+
+    best=s[0];pos=0;
+    if(s[1]<best){best=s[1];pos=1;}
+    if(s[2]<best){best=s[2];pos=2;}
+    if(s[3]<best){best=s[3];pos=3;}
+    if(s[4]<best){best=s[4];pos=4;}
+    if(s[5]<best){best=s[5];pos=5;}
+    if(s[6]<best){best=s[6];pos=6;}
+    if(s[7]<best){best=s[7];pos=7;}
+    if(s[8]<best){best=s[8];pos=8;}
+    return(pos);
+}
+
+inline int db_MaxAbsIndex3(const double *s)
+{
+    double t,best;
+    int pos;
+
+    best=fabs(s[0]);pos=0;
+    t=fabs(s[1]);if(t>best){best=t;pos=1;}
+    t=fabs(s[2]);if(t>best){pos=2;}
+    return(pos);
+}
+
+inline int db_MaxAbsIndex9(const double *s)
+{
+    double t,best;
+    int pos;
+
+    best=fabs(s[0]);pos=0;
+    t=fabs(s[1]);if(t>best){best=t;pos=1;}
+    t=fabs(s[2]);if(t>best){best=t;pos=2;}
+    t=fabs(s[3]);if(t>best){best=t;pos=3;}
+    t=fabs(s[4]);if(t>best){best=t;pos=4;}
+    t=fabs(s[5]);if(t>best){best=t;pos=5;}
+    t=fabs(s[6]);if(t>best){best=t;pos=6;}
+    t=fabs(s[7]);if(t>best){best=t;pos=7;}
+    t=fabs(s[8]);if(t>best){best=t;pos=8;}
+    return(pos);
+}
+
+
+/*!
+Select ordinal pos (zero based) out of nr_elements in s.
+temp should point to alloced memory of at least nr_elements*2
+Optimized runtimes on 450MHz:
+\code
+  30 with   3 microsecs
+ 100 with  11 microsecs
+ 300 with  30 microsecs
+ 500 with  40 microsecs
+1000 with 100 microsecs
+5000 with 540 microsecs
+\endcode
+so the expected runtime is around
+(nr_elements/10) microseconds
+The total quickselect cost of splitting 500 hypotheses recursively
+is thus around 100 microseconds
+
+Does the same operation as std::nth_element().
+*/
+DB_API double db_LeanQuickSelect(const double *s,long nr_elements,long pos,double *temp);
+
+/*!
+ Median of 3 doubles
+ */
+inline double db_TripleMedian(double a,double b,double c)
+{
+    if(a>b)
+    {
+        if(c>a) return(a);
+        else if(c>b) return(c);
+        else return(b);
+    }
+    else
+    {
+        if(c>b) return(b);
+        else if(c>a) return(c);
+        else return(a);
+    }
+}
+
+/*!
+Align float pointer to nr_bytes by moving forward
+*/
+DB_API float* db_AlignPointer_f(float *p,unsigned long nr_bytes);
+
+/*!
+Align short pointer to nr_bytes by moving forward
+*/
+DB_API short* db_AlignPointer_s(short *p,unsigned long nr_bytes);
+
+#endif /* DB_UTILITIES_INDEXING */
diff --git a/perftests/panorama/feature_stab/db_vlvm/db_utilities_linalg.cpp b/perftests/panorama/feature_stab/db_vlvm/db_utilities_linalg.cpp
new file mode 100644
index 0000000..8f68b30
--- /dev/null
+++ b/perftests/panorama/feature_stab/db_vlvm/db_utilities_linalg.cpp
@@ -0,0 +1,376 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+/* $Id: db_utilities_linalg.cpp,v 1.3 2011/06/17 14:03:31 mbansal Exp $ */
+
+#include "db_utilities_linalg.h"
+#include "db_utilities.h"
+
+
+
+/*****************************************************************
+*    Lean and mean begins here                                   *
+*****************************************************************/
+
+/*Cholesky-factorize symmetric positive definite 6 x 6 matrix A. Upper
+part of A is used from the input. The Cholesky factor is output as
+subdiagonal part in A and diagonal in d, which is 6-dimensional*/
+void db_CholeskyDecomp6x6(double A[36],double d[6])
+{
+    double s,temp;
+
+    /*[50 mult 35 add 6sqrt=85flops 6func]*/
+    /*i=0*/
+    s=A[0];
+    d[0]=((s>0.0)?sqrt(s):1.0);
+    temp=db_SafeReciprocal(d[0]);
+    A[6]=A[1]*temp;
+    A[12]=A[2]*temp;
+    A[18]=A[3]*temp;
+    A[24]=A[4]*temp;
+    A[30]=A[5]*temp;
+    /*i=1*/
+    s=A[7]-A[6]*A[6];
+    d[1]=((s>0.0)?sqrt(s):1.0);
+    temp=db_SafeReciprocal(d[1]);
+    A[13]=(A[8]-A[6]*A[12])*temp;
+    A[19]=(A[9]-A[6]*A[18])*temp;
+    A[25]=(A[10]-A[6]*A[24])*temp;
+    A[31]=(A[11]-A[6]*A[30])*temp;
+    /*i=2*/
+    s=A[14]-A[12]*A[12]-A[13]*A[13];
+    d[2]=((s>0.0)?sqrt(s):1.0);
+    temp=db_SafeReciprocal(d[2]);
+    A[20]=(A[15]-A[12]*A[18]-A[13]*A[19])*temp;
+    A[26]=(A[16]-A[12]*A[24]-A[13]*A[25])*temp;
+    A[32]=(A[17]-A[12]*A[30]-A[13]*A[31])*temp;
+    /*i=3*/
+    s=A[21]-A[18]*A[18]-A[19]*A[19]-A[20]*A[20];
+    d[3]=((s>0.0)?sqrt(s):1.0);
+    temp=db_SafeReciprocal(d[3]);
+    A[27]=(A[22]-A[18]*A[24]-A[19]*A[25]-A[20]*A[26])*temp;
+    A[33]=(A[23]-A[18]*A[30]-A[19]*A[31]-A[20]*A[32])*temp;
+    /*i=4*/
+    s=A[28]-A[24]*A[24]-A[25]*A[25]-A[26]*A[26]-A[27]*A[27];
+    d[4]=((s>0.0)?sqrt(s):1.0);
+    temp=db_SafeReciprocal(d[4]);
+    A[34]=(A[29]-A[24]*A[30]-A[25]*A[31]-A[26]*A[32]-A[27]*A[33])*temp;
+    /*i=5*/
+    s=A[35]-A[30]*A[30]-A[31]*A[31]-A[32]*A[32]-A[33]*A[33]-A[34]*A[34];
+    d[5]=((s>0.0)?sqrt(s):1.0);
+}
+
+/*Cholesky-factorize symmetric positive definite n x n matrix A.Part
+above diagonal of A is used from the input, diagonal of A is assumed to
+be stored in d. The Cholesky factor is output as
+subdiagonal part in A and diagonal in d, which is n-dimensional*/
+void db_CholeskyDecompSeparateDiagonal(double **A,double *d,int n)
+{
+    int i,j,k;
+    double s;
+    double temp = 0.0;
+
+    for(i=0;i<n;i++) for(j=i;j<n;j++)
+    {
+        if(i==j) s=d[i];
+        else s=A[i][j];
+        for(k=i-1;k>=0;k--) s-=A[i][k]*A[j][k];
+        if(i==j)
+        {
+            d[i]=((s>0.0)?sqrt(s):1.0);
+            temp=db_SafeReciprocal(d[i]);
+        }
+        else A[j][i]=s*temp;
+    }
+}
+
+/*Backsubstitute L%transpose(L)*x=b for x given the Cholesky decomposition
+of an n x n matrix and the right hand side b. The vector b is unchanged*/
+void db_CholeskyBacksub(double *x,const double * const *A,const double *d,int n,const double *b)
+{
+    int i,k;
+    double s;
+
+    for(i=0;i<n;i++)
+    {
+        for(s=b[i],k=i-1;k>=0;k--) s-=A[i][k]*x[k];
+        x[i]=db_SafeDivision(s,d[i]);
+    }
+    for(i=n-1;i>=0;i--)
+    {
+        for(s=x[i],k=i+1;k<n;k++) s-=A[k][i]*x[k];
+        x[i]=db_SafeDivision(s,d[i]);
+    }
+}
+
+/*Cholesky-factorize symmetric positive definite 3 x 3 matrix A. Part
+above diagonal of A is used from the input, diagonal of A is assumed to
+be stored in d. The Cholesky factor is output as subdiagonal part in A
+and diagonal in d, which is 3-dimensional*/
+void db_CholeskyDecomp3x3SeparateDiagonal(double A[9],double d[3])
+{
+    double s,temp;
+
+    /*i=0*/
+    s=d[0];
+    d[0]=((s>0.0)?sqrt(s):1.0);
+    temp=db_SafeReciprocal(d[0]);
+    A[3]=A[1]*temp;
+    A[6]=A[2]*temp;
+    /*i=1*/
+    s=d[1]-A[3]*A[3];
+    d[1]=((s>0.0)?sqrt(s):1.0);
+    temp=db_SafeReciprocal(d[1]);
+    A[7]=(A[5]-A[3]*A[6])*temp;
+    /*i=2*/
+    s=d[2]-A[6]*A[6]-A[7]*A[7];
+    d[2]=((s>0.0)?sqrt(s):1.0);
+}
+
+/*Backsubstitute L%transpose(L)*x=b for x given the Cholesky decomposition
+of a 3 x 3 matrix and the right hand side b. The vector b is unchanged*/
+void db_CholeskyBacksub3x3(double x[3],const double A[9],const double d[3],const double b[3])
+{
+    /*[42 mult 30 add=72flops]*/
+    x[0]=db_SafeDivision(b[0],d[0]);
+    x[1]=db_SafeDivision((b[1]-A[3]*x[0]),d[1]);
+    x[2]=db_SafeDivision((b[2]-A[6]*x[0]-A[7]*x[1]),d[2]);
+    x[2]=db_SafeDivision(x[2],d[2]);
+    x[1]=db_SafeDivision((x[1]-A[7]*x[2]),d[1]);
+    x[0]=db_SafeDivision((x[0]-A[6]*x[2]-A[3]*x[1]),d[0]);
+}
+
+/*Backsubstitute L%transpose(L)*x=b for x given the Cholesky decomposition
+of a 6 x 6 matrix and the right hand side b. The vector b is unchanged*/
+void db_CholeskyBacksub6x6(double x[6],const double A[36],const double d[6],const double b[6])
+{
+    /*[42 mult 30 add=72flops]*/
+    x[0]=db_SafeDivision(b[0],d[0]);
+    x[1]=db_SafeDivision((b[1]-A[6]*x[0]),d[1]);
+    x[2]=db_SafeDivision((b[2]-A[12]*x[0]-A[13]*x[1]),d[2]);
+    x[3]=db_SafeDivision((b[3]-A[18]*x[0]-A[19]*x[1]-A[20]*x[2]),d[3]);
+    x[4]=db_SafeDivision((b[4]-A[24]*x[0]-A[25]*x[1]-A[26]*x[2]-A[27]*x[3]),d[4]);
+    x[5]=db_SafeDivision((b[5]-A[30]*x[0]-A[31]*x[1]-A[32]*x[2]-A[33]*x[3]-A[34]*x[4]),d[5]);
+    x[5]=db_SafeDivision(x[5],d[5]);
+    x[4]=db_SafeDivision((x[4]-A[34]*x[5]),d[4]);
+    x[3]=db_SafeDivision((x[3]-A[33]*x[5]-A[27]*x[4]),d[3]);
+    x[2]=db_SafeDivision((x[2]-A[32]*x[5]-A[26]*x[4]-A[20]*x[3]),d[2]);
+    x[1]=db_SafeDivision((x[1]-A[31]*x[5]-A[25]*x[4]-A[19]*x[3]-A[13]*x[2]),d[1]);
+    x[0]=db_SafeDivision((x[0]-A[30]*x[5]-A[24]*x[4]-A[18]*x[3]-A[12]*x[2]-A[6]*x[1]),d[0]);
+}
+
+
+void db_Orthogonalize6x7(double A[42],int orthonormalize)
+{
+    int i;
+    double ss[6];
+
+    /*Compute square sums of rows*/
+    ss[0]=db_SquareSum7(A);
+    ss[1]=db_SquareSum7(A+7);
+    ss[2]=db_SquareSum7(A+14);
+    ss[3]=db_SquareSum7(A+21);
+    ss[4]=db_SquareSum7(A+28);
+    ss[5]=db_SquareSum7(A+35);
+
+    ss[1]-=db_OrthogonalizePair7(A+7 ,A,ss[0]);
+    ss[2]-=db_OrthogonalizePair7(A+14,A,ss[0]);
+    ss[3]-=db_OrthogonalizePair7(A+21,A,ss[0]);
+    ss[4]-=db_OrthogonalizePair7(A+28,A,ss[0]);
+    ss[5]-=db_OrthogonalizePair7(A+35,A,ss[0]);
+
+    /*Pivot on largest ss (could also be done on ss/(original_ss))*/
+    i=db_MaxIndex5(ss+1);
+    db_OrthogonalizationSwap7(A+7,i,ss+1);
+
+    ss[2]-=db_OrthogonalizePair7(A+14,A+7,ss[1]);
+    ss[3]-=db_OrthogonalizePair7(A+21,A+7,ss[1]);
+    ss[4]-=db_OrthogonalizePair7(A+28,A+7,ss[1]);
+    ss[5]-=db_OrthogonalizePair7(A+35,A+7,ss[1]);
+
+    i=db_MaxIndex4(ss+2);
+    db_OrthogonalizationSwap7(A+14,i,ss+2);
+
+    ss[3]-=db_OrthogonalizePair7(A+21,A+14,ss[2]);
+    ss[4]-=db_OrthogonalizePair7(A+28,A+14,ss[2]);
+    ss[5]-=db_OrthogonalizePair7(A+35,A+14,ss[2]);
+
+    i=db_MaxIndex3(ss+3);
+    db_OrthogonalizationSwap7(A+21,i,ss+3);
+
+    ss[4]-=db_OrthogonalizePair7(A+28,A+21,ss[3]);
+    ss[5]-=db_OrthogonalizePair7(A+35,A+21,ss[3]);
+
+    i=db_MaxIndex2(ss+4);
+    db_OrthogonalizationSwap7(A+28,i,ss+4);
+
+    ss[5]-=db_OrthogonalizePair7(A+35,A+28,ss[4]);
+
+    if(orthonormalize)
+    {
+        db_MultiplyScalar7(A   ,db_SafeSqrtReciprocal(ss[0]));
+        db_MultiplyScalar7(A+7 ,db_SafeSqrtReciprocal(ss[1]));
+        db_MultiplyScalar7(A+14,db_SafeSqrtReciprocal(ss[2]));
+        db_MultiplyScalar7(A+21,db_SafeSqrtReciprocal(ss[3]));
+        db_MultiplyScalar7(A+28,db_SafeSqrtReciprocal(ss[4]));
+        db_MultiplyScalar7(A+35,db_SafeSqrtReciprocal(ss[5]));
+    }
+}
+
+void db_Orthogonalize8x9(double A[72],int orthonormalize)
+{
+    int i;
+    double ss[8];
+
+    /*Compute square sums of rows*/
+    ss[0]=db_SquareSum9(A);
+    ss[1]=db_SquareSum9(A+9);
+    ss[2]=db_SquareSum9(A+18);
+    ss[3]=db_SquareSum9(A+27);
+    ss[4]=db_SquareSum9(A+36);
+    ss[5]=db_SquareSum9(A+45);
+    ss[6]=db_SquareSum9(A+54);
+    ss[7]=db_SquareSum9(A+63);
+
+    ss[1]-=db_OrthogonalizePair9(A+9 ,A,ss[0]);
+    ss[2]-=db_OrthogonalizePair9(A+18,A,ss[0]);
+    ss[3]-=db_OrthogonalizePair9(A+27,A,ss[0]);
+    ss[4]-=db_OrthogonalizePair9(A+36,A,ss[0]);
+    ss[5]-=db_OrthogonalizePair9(A+45,A,ss[0]);
+    ss[6]-=db_OrthogonalizePair9(A+54,A,ss[0]);
+    ss[7]-=db_OrthogonalizePair9(A+63,A,ss[0]);
+
+    /*Pivot on largest ss (could also be done on ss/(original_ss))*/
+    i=db_MaxIndex7(ss+1);
+    db_OrthogonalizationSwap9(A+9,i,ss+1);
+
+    ss[2]-=db_OrthogonalizePair9(A+18,A+9,ss[1]);
+    ss[3]-=db_OrthogonalizePair9(A+27,A+9,ss[1]);
+    ss[4]-=db_OrthogonalizePair9(A+36,A+9,ss[1]);
+    ss[5]-=db_OrthogonalizePair9(A+45,A+9,ss[1]);
+    ss[6]-=db_OrthogonalizePair9(A+54,A+9,ss[1]);
+    ss[7]-=db_OrthogonalizePair9(A+63,A+9,ss[1]);
+
+    i=db_MaxIndex6(ss+2);
+    db_OrthogonalizationSwap9(A+18,i,ss+2);
+
+    ss[3]-=db_OrthogonalizePair9(A+27,A+18,ss[2]);
+    ss[4]-=db_OrthogonalizePair9(A+36,A+18,ss[2]);
+    ss[5]-=db_OrthogonalizePair9(A+45,A+18,ss[2]);
+    ss[6]-=db_OrthogonalizePair9(A+54,A+18,ss[2]);
+    ss[7]-=db_OrthogonalizePair9(A+63,A+18,ss[2]);
+
+    i=db_MaxIndex5(ss+3);
+    db_OrthogonalizationSwap9(A+27,i,ss+3);
+
+    ss[4]-=db_OrthogonalizePair9(A+36,A+27,ss[3]);
+    ss[5]-=db_OrthogonalizePair9(A+45,A+27,ss[3]);
+    ss[6]-=db_OrthogonalizePair9(A+54,A+27,ss[3]);
+    ss[7]-=db_OrthogonalizePair9(A+63,A+27,ss[3]);
+
+    i=db_MaxIndex4(ss+4);
+    db_OrthogonalizationSwap9(A+36,i,ss+4);
+
+    ss[5]-=db_OrthogonalizePair9(A+45,A+36,ss[4]);
+    ss[6]-=db_OrthogonalizePair9(A+54,A+36,ss[4]);
+    ss[7]-=db_OrthogonalizePair9(A+63,A+36,ss[4]);
+
+    i=db_MaxIndex3(ss+5);
+    db_OrthogonalizationSwap9(A+45,i,ss+5);
+
+    ss[6]-=db_OrthogonalizePair9(A+54,A+45,ss[5]);
+    ss[7]-=db_OrthogonalizePair9(A+63,A+45,ss[5]);
+
+    i=db_MaxIndex2(ss+6);
+    db_OrthogonalizationSwap9(A+54,i,ss+6);
+
+    ss[7]-=db_OrthogonalizePair9(A+63,A+54,ss[6]);
+
+    if(orthonormalize)
+    {
+        db_MultiplyScalar9(A   ,db_SafeSqrtReciprocal(ss[0]));
+        db_MultiplyScalar9(A+9 ,db_SafeSqrtReciprocal(ss[1]));
+        db_MultiplyScalar9(A+18,db_SafeSqrtReciprocal(ss[2]));
+        db_MultiplyScalar9(A+27,db_SafeSqrtReciprocal(ss[3]));
+        db_MultiplyScalar9(A+36,db_SafeSqrtReciprocal(ss[4]));
+        db_MultiplyScalar9(A+45,db_SafeSqrtReciprocal(ss[5]));
+        db_MultiplyScalar9(A+54,db_SafeSqrtReciprocal(ss[6]));
+        db_MultiplyScalar9(A+63,db_SafeSqrtReciprocal(ss[7]));
+    }
+}
+
+void db_NullVectorOrthonormal6x7(double x[7],const double A[42])
+{
+    int i;
+    double omss[7];
+    const double *B;
+
+    /*Pivot by choosing row of the identity matrix
+    (the one corresponding to column of A with smallest square sum)*/
+    omss[0]=db_SquareSum6Stride7(A);
+    omss[1]=db_SquareSum6Stride7(A+1);
+    omss[2]=db_SquareSum6Stride7(A+2);
+    omss[3]=db_SquareSum6Stride7(A+3);
+    omss[4]=db_SquareSum6Stride7(A+4);
+    omss[5]=db_SquareSum6Stride7(A+5);
+    omss[6]=db_SquareSum6Stride7(A+6);
+    i=db_MinIndex7(omss);
+    /*orthogonalize that row against all previous rows
+    and normalize it*/
+    B=A+i;
+    db_MultiplyScalarCopy7(x,A,-B[0]);
+    db_RowOperation7(x,A+7 ,B[7]);
+    db_RowOperation7(x,A+14,B[14]);
+    db_RowOperation7(x,A+21,B[21]);
+    db_RowOperation7(x,A+28,B[28]);
+    db_RowOperation7(x,A+35,B[35]);
+    x[i]+=1.0;
+    db_MultiplyScalar7(x,db_SafeSqrtReciprocal(1.0-omss[i]));
+}
+
+void db_NullVectorOrthonormal8x9(double x[9],const double A[72])
+{
+    int i;
+    double omss[9];
+    const double *B;
+
+    /*Pivot by choosing row of the identity matrix
+    (the one corresponding to column of A with smallest square sum)*/
+    omss[0]=db_SquareSum8Stride9(A);
+    omss[1]=db_SquareSum8Stride9(A+1);
+    omss[2]=db_SquareSum8Stride9(A+2);
+    omss[3]=db_SquareSum8Stride9(A+3);
+    omss[4]=db_SquareSum8Stride9(A+4);
+    omss[5]=db_SquareSum8Stride9(A+5);
+    omss[6]=db_SquareSum8Stride9(A+6);
+    omss[7]=db_SquareSum8Stride9(A+7);
+    omss[8]=db_SquareSum8Stride9(A+8);
+    i=db_MinIndex9(omss);
+    /*orthogonalize that row against all previous rows
+    and normalize it*/
+    B=A+i;
+    db_MultiplyScalarCopy9(x,A,-B[0]);
+    db_RowOperation9(x,A+9 ,B[9]);
+    db_RowOperation9(x,A+18,B[18]);
+    db_RowOperation9(x,A+27,B[27]);
+    db_RowOperation9(x,A+36,B[36]);
+    db_RowOperation9(x,A+45,B[45]);
+    db_RowOperation9(x,A+54,B[54]);
+    db_RowOperation9(x,A+63,B[63]);
+    x[i]+=1.0;
+    db_MultiplyScalar9(x,db_SafeSqrtReciprocal(1.0-omss[i]));
+}
+
diff --git a/perftests/panorama/feature_stab/db_vlvm/db_utilities_linalg.h b/perftests/panorama/feature_stab/db_vlvm/db_utilities_linalg.h
new file mode 100644
index 0000000..1f63d4e
--- /dev/null
+++ b/perftests/panorama/feature_stab/db_vlvm/db_utilities_linalg.h
@@ -0,0 +1,802 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+/* $Id: db_utilities_linalg.h,v 1.5 2011/06/17 14:03:31 mbansal Exp $ */
+
+#ifndef DB_UTILITIES_LINALG
+#define DB_UTILITIES_LINALG
+
+#include "db_utilities.h"
+
+
+
+/*****************************************************************
+*    Lean and mean begins here                                   *
+*****************************************************************/
+/*!
+ * \defgroup LMLinAlg (LM) Linear Algebra Utilities (QR factorization, orthogonal basis, etc.)
+ */
+
+/*!
+ \ingroup LMBasicUtilities
+ */
+inline void db_MultiplyScalar6(double A[6],double mult)
+{
+    (*A++) *= mult; (*A++) *= mult; (*A++) *= mult; (*A++) *= mult; (*A++) *= mult;
+    (*A++) *= mult;
+}
+/*!
+ \ingroup LMBasicUtilities
+ */
+inline void db_MultiplyScalar7(double A[7],double mult)
+{
+    (*A++) *= mult; (*A++) *= mult; (*A++) *= mult; (*A++) *= mult; (*A++) *= mult;
+    (*A++) *= mult; (*A++) *= mult;
+}
+/*!
+ \ingroup LMBasicUtilities
+ */
+inline void db_MultiplyScalar9(double A[9],double mult)
+{
+    (*A++) *= mult; (*A++) *= mult; (*A++) *= mult; (*A++) *= mult; (*A++) *= mult;
+    (*A++) *= mult; (*A++) *= mult; (*A++) *= mult; (*A++) *= mult;
+}
+
+/*!
+ \ingroup LMBasicUtilities
+ */
+inline double db_SquareSum6Stride7(const double *x)
+{
+    return(db_sqr(x[0])+db_sqr(x[7])+db_sqr(x[14])+
+        db_sqr(x[21])+db_sqr(x[28])+db_sqr(x[35]));
+}
+
+/*!
+ \ingroup LMBasicUtilities
+ */
+inline double db_SquareSum8Stride9(const double *x)
+{
+    return(db_sqr(x[0])+db_sqr(x[9])+db_sqr(x[18])+
+        db_sqr(x[27])+db_sqr(x[36])+db_sqr(x[45])+
+        db_sqr(x[54])+db_sqr(x[63]));
+}
+
+/*!
+ \ingroup LMLinAlg
+ Cholesky-factorize symmetric positive definite 6 x 6 matrix A. Upper
+part of A is used from the input. The Cholesky factor is output as
+subdiagonal part in A and diagonal in d, which is 6-dimensional
+1.9 microseconds on 450MHz*/
+DB_API void db_CholeskyDecomp6x6(double A[36],double d[6]);
+
+/*!
+ \ingroup LMLinAlg
+ Backsubstitute L%transpose(L)*x=b for x given the Cholesky decomposition
+of a 6 x 6 matrix and the right hand side b. The vector b is unchanged
+1.3 microseconds on 450MHz*/
+DB_API void db_CholeskyBacksub6x6(double x[6],const double A[36],const double d[6],const double b[6]);
+
+/*!
+ \ingroup LMLinAlg
+ Cholesky-factorize symmetric positive definite n x n matrix A.Part
+above diagonal of A is used from the input, diagonal of A is assumed to
+be stored in d. The Cholesky factor is output as
+subdiagonal part in A and diagonal in d, which is n-dimensional*/
+DB_API void db_CholeskyDecompSeparateDiagonal(double **A,double *d,int n);
+
+/*!
+ \ingroup LMLinAlg
+ Backsubstitute L%transpose(L)*x=b for x given the Cholesky decomposition
+of an n x n matrix and the right hand side b. The vector b is unchanged*/
+DB_API void db_CholeskyBacksub(double *x,const double * const *A,const double *d,int n,const double *b);
+
+/*!
+ \ingroup LMLinAlg
+ Cholesky-factorize symmetric positive definite 3 x 3 matrix A. Part
+above diagonal of A is used from the input, diagonal of A is assumed to
+be stored in d. The Cholesky factor is output as subdiagonal part in A
+and diagonal in d, which is 3-dimensional*/
+DB_API void db_CholeskyDecomp3x3SeparateDiagonal(double A[9],double d[3]);
+
+/*!
+ \ingroup LMLinAlg
+ Backsubstitute L%transpose(L)*x=b for x given the Cholesky decomposition
+of a 3 x 3 matrix and the right hand side b. The vector b is unchanged*/
+DB_API void db_CholeskyBacksub3x3(double x[3],const double A[9],const double d[3],const double b[3]);
+
+/*!
+ \ingroup LMLinAlg
+ perform A-=B*mult*/
+inline void db_RowOperation3(double A[3],const double B[3],double mult)
+{
+    *A++ -= mult*(*B++); *A++ -= mult*(*B++); *A++ -= mult*(*B++);
+}
+
+/*!
+ \ingroup LMLinAlg
+ */
+inline void db_RowOperation7(double A[7],const double B[7],double mult)
+{
+    *A++ -= mult*(*B++); *A++ -= mult*(*B++); *A++ -= mult*(*B++); *A++ -= mult*(*B++); *A++ -= mult*(*B++);
+    *A++ -= mult*(*B++); *A++ -= mult*(*B++);
+}
+
+/*!
+ \ingroup LMLinAlg
+ */
+inline void db_RowOperation9(double A[9],const double B[9],double mult)
+{
+    *A++ -= mult*(*B++); *A++ -= mult*(*B++); *A++ -= mult*(*B++); *A++ -= mult*(*B++); *A++ -= mult*(*B++);
+    *A++ -= mult*(*B++); *A++ -= mult*(*B++); *A++ -= mult*(*B++); *A++ -= mult*(*B++);
+}
+
+/*!
+ \ingroup LMBasicUtilities
+ Swap values of A[7] and B[7]
+ */
+inline void db_Swap7(double A[7],double B[7])
+{
+    double temp;
+    temp= *A; *A++ = *B; *B++ =temp;    temp= *A; *A++ = *B; *B++ =temp;    temp= *A; *A++ = *B; *B++ =temp;
+    temp= *A; *A++ = *B; *B++ =temp;    temp= *A; *A++ = *B; *B++ =temp;    temp= *A; *A++ = *B; *B++ =temp;
+    temp= *A; *A++ = *B; *B++ =temp;
+}
+
+/*!
+ \ingroup LMBasicUtilities
+ Swap values of A[9] and B[9]
+ */
+inline void db_Swap9(double A[9],double B[9])
+{
+    double temp;
+    temp= *A; *A++ = *B; *B++ =temp;    temp= *A; *A++ = *B; *B++ =temp;    temp= *A; *A++ = *B; *B++ =temp;
+    temp= *A; *A++ = *B; *B++ =temp;    temp= *A; *A++ = *B; *B++ =temp;    temp= *A; *A++ = *B; *B++ =temp;
+    temp= *A; *A++ = *B; *B++ =temp;    temp= *A; *A++ = *B; *B++ =temp;    temp= *A; *A++ = *B; *B++ =temp;
+}
+
+
+/*!
+ \ingroup LMLinAlg
+ */
+DB_API void db_Orthogonalize6x7(double A[42],int orthonormalize=0);
+
+/*!
+ \ingroup LMLinAlg
+ */
+DB_API void db_Orthogonalize8x9(double A[72],int orthonormalize=0);
+
+/*!
+ \ingroup LMLinAlg
+ */
+inline double db_OrthogonalizePair7(double *x,const double *v,double ssv)
+{
+    double m,sp,sp_m;
+
+    m=db_SafeReciprocal(ssv);
+    sp=db_ScalarProduct7(x,v);
+    sp_m=sp*m;
+    db_RowOperation7(x,v,sp_m);
+    return(sp*sp_m);
+}
+
+/*!
+ \ingroup LMLinAlg
+ */
+inline double db_OrthogonalizePair9(double *x,const double *v,double ssv)
+{
+    double m,sp,sp_m;
+
+    m=db_SafeReciprocal(ssv);
+    sp=db_ScalarProduct9(x,v);
+    sp_m=sp*m;
+    db_RowOperation9(x,v,sp_m);
+    return(sp*sp_m);
+}
+
+/*!
+ \ingroup LMLinAlg
+ */
+inline void db_OrthogonalizationSwap7(double *A,int i,double *ss)
+{
+    double temp;
+
+    db_Swap7(A,A+7*i);
+    temp=ss[0]; ss[0]=ss[i]; ss[i]=temp;
+}
+/*!
+ \ingroup LMLinAlg
+ */
+inline void db_OrthogonalizationSwap9(double *A,int i,double *ss)
+{
+    double temp;
+
+    db_Swap9(A,A+9*i);
+    temp=ss[0]; ss[0]=ss[i]; ss[i]=temp;
+}
+
+/*!
+ \ingroup LMLinAlg
+ */
+DB_API void db_NullVectorOrthonormal6x7(double x[7],const double A[42]);
+/*!
+ \ingroup LMLinAlg
+ */
+DB_API void db_NullVectorOrthonormal8x9(double x[9],const double A[72]);
+
+/*!
+ \ingroup LMLinAlg
+ */
+inline void db_NullVector6x7Destructive(double x[7],double A[42])
+{
+    db_Orthogonalize6x7(A,1);
+    db_NullVectorOrthonormal6x7(x,A);
+}
+
+/*!
+ \ingroup LMLinAlg
+ */
+inline void db_NullVector8x9Destructive(double x[9],double A[72])
+{
+    db_Orthogonalize8x9(A,1);
+    db_NullVectorOrthonormal8x9(x,A);
+}
+
+inline int db_ScalarProduct512_s(const short *f,const short *g)
+{
+#ifndef DB_USE_MMX
+    int back;
+    back=0;
+    for(int i=1; i<=512; i++)
+        back+=(*f++)*(*g++);
+
+    return(back);
+#endif
+}
+
+
+inline int db_ScalarProduct32_s(const short *f,const short *g)
+{
+#ifndef DB_USE_MMX
+    int back;
+    back=0;
+    back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++);
+    back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++);
+    back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++);
+    back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++);
+    back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++);
+    back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++);
+    back+=(*f++)*(*g++); back+=(*f++)*(*g++);
+
+    return(back);
+#endif
+}
+
+/*!
+ \ingroup LMLinAlg
+ Scalar product of 128-vectors (short)
+  Compile-time control: MMX, SSE2 or standard C
+ */
+inline int db_ScalarProduct128_s(const short *f,const short *g)
+{
+#ifndef DB_USE_MMX
+    int back;
+    back=0;
+    back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++);
+    back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++);
+    back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++);
+    back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++);
+    back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++);
+    back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++);
+    back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++);
+    back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++);
+    back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++);
+    back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++);
+
+    back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++);
+    back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++);
+    back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++);
+    back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++);
+    back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++);
+    back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++);
+    back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++);
+    back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++);
+    back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++);
+    back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++);
+
+    back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++);
+    back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++);
+    back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++);
+    back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++);
+    back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++);
+    back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++);
+
+    return(back);
+#else
+#ifdef DB_USE_SSE2
+    int back;
+
+    _asm
+    {
+        mov eax,f
+        mov ecx,g
+        /*First iteration************************************/
+        movdqa     xmm0,[eax]
+         pxor    xmm7,xmm7      /*Set xmm7 to zero*/
+        pmaddwd  xmm0,[ecx]
+         /*Stall*/
+        /*Standard iteration************************************/
+        movdqa     xmm2,[eax+16]
+         paddd   xmm7,xmm0
+        pmaddwd  xmm2,[ecx+16]
+         /*Stall*/
+        movdqa     xmm1,[eax+32]
+         paddd   xmm7,xmm2
+        pmaddwd  xmm1,[ecx+32]
+         /*Stall*/
+        /*Standard iteration************************************/
+        movdqa     xmm0,[eax+48]
+         paddd   xmm7,xmm1
+        pmaddwd  xmm0,[ecx+48]
+         /*Stall*/
+        /*Standard iteration************************************/
+        movdqa     xmm2,[eax+64]
+         paddd   xmm7,xmm0
+        pmaddwd  xmm2,[ecx+64]
+         /*Stall*/
+        movdqa     xmm1,[eax+80]
+         paddd   xmm7,xmm2
+        pmaddwd  xmm1,[ecx+80]
+         /*Stall*/
+        /*Standard iteration************************************/
+        movdqa     xmm0,[eax+96]
+         paddd   xmm7,xmm1
+        pmaddwd  xmm0,[ecx+96]
+         /*Stall*/
+        /*Standard iteration************************************/
+        movdqa     xmm2,[eax+112]
+         paddd   xmm7,xmm0
+        pmaddwd  xmm2,[ecx+112]
+         /*Stall*/
+        movdqa     xmm1,[eax+128]
+         paddd   xmm7,xmm2
+        pmaddwd  xmm1,[ecx+128]
+         /*Stall*/
+        /*Standard iteration************************************/
+        movdqa     xmm0,[eax+144]
+         paddd   xmm7,xmm1
+        pmaddwd  xmm0,[ecx+144]
+         /*Stall*/
+        /*Standard iteration************************************/
+        movdqa     xmm2,[eax+160]
+         paddd   xmm7,xmm0
+        pmaddwd  xmm2,[ecx+160]
+         /*Stall*/
+        movdqa     xmm1,[eax+176]
+         paddd   xmm7,xmm2
+        pmaddwd  xmm1,[ecx+176]
+         /*Stall*/
+        /*Standard iteration************************************/
+        movdqa     xmm0,[eax+192]
+         paddd   xmm7,xmm1
+        pmaddwd  xmm0,[ecx+192]
+         /*Stall*/
+        /*Standard iteration************************************/
+        movdqa     xmm2,[eax+208]
+         paddd   xmm7,xmm0
+        pmaddwd  xmm2,[ecx+208]
+         /*Stall*/
+        movdqa     xmm1,[eax+224]
+         paddd   xmm7,xmm2
+        pmaddwd  xmm1,[ecx+224]
+         /*Stall*/
+        /*Standard iteration************************************/
+        movdqa     xmm0,[eax+240]
+         paddd   xmm7,xmm1
+        pmaddwd  xmm0,[ecx+240]
+         /*Stall*/
+        /*Rest iteration************************************/
+        paddd    xmm7,xmm0
+
+        /* add up the sum squares */
+        movhlps     xmm0,xmm7   /* high half to low half */
+        paddd       xmm7,xmm0   /* add high to low */
+        pshuflw     xmm0,xmm7, 0xE /* reshuffle */
+        paddd       xmm7,xmm0   /* add remaining */
+        movd        back,xmm7
+
+        emms
+    }
+
+    return(back);
+#else
+    int back;
+
+    _asm
+    {
+        mov eax,f
+        mov ecx,g
+        /*First iteration************************************/
+        movq     mm0,[eax]
+         pxor    mm7,mm7      /*Set mm7 to zero*/
+        pmaddwd  mm0,[ecx]
+         /*Stall*/
+        movq     mm1,[eax+8]
+         /*Stall*/
+        pmaddwd  mm1,[ecx+8]
+         /*Stall*/
+        /*Standard iteration************************************/
+        movq     mm2,[eax+16]
+         paddd   mm7,mm0
+        pmaddwd  mm2,[ecx+16]
+         /*Stall*/
+        movq     mm0,[eax+24]
+         paddd   mm7,mm1
+        pmaddwd  mm0,[ecx+24]
+         /*Stall*/
+        movq     mm1,[eax+32]
+         paddd   mm7,mm2
+        pmaddwd  mm1,[ecx+32]
+         /*Stall*/
+        /*Standard iteration************************************/
+        movq     mm2,[eax+40]
+         paddd   mm7,mm0
+        pmaddwd  mm2,[ecx+40]
+         /*Stall*/
+        movq     mm0,[eax+48]
+         paddd   mm7,mm1
+        pmaddwd  mm0,[ecx+48]
+         /*Stall*/
+        movq     mm1,[eax+56]
+         paddd   mm7,mm2
+        pmaddwd  mm1,[ecx+56]
+         /*Stall*/
+        /*Standard iteration************************************/
+        movq     mm2,[eax+64]
+         paddd   mm7,mm0
+        pmaddwd  mm2,[ecx+64]
+         /*Stall*/
+        movq     mm0,[eax+72]
+         paddd   mm7,mm1
+        pmaddwd  mm0,[ecx+72]
+         /*Stall*/
+        movq     mm1,[eax+80]
+         paddd   mm7,mm2
+        pmaddwd  mm1,[ecx+80]
+         /*Stall*/
+        /*Standard iteration************************************/
+        movq     mm2,[eax+88]
+         paddd   mm7,mm0
+        pmaddwd  mm2,[ecx+88]
+         /*Stall*/
+        movq     mm0,[eax+96]
+         paddd   mm7,mm1
+        pmaddwd  mm0,[ecx+96]
+         /*Stall*/
+        movq     mm1,[eax+104]
+         paddd   mm7,mm2
+        pmaddwd  mm1,[ecx+104]
+         /*Stall*/
+        /*Standard iteration************************************/
+        movq     mm2,[eax+112]
+         paddd   mm7,mm0
+        pmaddwd  mm2,[ecx+112]
+         /*Stall*/
+        movq     mm0,[eax+120]
+         paddd   mm7,mm1
+        pmaddwd  mm0,[ecx+120]
+         /*Stall*/
+        movq     mm1,[eax+128]
+         paddd   mm7,mm2
+        pmaddwd  mm1,[ecx+128]
+         /*Stall*/
+        /*Standard iteration************************************/
+        movq     mm2,[eax+136]
+         paddd   mm7,mm0
+        pmaddwd  mm2,[ecx+136]
+         /*Stall*/
+        movq     mm0,[eax+144]
+         paddd   mm7,mm1
+        pmaddwd  mm0,[ecx+144]
+         /*Stall*/
+        movq     mm1,[eax+152]
+         paddd   mm7,mm2
+        pmaddwd  mm1,[ecx+152]
+         /*Stall*/
+        /*Standard iteration************************************/
+        movq     mm2,[eax+160]
+         paddd   mm7,mm0
+        pmaddwd  mm2,[ecx+160]
+         /*Stall*/
+        movq     mm0,[eax+168]
+         paddd   mm7,mm1
+        pmaddwd  mm0,[ecx+168]
+         /*Stall*/
+        movq     mm1,[eax+176]
+         paddd   mm7,mm2
+        pmaddwd  mm1,[ecx+176]
+         /*Stall*/
+        /*Standard iteration************************************/
+        movq     mm2,[eax+184]
+         paddd   mm7,mm0
+        pmaddwd  mm2,[ecx+184]
+         /*Stall*/
+        movq     mm0,[eax+192]
+         paddd   mm7,mm1
+        pmaddwd  mm0,[ecx+192]
+         /*Stall*/
+        movq     mm1,[eax+200]
+         paddd   mm7,mm2
+        pmaddwd  mm1,[ecx+200]
+         /*Stall*/
+        /*Standard iteration************************************/
+        movq     mm2,[eax+208]
+         paddd   mm7,mm0
+        pmaddwd  mm2,[ecx+208]
+         /*Stall*/
+        movq     mm0,[eax+216]
+         paddd   mm7,mm1
+        pmaddwd  mm0,[ecx+216]
+         /*Stall*/
+        movq     mm1,[eax+224]
+         paddd   mm7,mm2
+        pmaddwd  mm1,[ecx+224]
+         /*Stall*/
+        /*Standard iteration************************************/
+        movq     mm2,[eax+232]
+         paddd   mm7,mm0
+        pmaddwd  mm2,[ecx+232]
+         /*Stall*/
+        movq     mm0,[eax+240]
+         paddd   mm7,mm1
+        pmaddwd  mm0,[ecx+240]
+         /*Stall*/
+        movq     mm1,[eax+248]
+         paddd   mm7,mm2
+        pmaddwd  mm1,[ecx+248]
+         /*Stall*/
+        /*Rest iteration************************************/
+        paddd    mm7,mm0
+         /*Stall*/
+        /*Stall*/
+         /*Stall*/
+        paddd    mm7,mm1
+         /*Stall*/
+        movq     mm0,mm7
+         psrlq   mm7,32
+        paddd    mm0,mm7
+         /*Stall*/
+        /*Stall*/
+         /*Stall*/
+        movd     back,mm0
+        emms
+    }
+
+    return(back);
+#endif
+#endif /*DB_USE_MMX*/
+}
+
+/*!
+ \ingroup LMLinAlg
+ Scalar product of 16 byte aligned 128-vectors (float).
+  Compile-time control: SIMD (SSE) or standard C.
+ */
+inline float db_ScalarProduct128Aligned16_f(const float *f,const float *g)
+{
+#ifndef DB_USE_SIMD
+    float back;
+    back=0.0;
+    back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++);
+    back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++);
+    back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++);
+    back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++);
+    back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++);
+    back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++);
+    back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++);
+    back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++);
+    back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++);
+    back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++);
+
+    back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++);
+    back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++);
+    back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++);
+    back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++);
+    back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++);
+    back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++);
+    back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++);
+    back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++);
+    back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++);
+    back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++);
+
+    back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++);
+    back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++);
+    back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++);
+    back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++);
+    back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++);
+    back+=(*f++)*(*g++); back+=(*f++)*(*g++); back+=(*f++)*(*g++);
+
+    return(back);
+#else
+    float back;
+
+    _asm
+    {
+        mov eax,f
+        mov ecx,g
+        /*First iteration************************************/
+        movaps     xmm0,[eax]
+         xorps      xmm7,xmm7       /*Set mm7 to zero*/
+        mulps      xmm0,[ecx]
+         /*Stall*/
+        movaps     xmm1,[eax+16]
+         /*Stall*/
+        mulps      xmm1,[ecx+16]
+         /*Stall*/
+        /*Standard iteration************************************/
+        movaps     xmm2,[eax+32]
+         addps      xmm7,xmm0
+        mulps      xmm2,[ecx+32]
+         /*Stall*/
+        movaps     xmm0,[eax+48]
+         addps      xmm7,xmm1
+        mulps      xmm0,[ecx+48]
+         /*Stall*/
+        movaps     xmm1,[eax+64]
+         addps      xmm7,xmm2
+        mulps      xmm1,[ecx+64]
+         /*Stall*/
+        /*Standard iteration************************************/
+        movaps     xmm2,[eax+80]
+         addps      xmm7,xmm0
+        mulps      xmm2,[ecx+80]
+         /*Stall*/
+        movaps     xmm0,[eax+96]
+         addps      xmm7,xmm1
+        mulps      xmm0,[ecx+96]
+         /*Stall*/
+        movaps     xmm1,[eax+112]
+         addps      xmm7,xmm2
+        mulps      xmm1,[ecx+112]
+         /*Stall*/
+        /*Standard iteration************************************/
+        movaps     xmm2,[eax+128]
+         addps      xmm7,xmm0
+        mulps      xmm2,[ecx+128]
+         /*Stall*/
+        movaps     xmm0,[eax+144]
+         addps      xmm7,xmm1
+        mulps      xmm0,[ecx+144]
+         /*Stall*/
+        movaps     xmm1,[eax+160]
+         addps      xmm7,xmm2
+        mulps      xmm1,[ecx+160]
+         /*Stall*/
+        /*Standard iteration************************************/
+        movaps     xmm2,[eax+176]
+         addps      xmm7,xmm0
+        mulps      xmm2,[ecx+176]
+         /*Stall*/
+        movaps     xmm0,[eax+192]
+         addps      xmm7,xmm1
+        mulps      xmm0,[ecx+192]
+         /*Stall*/
+        movaps     xmm1,[eax+208]
+         addps      xmm7,xmm2
+        mulps      xmm1,[ecx+208]
+         /*Stall*/
+        /*Standard iteration************************************/
+        movaps     xmm2,[eax+224]
+         addps      xmm7,xmm0
+        mulps      xmm2,[ecx+224]
+         /*Stall*/
+        movaps     xmm0,[eax+240]
+         addps      xmm7,xmm1
+        mulps      xmm0,[ecx+240]
+         /*Stall*/
+        movaps     xmm1,[eax+256]
+         addps      xmm7,xmm2
+        mulps      xmm1,[ecx+256]
+         /*Stall*/
+        /*Standard iteration************************************/
+        movaps     xmm2,[eax+272]
+         addps      xmm7,xmm0
+        mulps      xmm2,[ecx+272]
+         /*Stall*/
+        movaps     xmm0,[eax+288]
+         addps      xmm7,xmm1
+        mulps      xmm0,[ecx+288]
+         /*Stall*/
+        movaps     xmm1,[eax+304]
+         addps      xmm7,xmm2
+        mulps      xmm1,[ecx+304]
+         /*Stall*/
+        /*Standard iteration************************************/
+        movaps     xmm2,[eax+320]
+         addps      xmm7,xmm0
+        mulps      xmm2,[ecx+320]
+         /*Stall*/
+        movaps     xmm0,[eax+336]
+         addps      xmm7,xmm1
+        mulps      xmm0,[ecx+336]
+         /*Stall*/
+        movaps     xmm1,[eax+352]
+         addps      xmm7,xmm2
+        mulps      xmm1,[ecx+352]
+         /*Stall*/
+        /*Standard iteration************************************/
+        movaps     xmm2,[eax+368]
+         addps      xmm7,xmm0
+        mulps      xmm2,[ecx+368]
+         /*Stall*/
+        movaps     xmm0,[eax+384]
+         addps      xmm7,xmm1
+        mulps      xmm0,[ecx+384]
+         /*Stall*/
+        movaps     xmm1,[eax+400]
+         addps      xmm7,xmm2
+        mulps      xmm1,[ecx+400]
+         /*Stall*/
+        /*Standard iteration************************************/
+        movaps     xmm2,[eax+416]
+         addps      xmm7,xmm0
+        mulps      xmm2,[ecx+416]
+         /*Stall*/
+        movaps     xmm0,[eax+432]
+         addps      xmm7,xmm1
+        mulps      xmm0,[ecx+432]
+         /*Stall*/
+        movaps     xmm1,[eax+448]
+         addps      xmm7,xmm2
+        mulps      xmm1,[ecx+448]
+         /*Stall*/
+        /*Standard iteration************************************/
+        movaps     xmm2,[eax+464]
+         addps      xmm7,xmm0
+        mulps      xmm2,[ecx+464]
+         /*Stall*/
+        movaps     xmm0,[eax+480]
+         addps      xmm7,xmm1
+        mulps      xmm0,[ecx+480]
+         /*Stall*/
+        movaps     xmm1,[eax+496]
+         addps      xmm7,xmm2
+        mulps      xmm1,[ecx+496]
+         /*Stall*/
+        /*Rest iteration************************************/
+        addps      xmm7,xmm0
+         /*Stall*/
+        addps      xmm7,xmm1
+         /*Stall*/
+        movaps xmm6,xmm7
+         /*Stall*/
+        shufps xmm6,xmm6,4Eh
+         /*Stall*/
+        addps  xmm7,xmm6
+         /*Stall*/
+        movaps xmm6,xmm7
+         /*Stall*/
+        shufps xmm6,xmm6,11h
+         /*Stall*/
+        addps  xmm7,xmm6
+         /*Stall*/
+        movss  back,xmm7
+    }
+
+    return(back);
+#endif /*DB_USE_SIMD*/
+}
+
+#endif /* DB_UTILITIES_LINALG */
diff --git a/perftests/panorama/feature_stab/db_vlvm/db_utilities_poly.cpp b/perftests/panorama/feature_stab/db_vlvm/db_utilities_poly.cpp
new file mode 100644
index 0000000..013ac72
--- /dev/null
+++ b/perftests/panorama/feature_stab/db_vlvm/db_utilities_poly.cpp
@@ -0,0 +1,235 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+/* $Id: db_utilities_poly.cpp,v 1.2 2010/09/03 12:00:10 bsouthall Exp $ */
+
+#include "db_utilities_poly.h"
+#include "db_utilities.h"
+
+
+
+/*****************************************************************
+*    Lean and mean begins here                                   *
+*****************************************************************/
+
+void db_SolveCubic(double *roots,int *nr_roots,double a,double b,double c,double d)
+{
+    double bp,bp2,cp,dp,q,r,srq;
+    double r2_min_q3,theta,bp_through3,theta_through3;
+    double cos_theta_through3,sin_theta_through3,min2_cos_theta_plu,min2_cos_theta_min;
+    double si_r_srq,A;
+
+    /*For nondegenerate cubics with three roots
+    [24 mult 9 add 2sqrt 1acos 1cos=33flops 4func]
+    For nondegenerate cubics with one root
+    [16 mult 6 add 1sqrt 1qbrt=24flops 3func]*/
+
+    if(a==0.0) db_SolveQuadratic(roots,nr_roots,b,c,d);
+    else
+    {
+        bp=b/a;
+        bp2=bp*bp;
+        cp=c/a;
+        dp=d/a;
+
+        q=(bp2-3.0*cp)/9.0;
+        r=(2.0*bp2*bp-9.0*bp*cp+27.0*dp)/54.0;
+        r2_min_q3=r*r-q*q*q;
+        if(r2_min_q3<0.0)
+        {
+            *nr_roots=3;
+            /*q has to be > 0*/
+            srq=sqrt(q);
+            theta=acos(db_maxd(-1.0,db_mind(1.0,r/(q*srq))));
+            bp_through3=bp/3.0;
+            theta_through3=theta/3.0;
+            cos_theta_through3=cos(theta_through3);
+            sin_theta_through3=sqrt(db_maxd(0.0,1.0-cos_theta_through3*cos_theta_through3));
+
+            /*cos(theta_through3+2*pi/3)=cos_theta_through3*cos(2*pi/3)-sin_theta_through3*sin(2*pi/3)
+            = -0.5*cos_theta_through3-sqrt(3)/2.0*sin_theta_through3
+            = -0.5*(cos_theta_through3+sqrt(3)*sin_theta_through3)*/
+            min2_cos_theta_plu=cos_theta_through3+DB_SQRT3*sin_theta_through3;
+            min2_cos_theta_min=cos_theta_through3-DB_SQRT3*sin_theta_through3;
+
+            roots[0]= -2.0*srq*cos_theta_through3-bp_through3;
+            roots[1]=srq*min2_cos_theta_plu-bp_through3;
+            roots[2]=srq*min2_cos_theta_min-bp_through3;
+        }
+        else if(r2_min_q3>0.0)
+        {
+            *nr_roots=1;
+            A= -db_sign(r)*db_CubRoot(db_absd(r)+sqrt(r2_min_q3));
+            bp_through3=bp/3.0;
+            if(A!=0.0) roots[0]=A+q/A-bp_through3;
+            else roots[0]= -bp_through3;
+        }
+        else
+        {
+            *nr_roots=2;
+            bp_through3=bp/3.0;
+            /*q has to be >= 0*/
+            si_r_srq=db_sign(r)*sqrt(q);
+            /*Single root*/
+            roots[0]= -2.0*si_r_srq-bp_through3;
+            /*Double root*/
+            roots[1]=si_r_srq-bp_through3;
+        }
+    }
+}
+
+void db_SolveQuartic(double *roots,int *nr_roots,double a,double b,double c,double d,double e)
+{
+    /*Normalized coefficients*/
+    double c0,c1,c2,c3;
+    /*Temporary coefficients*/
+    double c3through2,c3through4,c3c3through4_min_c2,min4_c0;
+    double lz,ms,ns,mn,m,n,lz_through2;
+    /*Cubic polynomial roots, nr of roots and coefficients*/
+    double c_roots[3];
+    int nr_c_roots;
+    double k0,k1;
+    /*nr additional roots from second quadratic*/
+    int addroots;
+
+    /*For nondegenerate quartics
+    [16mult 11add 2sqrt 1cubic 2quadratic=74flops 8funcs]*/
+
+    if(a==0.0) db_SolveCubic(roots,nr_roots,b,c,d,e);
+    else if(e==0.0)
+    {
+        db_SolveCubic(roots,nr_roots,a,b,c,d);
+        roots[*nr_roots]=0.0;
+        *nr_roots+=1;
+    }
+    else
+    {
+        /*Compute normalized coefficients*/
+        c3=b/a;
+        c2=c/a;
+        c1=d/a;
+        c0=e/a;
+        /*Compute temporary coefficients*/
+        c3through2=c3/2.0;
+        c3through4=c3/4.0;
+        c3c3through4_min_c2=c3*c3through4-c2;
+        min4_c0= -4.0*c0;
+        /*Compute coefficients of cubic*/
+        k0=min4_c0*c3c3through4_min_c2-c1*c1;
+        k1=c1*c3+min4_c0;
+        /*k2= -c2*/
+        /*k3=1.0*/
+
+        /*Solve it for roots*/
+        db_SolveCubic(c_roots,&nr_c_roots,1.0,-c2,k1,k0);
+
+        if(nr_c_roots>0)
+        {
+            lz=c_roots[0];
+            lz_through2=lz/2.0;
+            ms=lz+c3c3through4_min_c2;
+            ns=lz_through2*lz_through2-c0;
+            mn=lz*c3through4-c1/2.0;
+
+            if((ms>=0.0)&&(ns>=0.0))
+            {
+                m=sqrt(ms);
+                n=sqrt(ns)*db_sign(mn);
+
+                db_SolveQuadratic(roots,nr_roots,
+                    1.0,c3through2+m,lz_through2+n);
+
+                db_SolveQuadratic(&roots[*nr_roots],&addroots,
+                    1.0,c3through2-m,lz_through2-n);
+
+                *nr_roots+=addroots;
+            }
+            else *nr_roots=0;
+        }
+        else *nr_roots=0;
+    }
+}
+
+void db_SolveQuarticForced(double *roots,int *nr_roots,double a,double b,double c,double d,double e)
+{
+    /*Normalized coefficients*/
+    double c0,c1,c2,c3;
+    /*Temporary coefficients*/
+    double c3through2,c3through4,c3c3through4_min_c2,min4_c0;
+    double lz,ms,ns,mn,m,n,lz_through2;
+    /*Cubic polynomial roots, nr of roots and coefficients*/
+    double c_roots[3];
+    int nr_c_roots;
+    double k0,k1;
+    /*nr additional roots from second quadratic*/
+    int addroots;
+
+    /*For nondegenerate quartics
+    [16mult 11add 2sqrt 1cubic 2quadratic=74flops 8funcs]*/
+
+    if(a==0.0) db_SolveCubic(roots,nr_roots,b,c,d,e);
+    else if(e==0.0)
+    {
+        db_SolveCubic(roots,nr_roots,a,b,c,d);
+        roots[*nr_roots]=0.0;
+        *nr_roots+=1;
+    }
+    else
+    {
+        /*Compute normalized coefficients*/
+        c3=b/a;
+        c2=c/a;
+        c1=d/a;
+        c0=e/a;
+        /*Compute temporary coefficients*/
+        c3through2=c3/2.0;
+        c3through4=c3/4.0;
+        c3c3through4_min_c2=c3*c3through4-c2;
+        min4_c0= -4.0*c0;
+        /*Compute coefficients of cubic*/
+        k0=min4_c0*c3c3through4_min_c2-c1*c1;
+        k1=c1*c3+min4_c0;
+        /*k2= -c2*/
+        /*k3=1.0*/
+
+        /*Solve it for roots*/
+        db_SolveCubic(c_roots,&nr_c_roots,1.0,-c2,k1,k0);
+
+        if(nr_c_roots>0)
+        {
+            lz=c_roots[0];
+            lz_through2=lz/2.0;
+            ms=lz+c3c3through4_min_c2;
+            ns=lz_through2*lz_through2-c0;
+            mn=lz*c3through4-c1/2.0;
+
+            if(ms<0.0) ms=0.0;
+            if(ns<0.0) ns=0.0;
+
+            m=sqrt(ms);
+            n=sqrt(ns)*db_sign(mn);
+
+            db_SolveQuadratic(roots,nr_roots,
+                1.0,c3through2+m,lz_through2+n);
+
+            db_SolveQuadratic(&roots[*nr_roots],&addroots,
+                1.0,c3through2-m,lz_through2-n);
+
+            *nr_roots+=addroots;
+        }
+        else *nr_roots=0;
+    }
+}
diff --git a/perftests/panorama/feature_stab/db_vlvm/db_utilities_poly.h b/perftests/panorama/feature_stab/db_vlvm/db_utilities_poly.h
new file mode 100644
index 0000000..1f87890
--- /dev/null
+++ b/perftests/panorama/feature_stab/db_vlvm/db_utilities_poly.h
@@ -0,0 +1,383 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+/* $Id: db_utilities_poly.h,v 1.2 2010/09/03 12:00:11 bsouthall Exp $ */
+
+#ifndef DB_UTILITIES_POLY
+#define DB_UTILITIES_POLY
+
+#include "db_utilities.h"
+
+
+
+/*****************************************************************
+*    Lean and mean begins here                                   *
+*****************************************************************/
+/*!
+ * \defgroup LMPolynomial (LM) Polynomial utilities (solvers, arithmetic, evaluation, etc.)
+ */
+/*\{*/
+
+/*!
+In debug mode closed form quadratic solving takes on the order of 15 microseconds
+while eig of the companion matrix takes about 1.1 milliseconds
+Speed-optimized code in release mode solves a quadratic in 0.3 microseconds on 450MHz
+*/
+inline void db_SolveQuadratic(double *roots,int *nr_roots,double a,double b,double c)
+{
+    double rs,srs,q;
+
+    /*For non-degenerate quadratics
+    [5 mult 2 add 1 sqrt=7flops 1func]*/
+    if(a==0.0)
+    {
+        if(b==0.0) *nr_roots=0;
+        else
+        {
+            roots[0]= -c/b;
+            *nr_roots=1;
+        }
+    }
+    else
+    {
+        rs=b*b-4.0*a*c;
+        if(rs>=0.0)
+        {
+            *nr_roots=2;
+            srs=sqrt(rs);
+            q= -0.5*(b+db_sign(b)*srs);
+            roots[0]=q/a;
+            /*If b is zero db_sign(b) returns 1,
+            so q is only zero when b=0 and c=0*/
+            if(q==0.0) *nr_roots=1;
+            else roots[1]=c/q;
+        }
+        else *nr_roots=0;
+    }
+}
+
+/*!
+In debug mode closed form cubic solving takes on the order of 45 microseconds
+while eig of the companion matrix takes about 1.3 milliseconds
+Speed-optimized code in release mode solves a cubic in 1.5 microseconds on 450MHz
+For a non-degenerate cubic with two roots, the first root is the single root and
+the second root is the double root
+*/
+DB_API void db_SolveCubic(double *roots,int *nr_roots,double a,double b,double c,double d);
+/*!
+In debug mode closed form quartic solving takes on the order of 0.1 milliseconds
+while eig of the companion matrix takes about 1.5 milliseconds
+Speed-optimized code in release mode solves a quartic in 2.6 microseconds on 450MHz*/
+DB_API void db_SolveQuartic(double *roots,int *nr_roots,double a,double b,double c,double d,double e);
+/*!
+Quartic solving where a solution is forced when splitting into quadratics, which
+can be good if the quartic is sometimes in fact a quadratic, such as in absolute orientation
+when the data is planar*/
+DB_API void db_SolveQuarticForced(double *roots,int *nr_roots,double a,double b,double c,double d,double e);
+
+inline double db_PolyEval1(const double p[2],double x)
+{
+    return(p[0]+x*p[1]);
+}
+
+inline void db_MultiplyPoly1_1(double *d,const double *a,const double *b)
+{
+    double a0,a1;
+    double b0,b1;
+    a0=a[0];a1=a[1];
+    b0=b[0];b1=b[1];
+
+    d[0]=a0*b0;
+    d[1]=a0*b1+a1*b0;
+    d[2]=      a1*b1;
+}
+
+inline void db_MultiplyPoly0_2(double *d,const double *a,const double *b)
+{
+    double a0;
+    double b0,b1,b2;
+    a0=a[0];
+    b0=b[0];b1=b[1];b2=b[2];
+
+    d[0]=a0*b0;
+    d[1]=a0*b1;
+    d[2]=a0*b2;
+}
+
+inline void db_MultiplyPoly1_2(double *d,const double *a,const double *b)
+{
+    double a0,a1;
+    double b0,b1,b2;
+    a0=a[0];a1=a[1];
+    b0=b[0];b1=b[1];b2=b[2];
+
+    d[0]=a0*b0;
+    d[1]=a0*b1+a1*b0;
+    d[2]=a0*b2+a1*b1;
+    d[3]=      a1*b2;
+}
+
+
+inline void db_MultiplyPoly1_3(double *d,const double *a,const double *b)
+{
+    double a0,a1;
+    double b0,b1,b2,b3;
+    a0=a[0];a1=a[1];
+    b0=b[0];b1=b[1];b2=b[2];b3=b[3];
+
+    d[0]=a0*b0;
+    d[1]=a0*b1+a1*b0;
+    d[2]=a0*b2+a1*b1;
+    d[3]=a0*b3+a1*b2;
+    d[4]=      a1*b3;
+}
+/*!
+Multiply d=a*b where a is one degree and b is two degree*/
+inline void db_AddPolyProduct0_1(double *d,const double *a,const double *b)
+{
+    double a0;
+    double b0,b1;
+    a0=a[0];
+    b0=b[0];b1=b[1];
+
+    d[0]+=a0*b0;
+    d[1]+=a0*b1;
+}
+inline void db_AddPolyProduct0_2(double *d,const double *a,const double *b)
+{
+    double a0;
+    double b0,b1,b2;
+    a0=a[0];
+    b0=b[0];b1=b[1];b2=b[2];
+
+    d[0]+=a0*b0;
+    d[1]+=a0*b1;
+    d[2]+=a0*b2;
+}
+/*!
+Multiply d=a*b where a is one degree and b is two degree*/
+inline void db_SubtractPolyProduct0_0(double *d,const double *a,const double *b)
+{
+    double a0;
+    double b0;
+    a0=a[0];
+    b0=b[0];
+
+    d[0]-=a0*b0;
+}
+
+inline void db_SubtractPolyProduct0_1(double *d,const double *a,const double *b)
+{
+    double a0;
+    double b0,b1;
+    a0=a[0];
+    b0=b[0];b1=b[1];
+
+    d[0]-=a0*b0;
+    d[1]-=a0*b1;
+}
+
+inline void db_SubtractPolyProduct0_2(double *d,const double *a,const double *b)
+{
+    double a0;
+    double b0,b1,b2;
+    a0=a[0];
+    b0=b[0];b1=b[1];b2=b[2];
+
+    d[0]-=a0*b0;
+    d[1]-=a0*b1;
+    d[2]-=a0*b2;
+}
+
+inline void db_SubtractPolyProduct1_3(double *d,const double *a,const double *b)
+{
+    double a0,a1;
+    double b0,b1,b2,b3;
+    a0=a[0];a1=a[1];
+    b0=b[0];b1=b[1];b2=b[2];b3=b[3];
+
+    d[0]-=a0*b0;
+    d[1]-=a0*b1+a1*b0;
+    d[2]-=a0*b2+a1*b1;
+    d[3]-=a0*b3+a1*b2;
+    d[4]-=      a1*b3;
+}
+
+inline void    db_CharacteristicPolynomial4x4(double p[5],const double A[16])
+{
+    /*All two by two determinants of the first two rows*/
+    double two01[3],two02[3],two03[3],two12[3],two13[3],two23[3];
+    /*Polynomials representing third and fourth row of A*/
+    double P0[2],P1[2],P2[2],P3[2];
+    double P4[2],P5[2],P6[2],P7[2];
+    /*All three by three determinants of the first three rows*/
+    double neg_three0[4],neg_three1[4],three2[4],three3[4];
+
+    /*Compute 2x2 determinants*/
+    two01[0]=A[0]*A[5]-A[1]*A[4];
+    two01[1]= -(A[0]+A[5]);
+    two01[2]=1.0;
+
+    two02[0]=A[0]*A[6]-A[2]*A[4];
+    two02[1]= -A[6];
+
+    two03[0]=A[0]*A[7]-A[3]*A[4];
+    two03[1]= -A[7];
+
+    two12[0]=A[1]*A[6]-A[2]*A[5];
+    two12[1]=A[2];
+
+    two13[0]=A[1]*A[7]-A[3]*A[5];
+    two13[1]=A[3];
+
+    two23[0]=A[2]*A[7]-A[3]*A[6];
+
+    P0[0]=A[8];
+    P1[0]=A[9];
+    P2[0]=A[10];P2[1]= -1.0;
+    P3[0]=A[11];
+
+    P4[0]=A[12];
+    P5[0]=A[13];
+    P6[0]=A[14];
+    P7[0]=A[15];P7[1]= -1.0;
+
+    /*Compute 3x3 determinants.Note that the highest
+    degree polynomial goes first and the smaller ones
+    are added or subtracted from it*/
+    db_MultiplyPoly1_1(       neg_three0,P2,two13);
+    db_SubtractPolyProduct0_0(neg_three0,P1,two23);
+    db_SubtractPolyProduct0_1(neg_three0,P3,two12);
+
+    db_MultiplyPoly1_1(       neg_three1,P2,two03);
+    db_SubtractPolyProduct0_1(neg_three1,P3,two02);
+    db_SubtractPolyProduct0_0(neg_three1,P0,two23);
+
+    db_MultiplyPoly0_2(       three2,P3,two01);
+    db_AddPolyProduct0_1(     three2,P0,two13);
+    db_SubtractPolyProduct0_1(three2,P1,two03);
+
+    db_MultiplyPoly1_2(       three3,P2,two01);
+    db_AddPolyProduct0_1(     three3,P0,two12);
+    db_SubtractPolyProduct0_1(three3,P1,two02);
+
+    /*Compute 4x4 determinants*/
+    db_MultiplyPoly1_3(       p,P7,three3);
+    db_AddPolyProduct0_2(     p,P4,neg_three0);
+    db_SubtractPolyProduct0_2(p,P5,neg_three1);
+    db_SubtractPolyProduct0_2(p,P6,three2);
+}
+
+inline void db_RealEigenvalues4x4(double lambda[4],int *nr_roots,const double A[16],int forced=0)
+{
+    double p[5];
+
+    db_CharacteristicPolynomial4x4(p,A);
+    if(forced) db_SolveQuarticForced(lambda,nr_roots,p[4],p[3],p[2],p[1],p[0]);
+     else db_SolveQuartic(lambda,nr_roots,p[4],p[3],p[2],p[1],p[0]);
+}
+
+/*!
+Compute the unit norm eigenvector v of the matrix A corresponding
+to the eigenvalue lambda
+[96mult 60add 1sqrt=156flops 1sqrt]*/
+inline void db_EigenVector4x4(double v[4],double lambda,const double A[16])
+{
+    double a0,a5,a10,a15;
+    double d01,d02,d03,d12,d13,d23;
+    double e01,e02,e03,e12,e13,e23;
+    double C[16],n0,n1,n2,n3,m;
+
+    /*Compute diagonal
+    [4add=4flops]*/
+    a0=A[0]-lambda;
+    a5=A[5]-lambda;
+    a10=A[10]-lambda;
+    a15=A[15]-lambda;
+
+    /*Compute 2x2 determinants of rows 1,2 and 3,4
+    [24mult 12add=36flops]*/
+    d01=a0*a5    -A[1]*A[4];
+    d02=a0*A[6]  -A[2]*A[4];
+    d03=a0*A[7]  -A[3]*A[4];
+    d12=A[1]*A[6]-A[2]*a5;
+    d13=A[1]*A[7]-A[3]*a5;
+    d23=A[2]*A[7]-A[3]*A[6];
+
+    e01=A[8]*A[13]-A[9] *A[12];
+    e02=A[8]*A[14]-a10  *A[12];
+    e03=A[8]*a15  -A[11]*A[12];
+    e12=A[9]*A[14]-a10  *A[13];
+    e13=A[9]*a15  -A[11]*A[13];
+    e23=a10 *a15  -A[11]*A[14];
+
+    /*Compute matrix of cofactors
+    [48mult 32 add=80flops*/
+    C[0]=  (a5  *e23-A[6]*e13+A[7]*e12);
+    C[1]= -(A[4]*e23-A[6]*e03+A[7]*e02);
+    C[2]=  (A[4]*e13-a5  *e03+A[7]*e01);
+    C[3]= -(A[4]*e12-a5  *e02+A[6]*e01);
+
+    C[4]= -(A[1]*e23-A[2]*e13+A[3]*e12);
+    C[5]=  (a0  *e23-A[2]*e03+A[3]*e02);
+    C[6]= -(a0  *e13-A[1]*e03+A[3]*e01);
+    C[7]=  (a0  *e12-A[1]*e02+A[2]*e01);
+
+    C[8]=   (A[13]*d23-A[14]*d13+a15  *d12);
+    C[9]=  -(A[12]*d23-A[14]*d03+a15  *d02);
+    C[10]=  (A[12]*d13-A[13]*d03+a15  *d01);
+    C[11]= -(A[12]*d12-A[13]*d02+A[14]*d01);
+
+    C[12]= -(A[9]*d23-a10 *d13+A[11]*d12);
+    C[13]=  (A[8]*d23-a10 *d03+A[11]*d02);
+    C[14]= -(A[8]*d13-A[9]*d03+A[11]*d01);
+    C[15]=  (A[8]*d12-A[9]*d02+a10  *d01);
+
+    /*Compute square sums of rows
+    [16mult 12add=28flops*/
+    n0=db_sqr(C[0]) +db_sqr(C[1]) +db_sqr(C[2]) +db_sqr(C[3]);
+    n1=db_sqr(C[4]) +db_sqr(C[5]) +db_sqr(C[6]) +db_sqr(C[7]);
+    n2=db_sqr(C[8]) +db_sqr(C[9]) +db_sqr(C[10])+db_sqr(C[11]);
+    n3=db_sqr(C[12])+db_sqr(C[13])+db_sqr(C[14])+db_sqr(C[15]);
+
+    /*Take the largest norm row and normalize
+    [4mult 1 sqrt=4flops 1sqrt]*/
+    if(n0>=n1 && n0>=n2 && n0>=n3)
+    {
+        m=db_SafeReciprocal(sqrt(n0));
+        db_MultiplyScalarCopy4(v,C,m);
+    }
+    else if(n1>=n2 && n1>=n3)
+    {
+        m=db_SafeReciprocal(sqrt(n1));
+        db_MultiplyScalarCopy4(v,&(C[4]),m);
+    }
+    else if(n2>=n3)
+    {
+        m=db_SafeReciprocal(sqrt(n2));
+        db_MultiplyScalarCopy4(v,&(C[8]),m);
+    }
+    else
+    {
+        m=db_SafeReciprocal(sqrt(n3));
+        db_MultiplyScalarCopy4(v,&(C[12]),m);
+    }
+}
+
+
+
+/*\}*/
+#endif /* DB_UTILITIES_POLY */
diff --git a/perftests/panorama/feature_stab/db_vlvm/db_utilities_random.h b/perftests/panorama/feature_stab/db_vlvm/db_utilities_random.h
new file mode 100644
index 0000000..ef24039
--- /dev/null
+++ b/perftests/panorama/feature_stab/db_vlvm/db_utilities_random.h
@@ -0,0 +1,98 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+/* $Id: db_utilities_random.h,v 1.1 2010/08/19 18:09:20 bsouthall Exp $ */
+
+#ifndef DB_UTILITIES_RANDOM
+#define DB_UTILITIES_RANDOM
+
+#include "db_utilities.h"
+
+
+
+/*****************************************************************
+*    Lean and mean begins here                                   *
+*****************************************************************/
+/*!
+ * \defgroup LMRandom (LM) Random numbers, random sampling
+ */
+/*\{*/
+/*!
+ Random Number generator. Initialize with non-zero
+integer value r. A double between zero and one is
+returned.
+\param r    seed
+\return random double
+*/
+inline double db_QuickRandomDouble(int &r)
+{
+    int c;
+    c=r/127773;
+    r=16807*(r-c*127773)-2836*c;
+    if(r<0) r+=2147483647;
+    return((1.0/((double)2147483647))*r);
+    //return (((double)rand())/(double)RAND_MAX);
+}
+
+/*!
+Random Number generator. Initialize with non-zero
+integer value r. An int between and including 0 and max
+ \param r    seed
+ \param max    upped limit
+ \return random int
+*/
+inline int db_RandomInt(int &r,int max)
+{
+    double dtemp;
+    int itemp;
+    dtemp=db_QuickRandomDouble(r)*(max+1);
+    itemp=(int) dtemp;
+    if(itemp<=0) return(0);
+    if(itemp>=max) return(max);
+    return(itemp);
+}
+
+/*!
+ Generate a random sample indexing into [0..pool_size-1].
+ \param s            sample (out) pre-allocated array of size sample_size
+ \param sample_size    size of sample
+ \param pool_size    upper limit on item index
+ \param r_seed        random number generator seed
+ */
+inline void db_RandomSample(int *s,int sample_size,int pool_size,int &r_seed)
+{
+    int temp,temp2,i,j;
+
+    for(i=0;i<sample_size;i++)
+    {
+        temp=db_RandomInt(r_seed,pool_size-1-i);
+
+        for(j=0;j<i;j++)
+        {
+            if(s[j]<=temp) temp++;
+            else
+            {
+                /*swap*/
+                temp2=temp;
+                temp=s[j];
+                s[j]=temp2;
+            }
+        }
+        s[i]=temp;
+    }
+}
+/*\}*/
+#endif /* DB_UTILITIES_RANDOM */
diff --git a/perftests/panorama/feature_stab/db_vlvm/db_utilities_rotation.h b/perftests/panorama/feature_stab/db_vlvm/db_utilities_rotation.h
new file mode 100644
index 0000000..7f5f937
--- /dev/null
+++ b/perftests/panorama/feature_stab/db_vlvm/db_utilities_rotation.h
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+/* $Id: db_utilities_rotation.h,v 1.2 2010/09/03 12:00:11 bsouthall Exp $ */
+
+#ifndef DB_UTILITIES_ROTATION
+#define DB_UTILITIES_ROTATION
+
+#include "db_utilities.h"
+
+
+
+/*****************************************************************
+*    Lean and mean begins here                                   *
+*****************************************************************/
+/*!
+ * \defgroup LMRotation (LM) Rotation Utilities (quaternions, orthonormal)
+ */
+/*\{*/
+/*!
+ Takes a unit quaternion and gives its corresponding rotation matrix.
+ \param R rotation matrix (out)
+ \param q quaternion
+ */
+inline void db_QuaternionToRotation(double R[9],const double q[4])
+{
+    double q0q0,q0qx,q0qy,q0qz,qxqx,qxqy,qxqz,qyqy,qyqz,qzqz;
+
+    q0q0=q[0]*q[0];
+    q0qx=q[0]*q[1];
+    q0qy=q[0]*q[2];
+    q0qz=q[0]*q[3];
+    qxqx=q[1]*q[1];
+    qxqy=q[1]*q[2];
+    qxqz=q[1]*q[3];
+    qyqy=q[2]*q[2];
+    qyqz=q[2]*q[3];
+    qzqz=q[3]*q[3];
+
+    R[0]=q0q0+qxqx-qyqy-qzqz; R[1]=2.0*(qxqy-q0qz);     R[2]=2.0*(qxqz+q0qy);
+    R[3]=2.0*(qxqy+q0qz);     R[4]=q0q0-qxqx+qyqy-qzqz; R[5]=2.0*(qyqz-q0qx);
+    R[6]=2.0*(qxqz-q0qy);     R[7]=2.0*(qyqz+q0qx);     R[8]=q0q0-qxqx-qyqy+qzqz;
+}
+
+/*\}*/
+#endif /* DB_UTILITIES_ROTATION */
diff --git a/perftests/panorama/feature_stab/doc/Readme.txt b/perftests/panorama/feature_stab/doc/Readme.txt
new file mode 100644
index 0000000..fcd7c38
--- /dev/null
+++ b/perftests/panorama/feature_stab/doc/Readme.txt
@@ -0,0 +1,3 @@
+To generate the html docs, execute
+doxygen dbreg_API_doxyfile
+
diff --git a/perftests/panorama/feature_stab/doc/dbreg_API_doxyfile b/perftests/panorama/feature_stab/doc/dbreg_API_doxyfile
new file mode 100755
index 0000000..dc61a9c
--- /dev/null
+++ b/perftests/panorama/feature_stab/doc/dbreg_API_doxyfile
@@ -0,0 +1,1557 @@
+# Doxyfile 1.6.1
+
+# This file describes the settings to be used by the documentation system
+# doxygen (www.doxygen.org) for a project
+#
+# All text after a hash (#) is considered a comment and will be ignored
+# The format is:
+#       TAG = value [value, ...]
+# For lists items can also be appended using:
+#       TAG += value [value, ...]
+# Values that contain spaces should be placed between quotes (" ")
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+
+# This tag specifies the encoding used for all characters in the config file
+# that follow. The default is UTF-8 which is also the encoding used for all
+# text before the first occurrence of this tag. Doxygen uses libiconv (or the
+# iconv built into libc) for the transcoding. See
+# http://www.gnu.org/software/libiconv for the list of possible encodings.
+
+DOXYFILE_ENCODING      = UTF-8
+
+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
+# by quotes) that should identify the project.
+
+PROJECT_NAME           =
+
+# The PROJECT_NUMBER tag can be used to enter a project or revision number.
+# This could be handy for archiving the generated documentation or
+# if some version control system is used.
+
+PROJECT_NUMBER         =
+
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
+# base path where the generated documentation will be put.
+# If a relative path is entered, it will be relative to the location
+# where doxygen was started. If left blank the current directory will be used.
+
+OUTPUT_DIRECTORY       = .
+
+# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
+# 4096 sub-directories (in 2 levels) under the output directory of each output
+# format and will distribute the generated files over these directories.
+# Enabling this option can be useful when feeding doxygen a huge amount of
+# source files, where putting all generated files in the same directory would
+# otherwise cause performance problems for the file system.
+
+CREATE_SUBDIRS         = NO
+
+# The OUTPUT_LANGUAGE tag is used to specify the language in which all
+# documentation generated by doxygen is written. Doxygen will use this
+# information to generate all constant output in the proper language.
+# The default language is English, other supported languages are:
+# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,
+# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German,
+# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English
+# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian,
+# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak,
+# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese.
+
+OUTPUT_LANGUAGE        = English
+
+# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
+# include brief member descriptions after the members that are listed in
+# the file and class documentation (similar to JavaDoc).
+# Set to NO to disable this.
+
+BRIEF_MEMBER_DESC      = YES
+
+# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
+# the brief description of a member or function before the detailed description.
+# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
+# brief descriptions will be completely suppressed.
+
+REPEAT_BRIEF           = YES
+
+# This tag implements a quasi-intelligent brief description abbreviator
+# that is used to form the text in various listings. Each string
+# in this list, if found as the leading text of the brief description, will be
+# stripped from the text and the result after processing the whole list, is
+# used as the annotated text. Otherwise, the brief description is used as-is.
+# If left blank, the following values are used ("$name" is automatically
+# replaced with the name of the entity): "The $name class" "The $name widget"
+# "The $name file" "is" "provides" "specifies" "contains"
+# "represents" "a" "an" "the"
+
+ABBREVIATE_BRIEF       = "The $name class" \
+                         "The $name widget" \
+                         "The $name file" \
+                         is \
+                         provides \
+                         specifies \
+                         contains \
+                         represents \
+                         a \
+                         an \
+                         the
+
+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
+# Doxygen will generate a detailed section even if there is only a brief
+# description.
+
+ALWAYS_DETAILED_SEC    = NO
+
+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
+# inherited members of a class in the documentation of that class as if those
+# members were ordinary class members. Constructors, destructors and assignment
+# operators of the base classes will not be shown.
+
+INLINE_INHERITED_MEMB  = NO
+
+# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
+# path before files name in the file list and in the header files. If set
+# to NO the shortest path that makes the file name unique will be used.
+
+FULL_PATH_NAMES        = YES
+
+# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
+# can be used to strip a user-defined part of the path. Stripping is
+# only done if one of the specified strings matches the left-hand part of
+# the path. The tag can be used to show relative paths in the file list.
+# If left blank the directory from which doxygen is run is used as the
+# path to strip.
+
+STRIP_FROM_PATH        = /Users/dimitri/doxygen/mail/1.5.7/doxywizard/
+
+# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
+# the path mentioned in the documentation of a class, which tells
+# the reader which header file to include in order to use a class.
+# If left blank only the name of the header file containing the class
+# definition is used. Otherwise one should specify the include paths that
+# are normally passed to the compiler using the -I flag.
+
+STRIP_FROM_INC_PATH    =
+
+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
+# (but less readable) file names. This can be useful is your file systems
+# doesn't support long names like on DOS, Mac, or CD-ROM.
+
+SHORT_NAMES            = NO
+
+# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
+# will interpret the first line (until the first dot) of a JavaDoc-style
+# comment as the brief description. If set to NO, the JavaDoc
+# comments will behave just like regular Qt-style comments
+# (thus requiring an explicit @brief command for a brief description.)
+
+JAVADOC_AUTOBRIEF      = NO
+
+# If the QT_AUTOBRIEF tag is set to YES then Doxygen will
+# interpret the first line (until the first dot) of a Qt-style
+# comment as the brief description. If set to NO, the comments
+# will behave just like regular Qt-style comments (thus requiring
+# an explicit \brief command for a brief description.)
+
+QT_AUTOBRIEF           = NO
+
+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
+# treat a multi-line C++ special comment block (i.e. a block of //! or ///
+# comments) as a brief description. This used to be the default behaviour.
+# The new default is to treat a multi-line C++ comment block as a detailed
+# description. Set this tag to YES if you prefer the old behaviour instead.
+
+MULTILINE_CPP_IS_BRIEF = NO
+
+# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
+# member inherits the documentation from any documented member that it
+# re-implements.
+
+INHERIT_DOCS           = YES
+
+# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
+# a new page for each member. If set to NO, the documentation of a member will
+# be part of the file/class/namespace that contains it.
+
+SEPARATE_MEMBER_PAGES  = NO
+
+# The TAB_SIZE tag can be used to set the number of spaces in a tab.
+# Doxygen uses this value to replace tabs by spaces in code fragments.
+
+TAB_SIZE               = 8
+
+# This tag can be used to specify a number of aliases that acts
+# as commands in the documentation. An alias has the form "name=value".
+# For example adding "sideeffect=\par Side Effects:\n" will allow you to
+# put the command \sideeffect (or @sideeffect) in the documentation, which
+# will result in a user-defined paragraph with heading "Side Effects:".
+# You can put \n's in the value part of an alias to insert newlines.
+
+ALIASES                =
+
+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
+# sources only. Doxygen will then generate output that is more tailored for C.
+# For instance, some of the names that are used will be different. The list
+# of all members will be omitted, etc.
+
+OPTIMIZE_OUTPUT_FOR_C  = NO
+
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
+# sources only. Doxygen will then generate output that is more tailored for
+# Java. For instance, namespaces will be presented as packages, qualified
+# scopes will look different, etc.
+
+OPTIMIZE_OUTPUT_JAVA   = NO
+
+# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
+# sources only. Doxygen will then generate output that is more tailored for
+# Fortran.
+
+OPTIMIZE_FOR_FORTRAN   = NO
+
+# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
+# sources. Doxygen will then generate output that is tailored for
+# VHDL.
+
+OPTIMIZE_OUTPUT_VHDL   = NO
+
+# Doxygen selects the parser to use depending on the extension of the files it parses.
+# With this tag you can assign which parser to use for a given extension.
+# Doxygen has a built-in mapping, but you can override or extend it using this tag.
+# The format is ext=language, where ext is a file extension, and language is one of
+# the parsers supported by doxygen: IDL, Java, Javascript, C#, C, C++, D, PHP,
+# Objective-C, Python, Fortran, VHDL, C, C++. For instance to make doxygen treat
+# .inc files as Fortran files (default is PHP), and .f files as C (default is Fortran),
+# use: inc=Fortran f=C. Note that for custom extensions you also need to set
+# FILE_PATTERNS otherwise the files are not read by doxygen.
+
+EXTENSION_MAPPING      =
+
+# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
+# to include (a tag file for) the STL sources as input, then you should
+# set this tag to YES in order to let doxygen match functions declarations and
+# definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
+# func(std::string) {}). This also make the inheritance and collaboration
+# diagrams that involve STL classes more complete and accurate.
+
+BUILTIN_STL_SUPPORT    = NO
+
+# If you use Microsoft's C++/CLI language, you should set this option to YES to
+# enable parsing support.
+
+CPP_CLI_SUPPORT        = NO
+
+# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only.
+# Doxygen will parse them like normal C++ but will assume all classes use public
+# instead of private inheritance when no explicit protection keyword is present.
+
+SIP_SUPPORT            = NO
+
+# For Microsoft's IDL there are propget and propput attributes to indicate getter
+# and setter methods for a property. Setting this option to YES (the default)
+# will make doxygen to replace the get and set methods by a property in the
+# documentation. This will only work if the methods are indeed getting or
+# setting a simple type. If this is not the case, or you want to show the
+# methods anyway, you should set this option to NO.
+
+IDL_PROPERTY_SUPPORT   = YES
+
+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
+# tag is set to YES, then doxygen will reuse the documentation of the first
+# member in the group (if any) for the other members of the group. By default
+# all members of a group must be documented explicitly.
+
+DISTRIBUTE_GROUP_DOC   = NO
+
+# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
+# the same type (for instance a group of public functions) to be put as a
+# subgroup of that type (e.g. under the Public Functions section). Set it to
+# NO to prevent subgrouping. Alternatively, this can be done per class using
+# the \nosubgrouping command.
+
+SUBGROUPING            = YES
+
+# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum
+# is documented as struct, union, or enum with the name of the typedef. So
+# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
+# with name TypeT. When disabled the typedef will appear as a member of a file,
+# namespace, or class. And the struct will be named TypeS. This can typically
+# be useful for C code in case the coding convention dictates that all compound
+# types are typedef'ed and only the typedef is referenced, never the tag name.
+
+TYPEDEF_HIDES_STRUCT   = NO
+
+# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to
+# determine which symbols to keep in memory and which to flush to disk.
+# When the cache is full, less often used symbols will be written to disk.
+# For small to medium size projects (<1000 input files) the default value is
+# probably good enough. For larger projects a too small cache size can cause
+# doxygen to be busy swapping symbols to and from disk most of the time
+# causing a significant performance penality.
+# If the system has enough physical memory increasing the cache will improve the
+# performance by keeping more symbols in memory. Note that the value works on
+# a logarithmic scale so increasing the size by one will rougly double the
+# memory usage. The cache size is given by this formula:
+# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0,
+# corresponding to a cache size of 2^16 = 65536 symbols
+
+SYMBOL_CACHE_SIZE      = 0
+
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+
+# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
+# documentation are documented, even if no documentation was available.
+# Private class members and static file members will be hidden unless
+# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
+
+EXTRACT_ALL            = NO
+
+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
+# will be included in the documentation.
+
+EXTRACT_PRIVATE        = NO
+
+# If the EXTRACT_STATIC tag is set to YES all static members of a file
+# will be included in the documentation.
+
+EXTRACT_STATIC         = NO
+
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
+# defined locally in source files will be included in the documentation.
+# If set to NO only classes defined in header files are included.
+
+EXTRACT_LOCAL_CLASSES  = YES
+
+# This flag is only useful for Objective-C code. When set to YES local
+# methods, which are defined in the implementation section but not in
+# the interface are included in the documentation.
+# If set to NO (the default) only methods in the interface are included.
+
+EXTRACT_LOCAL_METHODS  = NO
+
+# If this flag is set to YES, the members of anonymous namespaces will be
+# extracted and appear in the documentation as a namespace called
+# 'anonymous_namespace{file}', where file will be replaced with the base
+# name of the file that contains the anonymous namespace. By default
+# anonymous namespace are hidden.
+
+EXTRACT_ANON_NSPACES   = NO
+
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
+# undocumented members of documented classes, files or namespaces.
+# If set to NO (the default) these members will be included in the
+# various overviews, but no documentation section is generated.
+# This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_MEMBERS     = NO
+
+# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
+# undocumented classes that are normally visible in the class hierarchy.
+# If set to NO (the default) these classes will be included in the various
+# overviews. This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_CLASSES     = NO
+
+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
+# friend (class|struct|union) declarations.
+# If set to NO (the default) these declarations will be included in the
+# documentation.
+
+HIDE_FRIEND_COMPOUNDS  = NO
+
+# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
+# documentation blocks found inside the body of a function.
+# If set to NO (the default) these blocks will be appended to the
+# function's detailed documentation block.
+
+HIDE_IN_BODY_DOCS      = NO
+
+# The INTERNAL_DOCS tag determines if documentation
+# that is typed after a \internal command is included. If the tag is set
+# to NO (the default) then the documentation will be excluded.
+# Set it to YES to include the internal documentation.
+
+INTERNAL_DOCS          = NO
+
+# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
+# file names in lower-case letters. If set to YES upper-case letters are also
+# allowed. This is useful if you have classes or files whose names only differ
+# in case and if your file system supports case sensitive file names. Windows
+# and Mac users are advised to set this option to NO.
+
+CASE_SENSE_NAMES       = NO
+
+# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
+# will show members with their full class and namespace scopes in the
+# documentation. If set to YES the scope will be hidden.
+
+HIDE_SCOPE_NAMES       = NO
+
+# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
+# will put a list of the files that are included by a file in the documentation
+# of that file.
+
+SHOW_INCLUDE_FILES     = YES
+
+# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
+# is inserted in the documentation for inline members.
+
+INLINE_INFO            = YES
+
+# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
+# will sort the (detailed) documentation of file and class members
+# alphabetically by member name. If set to NO the members will appear in
+# declaration order.
+
+SORT_MEMBER_DOCS       = YES
+
+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
+# brief documentation of file, namespace and class members alphabetically
+# by member name. If set to NO (the default) the members will appear in
+# declaration order.
+
+SORT_BRIEF_DOCS        = NO
+
+# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen
+# will sort the (brief and detailed) documentation of class members so that
+# constructors and destructors are listed first. If set to NO (the default)
+# the constructors will appear in the respective orders defined by
+# SORT_MEMBER_DOCS and SORT_BRIEF_DOCS.
+# This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO
+# and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO.
+
+SORT_MEMBERS_CTORS_1ST = NO
+
+# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the
+# hierarchy of group names into alphabetical order. If set to NO (the default)
+# the group names will appear in their defined order.
+
+SORT_GROUP_NAMES       = NO
+
+# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
+# sorted by fully-qualified names, including namespaces. If set to
+# NO (the default), the class list will be sorted only by class name,
+# not including the namespace part.
+# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
+# Note: This option applies only to the class list, not to the
+# alphabetical list.
+
+SORT_BY_SCOPE_NAME     = NO
+
+# The GENERATE_TODOLIST tag can be used to enable (YES) or
+# disable (NO) the todo list. This list is created by putting \todo
+# commands in the documentation.
+
+GENERATE_TODOLIST      = YES
+
+# The GENERATE_TESTLIST tag can be used to enable (YES) or
+# disable (NO) the test list. This list is created by putting \test
+# commands in the documentation.
+
+GENERATE_TESTLIST      = YES
+
+# The GENERATE_BUGLIST tag can be used to enable (YES) or
+# disable (NO) the bug list. This list is created by putting \bug
+# commands in the documentation.
+
+GENERATE_BUGLIST       = YES
+
+# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
+# disable (NO) the deprecated list. This list is created by putting
+# \deprecated commands in the documentation.
+
+GENERATE_DEPRECATEDLIST= YES
+
+# The ENABLED_SECTIONS tag can be used to enable conditional
+# documentation sections, marked by \if sectionname ... \endif.
+
+ENABLED_SECTIONS       =
+
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
+# the initial value of a variable or define consists of for it to appear in
+# the documentation. If the initializer consists of more lines than specified
+# here it will be hidden. Use a value of 0 to hide initializers completely.
+# The appearance of the initializer of individual variables and defines in the
+# documentation can be controlled using \showinitializer or \hideinitializer
+# command in the documentation regardless of this setting.
+
+MAX_INITIALIZER_LINES  = 30
+
+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
+# at the bottom of the documentation of classes and structs. If set to YES the
+# list will mention the files that were used to generate the documentation.
+
+SHOW_USED_FILES        = YES
+
+# If the sources in your project are distributed over multiple directories
+# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy
+# in the documentation. The default is NO.
+
+SHOW_DIRECTORIES       = NO
+
+# Set the SHOW_FILES tag to NO to disable the generation of the Files page.
+# This will remove the Files entry from the Quick Index and from the
+# Folder Tree View (if specified). The default is YES.
+
+SHOW_FILES             = YES
+
+# Set the SHOW_NAMESPACES tag to NO to disable the generation of the
+# Namespaces page.  This will remove the Namespaces entry from the Quick Index
+# and from the Folder Tree View (if specified). The default is YES.
+
+SHOW_NAMESPACES        = YES
+
+# The FILE_VERSION_FILTER tag can be used to specify a program or script that
+# doxygen should invoke to get the current version for each file (typically from
+# the version control system). Doxygen will invoke the program by executing (via
+# popen()) the command <command> <input-file>, where <command> is the value of
+# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file
+# provided by doxygen. Whatever the program writes to standard output
+# is used as the file version. See the manual for examples.
+
+FILE_VERSION_FILTER    =
+
+# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed by
+# doxygen. The layout file controls the global structure of the generated output files
+# in an output format independent way. The create the layout file that represents
+# doxygen's defaults, run doxygen with the -l option. You can optionally specify a
+# file name after the option, if omitted DoxygenLayout.xml will be used as the name
+# of the layout file.
+
+LAYOUT_FILE            =
+
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+
+# The QUIET tag can be used to turn on/off the messages that are generated
+# by doxygen. Possible values are YES and NO. If left blank NO is used.
+
+QUIET                  = NO
+
+# The WARNINGS tag can be used to turn on/off the warning messages that are
+# generated by doxygen. Possible values are YES and NO. If left blank
+# NO is used.
+
+WARNINGS               = YES
+
+# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
+# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
+# automatically be disabled.
+
+WARN_IF_UNDOCUMENTED   = YES
+
+# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
+# potential errors in the documentation, such as not documenting some
+# parameters in a documented function, or documenting parameters that
+# don't exist or using markup commands wrongly.
+
+WARN_IF_DOC_ERROR      = YES
+
+# This WARN_NO_PARAMDOC option can be abled to get warnings for
+# functions that are documented, but have no documentation for their parameters
+# or return value. If set to NO (the default) doxygen will only warn about
+# wrong or incomplete parameter documentation, but not about the absence of
+# documentation.
+
+WARN_NO_PARAMDOC       = NO
+
+# The WARN_FORMAT tag determines the format of the warning messages that
+# doxygen can produce. The string should contain the $file, $line, and $text
+# tags, which will be replaced by the file and line number from which the
+# warning originated and the warning text. Optionally the format may contain
+# $version, which will be replaced by the version of the file (if it could
+# be obtained via FILE_VERSION_FILTER)
+
+WARN_FORMAT            = "$file:$line: $text"
+
+# The WARN_LOGFILE tag can be used to specify a file to which warning
+# and error messages should be written. If left blank the output is written
+# to stderr.
+
+WARN_LOGFILE           =
+
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+
+# The INPUT tag can be used to specify the files and/or directories that contain
+# documented source files. You may enter file names like "myfile.cpp" or
+# directories like "/usr/src/myproject". Separate the files or directories
+# with spaces.
+
+INPUT                  = ../src/dbreg/dbreg.h
+
+# This tag can be used to specify the character encoding of the source files
+# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
+# also the default input encoding. Doxygen uses libiconv (or the iconv built
+# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for
+# the list of possible encodings.
+
+INPUT_ENCODING         = UTF-8
+
+# If the value of the INPUT tag contains directories, you can use the
+# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
+# blank the following patterns are tested:
+# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx
+# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90
+
+FILE_PATTERNS          = *.c \
+                         *.cc \
+                         *.cxx \
+                         *.cpp \
+                         *.c++ \
+                         *.d \
+                         *.java \
+                         *.ii \
+                         *.ixx \
+                         *.ipp \
+                         *.i++ \
+                         *.inl \
+                         *.h \
+                         *.hh \
+                         *.hxx \
+                         *.hpp \
+                         *.h++ \
+                         *.idl \
+                         *.odl \
+                         *.cs \
+                         *.php \
+                         *.php3 \
+                         *.inc \
+                         *.m \
+                         *.mm \
+                         *.dox \
+                         *.py \
+                         *.f90 \
+                         *.f \
+                         *.vhd \
+                         *.vhdl
+
+# The RECURSIVE tag can be used to turn specify whether or not subdirectories
+# should be searched for input files as well. Possible values are YES and NO.
+# If left blank NO is used.
+
+RECURSIVE              = NO
+
+# The EXCLUDE tag can be used to specify files and/or directories that should
+# excluded from the INPUT source files. This way you can easily exclude a
+# subdirectory from a directory tree whose root is specified with the INPUT tag.
+
+EXCLUDE                =
+
+# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
+# directories that are symbolic links (a Unix filesystem feature) are excluded
+# from the input.
+
+EXCLUDE_SYMLINKS       = NO
+
+# If the value of the INPUT tag contains directories, you can use the
+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
+# certain files from those directories. Note that the wildcards are matched
+# against the file with absolute path, so to exclude all test directories
+# for example use the pattern */test/*
+
+EXCLUDE_PATTERNS       =
+
+# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
+# (namespaces, classes, functions, etc.) that should be excluded from the
+# output. The symbol name can be a fully qualified name, a word, or if the
+# wildcard * is used, a substring. Examples: ANamespace, AClass,
+# AClass::ANamespace, ANamespace::*Test
+
+EXCLUDE_SYMBOLS        =
+
+# The EXAMPLE_PATH tag can be used to specify one or more files or
+# directories that contain example code fragments that are included (see
+# the \include command).
+
+EXAMPLE_PATH           =
+
+# If the value of the EXAMPLE_PATH tag contains directories, you can use the
+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
+# blank all files are included.
+
+EXAMPLE_PATTERNS       = *
+
+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
+# searched for input files to be used with the \include or \dontinclude
+# commands irrespective of the value of the RECURSIVE tag.
+# Possible values are YES and NO. If left blank NO is used.
+
+EXAMPLE_RECURSIVE      = NO
+
+# The IMAGE_PATH tag can be used to specify one or more files or
+# directories that contain image that are included in the documentation (see
+# the \image command).
+
+IMAGE_PATH             =
+
+# The INPUT_FILTER tag can be used to specify a program that doxygen should
+# invoke to filter for each input file. Doxygen will invoke the filter program
+# by executing (via popen()) the command <filter> <input-file>, where <filter>
+# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
+# input file. Doxygen will then use the output that the filter program writes
+# to standard output.  If FILTER_PATTERNS is specified, this tag will be
+# ignored.
+
+INPUT_FILTER           =
+
+# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
+# basis.  Doxygen will compare the file name with each pattern and apply the
+# filter if there is a match.  The filters are a list of the form:
+# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
+# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER
+# is applied to all files.
+
+FILTER_PATTERNS        =
+
+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
+# INPUT_FILTER) will be used to filter the input files when producing source
+# files to browse (i.e. when SOURCE_BROWSER is set to YES).
+
+FILTER_SOURCE_FILES    = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will
+# be generated. Documented entities will be cross-referenced with these sources.
+# Note: To get rid of all source code in the generated output, make sure also
+# VERBATIM_HEADERS is set to NO.
+
+SOURCE_BROWSER         = NO
+
+# Setting the INLINE_SOURCES tag to YES will include the body
+# of functions and classes directly in the documentation.
+
+INLINE_SOURCES         = NO
+
+# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
+# doxygen to hide any special comment blocks from generated source code
+# fragments. Normal C and C++ comments will always remain visible.
+
+STRIP_CODE_COMMENTS    = YES
+
+# If the REFERENCED_BY_RELATION tag is set to YES
+# then for each documented function all documented
+# functions referencing it will be listed.
+
+REFERENCED_BY_RELATION = NO
+
+# If the REFERENCES_RELATION tag is set to YES
+# then for each documented function all documented entities
+# called/used by that function will be listed.
+
+REFERENCES_RELATION    = NO
+
+# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
+# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
+# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
+# link to the source code.  Otherwise they will link to the documentation.
+
+REFERENCES_LINK_SOURCE = YES
+
+# If the USE_HTAGS tag is set to YES then the references to source code
+# will point to the HTML generated by the htags(1) tool instead of doxygen
+# built-in source browser. The htags tool is part of GNU's global source
+# tagging system (see http://www.gnu.org/software/global/global.html). You
+# will need version 4.8.6 or higher.
+
+USE_HTAGS              = NO
+
+# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
+# will generate a verbatim copy of the header file for each class for
+# which an include is specified. Set to NO to disable this.
+
+VERBATIM_HEADERS       = YES
+
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
+# of all compounds will be generated. Enable this if the project
+# contains a lot of classes, structs, unions or interfaces.
+
+ALPHABETICAL_INDEX     = NO
+
+# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
+# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
+# in which this list will be split (can be a number in the range [1..20])
+
+COLS_IN_ALPHA_INDEX    = 5
+
+# In case all classes in a project start with a common prefix, all
+# classes will be put under the same header in the alphabetical index.
+# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
+# should be ignored while generating the index headers.
+
+IGNORE_PREFIX          =
+
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
+# generate HTML output.
+
+GENERATE_HTML          = YES
+
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `html' will be used as the default path.
+
+HTML_OUTPUT            = html
+
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
+# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
+# doxygen will generate files with .html extension.
+
+HTML_FILE_EXTENSION    = .html
+
+# The HTML_HEADER tag can be used to specify a personal HTML header for
+# each generated HTML page. If it is left blank doxygen will generate a
+# standard header.
+
+HTML_HEADER            =
+
+# The HTML_FOOTER tag can be used to specify a personal HTML footer for
+# each generated HTML page. If it is left blank doxygen will generate a
+# standard footer.
+
+HTML_FOOTER            =
+
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
+# style sheet that is used by each HTML page. It can be used to
+# fine-tune the look of the HTML output. If the tag is left blank doxygen
+# will generate a default style sheet. Note that doxygen will try to copy
+# the style sheet file to the HTML output directory, so don't put your own
+# stylesheet in the HTML output directory as well, or it will be erased!
+
+HTML_STYLESHEET        =
+
+# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
+# files or namespaces will be aligned in HTML using tables. If set to
+# NO a bullet list will be used.
+
+HTML_ALIGN_MEMBERS     = YES
+
+# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
+# documentation will contain sections that can be hidden and shown after the
+# page has loaded. For this to work a browser that supports
+# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox
+# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari).
+
+HTML_DYNAMIC_SECTIONS  = NO
+
+# If the GENERATE_DOCSET tag is set to YES, additional index files
+# will be generated that can be used as input for Apple's Xcode 3
+# integrated development environment, introduced with OSX 10.5 (Leopard).
+# To create a documentation set, doxygen will generate a Makefile in the
+# HTML output directory. Running make will produce the docset in that
+# directory and running "make install" will install the docset in
+# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find
+# it at startup.
+# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html for more information.
+
+GENERATE_DOCSET        = NO
+
+# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the
+# feed. A documentation feed provides an umbrella under which multiple
+# documentation sets from a single provider (such as a company or product suite)
+# can be grouped.
+
+DOCSET_FEEDNAME        = "Doxygen generated docs"
+
+# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that
+# should uniquely identify the documentation set bundle. This should be a
+# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen
+# will append .docset to the name.
+
+DOCSET_BUNDLE_ID       = org.doxygen.Project
+
+# If the GENERATE_HTMLHELP tag is set to YES, additional index files
+# will be generated that can be used as input for tools like the
+# Microsoft HTML help workshop to generate a compiled HTML help file (.chm)
+# of the generated HTML documentation.
+
+GENERATE_HTMLHELP      = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
+# be used to specify the file name of the resulting .chm file. You
+# can add a path in front of the file if the result should not be
+# written to the html output directory.
+
+CHM_FILE               =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
+# be used to specify the location (absolute path including file name) of
+# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
+# the HTML help compiler on the generated index.hhp.
+
+HHC_LOCATION           =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
+# controls if a separate .chi index file is generated (YES) or that
+# it should be included in the master .chm file (NO).
+
+GENERATE_CHI           = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING
+# is used to encode HtmlHelp index (hhk), content (hhc) and project file
+# content.
+
+CHM_INDEX_ENCODING     =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
+# controls whether a binary table of contents is generated (YES) or a
+# normal table of contents (NO) in the .chm file.
+
+BINARY_TOC             = NO
+
+# The TOC_EXPAND flag can be set to YES to add extra items for group members
+# to the contents of the HTML help documentation and to the tree view.
+
+TOC_EXPAND             = NO
+
+# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and QHP_VIRTUAL_FOLDER
+# are set, an additional index file will be generated that can be used as input for
+# Qt's qhelpgenerator to generate a Qt Compressed Help (.qch) of the generated
+# HTML documentation.
+
+GENERATE_QHP           = NO
+
+# If the QHG_LOCATION tag is specified, the QCH_FILE tag can
+# be used to specify the file name of the resulting .qch file.
+# The path specified is relative to the HTML output folder.
+
+QCH_FILE               =
+
+# The QHP_NAMESPACE tag specifies the namespace to use when generating
+# Qt Help Project output. For more information please see
+# http://doc.trolltech.com/qthelpproject.html#namespace
+
+QHP_NAMESPACE          =
+
+# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating
+# Qt Help Project output. For more information please see
+# http://doc.trolltech.com/qthelpproject.html#virtual-folders
+
+QHP_VIRTUAL_FOLDER     = doc
+
+# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to add.
+# For more information please see
+# http://doc.trolltech.com/qthelpproject.html#custom-filters
+
+QHP_CUST_FILTER_NAME   =
+
+# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the custom filter to add.For more information please see
+# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters">Qt Help Project / Custom Filters</a>.
+
+QHP_CUST_FILTER_ATTRS  =
+
+# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this project's
+# filter section matches.
+# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">Qt Help Project / Filter Attributes</a>.
+
+QHP_SECT_FILTER_ATTRS  =
+
+# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can
+# be used to specify the location of Qt's qhelpgenerator.
+# If non-empty doxygen will try to run qhelpgenerator on the generated
+# .qhp file.
+
+QHG_LOCATION           =
+
+# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
+# top of each HTML page. The value NO (the default) enables the index and
+# the value YES disables it.
+
+DISABLE_INDEX          = NO
+
+# This tag can be used to set the number of enum values (range [1..20])
+# that doxygen will group on one line in the generated HTML documentation.
+
+ENUM_VALUES_PER_LINE   = 4
+
+# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
+# structure should be generated to display hierarchical information.
+# If the tag value is set to YES, a side panel will be generated
+# containing a tree-like index structure (just like the one that
+# is generated for HTML Help). For this to work a browser that supports
+# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser).
+# Windows users are probably better off using the HTML help feature.
+
+GENERATE_TREEVIEW      = NO
+
+# By enabling USE_INLINE_TREES, doxygen will generate the Groups, Directories,
+# and Class Hierarchy pages using a tree view instead of an ordered list.
+
+USE_INLINE_TREES       = NO
+
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
+# used to set the initial width (in pixels) of the frame in which the tree
+# is shown.
+
+TREEVIEW_WIDTH         = 250
+
+# Use this tag to change the font size of Latex formulas included
+# as images in the HTML documentation. The default is 10. Note that
+# when you change the font size after a successful doxygen run you need
+# to manually remove any form_*.png images from the HTML output directory
+# to force them to be regenerated.
+
+FORMULA_FONTSIZE       = 10
+
+# When the SEARCHENGINE tag is enable doxygen will generate a search box
+# for the HTML output. The underlying search engine uses javascript
+# and DHTML and should work on any modern browser. Note that when using
+# HTML help (GENERATE_HTMLHELP) or Qt help (GENERATE_QHP)
+# there is already a search function so this one should typically
+# be disabled.
+
+SEARCHENGINE           = YES
+
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
+# generate Latex output.
+
+GENERATE_LATEX         = NO
+
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `latex' will be used as the default path.
+
+LATEX_OUTPUT           = latex
+
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
+# invoked. If left blank `latex' will be used as the default command name.
+
+LATEX_CMD_NAME         = latex
+
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
+# generate index for LaTeX. If left blank `makeindex' will be used as the
+# default command name.
+
+MAKEINDEX_CMD_NAME     = makeindex
+
+# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
+# LaTeX documents. This may be useful for small projects and may help to
+# save some trees in general.
+
+COMPACT_LATEX          = NO
+
+# The PAPER_TYPE tag can be used to set the paper type that is used
+# by the printer. Possible values are: a4, a4wide, letter, legal and
+# executive. If left blank a4wide will be used.
+
+PAPER_TYPE             = a4wide
+
+# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
+# packages that should be included in the LaTeX output.
+
+EXTRA_PACKAGES         =
+
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
+# the generated latex document. The header should contain everything until
+# the first chapter. If it is left blank doxygen will generate a
+# standard header. Notice: only use this tag if you know what you are doing!
+
+LATEX_HEADER           =
+
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
+# is prepared for conversion to pdf (using ps2pdf). The pdf file will
+# contain links (just like the HTML output) instead of page references
+# This makes the output suitable for online browsing using a pdf viewer.
+
+PDF_HYPERLINKS         = YES
+
+# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
+# plain latex in the generated Makefile. Set this option to YES to get a
+# higher quality PDF documentation.
+
+USE_PDFLATEX           = YES
+
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
+# command to the generated LaTeX files. This will instruct LaTeX to keep
+# running if errors occur, instead of asking the user for help.
+# This option is also used when generating formulas in HTML.
+
+LATEX_BATCHMODE        = NO
+
+# If LATEX_HIDE_INDICES is set to YES then doxygen will not
+# include the index chapters (such as File Index, Compound Index, etc.)
+# in the output.
+
+LATEX_HIDE_INDICES     = NO
+
+# If LATEX_SOURCE_CODE is set to YES then doxygen will include
+# source code with syntax highlighting in the LaTeX output.
+# Note that which sources are shown also depends on other settings
+# such as SOURCE_BROWSER.
+
+LATEX_SOURCE_CODE      = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
+# The RTF output is optimized for Word 97 and may not look very pretty with
+# other RTF readers or editors.
+
+GENERATE_RTF           = NO
+
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `rtf' will be used as the default path.
+
+RTF_OUTPUT             = rtf
+
+# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
+# RTF documents. This may be useful for small projects and may help to
+# save some trees in general.
+
+COMPACT_RTF            = NO
+
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
+# will contain hyperlink fields. The RTF file will
+# contain links (just like the HTML output) instead of page references.
+# This makes the output suitable for online browsing using WORD or other
+# programs which support those fields.
+# Note: wordpad (write) and others do not support links.
+
+RTF_HYPERLINKS         = NO
+
+# Load stylesheet definitions from file. Syntax is similar to doxygen's
+# config file, i.e. a series of assignments. You only have to provide
+# replacements, missing definitions are set to their default value.
+
+RTF_STYLESHEET_FILE    =
+
+# Set optional variables used in the generation of an rtf document.
+# Syntax is similar to doxygen's config file.
+
+RTF_EXTENSIONS_FILE    =
+
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
+# generate man pages
+
+GENERATE_MAN           = NO
+
+# The MAN_OUTPUT tag is used to specify where the man pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `man' will be used as the default path.
+
+MAN_OUTPUT             = man
+
+# The MAN_EXTENSION tag determines the extension that is added to
+# the generated man pages (default is the subroutine's section .3)
+
+MAN_EXTENSION          = .3
+
+# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
+# then it will generate one additional man file for each entity
+# documented in the real man page(s). These additional files
+# only source the real man page, but without them the man command
+# would be unable to find the correct page. The default is NO.
+
+MAN_LINKS              = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_XML tag is set to YES Doxygen will
+# generate an XML file that captures the structure of
+# the code including all documentation.
+
+GENERATE_XML           = NO
+
+# The XML_OUTPUT tag is used to specify where the XML pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `xml' will be used as the default path.
+
+XML_OUTPUT             = xml
+
+# The XML_SCHEMA tag can be used to specify an XML schema,
+# which can be used by a validating XML parser to check the
+# syntax of the XML files.
+
+XML_SCHEMA             =
+
+# The XML_DTD tag can be used to specify an XML DTD,
+# which can be used by a validating XML parser to check the
+# syntax of the XML files.
+
+XML_DTD                =
+
+# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
+# dump the program listings (including syntax highlighting
+# and cross-referencing information) to the XML output. Note that
+# enabling this will significantly increase the size of the XML output.
+
+XML_PROGRAMLISTING     = YES
+
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
+# generate an AutoGen Definitions (see autogen.sf.net) file
+# that captures the structure of the code including all
+# documentation. Note that this feature is still experimental
+# and incomplete at the moment.
+
+GENERATE_AUTOGEN_DEF   = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_PERLMOD tag is set to YES Doxygen will
+# generate a Perl module file that captures the structure of
+# the code including all documentation. Note that this
+# feature is still experimental and incomplete at the
+# moment.
+
+GENERATE_PERLMOD       = NO
+
+# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
+# the necessary Makefile rules, Perl scripts and LaTeX code to be able
+# to generate PDF and DVI output from the Perl module output.
+
+PERLMOD_LATEX          = NO
+
+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
+# nicely formatted so it can be parsed by a human reader.  This is useful
+# if you want to understand what is going on.  On the other hand, if this
+# tag is set to NO the size of the Perl module output will be much smaller
+# and Perl will parse it just the same.
+
+PERLMOD_PRETTY         = YES
+
+# The names of the make variables in the generated doxyrules.make file
+# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
+# This is useful so different doxyrules.make files included by the same
+# Makefile don't overwrite each other's variables.
+
+PERLMOD_MAKEVAR_PREFIX =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor
+#---------------------------------------------------------------------------
+
+# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
+# evaluate all C-preprocessor directives found in the sources and include
+# files.
+
+ENABLE_PREPROCESSING   = YES
+
+# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
+# names in the source code. If set to NO (the default) only conditional
+# compilation will be performed. Macro expansion can be done in a controlled
+# way by setting EXPAND_ONLY_PREDEF to YES.
+
+MACRO_EXPANSION        = NO
+
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
+# then the macro expansion is limited to the macros specified with the
+# PREDEFINED and EXPAND_AS_DEFINED tags.
+
+EXPAND_ONLY_PREDEF     = NO
+
+# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
+# in the INCLUDE_PATH (see below) will be search if a #include is found.
+
+SEARCH_INCLUDES        = YES
+
+# The INCLUDE_PATH tag can be used to specify one or more directories that
+# contain include files that are not input files but should be processed by
+# the preprocessor.
+
+INCLUDE_PATH           =
+
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
+# patterns (like *.h and *.hpp) to filter out the header-files in the
+# directories. If left blank, the patterns specified with FILE_PATTERNS will
+# be used.
+
+INCLUDE_FILE_PATTERNS  =
+
+# The PREDEFINED tag can be used to specify one or more macro names that
+# are defined before the preprocessor is started (similar to the -D option of
+# gcc). The argument of the tag is a list of macros of the form: name
+# or name=definition (no spaces). If the definition and the = are
+# omitted =1 is assumed. To prevent a macro definition from being
+# undefined via #undef or recursively expanded use the := operator
+# instead of the = operator.
+
+PREDEFINED             =
+
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
+# this tag can be used to specify a list of macro names that should be expanded.
+# The macro definition that is found in the sources will be used.
+# Use the PREDEFINED tag if you want to use a different macro definition.
+
+EXPAND_AS_DEFINED      =
+
+# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
+# doxygen's preprocessor will remove all function-like macros that are alone
+# on a line, have an all uppercase name, and do not end with a semicolon. Such
+# function macros are typically used for boiler-plate code, and will confuse
+# the parser if not removed.
+
+SKIP_FUNCTION_MACROS   = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to external references
+#---------------------------------------------------------------------------
+
+# The TAGFILES option can be used to specify one or more tagfiles.
+# Optionally an initial location of the external documentation
+# can be added for each tagfile. The format of a tag file without
+# this location is as follows:
+#   TAGFILES = file1 file2 ...
+# Adding location for the tag files is done as follows:
+#   TAGFILES = file1=loc1 "file2 = loc2" ...
+# where "loc1" and "loc2" can be relative or absolute paths or
+# URLs. If a location is present for each tag, the installdox tool
+# does not have to be run to correct the links.
+# Note that each tag file must have a unique name
+# (where the name does NOT include the path)
+# If a tag file is not located in the directory in which doxygen
+# is run, you must also specify the path to the tagfile here.
+
+TAGFILES               =
+
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create
+# a tag file that is based on the input files it reads.
+
+GENERATE_TAGFILE       =
+
+# If the ALLEXTERNALS tag is set to YES all external classes will be listed
+# in the class index. If set to NO only the inherited external classes
+# will be listed.
+
+ALLEXTERNALS           = NO
+
+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
+# in the modules index. If set to NO, only the current project's groups will
+# be listed.
+
+EXTERNAL_GROUPS        = YES
+
+# The PERL_PATH should be the absolute path and name of the perl script
+# interpreter (i.e. the result of `which perl').
+
+PERL_PATH              = /usr/bin/perl
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool
+#---------------------------------------------------------------------------
+
+# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
+# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
+# or super classes. Setting the tag to NO turns the diagrams off. Note that
+# this option is superseded by the HAVE_DOT option below. This is only a
+# fallback. It is recommended to install and use dot, since it yields more
+# powerful graphs.
+
+CLASS_DIAGRAMS         = YES
+
+# You can define message sequence charts within doxygen comments using the \msc
+# command. Doxygen will then run the mscgen tool (see
+# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the
+# documentation. The MSCGEN_PATH tag allows you to specify the directory where
+# the mscgen tool resides. If left empty the tool is assumed to be found in the
+# default search path.
+
+MSCGEN_PATH            =
+
+# If set to YES, the inheritance and collaboration graphs will hide
+# inheritance and usage relations if the target is undocumented
+# or is not a class.
+
+HIDE_UNDOC_RELATIONS   = YES
+
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
+# available from the path. This tool is part of Graphviz, a graph visualization
+# toolkit from AT&T and Lucent Bell Labs. The other options in this section
+# have no effect if this option is set to NO (the default)
+
+HAVE_DOT               = NO
+
+# By default doxygen will write a font called FreeSans.ttf to the output
+# directory and reference it in all dot files that doxygen generates. This
+# font does not include all possible unicode characters however, so when you need
+# these (or just want a differently looking font) you can specify the font name
+# using DOT_FONTNAME. You need need to make sure dot is able to find the font,
+# which can be done by putting it in a standard location or by setting the
+# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory
+# containing the font.
+
+DOT_FONTNAME           = FreeSans
+
+# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs.
+# The default size is 10pt.
+
+DOT_FONTSIZE           = 10
+
+# By default doxygen will tell dot to use the output directory to look for the
+# FreeSans.ttf font (which doxygen will put there itself). If you specify a
+# different font using DOT_FONTNAME you can set the path where dot
+# can find it using this tag.
+
+DOT_FONTPATH           =
+
+# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for each documented class showing the direct and
+# indirect inheritance relations. Setting this tag to YES will force the
+# the CLASS_DIAGRAMS tag to NO.
+
+CLASS_GRAPH            = YES
+
+# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for each documented class showing the direct and
+# indirect implementation dependencies (inheritance, containment, and
+# class references variables) of the class with other documented classes.
+
+COLLABORATION_GRAPH    = YES
+
+# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for groups, showing the direct groups dependencies
+
+GROUP_GRAPHS           = YES
+
+# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
+# collaboration diagrams in a style similar to the OMG's Unified Modeling
+# Language.
+
+UML_LOOK               = NO
+
+# If set to YES, the inheritance and collaboration graphs will show the
+# relations between templates and their instances.
+
+TEMPLATE_RELATIONS     = NO
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
+# tags are set to YES then doxygen will generate a graph for each documented
+# file showing the direct and indirect include dependencies of the file with
+# other documented files.
+
+INCLUDE_GRAPH          = YES
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
+# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
+# documented header file showing the documented files that directly or
+# indirectly include this file.
+
+INCLUDED_BY_GRAPH      = YES
+
+# If the CALL_GRAPH and HAVE_DOT options are set to YES then
+# doxygen will generate a call dependency graph for every global function
+# or class method. Note that enabling this option will significantly increase
+# the time of a run. So in most cases it will be better to enable call graphs
+# for selected functions only using the \callgraph command.
+
+CALL_GRAPH             = NO
+
+# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then
+# doxygen will generate a caller dependency graph for every global function
+# or class method. Note that enabling this option will significantly increase
+# the time of a run. So in most cases it will be better to enable caller
+# graphs for selected functions only using the \callergraph command.
+
+CALLER_GRAPH           = NO
+
+# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
+# will graphical hierarchy of all classes instead of a textual one.
+
+GRAPHICAL_HIERARCHY    = YES
+
+# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES
+# then doxygen will show the dependencies a directory has on other directories
+# in a graphical way. The dependency relations are determined by the #include
+# relations between the files in the directories.
+
+DIRECTORY_GRAPH        = YES
+
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
+# generated by dot. Possible values are png, jpg, or gif
+# If left blank png will be used.
+
+DOT_IMAGE_FORMAT       = png
+
+# The tag DOT_PATH can be used to specify the path where the dot tool can be
+# found. If left blank, it is assumed the dot tool can be found in the path.
+
+DOT_PATH               =
+
+# The DOTFILE_DIRS tag can be used to specify one or more directories that
+# contain dot files that are included in the documentation (see the
+# \dotfile command).
+
+DOTFILE_DIRS           =
+
+# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of
+# nodes that will be shown in the graph. If the number of nodes in a graph
+# becomes larger than this value, doxygen will truncate the graph, which is
+# visualized by representing a node as a red box. Note that doxygen if the
+# number of direct children of the root node in a graph is already larger than
+# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note
+# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
+
+DOT_GRAPH_MAX_NODES    = 50
+
+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
+# graphs generated by dot. A depth value of 3 means that only nodes reachable
+# from the root by following a path via at most 3 edges will be shown. Nodes
+# that lay further from the root node will be omitted. Note that setting this
+# option to 1 or 2 may greatly reduce the computation time needed for large
+# code bases. Also note that the size of a graph can be further restricted by
+# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
+
+MAX_DOT_GRAPH_DEPTH    = 0
+
+# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
+# background. This is disabled by default, because dot on Windows does not
+# seem to support this out of the box. Warning: Depending on the platform used,
+# enabling this option may lead to badly anti-aliased labels on the edges of
+# a graph (i.e. they become hard to read).
+
+DOT_TRANSPARENT        = NO
+
+# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
+# files in one run (i.e. multiple -o and -T options on the command line). This
+# makes dot run faster, but since only newer versions of dot (>1.8.10)
+# support this, this feature is disabled by default.
+
+DOT_MULTI_TARGETS      = NO
+
+# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
+# generate a legend page explaining the meaning of the various boxes and
+# arrows in the dot generated graphs.
+
+GENERATE_LEGEND        = YES
+
+# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
+# remove the intermediate dot files that are used to generate
+# the various graphs.
+
+DOT_CLEANUP            = YES
diff --git a/perftests/panorama/feature_stab/src/dbreg/dbreg.cpp b/perftests/panorama/feature_stab/src/dbreg/dbreg.cpp
new file mode 100644
index 0000000..da06aa2
--- /dev/null
+++ b/perftests/panorama/feature_stab/src/dbreg/dbreg.cpp
@@ -0,0 +1,794 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+// $Id: dbreg.cpp,v 1.31 2011/06/17 14:04:32 mbansal Exp $
+#include "dbreg.h"
+#include <string.h>
+#include <stdio.h>
+
+
+#if PROFILE
+#endif
+
+//#include <iostream>
+
+db_FrameToReferenceRegistration::db_FrameToReferenceRegistration() :
+  m_initialized(false),m_nr_matches(0),m_over_allocation(256),m_nr_bins(20),m_max_cost_pix(30), m_quarter_resolution(false)
+{
+  m_reference_image = NULL;
+  m_aligned_ins_image = NULL;
+
+  m_quarter_res_image = NULL;
+  m_horz_smooth_subsample_image = NULL;
+
+  m_x_corners_ref = NULL;
+  m_y_corners_ref = NULL;
+
+  m_x_corners_ins = NULL;
+  m_y_corners_ins = NULL;
+
+  m_match_index_ref = NULL;
+  m_match_index_ins = NULL;
+
+  m_inlier_indices = NULL;
+
+  m_num_inlier_indices = 0;
+
+  m_temp_double = NULL;
+  m_temp_int = NULL;
+
+  m_corners_ref = NULL;
+  m_corners_ins = NULL;
+
+  m_sq_cost = NULL;
+  m_cost_histogram = NULL;
+
+  profile_string = NULL;
+
+  db_Identity3x3(m_K);
+  db_Identity3x3(m_H_ref_to_ins);
+  db_Identity3x3(m_H_dref_to_ref);
+
+  m_sq_cost_computed = false;
+  m_reference_set = false;
+
+  m_reference_update_period = 0;
+  m_nr_frames_processed = 0;
+
+  return;
+}
+
+db_FrameToReferenceRegistration::~db_FrameToReferenceRegistration()
+{
+  Clean();
+}
+
+void db_FrameToReferenceRegistration::Clean()
+{
+  if ( m_reference_image )
+    db_FreeImage_u(m_reference_image,m_im_height);
+
+  if ( m_aligned_ins_image )
+    db_FreeImage_u(m_aligned_ins_image,m_im_height);
+
+  if ( m_quarter_res_image )
+  {
+    db_FreeImage_u(m_quarter_res_image, m_im_height);
+  }
+
+  if ( m_horz_smooth_subsample_image )
+  {
+    db_FreeImage_u(m_horz_smooth_subsample_image, m_im_height*2);
+  }
+
+  delete [] m_x_corners_ref;
+  delete [] m_y_corners_ref;
+
+  delete [] m_x_corners_ins;
+  delete [] m_y_corners_ins;
+
+  delete [] m_match_index_ref;
+  delete [] m_match_index_ins;
+
+  delete [] m_temp_double;
+  delete [] m_temp_int;
+
+  delete [] m_corners_ref;
+  delete [] m_corners_ins;
+
+  delete [] m_sq_cost;
+  delete [] m_cost_histogram;
+
+  delete [] m_inlier_indices;
+
+  if(profile_string)
+    delete [] profile_string;
+
+  m_reference_image = NULL;
+  m_aligned_ins_image = NULL;
+
+  m_quarter_res_image = NULL;
+  m_horz_smooth_subsample_image = NULL;
+
+  m_x_corners_ref = NULL;
+  m_y_corners_ref = NULL;
+
+  m_x_corners_ins = NULL;
+  m_y_corners_ins = NULL;
+
+  m_match_index_ref = NULL;
+  m_match_index_ins = NULL;
+
+  m_inlier_indices = NULL;
+
+  m_temp_double = NULL;
+  m_temp_int = NULL;
+
+  m_corners_ref = NULL;
+  m_corners_ins = NULL;
+
+  m_sq_cost = NULL;
+  m_cost_histogram = NULL;
+}
+
+void db_FrameToReferenceRegistration::Init(int width, int height,
+                       int    homography_type,
+                       int    max_iterations,
+                       bool   linear_polish,
+                       bool   quarter_resolution,
+                       double scale,
+                       unsigned int reference_update_period,
+                       bool   do_motion_smoothing,
+                       double motion_smoothing_gain,
+                       int    nr_samples,
+                       int    chunk_size,
+                       int    cd_target_nr_corners,
+                       double cm_max_disparity,
+                           bool   cm_use_smaller_matching_window,
+                       int    cd_nr_horz_blocks,
+                       int    cd_nr_vert_blocks
+                       )
+{
+  Clean();
+
+  m_reference_update_period = reference_update_period;
+  m_nr_frames_processed = 0;
+
+  m_do_motion_smoothing = do_motion_smoothing;
+  m_motion_smoothing_gain = motion_smoothing_gain;
+
+  m_stab_smoother.setSmoothingFactor(m_motion_smoothing_gain);
+
+  m_quarter_resolution = quarter_resolution;
+
+  profile_string = new char[10240];
+
+  if (m_quarter_resolution == true)
+  {
+    width = width/2;
+    height = height/2;
+
+    m_horz_smooth_subsample_image = db_AllocImage_u(width,height*2,m_over_allocation);
+    m_quarter_res_image = db_AllocImage_u(width,height,m_over_allocation);
+  }
+
+  m_im_width = width;
+  m_im_height = height;
+
+  double temp[9];
+  db_Approx3DCalMat(m_K,temp,m_im_width,m_im_height);
+
+  m_homography_type = homography_type;
+  m_max_iterations = max_iterations;
+  m_scale = 2/(m_K[0]+m_K[4]);
+  m_nr_samples = nr_samples;
+  m_chunk_size = chunk_size;
+
+  double outlier_t1 = 5.0;
+
+  m_outlier_t2 = outlier_t1*outlier_t1;//*m_scale*m_scale;
+
+  m_current_is_reference = false;
+
+  m_linear_polish = linear_polish;
+
+  m_reference_image = db_AllocImage_u(m_im_width,m_im_height,m_over_allocation);
+  m_aligned_ins_image = db_AllocImage_u(m_im_width,m_im_height,m_over_allocation);
+
+  // initialize feature detection and matching:
+  //m_max_nr_corners = m_cd.Init(m_im_width,m_im_height,cd_target_nr_corners,cd_nr_horz_blocks,cd_nr_vert_blocks,0.0,0.0);
+  m_max_nr_corners = m_cd.Init(m_im_width,m_im_height,cd_target_nr_corners,cd_nr_horz_blocks,cd_nr_vert_blocks,DB_DEFAULT_ABS_CORNER_THRESHOLD/500.0,0.0);
+
+    int use_21 = 0;
+  m_max_nr_matches = m_cm.Init(m_im_width,m_im_height,cm_max_disparity,m_max_nr_corners,DB_DEFAULT_NO_DISPARITY,cm_use_smaller_matching_window,use_21);
+
+  // allocate space for corner feature locations for reference and inspection images:
+  m_x_corners_ref = new double [m_max_nr_corners];
+  m_y_corners_ref = new double [m_max_nr_corners];
+
+  m_x_corners_ins = new double [m_max_nr_corners];
+  m_y_corners_ins = new double [m_max_nr_corners];
+
+  // allocate space for match indices:
+  m_match_index_ref = new int [m_max_nr_matches];
+  m_match_index_ins = new int [m_max_nr_matches];
+
+  m_temp_double = new double [12*DB_DEFAULT_NR_SAMPLES+10*m_max_nr_matches];
+  m_temp_int = new int [db_maxi(DB_DEFAULT_NR_SAMPLES,m_max_nr_matches)];
+
+  // allocate space for homogenous image points:
+  m_corners_ref = new double [3*m_max_nr_corners];
+  m_corners_ins = new double [3*m_max_nr_corners];
+
+  // allocate cost array and histogram:
+  m_sq_cost = new double [m_max_nr_matches];
+  m_cost_histogram = new int [m_nr_bins];
+
+  // reserve array:
+  //m_inlier_indices.reserve(m_max_nr_matches);
+  m_inlier_indices = new int[m_max_nr_matches];
+
+  m_initialized = true;
+
+  m_max_inlier_count = 0;
+}
+
+
+#define MB 0
+// Save the reference image, detect features and update the dref-to-ref transformation
+int db_FrameToReferenceRegistration::UpdateReference(const unsigned char * const * im, bool subsample, bool detect_corners)
+{
+  double temp[9];
+  db_Multiply3x3_3x3(temp,m_H_dref_to_ref,m_H_ref_to_ins);
+  db_Copy9(m_H_dref_to_ref,temp);
+
+  const unsigned char * const * imptr = im;
+
+  if (m_quarter_resolution && subsample)
+  {
+    GenerateQuarterResImage(im);
+    imptr = m_quarter_res_image;
+  }
+
+  // save the reference image, detect features and quit
+  db_CopyImage_u(m_reference_image,imptr,m_im_width,m_im_height,m_over_allocation);
+
+  if(detect_corners)
+  {
+    #if MB
+    m_cd.DetectCorners(imptr, m_x_corners_ref,m_y_corners_ref,&m_nr_corners_ref);
+    int nr = 0;
+    for(int k=0; k<m_nr_corners_ref; k++)
+    {
+        if(m_x_corners_ref[k]>m_im_width/3)
+        {
+            m_x_corners_ref[nr] = m_x_corners_ref[k];
+            m_y_corners_ref[nr] = m_y_corners_ref[k];
+            nr++;
+        }
+
+    }
+    m_nr_corners_ref = nr;
+    #else
+    m_cd.DetectCorners(imptr, m_x_corners_ref,m_y_corners_ref,&m_nr_corners_ref);
+    #endif
+  }
+  else
+  {
+    m_nr_corners_ref = m_nr_corners_ins;
+
+    for(int k=0; k<m_nr_corners_ins; k++)
+    {
+        m_x_corners_ref[k] = m_x_corners_ins[k];
+        m_y_corners_ref[k] = m_y_corners_ins[k];
+    }
+
+  }
+
+  db_Identity3x3(m_H_ref_to_ins);
+
+  m_max_inlier_count = 0;   // Reset to 0 as no inliers seen until now
+  m_sq_cost_computed = false;
+  m_reference_set = true;
+  m_current_is_reference = true;
+  return 1;
+}
+
+void db_FrameToReferenceRegistration::Get_H_dref_to_ref(double H[9])
+{
+  db_Copy9(H,m_H_dref_to_ref);
+}
+
+void db_FrameToReferenceRegistration::Get_H_dref_to_ins(double H[9])
+{
+  db_Multiply3x3_3x3(H,m_H_dref_to_ref,m_H_ref_to_ins);
+}
+
+void db_FrameToReferenceRegistration::Set_H_dref_to_ins(double H[9])
+{
+    double H_ins_to_ref[9];
+
+    db_Identity3x3(H_ins_to_ref);   // Ensure it has proper values
+    db_InvertAffineTransform(H_ins_to_ref,m_H_ref_to_ins);  // Invert to get ins to ref
+    db_Multiply3x3_3x3(m_H_dref_to_ref,H,H_ins_to_ref); // Update dref to ref using the input H from dref to ins
+}
+
+
+void db_FrameToReferenceRegistration::ResetDisplayReference()
+{
+  db_Identity3x3(m_H_dref_to_ref);
+}
+
+bool db_FrameToReferenceRegistration::NeedReferenceUpdate()
+{
+  // If less than 50% of the starting number of inliers left, then its time to update the reference.
+  if(m_max_inlier_count>0 && float(m_num_inlier_indices)/float(m_max_inlier_count)<0.5)
+    return true;
+  else
+    return false;
+}
+
+int db_FrameToReferenceRegistration::AddFrame(const unsigned char * const * im, double H[9],bool force_reference,bool prewarp)
+{
+  m_current_is_reference = false;
+  if(!m_reference_set || force_reference)
+    {
+      db_Identity3x3(m_H_ref_to_ins);
+      db_Copy9(H,m_H_ref_to_ins);
+
+      UpdateReference(im,true,true);
+      return 0;
+    }
+
+  const unsigned char * const * imptr = im;
+
+  if (m_quarter_resolution)
+  {
+    if (m_quarter_res_image)
+    {
+      GenerateQuarterResImage(im);
+    }
+
+    imptr = (const unsigned char * const* )m_quarter_res_image;
+  }
+
+  double H_last[9];
+  db_Copy9(H_last,m_H_ref_to_ins);
+  db_Identity3x3(m_H_ref_to_ins);
+
+  m_sq_cost_computed = false;
+
+  // detect corners on inspection image and match to reference image features:s
+
+  // @jke - Adding code to time the functions.  TODO: Remove after test
+#if PROFILE
+  double iTimer1, iTimer2;
+  char str[255];
+  strcpy(profile_string,"\n");
+  sprintf(str,"[%dx%d] %p\n",m_im_width,m_im_height,im);
+  strcat(profile_string, str);
+#endif
+
+  // @jke - Adding code to time the functions.  TODO: Remove after test
+#if PROFILE
+  iTimer1 = now_ms();
+#endif
+  m_cd.DetectCorners(imptr, m_x_corners_ins,m_y_corners_ins,&m_nr_corners_ins);
+  // @jke - Adding code to time the functions.  TODO: Remove after test
+# if PROFILE
+  iTimer2 = now_ms();
+  double elapsedTimeCorner = iTimer2 - iTimer1;
+  sprintf(str,"Corner Detection [%d corners] = %g ms\n",m_nr_corners_ins, elapsedTimeCorner);
+  strcat(profile_string, str);
+#endif
+
+  // @jke - Adding code to time the functions.  TODO: Remove after test
+#if PROFILE
+  iTimer1 = now_ms();
+#endif
+    if(prewarp)
+  m_cm.Match(m_reference_image,imptr,m_x_corners_ref,m_y_corners_ref,m_nr_corners_ref,
+         m_x_corners_ins,m_y_corners_ins,m_nr_corners_ins,
+         m_match_index_ref,m_match_index_ins,&m_nr_matches,H,0);
+    else
+  m_cm.Match(m_reference_image,imptr,m_x_corners_ref,m_y_corners_ref,m_nr_corners_ref,
+         m_x_corners_ins,m_y_corners_ins,m_nr_corners_ins,
+         m_match_index_ref,m_match_index_ins,&m_nr_matches);
+  // @jke - Adding code to time the functions.  TODO: Remove after test
+# if PROFILE
+  iTimer2 = now_ms();
+  double elapsedTimeMatch = iTimer2 - iTimer1;
+  sprintf(str,"Matching [%d] = %g ms\n",m_nr_matches,elapsedTimeMatch);
+  strcat(profile_string, str);
+#endif
+
+
+  // copy out matching features:
+  for ( int i = 0; i < m_nr_matches; ++i )
+    {
+      int offset = 3*i;
+      m_corners_ref[offset  ] = m_x_corners_ref[m_match_index_ref[i]];
+      m_corners_ref[offset+1] = m_y_corners_ref[m_match_index_ref[i]];
+      m_corners_ref[offset+2] = 1.0;
+
+      m_corners_ins[offset  ] = m_x_corners_ins[m_match_index_ins[i]];
+      m_corners_ins[offset+1] = m_y_corners_ins[m_match_index_ins[i]];
+      m_corners_ins[offset+2] = 1.0;
+    }
+
+  // @jke - Adding code to time the functions.  TODO: Remove after test
+#if PROFILE
+  iTimer1 = now_ms();
+#endif
+  // perform the alignment:
+  db_RobImageHomography(m_H_ref_to_ins, m_corners_ref, m_corners_ins, m_nr_matches, m_K, m_K, m_temp_double, m_temp_int,
+            m_homography_type,NULL,m_max_iterations,m_max_nr_matches,m_scale,
+            m_nr_samples, m_chunk_size);
+  // @jke - Adding code to time the functions.  TODO: Remove after test
+# if PROFILE
+  iTimer2 = now_ms();
+  double elapsedTimeHomography = iTimer2 - iTimer1;
+  sprintf(str,"Homography = %g ms\n",elapsedTimeHomography);
+  strcat(profile_string, str);
+#endif
+
+
+  SetOutlierThreshold();
+
+  // Compute the inliers for the db compute m_H_ref_to_ins
+  ComputeInliers(m_H_ref_to_ins);
+
+  // Update the max inlier count
+  m_max_inlier_count = (m_max_inlier_count > m_num_inlier_indices)?m_max_inlier_count:m_num_inlier_indices;
+
+  // Fit a least-squares model to just the inliers and put it in m_H_ref_to_ins
+  if(m_linear_polish)
+    Polish(m_inlier_indices, m_num_inlier_indices);
+
+  if (m_quarter_resolution)
+  {
+    m_H_ref_to_ins[2] *= 2.0;
+    m_H_ref_to_ins[5] *= 2.0;
+  }
+
+#if PROFILE
+  sprintf(str,"#Inliers = %d \n",m_num_inlier_indices);
+  strcat(profile_string, str);
+#endif
+/*
+  ///// CHECK IF CURRENT TRANSFORMATION GOOD OR BAD ////
+  ///// IF BAD, then update reference to the last correctly aligned inspection frame;
+  if(m_num_inlier_indices<5)//0.9*m_nr_matches || m_nr_matches < 20)
+  {
+    db_Copy9(m_H_ref_to_ins,H_last);
+    UpdateReference(imptr,false);
+//  UpdateReference(m_aligned_ins_image,false);
+  }
+  else
+  {
+  ///// IF GOOD, then update the last correctly aligned inspection frame to be this;
+  //db_CopyImage_u(m_aligned_ins_image,imptr,m_im_width,m_im_height,m_over_allocation);
+*/
+  if(m_do_motion_smoothing)
+    SmoothMotion();
+
+   // Disable debug printing
+   // db_PrintDoubleMatrix(m_H_ref_to_ins,3,3);
+
+  db_Copy9(H, m_H_ref_to_ins);
+
+  m_nr_frames_processed++;
+{
+  if ( (m_nr_frames_processed % m_reference_update_period) == 0 )
+  {
+    //UpdateReference(imptr,false, false);
+
+    #if MB
+    UpdateReference(imptr,false, true);
+    #else
+    UpdateReference(imptr,false, false);
+    #endif
+  }
+
+
+  }
+
+
+
+  return 1;
+}
+
+//void db_FrameToReferenceRegistration::ComputeInliers(double H[9],std::vector<int> &inlier_indices)
+void db_FrameToReferenceRegistration::ComputeInliers(double H[9])
+{
+  double totnummatches = m_nr_matches;
+  int inliercount=0;
+
+  m_num_inlier_indices = 0;
+//  inlier_indices.clear();
+
+  for(int c=0; c < totnummatches; c++ )
+    {
+      if (m_sq_cost[c] <= m_outlier_t2)
+    {
+      m_inlier_indices[inliercount] = c;
+      inliercount++;
+    }
+    }
+
+  m_num_inlier_indices = inliercount;
+  double frac=inliercount/totnummatches;
+}
+
+//void db_FrameToReferenceRegistration::Polish(std::vector<int> &inlier_indices)
+void db_FrameToReferenceRegistration::Polish(int *inlier_indices, int &num_inlier_indices)
+{
+  db_Zero(m_polish_C,36);
+  db_Zero(m_polish_D,6);
+  for (int i=0;i<num_inlier_indices;i++)
+    {
+      int j = 3*inlier_indices[i];
+      m_polish_C[0]+=m_corners_ref[j]*m_corners_ref[j];
+      m_polish_C[1]+=m_corners_ref[j]*m_corners_ref[j+1];
+      m_polish_C[2]+=m_corners_ref[j];
+      m_polish_C[7]+=m_corners_ref[j+1]*m_corners_ref[j+1];
+      m_polish_C[8]+=m_corners_ref[j+1];
+      m_polish_C[14]+=1;
+      m_polish_D[0]+=m_corners_ref[j]*m_corners_ins[j];
+      m_polish_D[1]+=m_corners_ref[j+1]*m_corners_ins[j];
+      m_polish_D[2]+=m_corners_ins[j];
+      m_polish_D[3]+=m_corners_ref[j]*m_corners_ins[j+1];
+      m_polish_D[4]+=m_corners_ref[j+1]*m_corners_ins[j+1];
+      m_polish_D[5]+=m_corners_ins[j+1];
+    }
+
+  double a=db_maxd(m_polish_C[0],m_polish_C[7]);
+  m_polish_C[0]/=a; m_polish_C[1]/=a;   m_polish_C[2]/=a;
+  m_polish_C[7]/=a; m_polish_C[8]/=a; m_polish_C[14]/=a;
+
+  m_polish_D[0]/=a; m_polish_D[1]/=a;   m_polish_D[2]/=a;
+  m_polish_D[3]/=a; m_polish_D[4]/=a;   m_polish_D[5]/=a;
+
+
+  m_polish_C[6]=m_polish_C[1];
+  m_polish_C[12]=m_polish_C[2];
+  m_polish_C[13]=m_polish_C[8];
+
+  m_polish_C[21]=m_polish_C[0]; m_polish_C[22]=m_polish_C[1]; m_polish_C[23]=m_polish_C[2];
+  m_polish_C[28]=m_polish_C[7]; m_polish_C[29]=m_polish_C[8];
+  m_polish_C[35]=m_polish_C[14];
+
+
+  double d[6];
+  db_CholeskyDecomp6x6(m_polish_C,d);
+  db_CholeskyBacksub6x6(m_H_ref_to_ins,m_polish_C,d,m_polish_D);
+}
+
+void db_FrameToReferenceRegistration::EstimateSecondaryModel(double H[9])
+{
+  /*      if ( m_current_is_reference )
+      {
+      db_Identity3x3(H);
+      return;
+      }
+  */
+
+  // select the outliers of the current model:
+  SelectOutliers();
+
+  // perform the alignment:
+  db_RobImageHomography(m_H_ref_to_ins, m_corners_ref, m_corners_ins, m_nr_matches, m_K, m_K, m_temp_double, m_temp_int,
+            m_homography_type,NULL,m_max_iterations,m_max_nr_matches,m_scale,
+            m_nr_samples, m_chunk_size);
+
+  db_Copy9(H,m_H_ref_to_ins);
+}
+
+void db_FrameToReferenceRegistration::ComputeCostArray()
+{
+  if ( m_sq_cost_computed ) return;
+
+  for( int c=0, k=0 ;c < m_nr_matches; c++, k=k+3)
+    {
+      m_sq_cost[c] = SquaredInhomogenousHomographyError(m_corners_ins+k,m_H_ref_to_ins,m_corners_ref+k);
+    }
+
+  m_sq_cost_computed = true;
+}
+
+void db_FrameToReferenceRegistration::SelectOutliers()
+{
+  int nr_outliers=0;
+
+  ComputeCostArray();
+
+  for(int c=0, k=0 ;c<m_nr_matches;c++,k=k+3)
+    {
+      if (m_sq_cost[c] > m_outlier_t2)
+    {
+      int offset = 3*nr_outliers++;
+      db_Copy3(m_corners_ref+offset,m_corners_ref+k);
+      db_Copy3(m_corners_ins+offset,m_corners_ins+k);
+    }
+    }
+
+  m_nr_matches = nr_outliers;
+}
+
+void db_FrameToReferenceRegistration::ComputeCostHistogram()
+{
+  ComputeCostArray();
+
+  for ( int b = 0; b < m_nr_bins; ++b )
+    m_cost_histogram[b] = 0;
+
+  for(int c = 0; c < m_nr_matches; c++)
+    {
+      double error = db_SafeSqrt(m_sq_cost[c]);
+      int bin = (int)(error/m_max_cost_pix*m_nr_bins);
+      if ( bin < m_nr_bins )
+    m_cost_histogram[bin]++;
+      else
+    m_cost_histogram[m_nr_bins-1]++;
+    }
+
+/*
+  for ( int i = 0; i < m_nr_bins; ++i )
+    std::cout << m_cost_histogram[i] << " ";
+  std::cout << std::endl;
+*/
+}
+
+void db_FrameToReferenceRegistration::SetOutlierThreshold()
+{
+  ComputeCostHistogram();
+
+  int i = 0, last=0;
+  for (; i < m_nr_bins-1; ++i )
+    {
+      if ( last > m_cost_histogram[i] )
+    break;
+      last = m_cost_histogram[i];
+    }
+
+  //std::cout << "I " <<  i << std::endl;
+
+  int max = m_cost_histogram[i];
+
+  for (; i < m_nr_bins-1; ++i )
+    {
+      if ( m_cost_histogram[i] < (int)(0.1*max) )
+    //if ( last < m_cost_histogram[i] )
+    break;
+      last = m_cost_histogram[i];
+    }
+  //std::cout << "J " <<  i << std::endl;
+
+  m_outlier_t2 = db_sqr(i*m_max_cost_pix/m_nr_bins);
+
+  //std::cout << "m_outlier_t2 " <<  m_outlier_t2 << std::endl;
+}
+
+void db_FrameToReferenceRegistration::SmoothMotion(void)
+{
+  VP_MOTION inmot,outmot;
+
+  double H[9];
+
+  Get_H_dref_to_ins(H);
+
+      MXX(inmot) = H[0];
+    MXY(inmot) = H[1];
+    MXZ(inmot) = H[2];
+    MXW(inmot) = 0.0;
+
+    MYX(inmot) = H[3];
+    MYY(inmot) = H[4];
+    MYZ(inmot) = H[5];
+    MYW(inmot) = 0.0;
+
+    MZX(inmot) = H[6];
+    MZY(inmot) = H[7];
+    MZZ(inmot) = H[8];
+    MZW(inmot) = 0.0;
+
+    MWX(inmot) = 0.0;
+    MWY(inmot) = 0.0;
+    MWZ(inmot) = 0.0;
+    MWW(inmot) = 1.0;
+
+    inmot.type = VP_MOTION_AFFINE;
+
+    int w = m_im_width;
+    int h = m_im_height;
+
+    if(m_quarter_resolution)
+    {
+    w = w*2;
+    h = h*2;
+    }
+
+#if 0
+    m_stab_smoother.smoothMotionAdaptive(w,h,&inmot,&outmot);
+#else
+    m_stab_smoother.smoothMotion(&inmot,&outmot);
+#endif
+
+    H[0] = MXX(outmot);
+    H[1] = MXY(outmot);
+    H[2] = MXZ(outmot);
+
+    H[3] = MYX(outmot);
+    H[4] = MYY(outmot);
+    H[5] = MYZ(outmot);
+
+    H[6] = MZX(outmot);
+    H[7] = MZY(outmot);
+    H[8] = MZZ(outmot);
+
+    Set_H_dref_to_ins(H);
+}
+
+void db_FrameToReferenceRegistration::GenerateQuarterResImage(const unsigned char* const* im)
+{
+  int input_h = m_im_height*2;
+  int input_w = m_im_width*2;
+
+  for (int j = 0; j < input_h; j++)
+  {
+    const unsigned char* in_row_ptr = im[j];
+    unsigned char* out_row_ptr = m_horz_smooth_subsample_image[j]+1;
+
+    for (int i = 2; i < input_w-2; i += 2)
+    {
+      int smooth_val = (
+            6*in_row_ptr[i] +
+            ((in_row_ptr[i-1]+in_row_ptr[i+1])<<2) +
+            in_row_ptr[i-2]+in_row_ptr[i+2]
+            ) >> 4;
+      *out_row_ptr++ = (unsigned char) smooth_val;
+
+      if ( (smooth_val < 0) || (smooth_val > 255))
+      {
+        return;
+      }
+
+    }
+  }
+
+  for (int j = 2; j < input_h-2; j+=2)
+  {
+
+    unsigned char* in_row_ptr = m_horz_smooth_subsample_image[j];
+    unsigned char* out_row_ptr = m_quarter_res_image[j/2];
+
+    for (int i = 1; i < m_im_width-1; i++)
+    {
+      int smooth_val = (
+            6*in_row_ptr[i] +
+            ((in_row_ptr[i-m_im_width]+in_row_ptr[i+m_im_width]) << 2)+
+            in_row_ptr[i-2*m_im_width]+in_row_ptr[i+2*m_im_width]
+            ) >> 4;
+      *out_row_ptr++ = (unsigned char)smooth_val;
+
+      if ( (smooth_val < 0) || (smooth_val > 255))
+      {
+        return;
+      }
+
+    }
+  }
+}
diff --git a/perftests/panorama/feature_stab/src/dbreg/dbreg.h b/perftests/panorama/feature_stab/src/dbreg/dbreg.h
new file mode 100644
index 0000000..4eb2444
--- /dev/null
+++ b/perftests/panorama/feature_stab/src/dbreg/dbreg.h
@@ -0,0 +1,581 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+
+#pragma once
+
+#ifdef _WIN32
+#ifdef DBREG_EXPORTS
+#define DBREG_API __declspec(dllexport)
+#else
+#define DBREG_API __declspec(dllimport)
+#endif
+#else
+#define DBREG_API
+#endif
+
+// @jke - the next few lines are for extracting timing data.  TODO: Remove after test
+#define PROFILE 0
+
+#include "dbstabsmooth.h"
+
+#include <db_feature_detection.h>
+#include <db_feature_matching.h>
+#include <db_rob_image_homography.h>
+
+#if PROFILE
+    #include <sys/time.h>
+#endif
+
+/*! \mainpage db_FrameToReferenceRegistration
+
+ \section intro Introduction
+
+ db_FrameToReferenceRegistration provides a simple interface to a set of sophisticated algorithms for stabilizing
+ video sequences.  As its name suggests, the class is used to compute parameters that will allow us to warp incoming video
+ frames and register them with respect to a so-called <i>reference</i> frame.  The reference frame is simply the first
+ frame of a sequence; the registration process is that of estimating the parameters of a warp that can be applied to
+ subsequent frames to make those frames align with the reference.  A video made up of these warped frames will be more
+ stable than the input video.
+
+ For more technical information on the internal structure of the algorithms used within the db_FrameToRegistration class,
+ please follow this <a href="../Sarnoff image registration.docx">link</a>.
+
+ \section usage Usage
+ In addition to the class constructor, there are two main functions of db_FrameToReferenceRegistration that are of
+ interest to the programmer.  db_FrameToReferenceRegistration::Init(...) is used to initialize the parameters of the
+ registration algorithm. db_FrameToReferenceRegistration::AddFrame(...) is the method by which each new video frame
+ is introduced to the registration algorithm, and produces the estimated registration warp parameters.
+
+ The following example illustrates how the major methods of the class db_FrameToReferenceRegistration can be used together
+ to calculate the registration parameters for an image sequence.  In the example, the calls to the methods of
+ db_FrameToReferenceRegistration match those found in the API, but supporting code should be considered pseudo-code.
+ For a more complete example, please consult the source code for dbregtest.
+
+
+    \code
+    // feature-based image registration class:
+    db_FrameToReferenceRegistration reg;
+
+    // Image data
+    const unsigned char * const * image_storage;
+
+    // The 3x3 frame to reference registration parameters
+    double frame_to_ref_homography[9];
+
+    // a counter to count the number of frames processed.
+    unsigned long frame_counter;
+    // ...
+
+    // main loop - keep going while there are images to process.
+    while (ImagesAreAvailable)
+    {
+        // Call functions to place latest data into image_storage
+        // ...
+
+        // if the registration object is not yet initialized, then do so
+        // The arguments to this function are explained in the accompanying
+        // html API documentation
+        if (!reg.Initialized())
+        {
+            reg.Init(w,h,motion_model_type,25,linear_polish,quarter_resolution,
+                   DB_POINT_STANDARDDEV,reference_update_period,
+                   do_motion_smoothing,motion_smoothing_gain,
+                   DB_DEFAULT_NR_SAMPLES,DB_DEFAULT_CHUNK_SIZE,
+                   nr_corners,max_disparity);
+        }
+
+        // Present the new image data to the registration algorithm,
+        // with the result being stored in the frame_to_ref_homography
+        // variable.
+        reg.AddFrame(image_storage,frame_to_ref_homography);
+
+        // frame_to_ref_homography now contains the stabilizing transform
+        // use this to warp the latest image for display, etc.
+
+        // if this is the first frame, we need to tell the registration
+        // class to store the image as its reference.  Otherwise, AddFrame
+        // takes care of that.
+        if (frame_counter == 0)
+        {
+            reg.UpdateReference(image_storage);
+        }
+
+        // increment the frame counter
+        frame_counter++;
+    }
+
+    \endcode
+
+ */
+
+/*!
+ * Performs feature-based frame to reference image registration.
+ */
+class DBREG_API db_FrameToReferenceRegistration
+{
+public:
+    db_FrameToReferenceRegistration(void);
+    ~db_FrameToReferenceRegistration();
+
+    /*!
+     * Set parameters and allocate memory. Note: The default values of these parameters have been set to the values used for the android implementation (i.e. the demo APK).
+     * \param width         image width
+     * \param height        image height
+     * \param homography_type see definitions in \ref LMRobImageHomography
+     * \param max_iterations    max number of polishing steps
+     * \param linear_polish     whether to perform a linear polishing step after RANSAC
+     * \param quarter_resolution    whether to process input images at quarter resolution (for computational efficiency)
+     * \param scale         Cauchy scale coefficient (see db_ExpCauchyReprojectionError() )
+     * \param reference_update_period   how often to update the alignment reference (in units of number of frames)
+     * \param do_motion_smoothing   whether to perform display reference smoothing
+     * \param motion_smoothing_gain weight factor to reflect how fast the display reference must follow the current frame if motion smoothing is enabled
+     * \param nr_samples        number of times to compute a hypothesis
+     * \param chunk_size        size of cost chunks
+     * \param cd_target_nr_corners  target number of corners for corner detector
+     * \param cm_max_disparity      maximum disparity search range for corner matcher (in units of ratio of image width)
+     * \param cm_use_smaller_matching_window    if set to true, uses a correlation window of 5x5 instead of the default 11x11
+     * \param cd_nr_horz_blocks     the number of horizontal blocks for the corner detector to partition the image
+     * \param cd_nr_vert_blocks     the number of vertical blocks for the corner detector to partition the image
+    */
+    void Init(int width, int height,
+          int       homography_type = DB_HOMOGRAPHY_TYPE_DEFAULT,
+          int       max_iterations = DB_DEFAULT_MAX_ITERATIONS,
+          bool      linear_polish = false,
+          bool   quarter_resolution = true,
+          double  scale = DB_POINT_STANDARDDEV,
+          unsigned int reference_update_period = 3,
+          bool   do_motion_smoothing = false,
+          double motion_smoothing_gain = 0.75,
+          int   nr_samples = DB_DEFAULT_NR_SAMPLES,
+          int   chunk_size = DB_DEFAULT_CHUNK_SIZE,
+          int    cd_target_nr_corners = 500,
+          double cm_max_disparity = 0.2,
+          bool   cm_use_smaller_matching_window = false,
+          int    cd_nr_horz_blocks = 5,
+          int    cd_nr_vert_blocks = 5);
+
+    /*!
+     * Reset the transformation type that is being use to perform alignment. Use this to change the alignment type at run time.
+     * \param homography_type   the type of transformation to use for performing alignment (see definitions in \ref LMRobImageHomography)
+    */
+    void ResetHomographyType(int homography_type) { m_homography_type = homography_type; }
+
+    /*!
+     * Enable/Disable motion smoothing. Use this to turn motion smoothing on/off at run time.
+     * \param enable    flag indicating whether to turn the motion smoothing on or off.
+    */
+    void ResetSmoothing(bool enable) { m_do_motion_smoothing = enable; }
+
+    /*!
+     * Align an inspection image to an existing reference image, update the reference image if due and perform motion smoothing if enabled.
+     * \param im                new inspection image
+     * \param H             computed transformation from reference to inspection coordinate frame. Identity is returned if no reference frame was set.
+     * \param force_reference   make this the new reference image
+     */
+    int AddFrame(const unsigned char * const * im, double H[9], bool force_reference=false, bool prewarp=false);
+
+    /*!
+     * Returns true if Init() was run.
+     */
+    bool Initialized() const { return m_initialized; }
+
+    /*!
+     * Returns true if the current frame is being used as the alignment reference.
+    */
+    bool IsCurrentReference() const { return m_current_is_reference; }
+
+    /*!
+     * Returns true if we need to call UpdateReference now.
+     */
+    bool NeedReferenceUpdate();
+
+    /*!
+     * Returns the pointer reference to the alignment reference image data
+    */
+    unsigned char ** GetReferenceImage() { return m_reference_image; }
+
+    /*!
+     * Returns the pointer reference to the double array containing the homogeneous coordinates for the matched reference image corners.
+    */
+    double * GetRefCorners() { return m_corners_ref; }
+    /*!
+     * Returns the pointer reference to the double array containing the homogeneous coordinates for the matched inspection image corners.
+    */
+    double * GetInsCorners() { return m_corners_ins; }
+    /*!
+     * Returns the number of correspondences between the reference and inspection images.
+    */
+    int GetNrMatches() { return m_nr_matches; }
+
+    /*!
+     * Returns the number of corners detected in the current reference image.
+    */
+    int GetNrRefCorners() { return m_nr_corners_ref; }
+
+    /*!
+     * Returns the pointer to an array of indices that were found to be RANSAC inliers from the matched corner lists.
+    */
+    int* GetInliers() { return m_inlier_indices; }
+
+    /*!
+     * Returns the number of inliers from the RANSAC matching step.
+    */
+    int  GetNrInliers() { return m_num_inlier_indices; }
+
+    //std::vector<int>& GetInliers();
+    //void Polish(std::vector<int> &inlier_indices);
+
+    /*!
+     * Perform a linear polishing step by re-estimating the alignment transformation using the RANSAC inliers.
+     * \param inlier_indices    pointer to an array of indices that were found to be RANSAC inliers from the matched corner lists.
+     * \param num_inlier_indices    number of inliers i.e. the length of the array passed as the first argument.
+    */
+    void Polish(int *inlier_indices, int &num_inlier_indices);
+
+    /*!
+     * Reset the motion smoothing parameters to their initial values.
+    */
+    void ResetMotionSmoothingParameters() { m_stab_smoother.Init(); }
+
+    /*!
+     * Update the alignment reference image to the specified image.
+     * \param im    pointer to the image data to be used as the new alignment reference.
+     * \param subsample boolean flag to control whether the function should internally subsample the provided image to the size provided in the Init() function.
+    */
+    int UpdateReference(const unsigned char * const * im, bool subsample = true, bool detect_corners = true);
+
+    /*!
+     * Returns the transformation from the display reference to the alignment reference frame
+    */
+    void Get_H_dref_to_ref(double H[9]);
+    /*!
+     * Returns the transformation from the display reference to the inspection reference frame
+    */
+    void Get_H_dref_to_ins(double H[9]);
+    /*!
+     * Set the transformation from the display reference to the inspection reference frame
+     * \param H the transformation to set
+    */
+    void Set_H_dref_to_ins(double H[9]);
+
+    /*!
+     * Reset the display reference to the current frame.
+    */
+    void ResetDisplayReference();
+
+    /*!
+     * Estimate a secondary motion model starting from the specified transformation.
+     * \param H the primary motion model to start from
+    */
+    void EstimateSecondaryModel(double H[9]);
+
+    /*!
+     *
+    */
+    void SelectOutliers();
+
+    char *profile_string;
+
+protected:
+    void Clean();
+    void GenerateQuarterResImage(const unsigned char* const * im);
+
+    int     m_im_width;
+    int     m_im_height;
+
+    // RANSAC and refinement parameters:
+    int m_homography_type;
+    int     m_max_iterations;
+    double  m_scale;
+    int     m_nr_samples;
+    int     m_chunk_size;
+    double  m_outlier_t2;
+
+    // Whether to fit a linear model to just the inliers at the end
+    bool   m_linear_polish;
+    double m_polish_C[36];
+    double m_polish_D[6];
+
+    // local state
+    bool m_current_is_reference;
+    bool m_initialized;
+
+    // inspection to reference homography:
+    double m_H_ref_to_ins[9];
+    double m_H_dref_to_ref[9];
+
+    // feature extraction and matching:
+    db_CornerDetector_u m_cd;
+    db_Matcher_u        m_cm;
+
+    // length of corner arrays:
+    unsigned long m_max_nr_corners;
+
+    // corner locations of reference image features:
+    double * m_x_corners_ref;
+    double * m_y_corners_ref;
+    int  m_nr_corners_ref;
+
+    // corner locations of inspection image features:
+    double * m_x_corners_ins;
+    double * m_y_corners_ins;
+    int      m_nr_corners_ins;
+
+    // length of match index arrays:
+    unsigned long m_max_nr_matches;
+
+    // match indices:
+    int * m_match_index_ref;
+    int * m_match_index_ins;
+    int   m_nr_matches;
+
+    // pointer to internal copy of the reference image:
+    unsigned char ** m_reference_image;
+
+    // pointer to internal copy of last aligned inspection image:
+    unsigned char ** m_aligned_ins_image;
+
+    // pointer to quarter resolution image, if used.
+    unsigned char** m_quarter_res_image;
+
+    // temporary storage for the quarter resolution image processing
+    unsigned char** m_horz_smooth_subsample_image;
+
+    // temporary space for homography computation:
+    double * m_temp_double;
+    int * m_temp_int;
+
+    // homogenous image point arrays:
+    double * m_corners_ref;
+    double * m_corners_ins;
+
+    // Indices of the points within the match lists
+    int * m_inlier_indices;
+    int m_num_inlier_indices;
+
+    //void ComputeInliers(double H[9], std::vector<int> &inlier_indices);
+    void ComputeInliers(double H[9]);
+
+    // cost arrays:
+    void ComputeCostArray();
+    bool m_sq_cost_computed;
+    double * m_sq_cost;
+
+    // cost histogram:
+    void ComputeCostHistogram();
+    int *m_cost_histogram;
+
+    void SetOutlierThreshold();
+
+    // utility function for smoothing the motion parameters.
+    void SmoothMotion(void);
+
+private:
+    double m_K[9];
+    const int m_over_allocation;
+
+    bool m_reference_set;
+
+    // Maximum number of inliers seen until now w.r.t the current reference frame
+    int m_max_inlier_count;
+
+    // Number of cost histogram bins:
+    int m_nr_bins;
+    // All costs above this threshold get put into the last bin:
+    int m_max_cost_pix;
+
+    // whether to quarter the image resolution for processing, or not
+    bool m_quarter_resolution;
+
+    // the period (in number of frames) for reference update.
+    unsigned int m_reference_update_period;
+
+    // the number of frames processed so far.
+    unsigned int m_nr_frames_processed;
+
+    // smoother for motion transformations
+    db_StabilizationSmoother m_stab_smoother;
+
+    // boolean to control whether motion smoothing occurs (or not)
+    bool m_do_motion_smoothing;
+
+    // double to set the gain for motion smoothing
+    double m_motion_smoothing_gain;
+};
+/*!
+ Create look-up tables to undistort images. Only Bougeut (Matlab toolkit)
+ is currently supported. Can be used with db_WarpImageLut_u().
+ \code
+    xd = H*xs;
+    xd = xd/xd(3);
+ \endcode
+ \param lut_x   pre-allocated float image
+ \param lut_y   pre-allocated float image
+ \param w       width
+ \param h       height
+ \param H       image homography from source to destination
+ */
+inline void db_GenerateHomographyLut(float ** lut_x,float ** lut_y,int w,int h,const double H[9])
+{
+    assert(lut_x && lut_y);
+    double x[3] = {0.0,0.0,1.0};
+    double xb[3];
+
+/*
+    double xl[3];
+
+    // Determine the output coordinate system ROI
+    double Hinv[9];
+    db_InvertAffineTransform(Hinv,H);
+    db_Multiply3x3_3x1(xl, Hinv, x);
+    xl[0] = db_SafeDivision(xl[0],xl[2]);
+    xl[1] = db_SafeDivision(xl[1],xl[2]);
+*/
+
+    for ( int i = 0; i < w; ++i )
+        for ( int j = 0; j < h; ++j )
+        {
+            x[0] = double(i);
+            x[1] = double(j);
+            db_Multiply3x3_3x1(xb, H, x);
+            xb[0] = db_SafeDivision(xb[0],xb[2]);
+            xb[1] = db_SafeDivision(xb[1],xb[2]);
+
+            lut_x[j][i] = float(xb[0]);
+            lut_y[j][i] = float(xb[1]);
+        }
+}
+
+/*!
+ * Perform a look-up table warp for packed RGB ([rgbrgbrgb...]) images.
+ * The LUTs must be float images of the same size as source image.
+ * The source value x_s is determined from destination (x_d,y_d) through lut_x
+ * and y_s is determined from lut_y:
+   \code
+   x_s = lut_x[y_d][x_d];
+   y_s = lut_y[y_d][x_d];
+   \endcode
+
+ * \param src   source image (w*3 by h)
+ * \param dst   destination image (w*3 by h)
+ * \param w     width
+ * \param h     height
+ * \param lut_x LUT for x
+ * \param lut_y LUT for y
+ */
+inline void db_WarpImageLutFast_rgb(const unsigned char * const * src, unsigned char ** dst, int w, int h,
+                                  const float * const * lut_x, const float * const * lut_y)
+{
+    assert(src && dst);
+    int xd=0, yd=0;
+
+    for ( int i = 0; i < w; ++i )
+        for ( int j = 0; j < h; ++j )
+        {
+            xd = static_cast<unsigned int>(lut_x[j][i]);
+            yd = static_cast<unsigned int>(lut_y[j][i]);
+            if ( xd >= w || yd >= h ||
+                 xd < 0 || yd < 0)
+            {
+                dst[j][3*i  ] = 0;
+                dst[j][3*i+1] = 0;
+                dst[j][3*i+2] = 0;
+            }
+            else
+            {
+                dst[j][3*i  ] = src[yd][3*xd  ];
+                dst[j][3*i+1] = src[yd][3*xd+1];
+                dst[j][3*i+2] = src[yd][3*xd+2];
+            }
+        }
+}
+
+inline unsigned char db_BilinearInterpolationRGB(double y, double x, const unsigned char * const * v, int offset)
+{
+         int floor_x=(int) x;
+         int floor_y=(int) y;
+
+         int ceil_x=floor_x+1;
+         int ceil_y=floor_y+1;
+
+         unsigned char f00 = v[floor_y][3*floor_x+offset];
+         unsigned char f01 = v[floor_y][3*ceil_x+offset];
+         unsigned char f10 = v[ceil_y][3*floor_x+offset];
+         unsigned char f11 = v[ceil_y][3*ceil_x+offset];
+
+         double xl = x-floor_x;
+         double yl = y-floor_y;
+
+         return (unsigned char)(f00*(1-yl)*(1-xl) + f10*yl*(1-xl) + f01*(1-yl)*xl + f11*yl*xl);
+}
+
+inline void db_WarpImageLutBilinear_rgb(const unsigned char * const * src, unsigned char ** dst, int w, int h,
+                                  const float * const * lut_x, const float * const * lut_y)
+{
+    assert(src && dst);
+    double xd=0.0, yd=0.0;
+
+    for ( int i = 0; i < w; ++i )
+        for ( int j = 0; j < h; ++j )
+        {
+            xd = static_cast<double>(lut_x[j][i]);
+            yd = static_cast<double>(lut_y[j][i]);
+            if ( xd > w-2 || yd > h-2 ||
+                 xd < 0.0 || yd < 0.0)
+            {
+                dst[j][3*i  ] = 0;
+                dst[j][3*i+1] = 0;
+                dst[j][3*i+2] = 0;
+            }
+            else
+            {
+                dst[j][3*i  ] = db_BilinearInterpolationRGB(yd,xd,src,0);
+                dst[j][3*i+1] = db_BilinearInterpolationRGB(yd,xd,src,1);
+                dst[j][3*i+2] = db_BilinearInterpolationRGB(yd,xd,src,2);
+            }
+        }
+}
+
+inline double SquaredInhomogenousHomographyError(double y[3],double H[9],double x[3]){
+    double x0,x1,x2,mult;
+    double sd;
+
+    x0=H[0]*x[0]+H[1]*x[1]+H[2];
+    x1=H[3]*x[0]+H[4]*x[1]+H[5];
+    x2=H[6]*x[0]+H[7]*x[1]+H[8];
+    mult=1.0/((x2!=0.0)?x2:1.0);
+    sd=(y[0]-x0*mult)*(y[0]-x0*mult)+(y[1]-x1*mult)*(y[1]-x1*mult);
+
+    return(sd);
+}
+
+
+// functions related to profiling
+#if PROFILE
+
+/* return current time in milliseconds */
+static double
+now_ms(void)
+{
+    //struct timespec res;
+    struct timeval res;
+    //clock_gettime(CLOCK_REALTIME, &res);
+    gettimeofday(&res, NULL);
+    return 1000.0*res.tv_sec + (double)res.tv_usec/1e3;
+}
+
+#endif
diff --git a/perftests/panorama/feature_stab/src/dbreg/dbstabsmooth.cpp b/perftests/panorama/feature_stab/src/dbreg/dbstabsmooth.cpp
new file mode 100644
index 0000000..dffff8a
--- /dev/null
+++ b/perftests/panorama/feature_stab/src/dbreg/dbstabsmooth.cpp
@@ -0,0 +1,330 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+#include <stdlib.h>
+#include "dbstabsmooth.h"
+
+///// TODO TODO ////////// Replace this with the actual definition from Jayan's reply /////////////
+#define vp_copy_motion_no_id vp_copy_motion
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+static bool vpmotion_add(VP_MOTION *in1, VP_MOTION *in2, VP_MOTION *out);
+static bool vpmotion_multiply(VP_MOTION *in1, double factor, VP_MOTION *out);
+
+db_StabilizationSmoother::db_StabilizationSmoother()
+{
+    Init();
+}
+
+void db_StabilizationSmoother::Init()
+{
+    f_smoothOn = true;
+    f_smoothReset = false;
+    f_smoothFactor = 1.0f;
+    f_minDampingFactor = 0.2f;
+    f_zoom = 1.0f;
+    VP_MOTION_ID(f_motLF);
+    VP_MOTION_ID(f_imotLF);
+    f_hsize = 0;
+    f_vsize = 0;
+
+    VP_MOTION_ID(f_disp_mot);
+    VP_MOTION_ID(f_src_mot);
+    VP_MOTION_ID(f_diff_avg);
+
+    for( int i = 0; i < MOTION_ARRAY-1; i++) {
+        VP_MOTION_ID(f_hist_mot_speed[i]);
+        VP_MOTION_ID(f_hist_mot[i]);
+        VP_MOTION_ID(f_hist_diff_mot[i]);
+    }
+    VP_MOTION_ID(f_hist_mot[MOTION_ARRAY-1]);
+
+}
+
+db_StabilizationSmoother::~db_StabilizationSmoother()
+{}
+
+
+bool db_StabilizationSmoother::smoothMotion(VP_MOTION *inmot, VP_MOTION *outmot)
+{
+    VP_MOTION_ID(f_motLF);
+    VP_MOTION_ID(f_imotLF);
+    f_motLF.insid = inmot->refid;
+    f_motLF.refid = inmot->insid;
+
+    if(f_smoothOn) {
+        if(!f_smoothReset) {
+            MXX(f_motLF) = (VP_PAR) (f_smoothFactor*(double) MXX(f_motLF) + (1.0-f_smoothFactor)* (double) MXX(*inmot));
+            MXY(f_motLF) = (VP_PAR) (f_smoothFactor*(double) MXY(f_motLF) + (1.0-f_smoothFactor)* (double) MXY(*inmot));
+            MXZ(f_motLF) = (VP_PAR) (f_smoothFactor*(double) MXZ(f_motLF) + (1.0-f_smoothFactor)* (double) MXZ(*inmot));
+            MXW(f_motLF) = (VP_PAR) (f_smoothFactor*(double) MXW(f_motLF) + (1.0-f_smoothFactor)* (double) MXW(*inmot));
+
+            MYX(f_motLF) = (VP_PAR) (f_smoothFactor*(double) MYX(f_motLF) + (1.0-f_smoothFactor)* (double) MYX(*inmot));
+            MYY(f_motLF) = (VP_PAR) (f_smoothFactor*(double) MYY(f_motLF) + (1.0-f_smoothFactor)* (double) MYY(*inmot));
+            MYZ(f_motLF) = (VP_PAR) (f_smoothFactor*(double) MYZ(f_motLF) + (1.0-f_smoothFactor)* (double) MYZ(*inmot));
+            MYW(f_motLF) = (VP_PAR) (f_smoothFactor*(double) MYW(f_motLF) + (1.0-f_smoothFactor)* (double) MYW(*inmot));
+
+            MZX(f_motLF) = (VP_PAR) (f_smoothFactor*(double) MZX(f_motLF) + (1.0-f_smoothFactor)* (double) MZX(*inmot));
+            MZY(f_motLF) = (VP_PAR) (f_smoothFactor*(double) MZY(f_motLF) + (1.0-f_smoothFactor)* (double) MZY(*inmot));
+            MZZ(f_motLF) = (VP_PAR) (f_smoothFactor*(double) MZZ(f_motLF) + (1.0-f_smoothFactor)* (double) MZZ(*inmot));
+            MZW(f_motLF) = (VP_PAR) (f_smoothFactor*(double) MZW(f_motLF) + (1.0-f_smoothFactor)* (double) MZW(*inmot));
+
+            MWX(f_motLF) = (VP_PAR) (f_smoothFactor*(double) MWX(f_motLF) + (1.0-f_smoothFactor)* (double) MWX(*inmot));
+            MWY(f_motLF) = (VP_PAR) (f_smoothFactor*(double) MWY(f_motLF) + (1.0-f_smoothFactor)* (double) MWY(*inmot));
+            MWZ(f_motLF) = (VP_PAR) (f_smoothFactor*(double) MWZ(f_motLF) + (1.0-f_smoothFactor)* (double) MWZ(*inmot));
+            MWW(f_motLF) = (VP_PAR) (f_smoothFactor*(double) MWW(f_motLF) + (1.0-f_smoothFactor)* (double) MWW(*inmot));
+        }
+        else
+            vp_copy_motion_no_id(inmot, &f_motLF); // f_smoothFactor = 0.0
+
+        // Only allow LF motion to be compensated. Remove HF motion from
+        // the output transformation
+        if(!vp_invert_motion(&f_motLF, &f_imotLF))
+            return false;
+
+        if(!vp_cascade_motion(&f_imotLF, inmot, outmot))
+            return false;
+    }
+    else {
+        vp_copy_motion_no_id(inmot, outmot);
+    }
+
+    return true;
+}
+
+bool db_StabilizationSmoother::smoothMotionAdaptive(/*VP_BIMG *bimg,*/int hsize, int vsize, VP_MOTION *inmot, VP_MOTION *outmot)
+{
+    VP_MOTION tmpMotion, testMotion;
+    VP_PAR p1x, p2x, p3x, p4x;
+    VP_PAR p1y, p2y, p3y, p4y;
+    double smoothFactor;
+    double minSmoothFactor = f_minDampingFactor;
+
+//  int hsize = bimg->w;
+//  int vsize = bimg->h;
+    double border_factor = 0.01;//0.2;
+    double border_x = border_factor * hsize;
+    double border_y = border_factor * vsize;
+
+    VP_MOTION_ID(f_motLF);
+    VP_MOTION_ID(f_imotLF);
+    VP_MOTION_ID(testMotion);
+    VP_MOTION_ID(tmpMotion);
+
+    if (f_smoothOn) {
+        VP_MOTION identityMotion;
+        VP_MOTION_ID(identityMotion); // initialize the motion
+        vp_copy_motion(inmot/*in*/, &testMotion/*out*/);
+        VP_PAR delta = vp_motion_cornerdiff(&testMotion, &identityMotion, 0, 0,(int)hsize, (int)vsize);
+
+        smoothFactor = 0.99 - 0.0015 * delta;
+
+        if(smoothFactor < minSmoothFactor)
+            smoothFactor = minSmoothFactor;
+
+        // Find the amount of motion that must be compensated so that no "border" pixels are seen in the stable video
+        for (smoothFactor = smoothFactor; smoothFactor >= minSmoothFactor; smoothFactor -= 0.01) {
+            // Compute the smoothed motion
+            if(!smoothMotion(inmot, &tmpMotion, smoothFactor))
+                break;
+
+            // TmpMotion, or Qsi where s is the smoothed display reference and i is the
+            // current image, tells us how points in the S co-ordinate system map to
+            // points in the I CS.  We would like to check whether the four corners of the
+            // warped and smoothed display reference lies entirely within the I co-ordinate
+            // system.  If yes, then the amount of smoothing is sufficient so that NO
+            // border pixels are seen at the output.  We test for f_smoothFactor terms
+            // between 0.9 and 1.0, in steps of 0.01, and between 0.5 ands 0.9 in steps of 0.1
+
+            (void) vp_zoom_motion2d(&tmpMotion, &testMotion, 1, hsize, vsize, (double)f_zoom); // needs to return bool
+
+            VP_WARP_POINT_2D(0, 0, testMotion, p1x, p1y);
+            VP_WARP_POINT_2D(hsize - 1, 0, testMotion, p2x, p2y);
+            VP_WARP_POINT_2D(hsize - 1, vsize - 1, testMotion, p3x, p3y);
+            VP_WARP_POINT_2D(0, vsize - 1, testMotion, p4x, p4y);
+
+            if (!is_point_in_rect((double)p1x,(double)p1y,-border_x,-border_y,(double)(hsize+2.0*border_x),(double)(vsize+2.0*border_y))) {
+                continue;
+            }
+            if (!is_point_in_rect((double)p2x, (double)p2y,-border_x,-border_y,(double)(hsize+2.0*border_x),(double)(vsize+2.0*border_y))) {
+                continue;
+            }
+            if (!is_point_in_rect((double)p3x,(double)p3y,-border_x,-border_y,(double)(hsize+2.0*border_x),(double)(vsize+2.0*border_y))) {
+                continue;
+            }
+            if (!is_point_in_rect((double)p4x, (double)p4y,-border_x,-border_y,(double)(hsize+2.0*border_x),(double)(vsize+2.0*border_y))) {
+                continue;
+            }
+
+            // If we get here, then all the points are in the rectangle.
+            // Therefore, break out of this loop
+            break;
+        }
+
+        // if we get here and f_smoothFactor <= fMinDampingFactor, reset the stab reference
+        if (smoothFactor < f_minDampingFactor)
+            smoothFactor = f_minDampingFactor;
+
+        // use the smoothed motion for stabilization
+        vp_copy_motion_no_id(&tmpMotion/*in*/, outmot/*out*/);
+    }
+    else
+    {
+        vp_copy_motion_no_id(inmot, outmot);
+    }
+
+    return true;
+}
+
+bool db_StabilizationSmoother::smoothMotion(VP_MOTION *inmot, VP_MOTION *outmot, double smooth_factor)
+{
+    f_motLF.insid = inmot->refid;
+    f_motLF.refid = inmot->insid;
+
+    if(f_smoothOn) {
+        if(!f_smoothReset) {
+            MXX(f_motLF) = (VP_PAR) (smooth_factor*(double) MXX(f_motLF) + (1.0-smooth_factor)* (double) MXX(*inmot));
+            MXY(f_motLF) = (VP_PAR) (smooth_factor*(double) MXY(f_motLF) + (1.0-smooth_factor)* (double) MXY(*inmot));
+            MXZ(f_motLF) = (VP_PAR) (smooth_factor*(double) MXZ(f_motLF) + (1.0-smooth_factor)* (double) MXZ(*inmot));
+            MXW(f_motLF) = (VP_PAR) (smooth_factor*(double) MXW(f_motLF) + (1.0-smooth_factor)* (double) MXW(*inmot));
+
+            MYX(f_motLF) = (VP_PAR) (smooth_factor*(double) MYX(f_motLF) + (1.0-smooth_factor)* (double) MYX(*inmot));
+            MYY(f_motLF) = (VP_PAR) (smooth_factor*(double) MYY(f_motLF) + (1.0-smooth_factor)* (double) MYY(*inmot));
+            MYZ(f_motLF) = (VP_PAR) (smooth_factor*(double) MYZ(f_motLF) + (1.0-smooth_factor)* (double) MYZ(*inmot));
+            MYW(f_motLF) = (VP_PAR) (smooth_factor*(double) MYW(f_motLF) + (1.0-smooth_factor)* (double) MYW(*inmot));
+
+            MZX(f_motLF) = (VP_PAR) (smooth_factor*(double) MZX(f_motLF) + (1.0-smooth_factor)* (double) MZX(*inmot));
+            MZY(f_motLF) = (VP_PAR) (smooth_factor*(double) MZY(f_motLF) + (1.0-smooth_factor)* (double) MZY(*inmot));
+            MZZ(f_motLF) = (VP_PAR) (smooth_factor*(double) MZZ(f_motLF) + (1.0-smooth_factor)* (double) MZZ(*inmot));
+            MZW(f_motLF) = (VP_PAR) (smooth_factor*(double) MZW(f_motLF) + (1.0-smooth_factor)* (double) MZW(*inmot));
+
+            MWX(f_motLF) = (VP_PAR) (smooth_factor*(double) MWX(f_motLF) + (1.0-smooth_factor)* (double) MWX(*inmot));
+            MWY(f_motLF) = (VP_PAR) (smooth_factor*(double) MWY(f_motLF) + (1.0-smooth_factor)* (double) MWY(*inmot));
+            MWZ(f_motLF) = (VP_PAR) (smooth_factor*(double) MWZ(f_motLF) + (1.0-smooth_factor)* (double) MWZ(*inmot));
+            MWW(f_motLF) = (VP_PAR) (smooth_factor*(double) MWW(f_motLF) + (1.0-smooth_factor)* (double) MWW(*inmot));
+        }
+        else
+            vp_copy_motion_no_id(inmot, &f_motLF); // smooth_factor = 0.0
+
+        // Only allow LF motion to be compensated. Remove HF motion from
+        // the output transformation
+        if(!vp_invert_motion(&f_motLF, &f_imotLF))
+            return false;
+
+        if(!vp_cascade_motion(&f_imotLF, inmot, outmot))
+            return false;
+    }
+    else {
+        vp_copy_motion_no_id(inmot, outmot);
+    }
+
+    return true;
+}
+
+//! Overloaded smoother function that takes in user-specidied smoothing factor
+bool
+db_StabilizationSmoother::smoothMotion1(VP_MOTION *inmot, VP_MOTION *outmot, VP_MOTION *motLF, VP_MOTION *imotLF, double factor)
+{
+
+    if(!f_smoothOn) {
+        vp_copy_motion(inmot, outmot);
+        return true;
+    }
+    else {
+        if(!f_smoothReset) {
+            MXX(*motLF) = (VP_PAR) (factor*(double) MXX(*motLF) + (1.0-factor)* (double) MXX(*inmot));
+            MXY(*motLF) = (VP_PAR) (factor*(double) MXY(*motLF) + (1.0-factor)* (double) MXY(*inmot));
+            MXZ(*motLF) = (VP_PAR) (factor*(double) MXZ(*motLF) + (1.0-factor)* (double) MXZ(*inmot));
+            MXW(*motLF) = (VP_PAR) (factor*(double) MXW(*motLF) + (1.0-factor)* (double) MXW(*inmot));
+
+            MYX(*motLF) = (VP_PAR) (factor*(double) MYX(*motLF) + (1.0-factor)* (double) MYX(*inmot));
+            MYY(*motLF) = (VP_PAR) (factor*(double) MYY(*motLF) + (1.0-factor)* (double) MYY(*inmot));
+            MYZ(*motLF) = (VP_PAR) (factor*(double) MYZ(*motLF) + (1.0-factor)* (double) MYZ(*inmot));
+            MYW(*motLF) = (VP_PAR) (factor*(double) MYW(*motLF) + (1.0-factor)* (double) MYW(*inmot));
+
+            MZX(*motLF) = (VP_PAR) (factor*(double) MZX(*motLF) + (1.0-factor)* (double) MZX(*inmot));
+            MZY(*motLF) = (VP_PAR) (factor*(double) MZY(*motLF) + (1.0-factor)* (double) MZY(*inmot));
+            MZZ(*motLF) = (VP_PAR) (factor*(double) MZZ(*motLF) + (1.0-factor)* (double) MZZ(*inmot));
+            MZW(*motLF) = (VP_PAR) (factor*(double) MZW(*motLF) + (1.0-factor)* (double) MZW(*inmot));
+
+            MWX(*motLF) = (VP_PAR) (factor*(double) MWX(*motLF) + (1.0-factor)* (double) MWX(*inmot));
+            MWY(*motLF) = (VP_PAR) (factor*(double) MWY(*motLF) + (1.0-factor)* (double) MWY(*inmot));
+            MWZ(*motLF) = (VP_PAR) (factor*(double) MWZ(*motLF) + (1.0-factor)* (double) MWZ(*inmot));
+            MWW(*motLF) = (VP_PAR) (factor*(double) MWW(*motLF) + (1.0-factor)* (double) MWW(*inmot));
+        }
+        else {
+            vp_copy_motion(inmot, motLF);
+        }
+        // Only allow LF motion to be compensated. Remove HF motion from the output transformation
+        if(!vp_invert_motion(motLF, imotLF)) {
+#if DEBUG_PRINT
+            printfOS("Invert failed \n");
+#endif
+            return false;
+        }
+        if(!vp_cascade_motion(imotLF, inmot, outmot)) {
+#if DEBUG_PRINT
+            printfOS("cascade failed \n");
+#endif
+            return false;
+        }
+    }
+    return true;
+}
+
+
+
+
+bool db_StabilizationSmoother::is_point_in_rect(double px, double py, double rx, double ry, double w, double h)
+{
+    if (px < rx)
+        return(false);
+    if (px >= rx + w)
+        return(false);
+    if (py < ry)
+        return(false);
+    if (py >= ry + h)
+        return(false);
+
+    return(true);
+}
+
+
+
+static bool vpmotion_add(VP_MOTION *in1, VP_MOTION *in2, VP_MOTION *out)
+{
+    int i;
+    if(in1 == NULL || in2 == NULL || out == NULL)
+        return false;
+
+    for(i = 0; i < VP_MAX_MOTION_PAR; i++)
+        out->par[i] = in1->par[i] + in2->par[i];
+
+    return true;
+}
+
+static bool vpmotion_multiply(VP_MOTION *in1, double factor, VP_MOTION *out)
+{
+    int i;
+    if(in1 == NULL || out == NULL)
+        return false;
+
+    for(i = 0; i < VP_MAX_MOTION_PAR; i++)
+        out->par[i] = in1->par[i] * factor;
+
+    return true;
+}
+
diff --git a/perftests/panorama/feature_stab/src/dbreg/dbstabsmooth.h b/perftests/panorama/feature_stab/src/dbreg/dbstabsmooth.h
new file mode 100644
index 0000000..f03546e
--- /dev/null
+++ b/perftests/panorama/feature_stab/src/dbreg/dbstabsmooth.h
@@ -0,0 +1,157 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+#pragma once
+
+
+#ifdef _WIN32
+#ifdef DBREG_EXPORTS
+#define DBREG_API __declspec(dllexport)
+#else
+#define DBREG_API __declspec(dllimport)
+#endif
+#else
+#define DBREG_API
+#endif
+
+extern "C" {
+#include "vp_motionmodel.h"
+}
+
+#define MOTION_ARRAY 5
+
+
+/*!
+ * Performs smoothing on the motion estimate from feature_stab.
+ */
+class DBREG_API db_StabilizationSmoother
+{
+public:
+    db_StabilizationSmoother();
+    ~db_StabilizationSmoother();
+
+    /*!
+     * Initialize parameters for stab-smoother.
+    */
+    void Init();
+
+    //! Smothing type
+    typedef enum {
+        SimpleSmooth = 0, //!< simple smooth
+        AdaptSmooth  = 1, //!< adaptive smooth
+        PanSmooth    = 2  //!< pan motion smooth
+    } SmoothType;
+
+    /*!
+     * Smooth-motion is to do a weight-average between the current affine and
+     * motLF. The way to change the affine is only for the display purpose.
+     * It removes the high frequency motion and keep the low frequency motion
+     * to the display. IIR implmentation.
+     * \param inmot input motion parameters
+     * \param outmot smoothed output motion parameters
+    */
+    bool smoothMotion(VP_MOTION *inmot, VP_MOTION *outmot);
+
+    /*!
+     * The adaptive smoothing version of the above fixed smoothing function.
+     * \param hsize width of the image being aligned
+     * \param vsize height of the image being aligned
+     * \param inmot input motion parameters
+     * \param outmot    smoothed output motion parameters
+    */
+    bool smoothMotionAdaptive(/*VP_BIMG *bimg,*/int hsize, int vsize, VP_MOTION *inmot, VP_MOTION *outmot);
+    bool smoothPanMotion_1(VP_MOTION *inmot, VP_MOTION *outmot);
+    bool smoothPanMotion_2(VP_MOTION *inmot, VP_MOTION *outmot);
+
+    /*!
+    * Set the smoothing factor for the stab-smoother.
+    * \param factor the factor value to set
+    */
+    inline void setSmoothingFactor(float factor) { f_smoothFactor = factor; }
+
+    /*!
+     * Reset smoothing
+    */
+    inline void resetSmoothing(bool flag) { f_smoothReset = flag; }
+    /*!
+     * Set the zoom factor value.
+     * \param zoom  the value to set to
+    */
+    inline void setZoomFactor(float zoom) { f_zoom = zoom; }
+    /*!
+     * Set the minimum damping factor value.
+     * \param factor    the value to set to
+    */
+    inline void setminDampingFactor(float factor) { f_minDampingFactor = factor; }
+
+    /*!
+     * Returns the current smoothing factor.
+    */
+    inline float getSmoothingFactor(void) { return f_smoothFactor; }
+    /*!
+     * Returns the current zoom factor.
+    */
+    inline float getZoomFactor(void) { return f_zoom; }
+    /*!
+     * Returns the current minimum damping factor.
+    */
+    inline float getminDampingFactor(void) { return f_minDampingFactor; }
+    /*!
+     * Returns the current state of the smoothing reset flag.
+    */
+    inline bool  getSmoothReset(void) { return f_smoothReset; }
+    /*!
+     * Returns the current low frequency motion parameters.
+    */
+    inline VP_MOTION getMotLF(void) { return f_motLF; }
+    /*!
+     * Returns the inverse of the current low frequency motion parameters.
+    */
+    inline VP_MOTION getImotLF(void) { return f_imotLF; }
+    /*!
+     * Set the dimensions of the alignment image.
+     * \param hsize width of the image
+     * \param vsize height of the image
+    */
+    inline void setSize(int hsize, int vsize) { f_hsize = hsize; f_vsize = vsize; }
+
+protected:
+
+    bool smoothMotion(VP_MOTION *inmot, VP_MOTION *outmot, double smooth_factor);
+    bool smoothMotion1(VP_MOTION *inmot, VP_MOTION *outmot, VP_MOTION *motLF, VP_MOTION *imotLF, double smooth_factor);
+    void iterativeSmooth(VP_MOTION *input, VP_MOTION *output, double border_factor);
+    bool is_point_in_rect(double px, double py, double rx, double ry, double w, double h);
+
+
+private:
+    int f_hsize;
+    int f_vsize;
+    bool f_smoothOn;
+    bool f_smoothReset;
+    float f_smoothFactor;
+    float f_minDampingFactor;
+    float f_zoom;
+    VP_MOTION f_motLF;
+    VP_MOTION f_imotLF;
+    VP_MOTION f_hist_mot[MOTION_ARRAY];
+    VP_MOTION f_hist_mot_speed[MOTION_ARRAY-1];
+    VP_MOTION f_hist_diff_mot[MOTION_ARRAY-1];
+    VP_MOTION f_disp_mot;
+    VP_MOTION f_src_mot;
+    VP_MOTION f_diff_avg;
+
+};
+
diff --git a/perftests/panorama/feature_stab/src/dbreg/targetver.h b/perftests/panorama/feature_stab/src/dbreg/targetver.h
new file mode 100644
index 0000000..3ca3e87
--- /dev/null
+++ b/perftests/panorama/feature_stab/src/dbreg/targetver.h
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+#pragma once
+
+// The following macros define the minimum required platform.  The minimum required platform
+// is the earliest version of Windows, Internet Explorer etc. that has the necessary features to run
+// your application.  The macros work by enabling all features available on platform versions up to and
+// including the version specified.
+
+// Modify the following defines if you have to target a platform prior to the ones specified below.
+// Refer to MSDN for the latest info on corresponding values for different platforms.
+#ifndef WINVER                          // Specifies that the minimum required platform is Windows Vista.
+#define WINVER 0x0600           // Change this to the appropriate value to target other versions of Windows.
+#endif
+
+#ifndef _WIN32_WINNT            // Specifies that the minimum required platform is Windows Vista.
+#define _WIN32_WINNT 0x0600     // Change this to the appropriate value to target other versions of Windows.
+#endif
+
+#ifndef _WIN32_WINDOWS          // Specifies that the minimum required platform is Windows 98.
+#define _WIN32_WINDOWS 0x0410 // Change this to the appropriate value to target Windows Me or later.
+#endif
+
+#ifndef _WIN32_IE                       // Specifies that the minimum required platform is Internet Explorer 7.0.
+#define _WIN32_IE 0x0700        // Change this to the appropriate value to target other versions of IE.
+#endif
diff --git a/perftests/panorama/feature_stab/src/dbreg/vp_motionmodel.c b/perftests/panorama/feature_stab/src/dbreg/vp_motionmodel.c
new file mode 100644
index 0000000..1f6af15
--- /dev/null
+++ b/perftests/panorama/feature_stab/src/dbreg/vp_motionmodel.c
@@ -0,0 +1,377 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+/*
+#sourcefile  vpmotion/vp_motionmodel.c
+#category    motion-model
+*
+* Copyright 1998 Sarnoff Corporation
+* All Rights Reserved
+*
+* Modification History
+*      Date: 02/14/98
+*      Author: supuns
+*      Shop Order: 17xxx
+*              @(#) $Id: vp_motionmodel.c,v 1.4 2011/06/17 14:04:33 mbansal Exp $
+*/
+
+/*
+* ===================================================================
+* Include Files
+*/
+
+#include <string.h> /* memmove */
+#include <math.h>
+#include "vp_motionmodel.h"
+
+/* Static Functions */
+static
+double Det3(double m[3][3])
+{
+  double result;
+
+  result =
+    m[0][0]*m[1][1]*m[2][2] + m[0][1]*m[1][2]*m[2][0] +
+    m[0][2]*m[1][0]*m[2][1] - m[0][2]*m[1][1]*m[2][0] -
+    m[0][0]*m[1][2]*m[2][1] - m[0][1]*m[1][0]*m[2][2];
+
+  return(result);
+}
+
+typedef double MATRIX[4][4];
+
+static
+double Det4(MATRIX m)
+{
+    /* ==> This is a poor implementation of determinant.
+       Writing the formula out in closed form is unnecessarily complicated
+       and mistakes are easy to make. */
+  double result;
+
+  result=
+    m[0][3] *m[1][2] *m[2][1] *m[3][0] - m[0][2] *m[1][3] *m[2][1] *m[3][0] - m[0][3] *m[1][1] *m[2][2] *m[3][0] +
+    m[0][1] *m[1][3] *m[2][2] *m[3][0] + m[0][2] *m[1][1] *m[2][3] *m[3][0] - m[0][1] *m[1][2] *m[2][3] *m[3][0] - m[0][3] *m[1][2] *m[2][0] *m[3][1] +
+    m[0][2] *m[1][3] *m[2][0] *m[3][1] + m[0][3] *m[1][0] *m[2][2] *m[3][1] - m[0][0] *m[1][3] *m[2][2] *m[3][1] - m[0][2] *m[1][0] *m[2][3] *m[3][1] +
+    m[0][0] *m[1][2] *m[2][3] *m[3][1] + m[0][3] *m[1][1] *m[2][0] *m[3][2] - m[0][1] *m[1][3] *m[2][0] *m[3][2] - m[0][3] *m[1][0] *m[2][1] *m[3][2] +
+    m[0][0] *m[1][3] *m[2][1] *m[3][2] + m[0][1] *m[1][0] *m[2][3] *m[3][2] - m[0][0] *m[1][1] *m[2][3] *m[3][2] - m[0][2] *m[1][1] *m[2][0] *m[3][3] +
+    m[0][1] *m[1][2] *m[2][0] *m[3][3] + m[0][2] *m[1][0] *m[2][1] *m[3][3] - m[0][0] *m[1][2] *m[2][1] *m[3][3] - m[0][1] *m[1][0] *m[2][2] *m[3][3] +
+    m[0][0] *m[1][1] *m[2][2] *m[3][3];
+  /*
+    m[0][0]*m[1][1]*m[2][2]*m[3][3]-m[0][1]*m[1][0]*m[2][2]*m[3][3]+
+    m[0][1]*m[1][2]*m[2][0]*m[3][3]-m[0][2]*m[1][1]*m[2][0]*m[3][3]+
+    m[0][2]*m[1][0]*m[2][1]*m[3][3]-m[0][0]*m[1][2]*m[2][1]*m[3][3]+
+    m[0][0]*m[1][2]*m[2][3]*m[3][1]-m[0][2]*m[1][0]*m[2][3]*m[3][1]+
+    m[0][2]*m[1][3]*m[2][0]*m[3][1]-m[0][3]*m[1][2]*m[2][0]*m[3][1]+
+    m[0][3]*m[1][0]*m[2][2]*m[3][1]-m[0][0]*m[1][3]*m[2][2]*m[3][1]+
+    m[0][0]*m[1][3]*m[2][1]*m[3][2]-m[0][3]*m[1][0]*m[2][3]*m[3][2]+
+    m[0][1]*m[1][0]*m[2][3]*m[3][2]-m[0][0]*m[1][1]*m[2][0]*m[3][2]+
+    m[0][3]*m[1][1]*m[2][0]*m[3][2]-m[0][1]*m[1][3]*m[2][1]*m[3][2]+
+    m[0][1]*m[1][3]*m[2][2]*m[3][0]-m[0][3]*m[1][1]*m[2][2]*m[3][0]+
+    m[0][2]*m[1][1]*m[2][3]*m[3][0]-m[0][1]*m[1][2]*m[2][3]*m[3][0]+
+    m[0][3]*m[1][2]*m[2][1]*m[3][0]-m[0][2]*m[1][3]*m[2][1]*m[3][0];
+    */
+  return(result);
+}
+
+static
+int inv4Mat(const VP_MOTION* in, VP_MOTION* out)
+{
+    /* ==> This is a poor implementation of inversion.  The determinant
+       method is O(N^4), i.e. unnecessarily slow, and not numerically accurate.
+       The real complexity of inversion is O(N^3), and is best done using
+       LU decomposition. */
+
+  MATRIX inmat,outmat;
+  int i, j, k, l, m, n,ntemp;
+  double mat[3][3], indet, temp;
+
+  /* check for non-empty structures structure */
+  if (((VP_MOTION *) NULL == in) || ((VP_MOTION *) NULL == out)) {
+    return 1;
+  }
+
+  for(k=0,i=0;i<4;i++)
+    for(j=0;j<4;j++,k++)
+      inmat[i][j]=(double)in->par[k];
+
+  indet = Det4(inmat);
+  if (indet==0) return(-1);
+
+  for (i=0;i<4;i++) {
+    for (j=0;j<4;j++) {
+      m = 0;
+      for (k=0;k<4;k++) {
+    if (i != k) {
+      n = 0;
+      for (l=0;l<4;l++)
+        if (j != l) {
+          mat[m][n] = inmat[k][l];
+          n++;
+        }
+      m++;
+    }
+      }
+
+      temp = -1.;
+      ntemp = (i +j ) %2;
+      if( ntemp == 0)  temp = 1.;
+
+      outmat[j][i] = temp * Det3(mat)/indet;
+    }
+  }
+
+  for(k=0,i=0;i<4;i++)
+    for(j=0;j<4;j++,k++)
+      out->par[k]=(VP_PAR)outmat[i][j]; /*lint !e771*/
+
+  return(0);
+}
+
+/*
+* ===================================================================
+* Public Functions
+#htmlstart
+*/
+
+/*
+ * ===================================================================
+#fn vp_invert_motion
+#ft invert a motion
+#fd DEFINITION
+       Bool
+       vp_invert_motion(const VP_MOTION* in,VP_MOTION* out)
+#fd PURPOSE
+       This inverts the motion given in 'in'.
+       All motion models upto VP_MOTION_SEMI_PROJ_3D are supported.
+       It is assumed that the all 16 parameters are properly
+       initialized although you may not be using them. You could
+       use the VP_KEEP_ macro's defined in vp_motionmodel.h to set
+       the un-initialized parameters. This uses a 4x4 matrix invertion
+       function internally.
+       It is SAFE to pass the same pointer as both the 'in' and 'out'
+       parameters.
+#fd INPUTS
+       in  - input motion
+#fd OUTPUTS
+       out - output inverted motion. If singular matrix uninitialized.
+             if MWW(in) is non-zero it is also normalized.
+#fd RETURNS
+       FALSE - matrix is singular or motion model not supported
+       TRUE  - otherwise
+#fd SIDE EFFECTS
+       None
+#endfn
+*/
+
+int vp_invert_motion(const VP_MOTION* in,VP_MOTION* out)
+{
+  int refid;
+
+  /* check for non-empty structures structure */
+  if (((VP_MOTION *) NULL == in) || ((VP_MOTION *) NULL == out)) {
+    return FALSE;
+  }
+
+  if (in->type>VP_MOTION_SEMI_PROJ_3D) {
+    return FALSE;
+  }
+
+  if (inv4Mat(in,out)<0)
+    return FALSE;
+
+  /*VP_NORMALIZE(*out);*/
+  out->type = in->type;
+  refid=in->refid;
+  out->refid=in->insid;
+  out->insid=refid;
+  return TRUE;
+}
+
+/*
+* ===================================================================
+#fn vp_cascade_motion
+#ft Cascade two motion transforms
+#fd DEFINITION
+      Bool
+      vp_cascade_motion(const VP_MOTION* InAB,const VP_MOTION* InBC,VP_MOTION* OutAC)
+#fd PURPOSE
+      Given Motion Transforms A->B and B->C, this function will
+      generate a New Motion that describes the transformation
+      from A->C.
+      More specifically, OutAC = InBC * InAC.
+      This function works ok if InAB,InBC and OutAC are the same pointer.
+#fd INPUTS
+      InAB - First Motion Transform
+      InBC - Second Motion Tranform
+#fd OUTPUTS
+      OutAC - Cascaded Motion
+#fd RETURNS
+      FALSE - motion model not supported
+      TRUE  - otherwise
+#fd SIDE EFFECTS
+      None
+#endfn
+*/
+
+int vp_cascade_motion(const VP_MOTION* InA, const VP_MOTION* InB,VP_MOTION* Out)
+{
+    /* ==> This is a poor implementation of matrix multiplication.
+       Writing the formula out in closed form is unnecessarily complicated
+       and mistakes are easy to make. */
+  VP_PAR mxx,mxy,mxz,mxw;
+  VP_PAR myx,myy,myz,myw;
+  VP_PAR mzx,mzy,mzz,mzw;
+  VP_PAR mwx,mwy,mwz,mww;
+
+  /* check for non-empty structures structure */
+  if (((VP_MOTION *) NULL == InA) || ((VP_MOTION *) NULL == InB) ||
+      ((VP_MOTION *) NULL == Out)) {
+    return FALSE;
+  }
+
+  if (InA->type>VP_MOTION_PROJ_3D) {
+    return FALSE;
+  }
+
+  if (InB->type>VP_MOTION_PROJ_3D) {
+    return FALSE;
+  }
+
+  mxx = MXX(*InB)*MXX(*InA)+MXY(*InB)*MYX(*InA)+MXZ(*InB)*MZX(*InA)+MXW(*InB)*MWX(*InA);
+  mxy = MXX(*InB)*MXY(*InA)+MXY(*InB)*MYY(*InA)+MXZ(*InB)*MZY(*InA)+MXW(*InB)*MWY(*InA);
+  mxz = MXX(*InB)*MXZ(*InA)+MXY(*InB)*MYZ(*InA)+MXZ(*InB)*MZZ(*InA)+MXW(*InB)*MWZ(*InA);
+  mxw = MXX(*InB)*MXW(*InA)+MXY(*InB)*MYW(*InA)+MXZ(*InB)*MZW(*InA)+MXW(*InB)*MWW(*InA);
+  myx = MYX(*InB)*MXX(*InA)+MYY(*InB)*MYX(*InA)+MYZ(*InB)*MZX(*InA)+MYW(*InB)*MWX(*InA);
+  myy = MYX(*InB)*MXY(*InA)+MYY(*InB)*MYY(*InA)+MYZ(*InB)*MZY(*InA)+MYW(*InB)*MWY(*InA);
+  myz = MYX(*InB)*MXZ(*InA)+MYY(*InB)*MYZ(*InA)+MYZ(*InB)*MZZ(*InA)+MYW(*InB)*MWZ(*InA);
+  myw = MYX(*InB)*MXW(*InA)+MYY(*InB)*MYW(*InA)+MYZ(*InB)*MZW(*InA)+MYW(*InB)*MWW(*InA);
+  mzx = MZX(*InB)*MXX(*InA)+MZY(*InB)*MYX(*InA)+MZZ(*InB)*MZX(*InA)+MZW(*InB)*MWX(*InA);
+  mzy = MZX(*InB)*MXY(*InA)+MZY(*InB)*MYY(*InA)+MZZ(*InB)*MZY(*InA)+MZW(*InB)*MWY(*InA);
+  mzz = MZX(*InB)*MXZ(*InA)+MZY(*InB)*MYZ(*InA)+MZZ(*InB)*MZZ(*InA)+MZW(*InB)*MWZ(*InA);
+  mzw = MZX(*InB)*MXW(*InA)+MZY(*InB)*MYW(*InA)+MZZ(*InB)*MZW(*InA)+MZW(*InB)*MWW(*InA);
+  mwx = MWX(*InB)*MXX(*InA)+MWY(*InB)*MYX(*InA)+MWZ(*InB)*MZX(*InA)+MWW(*InB)*MWX(*InA);
+  mwy = MWX(*InB)*MXY(*InA)+MWY(*InB)*MYY(*InA)+MWZ(*InB)*MZY(*InA)+MWW(*InB)*MWY(*InA);
+  mwz = MWX(*InB)*MXZ(*InA)+MWY(*InB)*MYZ(*InA)+MWZ(*InB)*MZZ(*InA)+MWW(*InB)*MWZ(*InA);
+  mww = MWX(*InB)*MXW(*InA)+MWY(*InB)*MYW(*InA)+MWZ(*InB)*MZW(*InA)+MWW(*InB)*MWW(*InA);
+
+  MXX(*Out)=mxx; MXY(*Out)=mxy; MXZ(*Out)=mxz; MXW(*Out)=mxw;
+  MYX(*Out)=myx; MYY(*Out)=myy; MYZ(*Out)=myz; MYW(*Out)=myw;
+  MZX(*Out)=mzx; MZY(*Out)=mzy; MZZ(*Out)=mzz; MZW(*Out)=mzw;
+  MWX(*Out)=mwx; MWY(*Out)=mwy; MWZ(*Out)=mwz; MWW(*Out)=mww;
+  /* VP_NORMALIZE(*Out); */
+  Out->type= (InA->type > InB->type) ? InA->type : InB->type;
+  Out->refid=InA->refid;
+  Out->insid=InB->insid;
+
+  return TRUE;
+}
+
+/*
+* ===================================================================
+#fn vp_copy_motion
+#ft Copies the source motion to the destination motion.
+#fd DEFINITION
+    void
+    vp_copy_motion  (const VP_MOTION *src, VP_MOTION *dst)
+#fd PURPOSE
+    Copies the source motion to the destination motion.
+        It is OK if src == dst.
+    NOTE THAT THE SOURCE IS THE FIRST ARGUMENT.
+    This is different from some of the other VP
+    copy functions.
+#fd INPUTS
+    src is the source motion
+    dst is the destination motion
+#fd RETURNS
+    void
+#endfn
+*/
+void vp_copy_motion  (const VP_MOTION *src, VP_MOTION *dst)
+{
+  /* Use memmove rather than memcpy because it handles overlapping memory
+     OK. */
+  memmove(dst, src, sizeof(VP_MOTION));
+  return;
+} /* vp_copy_motion() */
+
+#define VP_SQR(x)   ( (x)*(x) )
+double vp_motion_cornerdiff(const VP_MOTION *mot_a, const VP_MOTION *mot_b,
+                     int xo, int yo, int w, int h)
+{
+  double ax1, ay1, ax2, ay2, ax3, ay3, ax4, ay4;
+  double bx1, by1, bx2, by2, bx3, by3, bx4, by4;
+  double err;
+
+  /*lint -e639 -e632 -e633 */
+  VP_WARP_POINT_2D(xo, yo,         *mot_a, ax1, ay1);
+  VP_WARP_POINT_2D(xo+w-1, yo,     *mot_a, ax2, ay2);
+  VP_WARP_POINT_2D(xo+w-1, yo+h-1, *mot_a, ax3, ay3);
+  VP_WARP_POINT_2D(xo, yo+h-1,     *mot_a, ax4, ay4);
+  VP_WARP_POINT_2D(xo, yo,         *mot_b, bx1, by1);
+  VP_WARP_POINT_2D(xo+w-1, yo,     *mot_b, bx2, by2);
+  VP_WARP_POINT_2D(xo+w-1, yo+h-1, *mot_b, bx3, by3);
+  VP_WARP_POINT_2D(xo, yo+h-1,     *mot_b, bx4, by4);
+  /*lint +e639 +e632 +e633 */
+
+  err = 0;
+  err += (VP_SQR(ax1 - bx1) + VP_SQR(ay1 - by1));
+  err += (VP_SQR(ax2 - bx2) + VP_SQR(ay2 - by2));
+  err += (VP_SQR(ax3 - bx3) + VP_SQR(ay3 - by3));
+  err += (VP_SQR(ax4 - bx4) + VP_SQR(ay4 - by4));
+
+  return(sqrt(err));
+}
+
+int vp_zoom_motion2d(VP_MOTION* in, VP_MOTION* out,
+                 int n, int w, int h, double zoom)
+{
+  int ii;
+  VP_PAR inv_zoom;
+  VP_PAR cx, cy;
+  VP_MOTION R2r,R2f;
+  VP_MOTION *res;
+
+  /* check for non-empty structures structure */
+  if (((VP_MOTION *) NULL == in)||(zoom <= 0.0)||(w <= 0)||(h <= 0)) {
+    return FALSE;
+  }
+
+  /* ==> Not sure why the special case of out=NULL is necessary.  Why couldn't
+     the caller just pass the same pointer for both in and out? */
+  res = ((VP_MOTION *) NULL == out)?in:out;
+
+  cx = (VP_PAR) (w/2.0);
+  cy = (VP_PAR) (h/2.0);
+
+  VP_MOTION_ID(R2r);
+  inv_zoom = (VP_PAR)(1.0/zoom);
+  MXX(R2r) = inv_zoom;
+  MYY(R2r) = inv_zoom;
+  MXW(R2r)=cx*(((VP_PAR)1.0) - inv_zoom);
+  MYW(R2r)=cy*(((VP_PAR)1.0) - inv_zoom);
+
+  VP_KEEP_AFFINE_2D(R2r);
+
+  for(ii=0;ii<n;ii++) {
+    (void) vp_cascade_motion(&R2r,in+ii,&R2f);
+    res[ii]=R2f;
+  }
+
+  return TRUE;
+} /* vp_zoom_motion2d() */
+
+/* =================================================================== */
+/* end vp_motionmodel.c */
diff --git a/perftests/panorama/feature_stab/src/dbreg/vp_motionmodel.h b/perftests/panorama/feature_stab/src/dbreg/vp_motionmodel.h
new file mode 100644
index 0000000..a63ac00
--- /dev/null
+++ b/perftests/panorama/feature_stab/src/dbreg/vp_motionmodel.h
@@ -0,0 +1,282 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+/*
+#sourcefile  vp_motionmodel.h
+#category    warp
+#description general motion model for tranlation/affine/projective
+#title       motion-model
+#parentlink  hindex.html
+*
+* Copyright 1998 Sarnoff Corporation
+* All Rights Reserved
+*
+* Modification History
+*      Date: 02/13/98
+*      Author: supuns
+*      Shop Order: 15491 001
+*              @(#) $Id: vp_motionmodel.h,v 1.4 2011/06/17 14:04:33 mbansal Exp $
+*/
+
+#ifndef VP_MOTIONMODEL_H
+#define VP_MOTIONMODEL_H
+#include <stdio.h>
+
+#define         FALSE           0
+#define         TRUE            1
+
+#if 0 /* Moved mottomat.c and mattomot_d.c from vpmotion.h to vpcompat.h
+     in order to remove otherwise unnecessary dependency of vpmotion,
+     vpwarp, and newvpio on vpmath */
+#ifndef VPMATH_H
+#include "vpmath.h"
+#endif
+#endif
+
+#if 0
+#ifndef VP_WARP_H
+#include "vp_warp.h"
+#endif
+#endif
+/*
+
+#htmlstart
+# ===================================================================
+#h 1 Introduction
+
+  This defines a motion model that can describe translation,
+  affine, and projective projective 3d and 3d view transforms.
+
+  The main structure VP_MOTION contains a 16 parameter array (That
+  can be considered as elements of a 4x4 matrix) and a type field
+  which can be one of VP_MOTION_NONE,VP_MOTION_TRANSLATION,
+  VP_MOTION_AFFINE, VP_MOTION_PROJECTIVE,VP_MOTION_PROJ_3D or
+  VP_MOTION_VIEW_3D. (These are defined using enums with gaps of 10
+  so that subsets of these motions that are still consistant can be
+  added in between. Motion models that are inconsistant with this set
+  should be added at the end so the routines can hadle them
+  independently.
+
+  The transformation VP_MOTION_NONE,VP_MOTION_TRANSLATION,
+  VP_MOTION_AFFINE, VP_MOTION_PROJECTIVE, VP_MOTION_PROJ_3D and
+  VP_MOTION_SEMI_PROJ_3D would map a point P={x,y,z,w} to a new point
+  P'={x',y',z',w'} using a motion model M such that P'= M.par * P.
+  Where M.par is thought of as  elements of a 4x4 matrix ordered row
+  by row. The interpretation of all models except VP_MOTION_SEMI_PROJ_3D
+  is taken to be mapping of a 3d point P"={x",y",z"} which is obtained
+  from the normalization {x'/w',y'/w',z'/w'}. In the VP_MOTION_SEMI_PROJ_3D
+  the mapping to a point P"={x",y",z"} is obtained from the normalization
+  {x'/w',y'/w',z'}. All these motion models have the property that they
+  can be inverted using 4x4 matrices. Except for the VP_MOTION_SEMI_PROJ_3D all
+  other types can also be cascaded using 4x4 matrices.
+
+  Specific macros and functions have been provided to handle 2d instances
+  of these functions. As the parameter interpretations can change when adding
+  new motion models it is HIGHLY RECOMMENDED that you use the macros MXX,MXY..
+  ect. to interpret each motion component.
+#pre
+*/
+
+/*
+#endpre
+# ===================================================================
+#h 1 Typedef and Struct Declarations
+#pre
+*/
+
+#define VP_MAX_MOTION_PAR 16
+
+typedef double VP_PAR;
+typedef VP_PAR VP_TRS[VP_MAX_MOTION_PAR];
+
+/* Do not add any motion models before VP_MOTION_PROJECTIVE */
+/* The order is assumed in vp functions */
+enum VP_MOTION_MODEL {
+  VP_MOTION_NONE=0,
+  VP_MOTION_TRANSLATION=10,
+  VP_MOTION_SCALE=11,
+  VP_MOTION_ROTATE=12,
+  VP_MOTION_X_SHEAR=13,
+  VP_MOTION_Y_SHEAR=14,
+  VP_MOTION_SIMILARITY=15,
+  VP_MOTION_AFFINE=20,
+  VP_MOTION_PROJECTIVE=30,
+  VP_MOTION_PROJ_3D=40,
+  VP_MOTION_SEMI_PROJ_3D=80,
+  VP_SIMILARITY=100,
+  VP_VFE_AFFINE=120
+};
+
+#define VP_REFID -1   /* Default ID used for reference frame */
+
+typedef struct {
+  VP_TRS par;            /* Contains the motion paramerers.
+                For the standard motion types this is
+                represented as 16 number that refer
+                to a 4x4 matrix */
+  enum VP_MOTION_MODEL type;
+  int refid;            /* Reference frame ( takes a point in refid frame
+               and moves it by the par to get a point in insid
+               frame ) */
+  int insid;            /* Inspection frame */
+} VP_MOTION;
+
+//typedef VP_LIST VP_MOTION_LIST;
+/*
+#endpre
+# ===================================================================
+#h 1 Constant Declarations
+*/
+
+/* Macros related to the 4x4 matrix parameters */
+#define MXX(m) (m).par[0]
+#define MXY(m) (m).par[1]
+#define MXZ(m) (m).par[2]
+#define MXW(m) (m).par[3]
+#define MYX(m) (m).par[4]
+#define MYY(m) (m).par[5]
+#define MYZ(m) (m).par[6]
+#define MYW(m) (m).par[7]
+#define MZX(m) (m).par[8]
+#define MZY(m) (m).par[9]
+#define MZZ(m) (m).par[10]
+#define MZW(m) (m).par[11]
+#define MWX(m) (m).par[12]
+#define MWY(m) (m).par[13]
+#define MWZ(m) (m).par[14]
+#define MWW(m) (m).par[15]
+
+/* The do {...} while (0) technique creates a statement that can be used legally
+   in an if-else statement.  See "Swallowing the semicolon",
+   http://gcc.gnu.org/onlinedocs/gcc-2.95.3/cpp_1.html#SEC23 */
+/* Initialize the Motion to be Identity */
+#define VP_MOTION_ID(m) do {\
+  MXX(m)=MYY(m)=MZZ(m)=MWW(m)=(VP_PAR)1.0; \
+  MXY(m)=MXZ(m)=MXW(m)=(VP_PAR)0.0; \
+  MYX(m)=MYZ(m)=MYW(m)=(VP_PAR)0.0; \
+  MZX(m)=MZY(m)=MZW(m)=(VP_PAR)0.0; \
+  MWX(m)=MWY(m)=MWZ(m)=(VP_PAR)0.0; \
+(m).type = VP_MOTION_TRANSLATION; } while (0)
+
+/* Initialize without altering the translation components */
+#define VP_KEEP_TRANSLATION_3D(m) do {\
+  MXX(m)=MYY(m)=MZZ(m)=MWW(m)=(VP_PAR)1.0; \
+  MXY(m)=MXZ(m)=(VP_PAR)0.0; \
+  MYX(m)=MYZ(m)=(VP_PAR)0.0; \
+  MZX(m)=MZY(m)=(VP_PAR)0.0; \
+  MWX(m)=MWY(m)=MWZ(m)=(VP_PAR)0.0; \
+  (m).type = VP_MOTION_PROJ_3D; } while (0)
+
+/* Initialize without altering the 2d translation components */
+#define VP_KEEP_TRANSLATION_2D(m) do {\
+  VP_KEEP_TRANSLATION_3D(m); MZW(m)=(VP_PAR)0.0; (m).type= VP_MOTION_TRANSLATION;} while (0)
+
+/* Initialize without altering the affine & translation components */
+#define VP_KEEP_AFFINE_3D(m) do {\
+  MWX(m)=MWY(m)=MWZ(m)=(VP_PAR)0.0; MWW(m)=(VP_PAR)1.0; \
+  (m).type = VP_MOTION_PROJ_3D; } while (0)
+
+/* Initialize without altering the 2d affine & translation components */
+#define VP_KEEP_AFFINE_2D(m) do {\
+  VP_KEEP_AFFINE_3D(m); \
+  MXZ(m)=MYZ(m)=(VP_PAR)0.0; MZZ(m)=(VP_PAR)1.0; \
+  MZX(m)=MZY(m)=MZW(m)=(VP_PAR)0.0; \
+  (m).type = VP_MOTION_AFFINE; } while (0)
+
+/* Initialize without altering the 2d projective parameters */
+#define VP_KEEP_PROJECTIVE_2D(m) do {\
+  MXZ(m)=MYZ(m)=(VP_PAR)0.0; MZZ(m)=(VP_PAR)1.0; \
+  MZX(m)=MZY(m)=MZW(m)=MWZ(m)=(VP_PAR)0.0; \
+  (m).type = VP_MOTION_PROJECTIVE; } while (0)
+
+/* Warp a 2d point (assuming the z component is zero) */
+#define VP_WARP_POINT_2D(inx,iny,m,outx,outy) do {\
+  VP_PAR vpTmpWarpPnt___= MWX(m)*(inx)+MWY(m)*(iny)+MWW(m); \
+  outx = (MXX(m)*((VP_PAR)inx)+MXY(m)*((VP_PAR)iny)+MXW(m))/vpTmpWarpPnt___; \
+  outy = (MYX(m)*((VP_PAR)inx)+MYY(m)*((VP_PAR)iny)+MYW(m))/vpTmpWarpPnt___; } while (0)
+
+/* Warp a 3d point */
+#define VP_WARP_POINT_3D(inx,iny,inz,m,outx,outy,outz) do {\
+  VP_PAR vpTmpWarpPnt___= MWX(m)*(inx)+MWY(m)*(iny)+MWZ(m)*((VP_PAR)inz)+MWW(m); \
+  outx = (MXX(m)*((VP_PAR)inx)+MXY(m)*((VP_PAR)iny)+MXZ(m)*((VP_PAR)inz)+MXW(m))/vpTmpWarpPnt___; \
+  outy = (MYX(m)*((VP_PAR)inx)+MYY(m)*((VP_PAR)iny)+MYZ(m)*((VP_PAR)inz)+MYW(m))/vpTmpWarpPnt___; \
+  outz = MZX(m)*((VP_PAR)inx)+MZY(m)*((VP_PAR)iny)+MZZ(m)*((VP_PAR)inz)+MZW(m); \
+  if ((m).type==VP_MOTION_PROJ_3D) outz/=vpTmpWarpPnt___; } while (0)
+
+/* Projections of each component */
+#define VP_PROJW_3D(m,x,y,z,f)   ( MWX(m)*(x)+MWY(m)*(y)+MWZ(m)*(z)+MWW(m) )
+#define VP_PROJX_3D(m,x,y,z,f,w) ((MXX(m)*(x)+MXY(m)*(y)+MXZ(m)*(z)+MXW(m))/(w))
+#define VP_PROJY_3D(m,x,y,z,f,w) ((MYX(m)*(x)+MYY(m)*(y)+MYZ(m)*(z)+MYW(m))/(w))
+#define VP_PROJZ_3D(m,x,y,z,f,w) ((MZX(m)*(x)+MZY(m)*(y)+MZZ(m)*(z)+MZW(m))/(w))
+
+/* Scale Down a matrix by Sfactor */
+#define VP_SCALEDOWN(m,Sfactor) do { \
+  MXW(m) /= (VP_PAR)Sfactor; MWX(m) *= (VP_PAR)Sfactor; \
+  MYW(m) /= (VP_PAR)Sfactor; MWY(m) *= (VP_PAR)Sfactor; \
+  MZW(m) /= (VP_PAR)Sfactor; MWZ(m) *= (VP_PAR)Sfactor; } while (0)
+
+/* Scale Up a matrix by Sfactor */
+#define VP_SCALEUP(m,Sfactor) do { \
+  MXW(m) *= (VP_PAR)Sfactor; MWX(m) /= (VP_PAR)Sfactor; \
+  MYW(m) *= (VP_PAR)Sfactor; MWY(m) /= (VP_PAR)Sfactor; \
+  MZW(m) *= (VP_PAR)Sfactor; MWZ(m) /= (VP_PAR)Sfactor; } while (0)
+
+/* Normalize the transformation matrix so that MWW is 1 */
+#define VP_NORMALIZE(m) if (MWW(m)!=(VP_PAR)0.0) do { \
+  MXX(m)/=MWW(m); MXY(m)/=MWW(m); MXZ(m)/=MWW(m); MXW(m)/= MWW(m); \
+  MYX(m)/=MWW(m); MYY(m)/=MWW(m); MYZ(m)/=MWW(m); MYW(m)/= MWW(m); \
+  MZX(m)/=MWW(m); MZY(m)/=MWW(m); MZZ(m)/=MWW(m); MZW(m)/= MWW(m); \
+  MWX(m)/=MWW(m); MWY(m)/=MWW(m); MWZ(m)/=MWW(m); MWW(m) = (VP_PAR)1.0; } while (0)
+
+#define VP_PRINT_TRANS(msg,b) do { \
+  fprintf(stderr, \
+      "%s\n%f %f %f %f\n%f %f %f %f\n%f %f %f %f\n%f %f %f %f\n", \
+      msg, \
+      MXX(b),MXY(b),MXZ(b),MXW(b),  \
+      MYX(b),MYY(b),MYZ(b),MYW(b),  \
+      MZX(b),MZY(b),MZZ(b),MZW(b),  \
+      MWX(b),MWY(b),MWZ(b),MWW(b)); \
+} while (0)
+
+/* w' projection given a point x,y,0,f */
+#define VP_PROJZ(m,x,y,f) ( \
+    MWX(m)*((VP_PAR)x)+MWY(m)*((VP_PAR)y)+MWW(m)*((VP_PAR)f))
+
+/* X Projection given a point x,y,0,f and w' */
+#define VP_PROJX(m,x,y,w,f) (\
+   (MXX(m)*((VP_PAR)x)+MXY(m)*((VP_PAR)y)+MXW(m)*((VP_PAR)f))/((VP_PAR)w))
+
+/* Y Projection given a point x,y,0,f and the w' */
+#define VP_PROJY(m,x,y,w,f) (\
+  (MYX(m)*((VP_PAR)x)+MYY(m)*((VP_PAR)y)+MYW(m)*((VP_PAR)f))/((VP_PAR)w))
+
+/* Set the reference id for a motion */
+#define VP_SET_REFID(m,id) do { (m).refid=id; } while (0)
+
+/* Set the inspection id for a motion */
+#define VP_SET_INSID(m,id) do { (m).insid=id; } while (0)
+
+void vp_copy_motion  (const VP_MOTION *src, VP_MOTION *dst);
+int vp_invert_motion(const VP_MOTION* in,VP_MOTION* out);
+int vp_cascade_motion(const VP_MOTION* InAB, const VP_MOTION* InBC,VP_MOTION* OutAC);
+int vp_zoom_motion2d(VP_MOTION* in, VP_MOTION* out,
+              int n, int w, int h, double zoom);
+double vp_motion_cornerdiff(const VP_MOTION *mot_a, const VP_MOTION *mot_b,
+                     int xo, int yo, int w, int h);
+
+#endif /* VP_MOTIONMODEL_H */
+/* =================================================================== */
+/* end vp_motionmodel.h */
diff --git a/perftests/panorama/feature_stab/src/dbregtest/PgmImage.cpp b/perftests/panorama/feature_stab/src/dbregtest/PgmImage.cpp
new file mode 100644
index 0000000..0891cfd
--- /dev/null
+++ b/perftests/panorama/feature_stab/src/dbregtest/PgmImage.cpp
@@ -0,0 +1,260 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+#include "PgmImage.h"
+#include <cassert>
+
+using namespace std;
+
+PgmImage::PgmImage(std::string filename) :
+m_w(0),m_h(0),m_colors(255),m_format(PGM_BINARY_GRAYMAP),m_over_allocation(256)
+{
+    if ( !ReadPGM(filename) )
+        return;
+}
+
+PgmImage::PgmImage(int w, int h, int format) :
+m_colors(255),m_w(w),m_h(h),m_format(format),m_over_allocation(256)
+{
+    SetFormat(format);
+}
+
+PgmImage::PgmImage(unsigned char *data, int w, int h) :
+m_colors(255),m_w(w),m_h(h),m_format(PGM_BINARY_GRAYMAP),m_over_allocation(256)
+{
+    SetData(data);
+}
+
+PgmImage::PgmImage(std::vector<unsigned char> &data, int w, int h) :
+m_colors(255),m_w(w),m_h(h),m_format(PGM_BINARY_GRAYMAP),m_over_allocation(256)
+{
+    if ( data.size() == w*h )
+        SetData(&data[0]);
+    else
+        //throw (std::exception("Size of data is not w*h."));
+        throw (std::exception());
+}
+
+PgmImage::PgmImage(const PgmImage &im) :
+m_colors(255),m_w(0),m_h(0),m_format(PGM_BINARY_GRAYMAP),m_over_allocation(256)
+{
+    DeepCopy(im, *this);
+}
+
+PgmImage& PgmImage::operator= (const PgmImage &im)
+{
+    if (this == &im) return *this;
+    DeepCopy(im, *this);
+    return *this;
+}
+
+void PgmImage::DeepCopy(const PgmImage& src, PgmImage& dst)
+{
+    dst.m_data = src.m_data;
+
+    // PGM data
+    dst.m_w = src.m_w;
+    dst.m_h = src.m_h;
+    dst.m_format = src.m_format;
+    dst.m_colors = src.m_colors;
+
+    dst.m_comment = src.m_comment;
+    SetupRowPointers();
+}
+
+PgmImage::~PgmImage()
+{
+
+}
+
+void PgmImage::SetFormat(int format)
+{
+    m_format = format;
+
+    switch (format)
+    {
+    case PGM_BINARY_GRAYMAP:
+        m_data.resize(m_w*m_h+m_over_allocation);
+        break;
+    case PGM_BINARY_PIXMAP:
+        m_data.resize(m_w*m_h*3+m_over_allocation);
+        break;
+    default:
+        return;
+        break;
+    }
+    SetupRowPointers();
+}
+
+void PgmImage::SetData(const unsigned char * data)
+{
+    m_data.resize(m_w*m_h+m_over_allocation);
+    memcpy(&m_data[0],data,m_w*m_h);
+    SetupRowPointers();
+}
+
+bool PgmImage::ReadPGM(const std::string filename)
+{
+    ifstream in(filename.c_str(),std::ios::in | std::ios::binary);
+    if ( !in.is_open() )
+        return false;
+
+    // read the header:
+    string format_header,size_header,colors_header;
+
+    getline(in,format_header);
+    stringstream s;
+    s << format_header;
+
+    s >> format_header >> m_w >> m_h >> m_colors;
+    s.clear();
+
+    if ( m_w == 0 )
+    {
+        while ( in.peek() == '#' )
+            getline(in,m_comment);
+
+        getline(in,size_header);
+
+        while ( in.peek() == '#' )
+            getline(in,m_comment);
+
+            m_colors = 0;
+
+        // parse header
+        s << size_header;
+        s >> m_w >> m_h >> m_colors;
+        s.clear();
+
+        if ( m_colors == 0 )
+        {
+            getline(in,colors_header);
+            s << colors_header;
+            s >> m_colors;
+        }
+    }
+
+    if ( format_header == "P5" )
+        m_format = PGM_BINARY_GRAYMAP;
+    else if (format_header == "P6" )
+        m_format = PGM_BINARY_PIXMAP;
+    else
+        m_format = PGM_FORMAT_INVALID;
+
+    switch(m_format)
+    {
+    case(PGM_BINARY_GRAYMAP):
+        m_data.resize(m_w*m_h+m_over_allocation);
+        in.read((char *)(&m_data[0]),m_data.size());
+        break;
+    case(PGM_BINARY_PIXMAP):
+        m_data.resize(m_w*m_h*3+m_over_allocation);
+        in.read((char *)(&m_data[0]),m_data.size());
+        break;
+    default:
+        return false;
+        break;
+    }
+    in.close();
+
+    SetupRowPointers();
+
+    return true;
+}
+
+bool PgmImage::WritePGM(const std::string filename, const std::string comment)
+{
+    string format_header;
+
+    switch(m_format)
+    {
+    case PGM_BINARY_GRAYMAP:
+        format_header = "P5\n";
+        break;
+    case PGM_BINARY_PIXMAP:
+        format_header = "P6\n";
+        break;
+    default:
+        return false;
+        break;
+    }
+
+    ofstream out(filename.c_str(),std::ios::out |ios::binary);
+    out << format_header << "# " << comment << '\n' << m_w << " " << m_h << '\n' << m_colors << '\n';
+
+    out.write((char *)(&m_data[0]), m_data.size());
+
+    out.close();
+
+    return true;
+}
+
+void PgmImage::SetupRowPointers()
+{
+    int i;
+    m_rows.resize(m_h);
+
+    switch (m_format)
+    {
+    case PGM_BINARY_GRAYMAP:
+        for(i=0;i<m_h;i++)
+        {
+            m_rows[i]=&m_data[m_w*i];
+        }
+        break;
+    case PGM_BINARY_PIXMAP:
+        for(i=0;i<m_h;i++)
+        {
+            m_rows[i]=&m_data[(m_w*3)*i];
+        }
+        break;
+    }
+}
+
+void PgmImage::ConvertToGray()
+{
+    if ( m_format != PGM_BINARY_PIXMAP ) return;
+
+    // Y = 0.3*R + 0.59*G + 0.11*B;
+    for ( int i = 0; i < m_w*m_h; ++i )
+        m_data[i] = (unsigned char)(0.3*m_data[3*i]+0.59*m_data[3*i+1]+0.11*m_data[3*i+2]);
+
+    m_data.resize(m_w*m_h+m_over_allocation);
+    m_format = PGM_BINARY_GRAYMAP;
+
+    SetupRowPointers();
+}
+
+std::ostream& operator<< (std::ostream& o, const PgmImage& im)
+{
+    o << "PGM Image Info:\n";
+    o << "Size: " << im.m_w << " x " << im.m_h << "\n";
+    o << "Comment: " << im.m_comment << "\n";
+    switch (im.m_format)
+    {
+    case PgmImage::PGM_BINARY_PIXMAP:
+        o << "Format: RGB binary pixmap";
+        break;
+    case PgmImage::PGM_BINARY_GRAYMAP:
+        o << "Format: PPM binary graymap";
+        break;
+    default:
+        o << "Format: Invalid";
+        break;
+    }
+    o << endl;
+    return o;
+}
diff --git a/perftests/panorama/feature_stab/src/dbregtest/PgmImage.h b/perftests/panorama/feature_stab/src/dbregtest/PgmImage.h
new file mode 100644
index 0000000..d4d1eeb
--- /dev/null
+++ b/perftests/panorama/feature_stab/src/dbregtest/PgmImage.h
@@ -0,0 +1,95 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+#pragma once
+
+#include <vector>
+#include <iostream>
+#include <fstream>
+#include <sstream>
+#include <memory.h>
+
+/*!
+ * Simple class to manipulate PGM/PPM images. Not suitable for heavy lifting.
+ */
+class PgmImage
+{
+    friend std::ostream& operator<< (std::ostream& o, const PgmImage& im);
+public:
+    enum {PGM_BINARY_GRAYMAP,PGM_BINARY_PIXMAP,PGM_FORMAT_INVALID};
+    /*!
+    * Constructor from a PGM file name.
+    */
+    PgmImage(std::string filename);
+    /*!
+    * Constructor to allocate an image of given size and type.
+    */
+    PgmImage(int w, int h, int format = PGM_BINARY_GRAYMAP);
+    /*!
+    * Constructor to allocate an image of given size and copy the data in.
+    */
+    PgmImage(unsigned char *data, int w, int h);
+    /*!
+    * Constructor to allocate an image of given size and copy the data in.
+    */
+    PgmImage(std::vector<unsigned char> &data, int w, int h);
+
+    PgmImage(const PgmImage &im);
+
+    PgmImage& operator= (const PgmImage &im);
+    ~PgmImage();
+
+    int GetHeight() const { return m_h; }
+    int GetWidth() const { return m_w; }
+
+    //! Copy pixels from data pointer
+    void SetData(const unsigned char * data);
+
+    //! Get a data pointer to unaligned memory area
+    unsigned char * GetDataPointer() { if ( m_data.size() > 0 ) return &m_data[0]; else return NULL; }
+    unsigned char ** GetRowPointers() { if ( m_rows.size() == m_h ) return &m_rows[0]; else return NULL; }
+
+    //! Read a PGM file from disk
+    bool ReadPGM(const std::string filename);
+    //! Write a PGM file to disk
+    bool WritePGM(const std::string filename, const std::string comment="");
+
+    //! Get image format (returns PGM_BINARY_GRAYMAP, PGM_BINARY_PIXMAP or PGM_FORMAT_INVALID)
+    int GetFormat() const { return m_format; }
+
+    //! Set image format (returns PGM_BINARY_GRAYMAP, PGM_BINARY_PIXMAP). Image data becomes invalid.
+    void SetFormat(int format);
+
+    //! If the image is PGM_BINARY_PIXMAP, convert it to PGM_BINARY_GRAYMAP via Y = 0.3*R + 0.59*G + 0.11*B.
+    void ConvertToGray();
+protected:
+    // Generic functions:
+    void DeepCopy(const PgmImage& src, PgmImage& dst);
+    void SetupRowPointers();
+
+    // PGM data
+    int m_w;
+    int m_h;
+    int m_format;
+    int m_colors;
+    int m_over_allocation;
+    std::vector<unsigned char> m_data;
+    std::string m_comment;
+
+    std::vector<unsigned char *> m_rows;
+};
+
+std::ostream& operator<< (std::ostream& o, const PgmImage& im);
diff --git a/perftests/panorama/feature_stab/src/dbregtest/dbregtest.cpp b/perftests/panorama/feature_stab/src/dbregtest/dbregtest.cpp
new file mode 100644
index 0000000..5087362
--- /dev/null
+++ b/perftests/panorama/feature_stab/src/dbregtest/dbregtest.cpp
@@ -0,0 +1,399 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+// $Id: dbregtest.cpp,v 1.24 2011/06/17 14:04:33 mbansal Exp $
+#include "stdafx.h"
+#include "PgmImage.h"
+#include "../dbreg/dbreg.h"
+#include "../dbreg/dbstabsmooth.h"
+#include <db_utilities_camera.h>
+
+#include <iostream>
+#include <iomanip>
+
+#if PROFILE
+    #include <sys/time.h>
+#endif
+
+
+using namespace std;
+
+const int DEFAULT_NR_CORNERS=500;
+const double DEFAULT_MAX_DISPARITY=0.2;
+const int DEFAULT_MOTION_MODEL=DB_HOMOGRAPHY_TYPE_AFFINE;
+//const int DEFAULT_MOTION_MODEL=DB_HOMOGRAPHY_TYPE_R_T;
+//const int DEFAULT_MOTION_MODEL=DB_HOMOGRAPHY_TYPE_TRANSLATION;
+const bool DEFAULT_QUARTER_RESOLUTION=false;
+const unsigned int DEFAULT_REFERENCE_UPDATE_PERIOD=3;
+const bool DEFAULT_DO_MOTION_SMOOTHING = false;
+const double DEFAULT_MOTION_SMOOTHING_GAIN = 0.75;
+const bool DEFAULT_LINEAR_POLISH = false;
+const int DEFAULT_MAX_ITERATIONS = 10;
+
+void usage(string name) {
+
+  const char *helpmsg[] = {
+    "Function: point-based frame to reference registration.",
+    "  -m [rt,a,p]  : motion model, rt = rotation+translation, a = affine (default = affine).",
+    "  -c <int>   : number of corners (default 1000).",
+    "  -d <double>: search disparity as portion of image size (default 0.1).",
+    "  -q         : quarter the image resolution (i.e. half of each dimension) (default on)",
+    "  -r <int>   : the period (in nr of frames) for reference frame updates (default = 5)",
+    "  -s <0/1>   : motion smoothing (1 activates motion smoothing, 0 turns it off - default value = 1)",
+    "  -g <double>: motion smoothing gain, only used if smoothing is on (default value =0.75)",
+    NULL
+  };
+
+  cerr << "Usage: " << name << " [options] image_list.txt" << endl;
+
+  const char **p = helpmsg;
+
+  while (*p)
+  {
+    cerr << *p++ << endl;
+  }
+}
+
+void parse_cmd_line(stringstream& cmdline,
+            const int argc,
+            const string& progname,
+            string& image_list_file_name,
+            int& nr_corners,
+            double& max_disparity,
+            int& motion_model_type,
+            bool& quarter_resolution,
+            unsigned int& reference_update_period,
+            bool& do_motion_smoothing,
+            double& motion_smoothing_gain
+            );
+
+int main(int argc, char* argv[])
+{
+  int    nr_corners = DEFAULT_NR_CORNERS;
+  double max_disparity = DEFAULT_MAX_DISPARITY;
+  int    motion_model_type = DEFAULT_MOTION_MODEL;
+  bool   quarter_resolution = DEFAULT_QUARTER_RESOLUTION;
+
+  unsigned int reference_update_period = DEFAULT_REFERENCE_UPDATE_PERIOD;
+
+  bool   do_motion_smoothing = DEFAULT_DO_MOTION_SMOOTHING;
+  double motion_smoothing_gain = DEFAULT_MOTION_SMOOTHING_GAIN;
+  const bool DEFAULT_USE_SMALLER_MATCHING_WINDOW = true;
+
+  int default_nr_samples = DB_DEFAULT_NR_SAMPLES/5;
+
+  bool   use_smaller_matching_window = DEFAULT_USE_SMALLER_MATCHING_WINDOW;
+
+
+  bool   linear_polish = DEFAULT_LINEAR_POLISH;
+
+  if (argc < 2) {
+    usage(argv[0]);
+    exit(1);
+  }
+
+  stringstream cmdline;
+  string progname(argv[0]);
+  string image_list_file_name;
+
+#if PROFILE
+  timeval ts1, ts2, ts3, ts4;
+#endif
+
+  // put the options and image list file name into the cmdline stringstream
+  for (int c = 1; c < argc; c++)
+  {
+    cmdline << argv[c] << " ";
+  }
+
+  parse_cmd_line(cmdline, argc, progname, image_list_file_name, nr_corners, max_disparity, motion_model_type,quarter_resolution,reference_update_period,do_motion_smoothing,motion_smoothing_gain);
+
+  ifstream in(image_list_file_name.c_str(),ios::in);
+
+  if ( !in.is_open() )
+  {
+    cerr << "Could not open file " << image_list_file_name << ".  Exiting" << endl;
+
+    return false;
+  }
+
+  // feature-based image registration class:
+  db_FrameToReferenceRegistration reg;
+//  db_StabilizationSmoother stab_smoother;
+
+  // input file name:
+  string file_name;
+
+  // look-up tables for image warping:
+  float ** lut_x = NULL, **lut_y = NULL;
+
+  // if the images are color, the input is saved in color_ref:
+  PgmImage color_ref(0,0);
+
+  // image width, height:
+  int w,h;
+
+  int frame_number = 0;
+
+  while ( !in.eof() )
+  {
+    getline(in,file_name);
+
+    PgmImage ref(file_name);
+
+    if ( ref.GetDataPointer() == NULL )
+    {
+      cerr << "Could not open image" << file_name << ". Exiting." << endl;
+      return -1;
+    }
+
+    cout << ref << endl;
+
+    // color format:
+    int format = ref.GetFormat();
+
+    // is the input image color?:
+    bool color = format == PgmImage::PGM_BINARY_PIXMAP;
+
+    w = ref.GetWidth();
+    h = ref.GetHeight();
+
+    if ( !reg.Initialized() )
+    {
+      reg.Init(w,h,motion_model_type,DEFAULT_MAX_ITERATIONS,linear_polish,quarter_resolution,DB_POINT_STANDARDDEV,reference_update_period,do_motion_smoothing,motion_smoothing_gain,default_nr_samples,DB_DEFAULT_CHUNK_SIZE,nr_corners,max_disparity,use_smaller_matching_window);
+      lut_x = db_AllocImage_f(w,h);
+      lut_y = db_AllocImage_f(w,h);
+
+    }
+
+    if ( color )
+    {
+      // save the color image:
+      color_ref = ref;
+    }
+
+    // make a grayscale image:
+    ref.ConvertToGray();
+
+    // compute the homography:
+    double H[9],Hinv[9];
+    db_Identity3x3(Hinv);
+    db_Identity3x3(H);
+
+    bool force_reference = false;
+
+#if PROFILE
+    gettimeofday(&ts1, NULL);
+#endif
+
+    reg.AddFrame(ref.GetRowPointers(),H,false,false);
+    cout << reg.profile_string << std::endl;
+
+#if PROFILE
+    gettimeofday(&ts2, NULL);
+
+    double elapsedTime = (ts2.tv_sec - ts1.tv_sec)*1000.0; // sec to ms
+    elapsedTime += (ts2.tv_usec - ts1.tv_usec)/1000.0; // us to ms
+    cout <<"\nelapsedTime for Reg<< "<<elapsedTime<<" ms >>>>>>>>>>>>>\n";
+#endif
+
+    if (frame_number == 0)
+    {
+      reg.UpdateReference(ref.GetRowPointers());
+    }
+
+
+    //std::vector<int> &inlier_indices = reg.GetInliers();
+    int *inlier_indices = reg.GetInliers();
+    int num_inlier_indices = reg.GetNrInliers();
+    printf("[%d] #Inliers = %d\n",frame_number,num_inlier_indices);
+
+    reg.Get_H_dref_to_ins(H);
+
+    db_GenerateHomographyLut(lut_x,lut_y,w,h,H);
+
+    // create a new image and warp:
+    PgmImage warped(w,h,format);
+
+#if PROFILE
+    gettimeofday(&ts3, NULL);
+#endif
+
+    if ( color )
+      db_WarpImageLutBilinear_rgb(color_ref.GetRowPointers(),warped.GetRowPointers(),w,h,lut_x,lut_y);
+    else
+      db_WarpImageLut_u(ref.GetRowPointers(),warped.GetRowPointers(),w,h,lut_x,lut_y,DB_WARP_FAST);
+
+#if PROFILE
+    gettimeofday(&ts4, NULL);
+    elapsedTime = (ts4.tv_sec - ts3.tv_sec)*1000.0; // sec to ms
+    elapsedTime += (ts4.tv_usec - ts3.tv_usec)/1000.0;     // us to ms
+    cout <<"\nelapsedTime for Warp <<"<<elapsedTime<<" ms >>>>>>>>>>>>>\n";
+#endif
+
+    // write aligned image: name is aligned_<corresponding input file name>
+    stringstream s;
+    s << "aligned_" << file_name;
+    warped.WritePGM(s.str());
+
+    /*
+    // Get the reference and inspection corners to write to file
+    double *ref_corners = reg.GetRefCorners();
+    double *ins_corners = reg.GetInsCorners();
+
+    // get the image file name (without extension), so we
+    // can generate the corresponding filenames for matches
+    // and inliers
+    string file_name_root(file_name.substr(0,file_name.rfind(".")));
+
+    // write matches to file
+    s.str(string(""));
+    s << "Matches_" << file_name_root << ".txt";
+
+    ofstream  match_file(s.str().c_str());
+
+    for (int i = 0; i < reg.GetNrMatches(); i++)
+    {
+      match_file << ref_corners[3*i] << " " << ref_corners[3*i+1] << " " << ins_corners[3*i] << " " << ins_corners[3*i+1] << endl;
+    }
+
+    match_file.close();
+
+    // write the inlier matches to file
+    s.str(string(""));
+    s << "InlierMatches_" << file_name_root << ".txt";
+
+    ofstream inlier_match_file(s.str().c_str());
+
+    for(int i=0; i<num_inlier_indices; i++)
+    {
+      int k = inlier_indices[i];
+      inlier_match_file << ref_corners[3*k] << " "
+            << ref_corners[3*k+1] << " "
+            << ins_corners[3*k] << " "
+            << ins_corners[3*k+1] << endl;
+    }
+    inlier_match_file.close();
+    */
+
+    frame_number++;
+  }
+
+  if ( reg.Initialized() )
+  {
+    db_FreeImage_f(lut_x,h);
+    db_FreeImage_f(lut_y,h);
+  }
+
+  return 0;
+}
+
+void parse_cmd_line(stringstream& cmdline,
+            const int argc,
+            const string& progname,
+            string& image_list_file_name,
+            int& nr_corners,
+            double& max_disparity,
+            int& motion_model_type,
+            bool& quarter_resolution,
+            unsigned int& reference_update_period,
+            bool& do_motion_smoothing,
+            double& motion_smoothing_gain)
+{
+  // for counting down the parsed arguments.
+  int c = argc;
+
+  // a holder
+  string token;
+
+  while (cmdline >> token)
+  {
+    --c;
+
+    int pos = token.find("-");
+
+    if (pos == 0)
+    {
+      switch (token[1])
+      {
+      case 'm':
+    --c; cmdline >> token;
+    if (token.compare("rt") == 0)
+    {
+      motion_model_type = DB_HOMOGRAPHY_TYPE_R_T;
+    }
+    else if (token.compare("a") == 0)
+    {
+      motion_model_type = DB_HOMOGRAPHY_TYPE_AFFINE;
+    }
+    else if (token.compare("p") == 0)
+    {
+      motion_model_type = DB_HOMOGRAPHY_TYPE_PROJECTIVE;
+    }
+    else
+    {
+      usage(progname);
+      exit(1);
+    }
+    break;
+      case 'c':
+    --c; cmdline >> nr_corners;
+    break;
+      case 'd':
+    --c; cmdline >> max_disparity;
+    break;
+      case 'q':
+    quarter_resolution = true;
+    break;
+      case 'r':
+    --c; cmdline >> reference_update_period;
+    break;
+      case 's':
+    --c; cmdline >> do_motion_smoothing;
+    break;
+      case 'g':
+    --c; cmdline >> motion_smoothing_gain;
+    break;
+      default:
+    cerr << progname << "illegal option " << token << endl;
+      case 'h':
+    usage(progname);
+    exit(1);
+    break;
+      }
+    }
+    else
+    {
+      if (c != 1)
+      {
+    usage(progname);
+    exit(1);
+      }
+      else
+      {
+    --c;
+    image_list_file_name = token;
+      }
+    }
+  }
+
+  if (c != 0)
+  {
+    usage(progname);
+    exit(1);
+  }
+}
+
diff --git a/perftests/panorama/feature_stab/src/dbregtest/stdafx.cpp b/perftests/panorama/feature_stab/src/dbregtest/stdafx.cpp
new file mode 100644
index 0000000..0c703e2
--- /dev/null
+++ b/perftests/panorama/feature_stab/src/dbregtest/stdafx.cpp
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+// stdafx.cpp : source file that includes just the standard includes
+// dbregtest.pch will be the pre-compiled header
+// stdafx.obj will contain the pre-compiled type information
+
+#include "stdafx.h"
+
+// TODO: reference any additional headers you need in STDAFX.H
+// and not in this file
diff --git a/perftests/panorama/feature_stab/src/dbregtest/stdafx.h b/perftests/panorama/feature_stab/src/dbregtest/stdafx.h
new file mode 100644
index 0000000..9bc06ea
--- /dev/null
+++ b/perftests/panorama/feature_stab/src/dbregtest/stdafx.h
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+// stdafx.h : include file for standard system include files,
+// or project specific include files that are used frequently, but
+// are changed infrequently
+//
+
+#pragma once
+
+#include "targetver.h"
+
+#include <stdio.h>
+
+// TODO: reference additional headers your program requires here
diff --git a/perftests/panorama/feature_stab/src/dbregtest/targetver.h b/perftests/panorama/feature_stab/src/dbregtest/targetver.h
new file mode 100644
index 0000000..9272b0d
--- /dev/null
+++ b/perftests/panorama/feature_stab/src/dbregtest/targetver.h
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+#pragma once
+
+// The following macros define the minimum required platform.  The minimum required platform
+// is the earliest version of Windows, Internet Explorer etc. that has the necessary features to run
+// your application.  The macros work by enabling all features available on platform versions up to and
+// including the version specified.
+
+// Modify the following defines if you have to target a platform prior to the ones specified below.
+// Refer to MSDN for the latest info on corresponding values for different platforms.
+#ifndef _WIN32_WINNT            // Specifies that the minimum required platform is Windows Vista.
+#define _WIN32_WINNT 0x0600     // Change this to the appropriate value to target other versions of Windows.
+#endif
+
diff --git a/perftests/panorama/input/test_001.ppm b/perftests/panorama/input/test_001.ppm
new file mode 100644
index 0000000..e7218bf
--- /dev/null
+++ b/perftests/panorama/input/test_001.ppm
Binary files differ
diff --git a/perftests/panorama/input/test_002.ppm b/perftests/panorama/input/test_002.ppm
new file mode 100644
index 0000000..8975073
--- /dev/null
+++ b/perftests/panorama/input/test_002.ppm
Binary files differ
diff --git a/perftests/panorama/input/test_003.ppm b/perftests/panorama/input/test_003.ppm
new file mode 100644
index 0000000..58c9e34
--- /dev/null
+++ b/perftests/panorama/input/test_003.ppm
Binary files differ
diff --git a/perftests/panorama/input/test_004.ppm b/perftests/panorama/input/test_004.ppm
new file mode 100644
index 0000000..142c76b
--- /dev/null
+++ b/perftests/panorama/input/test_004.ppm
Binary files differ
diff --git a/perftests/panorama/input/test_005.ppm b/perftests/panorama/input/test_005.ppm
new file mode 100644
index 0000000..ff229d3
--- /dev/null
+++ b/perftests/panorama/input/test_005.ppm
Binary files differ
diff --git a/perftests/panorama/input/test_006.ppm b/perftests/panorama/input/test_006.ppm
new file mode 100644
index 0000000..2fc5c09
--- /dev/null
+++ b/perftests/panorama/input/test_006.ppm
Binary files differ
diff --git a/perftests/panorama/input/test_007.ppm b/perftests/panorama/input/test_007.ppm
new file mode 100644
index 0000000..d7f6a9a
--- /dev/null
+++ b/perftests/panorama/input/test_007.ppm
Binary files differ
diff --git a/perftests/panorama/input/test_008.ppm b/perftests/panorama/input/test_008.ppm
new file mode 100644
index 0000000..86d92b3
--- /dev/null
+++ b/perftests/panorama/input/test_008.ppm
Binary files differ
diff --git a/perftests/panorama/input/test_009.ppm b/perftests/panorama/input/test_009.ppm
new file mode 100644
index 0000000..72dd05f
--- /dev/null
+++ b/perftests/panorama/input/test_009.ppm
Binary files differ
diff --git a/perftests/panorama/input/test_010.ppm b/perftests/panorama/input/test_010.ppm
new file mode 100644
index 0000000..a09a054
--- /dev/null
+++ b/perftests/panorama/input/test_010.ppm
Binary files differ
diff --git a/perftests/panorama/input/test_011.ppm b/perftests/panorama/input/test_011.ppm
new file mode 100644
index 0000000..be7b61b
--- /dev/null
+++ b/perftests/panorama/input/test_011.ppm
Binary files differ
diff --git a/perftests/panorama/input/test_012.ppm b/perftests/panorama/input/test_012.ppm
new file mode 100644
index 0000000..67fad4a
--- /dev/null
+++ b/perftests/panorama/input/test_012.ppm
Binary files differ
diff --git a/perftests/panorama/input/test_013.ppm b/perftests/panorama/input/test_013.ppm
new file mode 100644
index 0000000..6d92fd1
--- /dev/null
+++ b/perftests/panorama/input/test_013.ppm
Binary files differ
diff --git a/perftests/panorama/input/test_014.ppm b/perftests/panorama/input/test_014.ppm
new file mode 100644
index 0000000..97aff41
--- /dev/null
+++ b/perftests/panorama/input/test_014.ppm
Binary files differ
diff --git a/perftests/panorama/input/test_015.ppm b/perftests/panorama/input/test_015.ppm
new file mode 100644
index 0000000..d1de251
--- /dev/null
+++ b/perftests/panorama/input/test_015.ppm
Binary files differ
diff --git a/perftests/panorama/input/test_016.ppm b/perftests/panorama/input/test_016.ppm
new file mode 100644
index 0000000..70ea1f5
--- /dev/null
+++ b/perftests/panorama/input/test_016.ppm
Binary files differ
diff --git a/perftests/panorama/input/test_017.ppm b/perftests/panorama/input/test_017.ppm
new file mode 100644
index 0000000..e075c9e
--- /dev/null
+++ b/perftests/panorama/input/test_017.ppm
Binary files differ
diff --git a/perftests/panorama/input/test_018.ppm b/perftests/panorama/input/test_018.ppm
new file mode 100644
index 0000000..adf023b
--- /dev/null
+++ b/perftests/panorama/input/test_018.ppm
Binary files differ
diff --git a/perftests/panorama/input/test_019.ppm b/perftests/panorama/input/test_019.ppm
new file mode 100644
index 0000000..1f27d1d
--- /dev/null
+++ b/perftests/panorama/input/test_019.ppm
Binary files differ
diff --git a/perftests/panorama/input/test_020.ppm b/perftests/panorama/input/test_020.ppm
new file mode 100644
index 0000000..fb95f52
--- /dev/null
+++ b/perftests/panorama/input/test_020.ppm
Binary files differ
diff --git a/perftests/panorama/input/test_021.ppm b/perftests/panorama/input/test_021.ppm
new file mode 100644
index 0000000..43baadf
--- /dev/null
+++ b/perftests/panorama/input/test_021.ppm
Binary files differ
diff --git a/perftests/panorama/input/test_022.ppm b/perftests/panorama/input/test_022.ppm
new file mode 100644
index 0000000..f928c83
--- /dev/null
+++ b/perftests/panorama/input/test_022.ppm
Binary files differ
diff --git a/perftests/panorama/input/test_023.ppm b/perftests/panorama/input/test_023.ppm
new file mode 100644
index 0000000..e21b275
--- /dev/null
+++ b/perftests/panorama/input/test_023.ppm
Binary files differ
diff --git a/perftests/panorama/input/test_024.ppm b/perftests/panorama/input/test_024.ppm
new file mode 100644
index 0000000..43ba0ba
--- /dev/null
+++ b/perftests/panorama/input/test_024.ppm
Binary files differ
diff --git a/perftests/panorama/input/test_025.ppm b/perftests/panorama/input/test_025.ppm
new file mode 100644
index 0000000..b9f8892
--- /dev/null
+++ b/perftests/panorama/input/test_025.ppm
Binary files differ
diff --git a/perftests/panorama/input/test_026.ppm b/perftests/panorama/input/test_026.ppm
new file mode 100644
index 0000000..201615f
--- /dev/null
+++ b/perftests/panorama/input/test_026.ppm
Binary files differ
diff --git a/perftests/panorama/input/test_027.ppm b/perftests/panorama/input/test_027.ppm
new file mode 100644
index 0000000..07cf426
--- /dev/null
+++ b/perftests/panorama/input/test_027.ppm
Binary files differ
diff --git a/perftests/panorama/input/test_028.ppm b/perftests/panorama/input/test_028.ppm
new file mode 100644
index 0000000..aedb023
--- /dev/null
+++ b/perftests/panorama/input/test_028.ppm
Binary files differ
diff --git a/perftests/panorama/input/test_029.ppm b/perftests/panorama/input/test_029.ppm
new file mode 100644
index 0000000..9a0d398
--- /dev/null
+++ b/perftests/panorama/input/test_029.ppm
Binary files differ
diff --git a/perftests/panorama/input/test_030.ppm b/perftests/panorama/input/test_030.ppm
new file mode 100644
index 0000000..26a8f53
--- /dev/null
+++ b/perftests/panorama/input/test_030.ppm
Binary files differ
diff --git a/perftests/panorama/input/test_031.ppm b/perftests/panorama/input/test_031.ppm
new file mode 100644
index 0000000..2300461
--- /dev/null
+++ b/perftests/panorama/input/test_031.ppm
Binary files differ
diff --git a/perftests/panorama/input/test_032.ppm b/perftests/panorama/input/test_032.ppm
new file mode 100644
index 0000000..f5e93f8
--- /dev/null
+++ b/perftests/panorama/input/test_032.ppm
Binary files differ
diff --git a/perftests/panorama/input/test_033.ppm b/perftests/panorama/input/test_033.ppm
new file mode 100644
index 0000000..c2f8ad9
--- /dev/null
+++ b/perftests/panorama/input/test_033.ppm
Binary files differ
diff --git a/perftests/panorama/input/test_034.ppm b/perftests/panorama/input/test_034.ppm
new file mode 100644
index 0000000..de93b23
--- /dev/null
+++ b/perftests/panorama/input/test_034.ppm
Binary files differ
diff --git a/perftests/panorama/input/test_035.ppm b/perftests/panorama/input/test_035.ppm
new file mode 100644
index 0000000..62198de
--- /dev/null
+++ b/perftests/panorama/input/test_035.ppm
Binary files differ
diff --git a/perftests/panorama/input/test_036.ppm b/perftests/panorama/input/test_036.ppm
new file mode 100644
index 0000000..bf252e4
--- /dev/null
+++ b/perftests/panorama/input/test_036.ppm
Binary files differ
diff --git a/perftests/panorama/input/test_037.ppm b/perftests/panorama/input/test_037.ppm
new file mode 100644
index 0000000..7cc7ace
--- /dev/null
+++ b/perftests/panorama/input/test_037.ppm
Binary files differ
diff --git a/perftests/panorama/input/test_038.ppm b/perftests/panorama/input/test_038.ppm
new file mode 100644
index 0000000..d44e1f1
--- /dev/null
+++ b/perftests/panorama/input/test_038.ppm
Binary files differ
diff --git a/perftests/panorama/output/golden.ppm b/perftests/panorama/output/golden.ppm
new file mode 100644
index 0000000..69dcdc2
--- /dev/null
+++ b/perftests/panorama/output/golden.ppm
Binary files differ
diff --git a/samples/ApiDemos/AndroidManifest.xml b/samples/ApiDemos/AndroidManifest.xml
index 095d7ee..7d681cd 100644
--- a/samples/ApiDemos/AndroidManifest.xml
+++ b/samples/ApiDemos/AndroidManifest.xml
@@ -2685,6 +2685,24 @@
             </intent-filter>
         </activity>
 
+        <activity android:name=".graphics.ShadowCardStack"
+                  android:label="Graphics/Shadow Card Stack"
+                  android:theme="@android:style/Theme.Material.Light">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.SAMPLE_CODE" />
+            </intent-filter>
+        </activity>
+
+        <activity android:name=".graphics.ShadowCardDrag"
+                  android:label="Graphics/Shadow Card Drag"
+                  android:theme="@android:style/Theme.Material.Light">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.SAMPLE_CODE" />
+            </intent-filter>
+        </activity>
+
         <activity android:name=".graphics.WindowSurface"
                 android:label="Graphics/Surface Window">
             <intent-filter>
diff --git a/samples/ApiDemos/res/drawable/round_rect.xml b/samples/ApiDemos/res/drawable/round_rect.xml
new file mode 100644
index 0000000..6577d14
--- /dev/null
+++ b/samples/ApiDemos/res/drawable/round_rect.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2014 The Android Open Source Project
+
+     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.
+-->
+<shape
+    xmlns:android="http://schemas.android.com/apk/res/android">
+    <solid android:color="#ffffffff" />
+    <corners android:radius="10dp" />
+</shape>
\ No newline at end of file
diff --git a/samples/ApiDemos/res/layout/action_bar_display_options.xml b/samples/ApiDemos/res/layout/action_bar_display_options.xml
index d4216f5..77da8df 100644
--- a/samples/ApiDemos/res/layout/action_bar_display_options.xml
+++ b/samples/ApiDemos/res/layout/action_bar_display_options.xml
@@ -39,10 +39,11 @@
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:text="@string/toggle_show_custom" />
-        <Button android:id="@+id/toggle_navigation"
+        <Spinner android:id="@+id/toggle_navigation"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:text="@string/toggle_navigation" />
+                android:prompt="@string/toggle_navigation"
+                android:entries="@array/navigation_modes" />
         <Button android:id="@+id/cycle_custom_gravity"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
diff --git a/samples/ApiDemos/res/layout/image_block.xml b/samples/ApiDemos/res/layout/image_block.xml
index 4233717..04b8d3f 100644
--- a/samples/ApiDemos/res/layout/image_block.xml
+++ b/samples/ApiDemos/res/layout/image_block.xml
@@ -15,7 +15,7 @@
                android:layout_row="0"
                android:src="@drawable/ducky"
                android:onClick="clicked"
-               android:viewName="ducky"
+               android:transitionName="ducky"
             />
     <ImageView android:id="@+id/woot"
                android:layout_height="wrap_content"
@@ -25,7 +25,7 @@
                android:layout_column="1"
                android:layout_row="0"
                android:onClick="clicked"
-               android:viewName="woot"
+               android:transitionName="woot"
             />
     <ImageView android:id="@+id/ball"
                android:layout_height="wrap_content"
@@ -35,7 +35,7 @@
                android:layout_column="0"
                android:layout_row="1"
                android:onClick="clicked"
-               android:viewName="ball"
+               android:transitionName="ball"
             />
     <ImageView android:id="@+id/block"
                android:layout_height="wrap_content"
@@ -45,7 +45,7 @@
                android:layout_column="1"
                android:layout_row="1"
                android:onClick="clicked"
-               android:viewName="block"
+               android:transitionName="block"
             />
     <ImageView android:id="@+id/jellies"
                android:layout_height="wrap_content"
@@ -55,7 +55,7 @@
                android:layout_column="0"
                android:layout_row="2"
                android:onClick="clicked"
-               android:viewName="jellies"
+               android:transitionName="jellies"
             />
     <ImageView android:id="@+id/mug"
                android:layout_height="wrap_content"
@@ -65,7 +65,7 @@
                android:layout_column="1"
                android:layout_row="2"
                android:onClick="clicked"
-               android:viewName="mug"
+               android:transitionName="mug"
             />
     <ImageView android:id="@+id/pencil"
                android:layout_height="wrap_content"
@@ -75,7 +75,7 @@
                android:layout_column="0"
                android:layout_row="3"
                android:onClick="clicked"
-               android:viewName="pencil"
+               android:transitionName="pencil"
             />
     <ImageView android:id="@+id/scissors"
                android:layout_height="wrap_content"
@@ -85,6 +85,6 @@
                android:layout_column="1"
                android:layout_row="3"
                android:onClick="clicked"
-               android:viewName="scissors"
+               android:transitionName="scissors"
             />
 </GridLayout>
\ No newline at end of file
diff --git a/samples/ApiDemos/res/layout/image_details.xml b/samples/ApiDemos/res/layout/image_details.xml
index a176ce5..1daee46 100644
--- a/samples/ApiDemos/res/layout/image_details.xml
+++ b/samples/ApiDemos/res/layout/image_details.xml
@@ -10,7 +10,7 @@
                android:layout_weight="1"
                android:layout_width="match_parent"
                android:scaleType="centerCrop"
-               android:viewName="hero"
+               android:transitionName="hero"
                android:onClick="clicked"
             />
     <LinearLayout android:layout_height="0px"
diff --git a/samples/ApiDemos/res/layout/shadow_card_drag.xml b/samples/ApiDemos/res/layout/shadow_card_drag.xml
new file mode 100644
index 0000000..c3bc474
--- /dev/null
+++ b/samples/ApiDemos/res/layout/shadow_card_drag.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2014 The Android Open Source Project
+
+     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.
+-->
+<FrameLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/card_parent"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:clipChildren="false"
+    android:clipToPadding="false"
+    android:orientation="horizontal" >
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="horizontal">
+        <CheckBox
+            android:id="@+id/tilt_check"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:checked="false"
+            android:text="@string/enable_tilt"/>
+        <CheckBox
+            android:id="@+id/shading_check"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:checked="false"
+            android:text="@string/enable_shading"/>
+        <Button
+            android:id="@+id/shape_select"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@string/select_shape"/>
+        </LinearLayout>
+
+    <TextView
+        android:id="@+id/card"
+        android:layout_width="150dp"
+        android:layout_height="150dp"
+        android:background="@drawable/round_rect"
+        android:clipToPadding="false"
+        android:gravity="center"
+        android:padding="20dp"
+        android:text="@string/draggable_card"
+        android:textSize="20sp"
+        android:elevation="2dp"/>
+</FrameLayout>
\ No newline at end of file
diff --git a/samples/ApiDemos/res/layout/shadow_card_stack.xml b/samples/ApiDemos/res/layout/shadow_card_stack.xml
new file mode 100644
index 0000000..11d60f7
--- /dev/null
+++ b/samples/ApiDemos/res/layout/shadow_card_stack.xml
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2014 The Android Open Source Project
+
+     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.
+-->
+<RelativeLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/card_parent"
+    android:orientation="vertical"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:clipChildren="false"
+    android:clipToPadding="false"
+    android:gravity="center">
+    <TextView
+        android:layout_width="250dp"
+        android:layout_height="150dp"
+        android:background="@drawable/round_rect"
+        android:padding="20dp"
+        android:textSize="20sp" />
+    <TextView
+        android:layout_width="250dp"
+        android:layout_height="150dp"
+        android:background="@drawable/round_rect"
+        android:padding="20dp"
+        android:textSize="20sp" />
+    <TextView
+        android:layout_width="250dp"
+        android:layout_height="150dp"
+        android:background="@drawable/round_rect"
+        android:padding="20dp"
+        android:textSize="20sp" />
+    <TextView
+        android:layout_width="250dp"
+        android:layout_height="150dp"
+        android:background="@drawable/round_rect"
+        android:padding="20dp"
+        android:textSize="20sp" />
+    <TextView
+        android:layout_width="250dp"
+        android:layout_height="150dp"
+        android:background="@drawable/round_rect"
+        android:padding="20dp"
+        android:textSize="20sp" />
+</RelativeLayout>
\ No newline at end of file
diff --git a/samples/ApiDemos/res/values/arrays.xml b/samples/ApiDemos/res/values/arrays.xml
index 8f987ae..79f7af4 100644
--- a/samples/ApiDemos/res/values/arrays.xml
+++ b/samples/ApiDemos/res/values/arrays.xml
@@ -359,4 +359,11 @@
         <item>AJS</item>
     </string-array>
 
+    <!-- Used in App/ActionBarDisplayOptions.java -->
+    <string-array name="navigation_modes">
+        <item>NAVIGATION_MODE_STANDARD</item>
+        <item>NAVIGATION_MODE_TABS</item>
+        <item>NAVIGATION_MODE_LIST</item>
+    </string-array>
+
 </resources>
diff --git a/samples/ApiDemos/res/values/strings.xml b/samples/ApiDemos/res/values/strings.xml
index 46ef1a2..6a2df2e 100644
--- a/samples/ApiDemos/res/values/strings.xml
+++ b/samples/ApiDemos/res/values/strings.xml
@@ -904,6 +904,11 @@
     <string name="density_title">Density: Unknown Screen</string>
     <string name="camera_alert">Device has only one camera!</string>
     <string name="switch_cam">Switch Camera</string>
+    <string name="draggable_card">Draggable Card</string>
+
+    <string name="enable_tilt">Enable Tilt</string>
+    <string name="enable_shading">Enable Shading</string>
+    <string name="select_shape">Select Shape</string>
 
     <!-- ============================ -->
     <!--  media examples strings  -->
diff --git a/samples/ApiDemos/src/com/example/android/apis/animation/ActivityTransition.java b/samples/ApiDemos/src/com/example/android/apis/animation/ActivityTransition.java
index bd63870..b295826 100644
--- a/samples/ApiDemos/src/com/example/android/apis/animation/ActivityTransition.java
+++ b/samples/ApiDemos/src/com/example/android/apis/animation/ActivityTransition.java
@@ -117,7 +117,7 @@
     public void clicked(View v) {
         mHero = (ImageView) v;
         Intent intent = new Intent(this, ActivityTransitionDetails.class);
-        intent.putExtra(KEY_ID, v.getViewName());
+        intent.putExtra(KEY_ID, v.getTransitionName());
         ActivityOptions activityOptions
                 = ActivityOptions.makeSceneTransitionAnimation(this, mHero, "hero");
         startActivity(intent, activityOptions.toBundle());
diff --git a/samples/ApiDemos/src/com/example/android/apis/app/ActionBarDisplayOptions.java b/samples/ApiDemos/src/com/example/android/apis/app/ActionBarDisplayOptions.java
index 73d8db9..40e63e9 100644
--- a/samples/ApiDemos/src/com/example/android/apis/app/ActionBarDisplayOptions.java
+++ b/samples/ApiDemos/src/com/example/android/apis/app/ActionBarDisplayOptions.java
@@ -26,12 +26,16 @@
 import android.view.Menu;
 import android.view.View;
 import android.view.ViewGroup.LayoutParams;
+import android.widget.AdapterView;
+import android.widget.ArrayAdapter;
+import android.widget.Spinner;
 
 /**
- * This demo shows how various action bar display option flags can be combined and their effects.
+ * This demo shows how various action bar display option flags can be combined
+ * and their effects.
  */
-public class ActionBarDisplayOptions extends Activity
-        implements View.OnClickListener, ActionBar.TabListener {
+public class ActionBarDisplayOptions extends Activity implements View.OnClickListener,
+        ActionBar.TabListener, Spinner.OnItemSelectedListener, ActionBar.OnNavigationListener {
     private View mCustomView;
 
     @Override
@@ -44,11 +48,12 @@
         findViewById(R.id.toggle_use_logo).setOnClickListener(this);
         findViewById(R.id.toggle_show_title).setOnClickListener(this);
         findViewById(R.id.toggle_show_custom).setOnClickListener(this);
-        findViewById(R.id.toggle_navigation).setOnClickListener(this);
         findViewById(R.id.cycle_custom_gravity).setOnClickListener(this);
         findViewById(R.id.toggle_visibility).setOnClickListener(this);
         findViewById(R.id.toggle_system_ui).setOnClickListener(this);
 
+        ((Spinner) findViewById(R.id.toggle_navigation)).setOnItemSelectedListener(this);
+
         mCustomView = getLayoutInflater().inflate(R.layout.action_bar_display_options_custom, null);
         // Configure several action bar elements that will be toggled by display options.
         final ActionBar bar = getActionBar();
@@ -58,6 +63,13 @@
         bar.addTab(bar.newTab().setText("Tab 1").setTabListener(this));
         bar.addTab(bar.newTab().setText("Tab 2").setTabListener(this));
         bar.addTab(bar.newTab().setText("Tab 3").setTabListener(this));
+
+        final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
+                android.R.layout.simple_list_item_1);
+        adapter.add("Item 1");
+        adapter.add("Item 2");
+        adapter.add("Item 3");
+        bar.setListNavigationCallbacks(adapter, this);
     }
 
     @Override
@@ -66,6 +78,7 @@
         return true;
     }
 
+    @Override
     public void onClick(View v) {
         final ActionBar bar = getActionBar();
         int flags = 0;
@@ -85,13 +98,6 @@
             case R.id.toggle_show_custom:
                 flags = ActionBar.DISPLAY_SHOW_CUSTOM;
                 break;
-
-            case R.id.toggle_navigation:
-                bar.setNavigationMode(
-                        bar.getNavigationMode() == ActionBar.NAVIGATION_MODE_STANDARD
-                                ? ActionBar.NAVIGATION_MODE_TABS
-                                : ActionBar.NAVIGATION_MODE_STANDARD);
-                return;
             case R.id.cycle_custom_gravity:
                 ActionBar.LayoutParams lp = (ActionBar.LayoutParams) mCustomView.getLayoutParams();
                 int newGravity = 0;
@@ -131,12 +137,45 @@
         bar.setDisplayOptions(change, flags);
     }
 
+    @Override
     public void onTabSelected(Tab tab, FragmentTransaction ft) {
     }
 
+    @Override
     public void onTabUnselected(Tab tab, FragmentTransaction ft) {
     }
 
+    @Override
     public void onTabReselected(Tab tab, FragmentTransaction ft) {
     }
+
+    @Override
+    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
+        final ActionBar bar = getActionBar();
+        switch (parent.getId()) {
+            case R.id.toggle_navigation:
+                final int mode;
+                switch (position) {
+                    case 1:
+                        mode = ActionBar.NAVIGATION_MODE_TABS;
+                        break;
+                    case 2:
+                        mode = ActionBar.NAVIGATION_MODE_LIST;
+                        break;
+                    default:
+                        mode = ActionBar.NAVIGATION_MODE_STANDARD;
+                }
+                bar.setNavigationMode(mode);
+                return;
+        }
+    }
+
+    @Override
+    public void onNothingSelected(AdapterView<?> parent) {
+    }
+
+    @Override
+    public boolean onNavigationItemSelected(int itemPosition, long itemId) {
+        return false;
+    }
 }
diff --git a/samples/ApiDemos/src/com/example/android/apis/app/DeviceAdminSample.java b/samples/ApiDemos/src/com/example/android/apis/app/DeviceAdminSample.java
index a27dcdf..70d4b6b 100644
--- a/samples/ApiDemos/src/com/example/android/apis/app/DeviceAdminSample.java
+++ b/samples/ApiDemos/src/com/example/android/apis/app/DeviceAdminSample.java
@@ -205,6 +205,15 @@
             }
         }
 
+        protected void postReloadSummaries() {
+            getView().post(new Runnable() {
+                @Override
+                public void run() {
+                    reloadSummaries();
+                }
+            });
+        }
+
         @Override
         public boolean onPreferenceClick(Preference preference) {
             if (mSetPassword != null && preference == mSetPassword) {
@@ -347,14 +356,22 @@
                 }
             } else if (preference == mDisableCameraCheckbox) {
                 mDPM.setCameraDisabled(mDeviceAdminSample, value);
-                reloadSummaries();
+                // Delay update because the change is only applied after exiting this method.
+                postReloadSummaries();
             } else if (preference == mDisableKeyguardWidgetsCheckbox
                     || preference == mDisableKeyguardSecureCameraCheckbox
                     || preference == mDisableKeyguardNotificationCheckbox
                     || preference == mDisableKeyguardUnredactedCheckbox
                     || preference == mDisableKeyguardTrustAgentCheckbox) {
-                mDPM.setKeyguardDisabledFeatures(mDeviceAdminSample, createKeyguardDisabledFlag());
-                reloadSummaries();
+                // Delay update because the change is only applied after exiting this method.
+                getView().post(new Runnable() {
+                    @Override
+                    public void run() {
+                        mDPM.setKeyguardDisabledFeatures(mDeviceAdminSample,
+                                createKeyguardDisabledFlag());
+                    }
+                });
+                postReloadSummaries();
             }
             return true;
         }
@@ -549,7 +566,8 @@
             } else if (preference == mMinNonLetter) {
                 mDPM.setPasswordMinimumNonLetter(mDeviceAdminSample, value);
             }
-            reloadSummaries();
+            // Delay update because the change is only applied after exiting this method.
+            postReloadSummaries();
             return true;
         }
 
@@ -639,7 +657,8 @@
             } else if (preference == mExpirationTimeout) {
                 mDPM.setPasswordExpirationTimeout(mDeviceAdminSample, value * MS_PER_MINUTE);
             }
-            reloadSummaries();
+            // Delay update because the change is only applied after exiting this method.
+            postReloadSummaries();
             return true;
         }
 
@@ -777,7 +796,8 @@
                 }
                 mDPM.setMaximumFailedPasswordsForWipe(mDeviceAdminSample, value);
             }
-            reloadSummaries();
+            // Delay update because the change is only applied after exiting this method.
+            postReloadSummaries();
             return true;
         }
 
@@ -895,7 +915,8 @@
             if (preference == mRequireEncryption) {
                 boolean newActive = (Boolean) newValue;
                 mDPM.setStorageEncryption(mDeviceAdminSample, newActive);
-                reloadSummaries();
+                // Delay update because the change is only applied after exiting this method.
+                postReloadSummaries();
                 return true;
             }
             return true;
diff --git a/samples/ApiDemos/src/com/example/android/apis/graphics/ShadowCardDrag.java b/samples/ApiDemos/src/com/example/android/apis/graphics/ShadowCardDrag.java
new file mode 100644
index 0000000..facc009
--- /dev/null
+++ b/samples/ApiDemos/src/com/example/android/apis/graphics/ShadowCardDrag.java
@@ -0,0 +1,249 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package com.example.android.apis.graphics;
+
+import android.animation.ObjectAnimator;
+import android.app.Activity;
+import android.graphics.Canvas;
+import android.graphics.Color;
+import android.graphics.Outline;
+import android.graphics.Paint;
+import android.graphics.Path;
+import android.graphics.PorterDuff;
+import android.graphics.drawable.ShapeDrawable;
+import android.graphics.drawable.shapes.OvalShape;
+import android.graphics.drawable.shapes.RectShape;
+import android.graphics.drawable.shapes.RoundRectShape;
+import android.graphics.drawable.shapes.Shape;
+import android.os.Bundle;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.animation.AccelerateInterpolator;
+import android.view.animation.DecelerateInterpolator;
+import android.widget.Button;
+import android.widget.CheckBox;
+import android.widget.CompoundButton;
+import com.example.android.apis.R;
+
+import java.util.ArrayList;
+
+public class ShadowCardDrag extends Activity {
+    private static final float MAX_Z_DP = 10;
+    private static final float MOMENTUM_SCALE = 10;
+    private static final int MAX_ANGLE = 10;
+
+    private class CardDragState {
+        long lastEventTime;
+        float lastX;
+        float lastY;
+
+        float momentumX;
+        float momentumY;
+
+        public void onDown(long eventTime, float x, float y) {
+            lastEventTime = eventTime;
+            lastX = x;
+            lastY = y;
+
+            momentumX = 0;
+            momentumY = 0;
+        }
+
+        public void onMove(long eventTime, float x, float y) {
+            final long deltaT = eventTime - lastEventTime;
+
+            if (deltaT != 0) {
+                float newMomentumX = (x - lastX) / (mDensity * deltaT);
+                float newMomentumY = (y - lastY) / (mDensity * deltaT);
+
+                momentumX = 0.9f * momentumX + 0.1f * (newMomentumX * MOMENTUM_SCALE);
+                momentumY = 0.9f * momentumY + 0.1f * (newMomentumY * MOMENTUM_SCALE);
+
+                momentumX = Math.max(Math.min((momentumX), MAX_ANGLE), -MAX_ANGLE);
+                momentumY = Math.max(Math.min((momentumY), MAX_ANGLE), -MAX_ANGLE);
+
+                //noinspection SuspiciousNameCombination
+                mCard.setRotationX(-momentumY);
+                //noinspection SuspiciousNameCombination
+                mCard.setRotationY(momentumX);
+
+                if (mShadingEnabled) {
+                    float alphaDarkening = (momentumX * momentumX + momentumY * momentumY) / (90 * 90);
+                    alphaDarkening /= 2;
+
+                    int alphaByte = 0xff - ((int)(alphaDarkening * 255) & 0xff);
+                    int color = Color.rgb(alphaByte, alphaByte, alphaByte);
+                    mCardBackground.setColorFilter(color, PorterDuff.Mode.MULTIPLY);
+                }
+            }
+
+            lastX = x;
+            lastY = y;
+            lastEventTime = eventTime;
+        }
+
+        public void onUp() {
+            ObjectAnimator flattenX = ObjectAnimator.ofFloat(mCard, "rotationX", 0);
+            flattenX.setDuration(100);
+            flattenX.setInterpolator(new AccelerateInterpolator());
+            flattenX.start();
+
+            ObjectAnimator flattenY = ObjectAnimator.ofFloat(mCard, "rotationY", 0);
+            flattenY.setDuration(100);
+            flattenY.setInterpolator(new AccelerateInterpolator());
+            flattenY.start();
+            mCardBackground.setColorFilter(null);
+        }
+    }
+
+    /**
+     * Simple shape example that generates a shadow casting outline.
+     */
+    private static class TriangleShape extends Shape {
+        private final Path mPath = new Path();
+
+        @Override
+        protected void onResize(float width, float height) {
+            mPath.reset();
+            mPath.moveTo(0, 0);
+            mPath.lineTo(width, 0);
+            mPath.lineTo(width / 2, height);
+            mPath.lineTo(0, 0);
+            mPath.close();
+        }
+
+        @Override
+        public void draw(Canvas canvas, Paint paint) {
+            canvas.drawPath(mPath, paint);
+        }
+
+        @Override
+        public boolean getOutline(Outline outline) {
+            outline.setConvexPath(mPath);
+            return true;
+        }
+    }
+
+    private final ShapeDrawable mCardBackground = new ShapeDrawable();
+    private final ArrayList<Shape> mShapes = new ArrayList<Shape>();
+    private float mDensity;
+    private View mCard;
+
+    private final CardDragState mDragState = new CardDragState();
+    private boolean mTiltEnabled;
+    private boolean mShadingEnabled;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.shadow_card_drag);
+
+        mDensity = getResources().getDisplayMetrics().density;
+        mShapes.add(new RectShape());
+        mShapes.add(new OvalShape());
+        float r = 10 * mDensity;
+        float radii[] = new float[] {r, r, r, r, r, r, r, r};
+        mShapes.add(new RoundRectShape(radii, null, null));
+        mShapes.add(new TriangleShape());
+
+        mCardBackground.getPaint().setColor(Color.WHITE);
+        mCardBackground.setShape(mShapes.get(0));
+        final View cardParent = findViewById(R.id.card_parent);
+        mCard = findViewById(R.id.card);
+        mCard.setBackground(mCardBackground);
+
+        final CheckBox tiltCheck = (CheckBox) findViewById(R.id.tilt_check);
+        tiltCheck.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+            @Override
+            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
+                mTiltEnabled = isChecked;
+                if (!mTiltEnabled) {
+                    mDragState.onUp();
+                }
+            }
+        });
+
+        final CheckBox shadingCheck = (CheckBox) findViewById(R.id.shading_check);
+        shadingCheck.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+            @Override
+            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
+                mShadingEnabled = isChecked;
+                if (!mShadingEnabled) {
+                    mCardBackground.setColorFilter(null);
+                }
+            }
+        });
+
+        final Button shapeButton = (Button) findViewById(R.id.shape_select);
+        shapeButton.setOnClickListener(new View.OnClickListener() {
+            int index = 0;
+            @Override
+            public void onClick(View v) {
+                index = (index + 1) % mShapes.size();
+                mCardBackground.setShape(mShapes.get(index));
+            }
+        });
+
+        /**
+         * Enable any touch on the parent to drag the card. Note that this doesn't do a proper hit
+         * test, so any drag (including off of the card) will work.
+         *
+         * This enables the user to see the effect more clearly for the purpose of this demo.
+         */
+        cardParent.setOnTouchListener(new View.OnTouchListener() {
+            float downX;
+            float downY;
+            long downTime;
+
+            @Override
+            public boolean onTouch(View v, MotionEvent event) {
+                switch (event.getAction()) {
+                    case MotionEvent.ACTION_DOWN:
+                        downX = event.getX() - mCard.getTranslationX();
+                        downY = event.getY() - mCard.getTranslationY();
+                        downTime = event.getDownTime();
+                        ObjectAnimator upAnim = ObjectAnimator.ofFloat(mCard, "translationZ",
+                                MAX_Z_DP * mDensity);
+                        upAnim.setDuration(100);
+                        upAnim.setInterpolator(new DecelerateInterpolator());
+                        upAnim.start();
+                        if (mTiltEnabled) {
+                            mDragState.onDown(event.getDownTime(), event.getX(), event.getY());
+                        }
+                        break;
+                    case MotionEvent.ACTION_MOVE:
+                        mCard.setTranslationX(event.getX() - downX);
+                        mCard.setTranslationY(event.getY() - downY);
+                        if (mTiltEnabled) {
+                            mDragState.onMove(event.getEventTime(), event.getX(), event.getY());
+                        }
+                        break;
+                    case MotionEvent.ACTION_UP:
+                        ObjectAnimator downAnim = ObjectAnimator.ofFloat(mCard, "translationZ", 0);
+                        downAnim.setDuration(100);
+                        downAnim.setInterpolator(new AccelerateInterpolator());
+                        downAnim.start();
+                        if (mTiltEnabled) {
+                            mDragState.onUp();
+                        }
+                        break;
+                }
+                return true;
+            }
+        });
+    }
+}
diff --git a/samples/ApiDemos/src/com/example/android/apis/graphics/ShadowCardStack.java b/samples/ApiDemos/src/com/example/android/apis/graphics/ShadowCardStack.java
new file mode 100644
index 0000000..5a34251
--- /dev/null
+++ b/samples/ApiDemos/src/com/example/android/apis/graphics/ShadowCardStack.java
@@ -0,0 +1,141 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package com.example.android.apis.graphics;
+
+import android.animation.Animator;
+import android.animation.AnimatorSet;
+import android.animation.ObjectAnimator;
+import android.app.Activity;
+import android.os.Bundle;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import com.example.android.apis.R;
+
+import java.util.ArrayList;
+
+public class ShadowCardStack extends Activity {
+
+    private static final float X_SHIFT_DP = 1000;
+    private static final float Y_SHIFT_DP = 50;
+    private static final float Z_LIFT_DP = 8;
+    private static final float ROTATE_DEGREES = 15;
+
+    public AnimatorSet createSet(ArrayList<Animator> items, long startDelay) {
+        AnimatorSet set = new AnimatorSet();
+        set.playTogether(items);
+        set.setStartDelay(startDelay);
+        return set;
+    }
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.shadow_card_stack);
+
+        float density = getResources().getDisplayMetrics().density;
+
+        final ViewGroup cardParent = (ViewGroup) findViewById(R.id.card_parent);
+
+        final float X = X_SHIFT_DP * density;
+        final float Y = Y_SHIFT_DP * density;
+        final float Z = Z_LIFT_DP * density;
+
+        ArrayList<Animator> towardAnimators = new ArrayList<Animator>();
+        ArrayList<Animator> expandAnimators = new ArrayList<Animator>();
+        ArrayList<Animator> moveAwayAnimators = new ArrayList<Animator>();
+        ArrayList<Animator> moveBackAnimators = new ArrayList<Animator>();
+        ArrayList<Animator> awayAnimators = new ArrayList<Animator>();
+        ArrayList<Animator> collapseAnimators = new ArrayList<Animator>();
+
+        final int max = cardParent.getChildCount();
+        for (int i = 0; i < max; i++) {
+            TextView card = (TextView) cardParent.getChildAt(i);
+            card.setText("Card number " + i);
+
+            float targetY = (i - (max-1) / 2.0f) * Y;
+            Animator expand = ObjectAnimator.ofFloat(card, "translationY", targetY);
+            expandAnimators.add(expand);
+
+            Animator toward = ObjectAnimator.ofFloat(card, "translationZ", i * Z);
+            toward.setStartDelay(200 * ((max) - i));
+            towardAnimators.add(toward);
+
+            card.setPivotX(X_SHIFT_DP);
+            Animator rotateAway = ObjectAnimator.ofFloat(card, "rotationY",
+                    i == 0 ? 0 : ROTATE_DEGREES);
+            rotateAway.setStartDelay(200 * ((max) - i));
+            rotateAway.setDuration(100);
+            moveAwayAnimators.add(rotateAway);
+            Animator slideAway = ObjectAnimator.ofFloat(card, "translationX",
+                    i == 0 ? 0 : X);
+            slideAway.setStartDelay(200 * ((max) - i));
+            slideAway.setDuration(100);
+            moveAwayAnimators.add(slideAway);
+
+            Animator rotateBack = ObjectAnimator.ofFloat(card, "rotationY", 0);
+            rotateBack.setStartDelay(200 * i);
+            moveBackAnimators.add(rotateBack);
+            Animator slideBack = ObjectAnimator.ofFloat(card, "translationX", 0);
+            slideBack.setStartDelay(200 * i);
+            moveBackAnimators.add(slideBack);
+
+            Animator away = ObjectAnimator.ofFloat(card, "translationZ", 0);
+            away.setStartDelay(200 * i);
+            awayAnimators.add(away);
+
+            Animator collapse = ObjectAnimator.ofFloat(card, "translationY", 0);
+            collapseAnimators.add(collapse);
+        }
+
+        AnimatorSet totalSet = new AnimatorSet();
+        totalSet.playSequentially(
+                createSet(expandAnimators, 250),
+                createSet(towardAnimators, 0),
+
+                createSet(moveAwayAnimators, 250),
+                createSet(moveBackAnimators, 0),
+
+                createSet(awayAnimators, 250),
+                createSet(collapseAnimators, 0));
+        totalSet.start();
+        totalSet.addListener(new RepeatListener(totalSet));
+    }
+
+    public static class RepeatListener implements Animator.AnimatorListener {
+        final Animator mRepeatAnimator;
+        public RepeatListener(Animator repeatAnimator) {
+            mRepeatAnimator = repeatAnimator;
+        }
+
+        @Override
+        public void onAnimationStart(Animator animation) {}
+
+        @Override
+        public void onAnimationEnd(Animator animation) {
+            if (animation == mRepeatAnimator) {
+                mRepeatAnimator.start();
+            }
+        }
+
+        @Override
+        public void onAnimationCancel(Animator animation) {}
+
+        @Override
+        public void onAnimationRepeat(Animator animation) {}
+    }
+}
diff --git a/samples/AtscTvInput/AndroidManifest.xml b/samples/AtscTvInput/AndroidManifest.xml
index 1d44761..9842d5f 100644
--- a/samples/AtscTvInput/AndroidManifest.xml
+++ b/samples/AtscTvInput/AndroidManifest.xml
@@ -26,7 +26,6 @@
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.LAUNCHER" />
-                <action android:name="android.media.tv.SetupActivity" />
             </intent-filter>
         </activity>
         <service android:name="com.example.android.atsctvinput.AtscTvInputService"
@@ -35,6 +34,8 @@
             <intent-filter>
                 <action android:name="android.media.tv.TvInputService" />
             </intent-filter>
+            <meta-data android:name="android.media.tv.input"
+                android:resource="@xml/atsctvinputservice" />
         </service>
     </application>
 </manifest>
diff --git a/samples/AtscTvInput/res/xml/atsctvinputservice.xml b/samples/AtscTvInput/res/xml/atsctvinputservice.xml
new file mode 100644
index 0000000..9f7bc4d
--- /dev/null
+++ b/samples/AtscTvInput/res/xml/atsctvinputservice.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/**
+ * Copyright (c) 2014, The Android Open Source Project
+ *
+ * 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.
+ */
+-->
+
+<tv-input xmlns:android="http://schemas.android.com/apk/res/android"
+    android:setupActivity="com.example.android.atsctvinput.AtscTvInputScanActivity" />
diff --git a/samples/Support7Demos/src/com/example/android/supportv7/widget/AnimatedRecyclerView.java b/samples/Support7Demos/src/com/example/android/supportv7/widget/AnimatedRecyclerView.java
index 38a8695..f4165ac 100644
--- a/samples/Support7Demos/src/com/example/android/supportv7/widget/AnimatedRecyclerView.java
+++ b/samples/Support7Demos/src/com/example/android/supportv7/widget/AnimatedRecyclerView.java
@@ -194,18 +194,18 @@
                 View v = recycler.getViewForPosition(mFirstPosition + i);
 
                 RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) v.getLayoutParams();
-                if (!state.isPreLayout() || !params.isItemRemoved()) {
+                if (!mPredictiveAnimationsEnabled || !params.isItemRemoved()) {
                     addView(v);
                 }
                 measureChild(v, 0, 0);
                 bottom = top + v.getMeasuredHeight();
                 v.layout(left, top, right, bottom);
-                if (state.isPreLayout() && params.isItemRemoved()) {
+                if (mPredictiveAnimationsEnabled && params.isItemRemoved()) {
                     parentBottom += v.getHeight();
                 }
             }
 
-            if (mAnimationsEnabled && state.isPreLayout()) {
+            if (mAnimationsEnabled && mPredictiveAnimationsEnabled) {
                 // Now that we've run a full layout, figure out which views were not used
                 // (cached in previousViews). For each of these views, position it where
                 // it would go, according to its position relative to the visible
@@ -286,7 +286,7 @@
                     final int scrollBy = -Math.min(dy - scrolled, hangingBottom);
                     scrolled -= scrollBy;
                     offsetChildrenVertical(scrollBy);
-                    if (scrolled < dy && getItemCount() > mFirstPosition + getChildCount()) {
+                    if (scrolled < dy && state.getItemCount() > mFirstPosition + getChildCount()) {
                         View v = recycler.getViewForPosition(mFirstPosition + getChildCount());
                         final int top = getChildAt(getChildCount() - 1).getBottom();
                         addView(v);
@@ -332,7 +332,7 @@
                 }
             }
             if (direction == View.FOCUS_DOWN || direction == View.FOCUS_FORWARD) {
-                while (mFirstPosition + getChildCount() < getItemCount() &&
+                while (mFirstPosition + getChildCount() < state.getItemCount() &&
                         newViewsHeight < mScrollDistance) {
                     View v = recycler.getViewForPosition(mFirstPosition + getChildCount());
                     final int top = getChildAt(getChildCount() - 1).getBottom();
diff --git a/samples/Support7Demos/src/com/example/android/supportv7/widget/RecyclerViewActivity.java b/samples/Support7Demos/src/com/example/android/supportv7/widget/RecyclerViewActivity.java
index baecf86..747992b 100644
--- a/samples/Support7Demos/src/com/example/android/supportv7/widget/RecyclerViewActivity.java
+++ b/samples/Support7Demos/src/com/example/android/supportv7/widget/RecyclerViewActivity.java
@@ -176,7 +176,7 @@
                     final int scrollBy = -Math.min(dy - scrolled, hangingBottom);
                     scrolled -= scrollBy;
                     offsetChildrenVertical(scrollBy);
-                    if (scrolled < dy && getItemCount() > mFirstPosition + getChildCount()) {
+                    if (scrolled < dy && state.getItemCount() > mFirstPosition + getChildCount()) {
                         View v = recycler.getViewForPosition(mFirstPosition + getChildCount());
                         final int top = getDecoratedBottom(getChildAt(getChildCount() - 1));
                         addView(v);
@@ -222,7 +222,7 @@
                 }
             }
             if (direction == View.FOCUS_DOWN || direction == View.FOCUS_FORWARD) {
-                while (mFirstPosition + getChildCount() < getItemCount() &&
+                while (mFirstPosition + getChildCount() < state.getItemCount() &&
                         newViewsHeight < mScrollDistance) {
                     View v = recycler.getViewForPosition(mFirstPosition + getChildCount());
                     final int top = getDecoratedBottom(getChildAt(getChildCount() - 1));
diff --git a/samples/Vault/src/com/example/android/vault/VaultProvider.java b/samples/Vault/src/com/example/android/vault/VaultProvider.java
index 02e3211..bf3f1ce 100644
--- a/samples/Vault/src/com/example/android/vault/VaultProvider.java
+++ b/samples/Vault/src/com/example/android/vault/VaultProvider.java
@@ -36,6 +36,7 @@
 import android.provider.DocumentsContract.Root;
 import android.provider.DocumentsProvider;
 import android.security.KeyChain;
+import android.text.TextUtils;
 import android.util.Log;
 
 import org.json.JSONArray;
@@ -204,7 +205,8 @@
         final MatrixCursor result = new MatrixCursor(resolveRootProjection(projection));
         final RowBuilder row = result.newRow();
         row.add(Root.COLUMN_ROOT_ID, DEFAULT_ROOT_ID);
-        row.add(Root.COLUMN_FLAGS, Root.FLAG_SUPPORTS_CREATE | Root.FLAG_LOCAL_ONLY);
+        row.add(Root.COLUMN_FLAGS, Root.FLAG_SUPPORTS_CREATE | Root.FLAG_LOCAL_ONLY
+                | Root.FLAG_SUPPORTS_IS_CHILD);
         row.add(Root.COLUMN_TITLE, getContext().getString(R.string.app_label));
         row.add(Root.COLUMN_DOCUMENT_ID, DEFAULT_DOCUMENT_ID);
         row.add(Root.COLUMN_ICON, R.drawable.ic_lock_lock);
@@ -242,6 +244,7 @@
         } else {
             flags |= Document.FLAG_SUPPORTS_WRITE;
         }
+        flags |= Document.FLAG_SUPPORTS_RENAME;
         flags |= Document.FLAG_SUPPORTS_DELETE;
 
         final RowBuilder row = result.newRow();
@@ -254,6 +257,39 @@
     }
 
     @Override
+    public boolean isChildDocument(String parentDocumentId, String documentId) {
+        if (TextUtils.equals(parentDocumentId, documentId)) {
+            return true;
+        }
+
+        try {
+            final long parentDocId = Long.parseLong(parentDocumentId);
+            final EncryptedDocument parentDoc = getDocument(parentDocId);
+
+            // Recursively search any children
+            // TODO: consider building an index to optimize this check
+            final JSONObject meta = parentDoc.readMetadata();
+            if (Document.MIME_TYPE_DIR.equals(meta.getString(Document.COLUMN_MIME_TYPE))) {
+                final JSONArray children = meta.getJSONArray(KEY_CHILDREN);
+                for (int i = 0; i < children.length(); i++) {
+                    final String childDocumentId = children.getString(i);
+                    if (isChildDocument(childDocumentId, documentId)) {
+                        return true;
+                    }
+                }
+            }
+        } catch (IOException e) {
+            throw new IllegalStateException(e);
+        } catch (GeneralSecurityException e) {
+            throw new IllegalStateException(e);
+        } catch (JSONException e) {
+            throw new IllegalStateException(e);
+        }
+
+        return false;
+    }
+
+    @Override
     public String createDocument(String parentDocumentId, String mimeType, String displayName)
             throws FileNotFoundException {
         final long parentDocId = Long.parseLong(parentDocumentId);
@@ -314,6 +350,29 @@
     }
 
     @Override
+    public String renameDocument(String documentId, String displayName)
+            throws FileNotFoundException {
+        final long docId = Long.parseLong(documentId);
+
+        try {
+            final EncryptedDocument doc = getDocument(docId);
+            final JSONObject meta = doc.readMetadata();
+
+            meta.put(Document.COLUMN_DISPLAY_NAME, displayName);
+            doc.writeMetadataAndContent(meta, null);
+
+            return null;
+
+        } catch (IOException e) {
+            throw new IllegalStateException(e);
+        } catch (GeneralSecurityException e) {
+            throw new IllegalStateException(e);
+        } catch (JSONException e) {
+            throw new IllegalStateException(e);
+        }
+    }
+
+    @Override
     public void deleteDocument(String documentId) throws FileNotFoundException {
         final long docId = Long.parseLong(documentId);
 
diff --git a/samples/wearable/.gitignore b/samples/wearable/.gitignore
new file mode 100644
index 0000000..a762655
--- /dev/null
+++ b/samples/wearable/.gitignore
@@ -0,0 +1,42 @@
+# built application files
+*.apk
+*.ap_
+
+# files for the dex VM
+*.dex
+
+# Java class files
+*.class
+
+# generated files
+bin/
+out/
+src/common
+src/template
+_index.jd
+README.txt
+
+# Libraries used by the app
+# Can explicitly add if we want, but shouldn't do so blindly.  Licenses, bloat, etc.
+/libs
+
+
+# Build stuff (auto-generated by android update project ...)
+ant.properties
+local.properties
+
+# Eclipse project files
+.classpath
+.project
+
+# idea project files
+.idea/
+.idea/.name
+*.iml
+*.ipr
+*.iws
+
+##Gradle-based build
+.gradle
+build/
+
diff --git a/samples/wearable/AgendaData/Application/build.gradle b/samples/wearable/AgendaData/Application/build.gradle
new file mode 100644
index 0000000..7de0d36
--- /dev/null
+++ b/samples/wearable/AgendaData/Application/build.gradle
@@ -0,0 +1,30 @@
+apply plugin: 'android'
+
+android {
+    compileSdkVersion 20
+    buildToolsVersion '20'
+
+    defaultConfig {
+        minSdkVersion 18
+        targetSdkVersion 20
+        versionCode 1
+        versionName "1.0"
+    }
+
+    buildTypes {
+        release {
+            runProguard false
+            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
+        }
+    }
+
+    aaptOptions {
+        noCompress 'apk'
+    }
+}
+
+dependencies {
+    compile 'com.google.android.gms:play-services:5.0.+@aar'
+    compile "com.android.support:support-v4:20.0.+"
+    wearApp project(':Wearable')
+}
\ No newline at end of file
diff --git a/samples/wearable/AgendaData/Application/proguard-rules.txt b/samples/wearable/AgendaData/Application/proguard-rules.txt
new file mode 100644
index 0000000..824a322
--- /dev/null
+++ b/samples/wearable/AgendaData/Application/proguard-rules.txt
@@ -0,0 +1,28 @@
+# To enable ProGuard in your project, edit project.properties
+# to define the proguard.config property as described in that file.
+#
+# Add project specific ProGuard rules here.
+# By default, the flags in this file are appended to flags specified
+# in ${sdk.dir}/tools/proguard/proguard-android.txt
+# You can edit the include path and order by changing the ProGuard
+# include property in project.properties.
+#
+# For more details, see
+#   http://developer.android.com/guide/developing/tools/proguard.html
+
+# Add any project specific keep options here:
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+#   public *;
+#}
+-dontwarn android.support.wearable.view.DelayedConfirmationView
+-dontwarn android.support.wearable.view.CircledImageView
+
+-keep class android.support.wearable.view.WearableListView {
+  private void setScrollAnimator(int);
+  private void setScrollVertically(int);
+}
+
diff --git a/samples/wearable/AgendaData/Application/project.properties b/samples/wearable/AgendaData/Application/project.properties
new file mode 100644
index 0000000..4ab1256
--- /dev/null
+++ b/samples/wearable/AgendaData/Application/project.properties
@@ -0,0 +1,14 @@
+# This file is automatically generated by Android Tools.
+# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
+#
+# This file must be checked in Version Control Systems.
+#
+# To customize properties used by the Ant build system edit
+# "ant.properties", and override values to adapt the script to your
+# project structure.
+#
+# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
+#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
+
+# Project target.
+target=android-19
diff --git a/samples/wearable/AgendaData/Application/src/main/AndroidManifest.xml b/samples/wearable/AgendaData/Application/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..d96efd8
--- /dev/null
+++ b/samples/wearable/AgendaData/Application/src/main/AndroidManifest.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+          package="com.example.android.wearable.agendadata">
+
+    <uses-sdk android:minSdkVersion="18" android:targetSdkVersion="20" />
+
+    <uses-permission android:name="android.permission.READ_CALENDAR" />
+    <uses-permission android:name="android.permission.READ_CONTACTS" />
+
+    <application
+            android:icon="@drawable/ic_launcher"
+            android:label="@string/app_name"
+            android:theme="@android:style/Theme.Holo.Light"
+            android:allowBackup="false">
+
+        <meta-data
+                android:name="com.google.android.gms.version"
+                android:value="@integer/google_play_services_version" />
+
+        <activity
+                android:name="com.example.android.wearable.agendadata.MainActivity"
+                android:label="@string/app_name"
+                android:configChanges="keyboardHidden|orientation|screenSize">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN"/>
+                <category android:name="android.intent.category.LAUNCHER"/>
+            </intent-filter>
+        </activity>
+
+        <service android:name="com.example.android.wearable.agendadata.CalendarQueryService"/>
+    </application>
+</manifest>
diff --git a/samples/wearable/AgendaData/Application/src/main/java/com/example/android/wearable/agendadata/CalendarQueryService.java b/samples/wearable/AgendaData/Application/src/main/java/com/example/android/wearable/agendadata/CalendarQueryService.java
new file mode 100644
index 0000000..c55fb2c
--- /dev/null
+++ b/samples/wearable/AgendaData/Application/src/main/java/com/example/android/wearable/agendadata/CalendarQueryService.java
@@ -0,0 +1,251 @@
+package com.example.android.wearable.agendadata;
+
+
+import static com.example.android.wearable.agendadata.Constants.TAG;
+import static com.example.android.wearable.agendadata.Constants.CONNECTION_TIME_OUT_MS;
+import static com.example.android.wearable.agendadata.Constants.CAL_DATA_ITEM_PATH_PREFIX;
+import static com.example.android.wearable.agendadata.Constants.ALL_DAY;
+import static com.example.android.wearable.agendadata.Constants.BEGIN;
+import static com.example.android.wearable.agendadata.Constants.DATA_ITEM_URI;
+import static com.example.android.wearable.agendadata.Constants.DESCRIPTION;
+import static com.example.android.wearable.agendadata.Constants.END;
+import static com.example.android.wearable.agendadata.Constants.EVENT_ID;
+import static com.example.android.wearable.agendadata.Constants.ID;
+import static com.example.android.wearable.agendadata.Constants.PROFILE_PIC;
+import static com.example.android.wearable.agendadata.Constants.TITLE;
+
+import android.app.IntentService;
+import android.content.ContentResolver;
+import android.content.ContentUris;
+import android.content.Context;
+import android.content.Intent;
+import android.content.res.Resources;
+import android.database.Cursor;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.net.Uri;
+import android.os.Bundle;
+import android.provider.CalendarContract;
+import android.provider.ContactsContract.CommonDataKinds.Email;
+import android.provider.ContactsContract.Contacts;
+import android.provider.ContactsContract.Data;
+import android.text.format.Time;
+import android.util.Log;
+
+import com.google.android.gms.common.ConnectionResult;
+import com.google.android.gms.common.api.GoogleApiClient;
+import com.google.android.gms.common.api.GoogleApiClient.ConnectionCallbacks;
+import com.google.android.gms.common.api.GoogleApiClient.OnConnectionFailedListener;
+import com.google.android.gms.wearable.Asset;
+import com.google.android.gms.wearable.DataMap;
+import com.google.android.gms.wearable.PutDataMapRequest;
+import com.google.android.gms.wearable.Wearable;
+
+import java.io.ByteArrayOutputStream;
+import java.io.Closeable;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Queries calendar events using Android Calendar Provider API and creates a data item for each
+ * event.
+ */
+public class CalendarQueryService extends IntentService
+        implements ConnectionCallbacks, OnConnectionFailedListener {
+
+    private static final String[] INSTANCE_PROJECTION = {
+            CalendarContract.Instances._ID,
+            CalendarContract.Instances.EVENT_ID,
+            CalendarContract.Instances.TITLE,
+            CalendarContract.Instances.BEGIN,
+            CalendarContract.Instances.END,
+            CalendarContract.Instances.ALL_DAY,
+            CalendarContract.Instances.DESCRIPTION,
+            CalendarContract.Instances.ORGANIZER
+    };
+
+    private static final String[] CONTACT_PROJECTION = new String[] { Data._ID, Data.CONTACT_ID };
+    private static final String CONTACT_SELECTION = Email.ADDRESS + " = ?";
+
+    private GoogleApiClient mGoogleApiClient;
+
+    public CalendarQueryService() {
+        super(CalendarQueryService.class.getSimpleName());
+    }
+
+    @Override
+    public void onCreate() {
+        super.onCreate();
+        mGoogleApiClient = new GoogleApiClient.Builder(this)
+                .addApi(Wearable.API)
+                .addConnectionCallbacks(this)
+                .addOnConnectionFailedListener(this)
+                .build();
+    }
+
+    @Override
+    protected void onHandleIntent(Intent intent) {
+        mGoogleApiClient.blockingConnect(CONNECTION_TIME_OUT_MS, TimeUnit.MILLISECONDS);
+        // Query calendar events in the next 24 hours.
+        Time time = new Time();
+        time.setToNow();
+        long beginTime = time.toMillis(true);
+        time.monthDay++;
+        time.normalize(true);
+        long endTime = time.normalize(true);
+
+        List<Event> events = queryEvents(this, beginTime, endTime);
+        for (Event event : events) {
+            final PutDataMapRequest putDataMapRequest = event.toPutDataMapRequest();
+            if (mGoogleApiClient.isConnected()) {
+                Wearable.DataApi.putDataItem(
+                    mGoogleApiClient, putDataMapRequest.asPutDataRequest()).await();
+            } else {
+                Log.e(TAG, "Failed to send data item: " + putDataMapRequest
+                         + " - Client disconnected from Google Play Services");
+            }
+        }
+        mGoogleApiClient.disconnect();
+    }
+
+    private static String makeDataItemPath(long eventId, long beginTime) {
+        return CAL_DATA_ITEM_PATH_PREFIX + eventId + "/" + beginTime;
+    }
+
+    private static List<Event> queryEvents(Context context, long beginTime, long endTime) {
+        ContentResolver contentResolver = context.getContentResolver();
+        Uri.Builder builder = CalendarContract.Instances.CONTENT_URI.buildUpon();
+        ContentUris.appendId(builder, beginTime);
+        ContentUris.appendId(builder, endTime);
+
+        Cursor cursor = contentResolver.query(builder.build(), INSTANCE_PROJECTION,
+                null /* selection */, null /* selectionArgs */, null /* sortOrder */);
+        try {
+            int idIdx = cursor.getColumnIndex(CalendarContract.Instances._ID);
+            int eventIdIdx = cursor.getColumnIndex(CalendarContract.Instances.EVENT_ID);
+            int titleIdx = cursor.getColumnIndex(CalendarContract.Instances.TITLE);
+            int beginIdx = cursor.getColumnIndex(CalendarContract.Instances.BEGIN);
+            int endIdx = cursor.getColumnIndex(CalendarContract.Instances.END);
+            int allDayIdx = cursor.getColumnIndex(CalendarContract.Instances.ALL_DAY);
+            int descIdx = cursor.getColumnIndex(CalendarContract.Instances.DESCRIPTION);
+            int ownerEmailIdx = cursor.getColumnIndex(CalendarContract.Instances.ORGANIZER);
+
+            List<Event> events = new ArrayList<Event>(cursor.getCount());
+            while (cursor.moveToNext()) {
+                Event event = new Event();
+                event.id = cursor.getLong(idIdx);
+                event.eventId = cursor.getLong(eventIdIdx);
+                event.title = cursor.getString(titleIdx);
+                event.begin = cursor.getLong(beginIdx);
+                event.end = cursor.getLong(endIdx);
+                event.allDay = cursor.getInt(allDayIdx) != 0;
+                event.description = cursor.getString(descIdx);
+                String ownerEmail = cursor.getString(ownerEmailIdx);
+                Cursor contactCursor = contentResolver.query(Data.CONTENT_URI,
+                        CONTACT_PROJECTION, CONTACT_SELECTION, new String[] {ownerEmail}, null);
+                int ownerIdIdx = contactCursor.getColumnIndex(Data.CONTACT_ID);
+                long ownerId = -1;
+                if (contactCursor.moveToFirst()) {
+                    ownerId = contactCursor.getLong(ownerIdIdx);
+                }
+                contactCursor.close();
+                // Use event organizer's profile picture as the notification background.
+                event.ownerProfilePic = getProfilePicture(contentResolver, context, ownerId);
+                events.add(event);
+            }
+            return events;
+        } finally {
+            cursor.close();
+        }
+    }
+
+    @Override
+    public void onConnected(Bundle connectionHint) {
+    }
+
+    @Override
+    public void onConnectionSuspended(int cause) {
+    }
+
+    @Override
+    public void onConnectionFailed(ConnectionResult result) {
+    }
+
+    private static Asset getDefaultProfile(Resources res) {
+        Bitmap bitmap = BitmapFactory.decodeResource(res, R.drawable.nobody);
+        return Asset.createFromBytes(toByteArray(bitmap));
+    }
+
+    private static Asset getProfilePicture(ContentResolver contentResolver, Context context,
+                                           long contactId) {
+        if (contactId != -1) {
+            // Try to retrieve the profile picture for the given contact.
+            Uri contactUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, contactId);
+            InputStream inputStream = Contacts.openContactPhotoInputStream(contentResolver,
+                    contactUri, true /*preferHighres*/);
+
+            if (null != inputStream) {
+                try {
+                    Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
+                    if (bitmap != null) {
+                        return Asset.createFromBytes(toByteArray(bitmap));
+                    } else {
+                        Log.e(TAG, "Cannot decode profile picture for contact " + contactId);
+                    }
+                } finally {
+                    closeQuietly(inputStream);
+                }
+            }
+        }
+        // Use a default background image if the user has no profile picture or there was an error.
+        return getDefaultProfile(context.getResources());
+    }
+
+    private static byte[] toByteArray(Bitmap bitmap) {
+        ByteArrayOutputStream stream = new ByteArrayOutputStream();
+        bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
+        byte[] byteArray = stream.toByteArray();
+        closeQuietly(stream);
+        return byteArray;
+    }
+
+    private static void closeQuietly(Closeable closeable) {
+        try {
+            closeable.close();
+        } catch (IOException e) {
+            Log.e(TAG, "IOException while closing closeable.", e);
+        }
+    }
+
+    private static class Event {
+
+        public long id;
+        public long eventId;
+        public String title;
+        public long begin;
+        public long end;
+        public boolean allDay;
+        public String description;
+        public Asset ownerProfilePic;
+
+        public PutDataMapRequest toPutDataMapRequest(){
+            final PutDataMapRequest putDataMapRequest = PutDataMapRequest.create(
+                    makeDataItemPath(eventId, begin));
+            DataMap data = putDataMapRequest.getDataMap();
+            data.putString(DATA_ITEM_URI, putDataMapRequest.getUri().toString());
+            data.putLong(ID, id);
+            data.putLong(EVENT_ID, eventId);
+            data.putString(TITLE, title);
+            data.putLong(BEGIN, begin);
+            data.putLong(END, end);
+            data.putBoolean(ALL_DAY, allDay);
+            data.putString(DESCRIPTION, description);
+            data.putAsset(PROFILE_PIC, ownerProfilePic);
+
+            return putDataMapRequest;
+        }
+    }
+}
diff --git a/samples/wearable/AgendaData/Application/src/main/java/com/example/android/wearable/agendadata/Constants.java b/samples/wearable/AgendaData/Application/src/main/java/com/example/android/wearable/agendadata/Constants.java
new file mode 100644
index 0000000..1b9a0f0
--- /dev/null
+++ b/samples/wearable/AgendaData/Application/src/main/java/com/example/android/wearable/agendadata/Constants.java
@@ -0,0 +1,23 @@
+package com.example.android.wearable.agendadata;
+
+/** Constants used in companion app. */
+public final class Constants {
+    private Constants() {
+    }
+
+    public static final String TAG = "AgendaDataSample";
+
+    public static final String CAL_DATA_ITEM_PATH_PREFIX = "/event";
+    // Timeout for making a connection to GoogleApiClient (in milliseconds).
+    public static final long CONNECTION_TIME_OUT_MS = 100;
+
+    public static final String EVENT_ID = "event_id";
+    public static final String ID = "id";
+    public static final String TITLE = "title";
+    public static final String DESCRIPTION = "description";
+    public static final String BEGIN = "begin";
+    public static final String END = "end";
+    public static final String DATA_ITEM_URI = "data_item_uri";
+    public static final String ALL_DAY = "all_day";
+    public static final String PROFILE_PIC = "profile_pic";
+}
diff --git a/samples/wearable/AgendaData/Application/src/main/java/com/example/android/wearable/agendadata/MainActivity.java b/samples/wearable/AgendaData/Application/src/main/java/com/example/android/wearable/agendadata/MainActivity.java
new file mode 100644
index 0000000..046fc8d
--- /dev/null
+++ b/samples/wearable/AgendaData/Application/src/main/java/com/example/android/wearable/agendadata/MainActivity.java
@@ -0,0 +1,186 @@
+package com.example.android.wearable.agendadata;
+
+import static com.example.android.wearable.agendadata.Constants.TAG;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.content.IntentSender;
+import android.net.Uri;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.View;
+import android.widget.ScrollView;
+import android.widget.TextView;
+
+import com.google.android.gms.common.ConnectionResult;
+import com.google.android.gms.common.api.GoogleApiClient;
+import com.google.android.gms.common.api.GoogleApiClient.ConnectionCallbacks;
+import com.google.android.gms.common.api.GoogleApiClient.OnConnectionFailedListener;
+import com.google.android.gms.common.api.ResultCallback;
+import com.google.android.gms.common.data.FreezableUtils;
+import com.google.android.gms.wearable.DataApi;
+import com.google.android.gms.wearable.DataItem;
+import com.google.android.gms.wearable.DataItemBuffer;
+import com.google.android.gms.wearable.Node;
+import com.google.android.gms.wearable.NodeApi;
+import com.google.android.gms.wearable.Wearable;
+
+import java.util.List;
+
+public class MainActivity extends Activity implements NodeApi.NodeListener, ConnectionCallbacks,
+        OnConnectionFailedListener {
+
+    /** Request code for launching the Intent to resolve Google Play services errors. */
+    private static final int REQUEST_RESOLVE_ERROR = 1000;
+
+    private GoogleApiClient mGoogleApiClient;
+    private boolean mResolvingError = false;
+
+    private TextView mLogTextView;
+    ScrollView mScroller;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        setContentView(R.layout.main);
+        mLogTextView = (TextView) findViewById(R.id.log);
+        mScroller = (ScrollView) findViewById(R.id.scroller);
+        mGoogleApiClient = new GoogleApiClient.Builder(this)
+                .addApi(Wearable.API)
+                .addConnectionCallbacks(this)
+                .addOnConnectionFailedListener(this)
+                .build();
+    }
+
+    @Override
+    protected void onStart() {
+        super.onStart();
+        if (!mResolvingError) {
+            mGoogleApiClient.connect();
+        }
+    }
+
+    @Override
+    protected void onStop() {
+        if (mGoogleApiClient.isConnected()) {
+            Wearable.NodeApi.removeListener(mGoogleApiClient, this);
+        }
+        mGoogleApiClient.disconnect();
+        super.onStop();
+    }
+
+    public void onGetEventsClicked(View v) {
+        startService(new Intent(this, CalendarQueryService.class));
+    }
+
+    public void onDeleteEventsClicked(View v) {
+        if (mGoogleApiClient.isConnected()) {
+            Wearable.DataApi.getDataItems(mGoogleApiClient)
+                    .setResultCallback(new ResultCallback<DataItemBuffer>() {
+                        @Override
+                        public void onResult(DataItemBuffer result) {
+                            if (result.getStatus().isSuccess()) {
+                                deleteDataItems(result);
+                            } else {
+                                if (Log.isLoggable(TAG, Log.DEBUG)) {
+                                    Log.d(TAG, "onDeleteEventsClicked(): failed to get Data Items");
+                                }
+                            }
+                            result.close();
+                        }
+                    });
+        } else {
+            Log.e(TAG, "Failed to delete data items"
+                     + " - Client disconnected from Google Play Services");
+        }
+    }
+
+    private void deleteDataItems(DataItemBuffer dataItems) {
+        if (mGoogleApiClient.isConnected()) {
+            // Store the DataItem URIs in a List and close the buffer. Then use these URIs
+            // to delete the DataItems.
+            final List<DataItem> dataItemList = FreezableUtils.freezeIterable(dataItems);
+            dataItems.close();
+            for (final DataItem dataItem : dataItemList) {
+                final Uri dataItemUri = dataItem.getUri();
+                // In a real calendar application, this might delete the corresponding calendar
+                // event from the calendar data provider. In this sample, we simply delete the
+                // DataItem, but leave the phone's calendar data intact.
+                Wearable.DataApi.deleteDataItems(mGoogleApiClient, dataItemUri)
+                        .setResultCallback(new ResultCallback<DataApi.DeleteDataItemsResult>() {
+                            @Override
+                            public void onResult(DataApi.DeleteDataItemsResult deleteResult) {
+                                if (deleteResult.getStatus().isSuccess()) {
+                                    appendLog("Successfully deleted data item: " + dataItemUri);
+                                } else {
+                                    appendLog("Failed to delete data item:" + dataItemUri);
+                                }
+                            }
+                        });
+            }
+        } else {
+            Log.e(TAG, "Failed to delete data items"
+                     + " - Client disconnected from Google Play Services");
+        }
+    }
+
+    private void appendLog(final String s) {
+        mLogTextView.post(new Runnable() {
+            @Override
+            public void run() {
+                mLogTextView.append(s);
+                mLogTextView.append("\n");
+                mScroller.fullScroll(View.FOCUS_DOWN);
+            }
+        });
+    }
+
+    @Override
+    public void onPeerConnected(Node peer) {
+        appendLog("Device connected");
+    }
+
+    @Override
+    public void onPeerDisconnected(Node peer) {
+        appendLog("Device disconnected");
+    }
+
+    @Override
+    public void onConnected(Bundle connectionHint) {
+        if (Log.isLoggable(TAG, Log.DEBUG)) {
+            Log.d(TAG, "Connected to Google Api Service");
+        }
+        mResolvingError = false;
+        Wearable.NodeApi.addListener(mGoogleApiClient, this);
+    }
+
+    @Override
+    public void onConnectionSuspended(int cause) {
+        // Ignore
+    }
+
+    @Override
+    public void onConnectionFailed(ConnectionResult result) {
+        if (Log.isLoggable(TAG, Log.DEBUG)) {
+            Log.d(TAG, "Disconnected from Google Api Service");
+        }
+        if (null != Wearable.NodeApi) {
+            Wearable.NodeApi.removeListener(mGoogleApiClient, this);
+        }
+        if (mResolvingError) {
+            // Already attempting to resolve an error.
+            return;
+        } else if (result.hasResolution()) {
+            try {
+                mResolvingError = true;
+                result.startResolutionForResult(this, REQUEST_RESOLVE_ERROR);
+            } catch (IntentSender.SendIntentException e) {
+                // There was an error with the resolution intent. Try again.
+                mGoogleApiClient.connect();
+            }
+        } else {
+            mResolvingError = false;
+        }
+    }
+}
diff --git a/samples/wearable/AgendaData/Application/src/main/res/drawable-hdpi/ic_launcher.png b/samples/wearable/AgendaData/Application/src/main/res/drawable-hdpi/ic_launcher.png
new file mode 100644
index 0000000..0564717
--- /dev/null
+++ b/samples/wearable/AgendaData/Application/src/main/res/drawable-hdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/AgendaData/Application/src/main/res/drawable-mdpi/ic_launcher.png b/samples/wearable/AgendaData/Application/src/main/res/drawable-mdpi/ic_launcher.png
new file mode 100644
index 0000000..0f40347
--- /dev/null
+++ b/samples/wearable/AgendaData/Application/src/main/res/drawable-mdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/AgendaData/Application/src/main/res/drawable-nodpi/nobody.png b/samples/wearable/AgendaData/Application/src/main/res/drawable-nodpi/nobody.png
new file mode 100644
index 0000000..5a33d60
--- /dev/null
+++ b/samples/wearable/AgendaData/Application/src/main/res/drawable-nodpi/nobody.png
Binary files differ
diff --git a/samples/wearable/AgendaData/Application/src/main/res/drawable-xhdpi/ic_launcher.png b/samples/wearable/AgendaData/Application/src/main/res/drawable-xhdpi/ic_launcher.png
new file mode 100644
index 0000000..d7705cf
--- /dev/null
+++ b/samples/wearable/AgendaData/Application/src/main/res/drawable-xhdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/AgendaData/Application/src/main/res/drawable-xxhdpi/ic_launcher.png b/samples/wearable/AgendaData/Application/src/main/res/drawable-xxhdpi/ic_launcher.png
new file mode 100644
index 0000000..f07299f
--- /dev/null
+++ b/samples/wearable/AgendaData/Application/src/main/res/drawable-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/AgendaData/Application/src/main/res/layout/main.xml b/samples/wearable/AgendaData/Application/src/main/res/layout/main.xml
new file mode 100644
index 0000000..acd6340
--- /dev/null
+++ b/samples/wearable/AgendaData/Application/src/main/res/layout/main.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="vertical"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <Button
+        android:layout_height="wrap_content"
+        android:layout_width="wrap_content"
+        android:text="@string/get_events"
+        android:onClick="onGetEventsClicked"/>
+    <Button
+        android:layout_height="wrap_content"
+        android:layout_width="wrap_content"
+        android:text="@string/delete_events"
+        android:onClick="onDeleteEventsClicked"/>
+
+    <TextView
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:textAppearance="?android:textAppearanceLarge"
+        android:layout_marginTop="6dp"
+        android:padding="6dp"
+        android:text="@string/log"
+        android:textAllCaps="true"
+        android:textColor="@android:color/white"
+        android:background="@android:color/black"/>
+
+    <ScrollView
+        android:id="@+id/scroller"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content">
+
+        <TextView
+            android:id="@+id/log"
+            android:fontFamily="courier"
+            android:textColor="@android:color/white"
+            android:background="@android:color/black"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"/>
+    </ScrollView>
+</LinearLayout>
diff --git a/samples/wearable/AgendaData/Application/src/main/res/values/strings.xml b/samples/wearable/AgendaData/Application/src/main/res/values/strings.xml
new file mode 100644
index 0000000..423858e
--- /dev/null
+++ b/samples/wearable/AgendaData/Application/src/main/res/values/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name">Android Wear AgendaData Example Application</string>
+    <string name="get_events">Sync calendar events to wearable</string>
+    <string name="delete_events">Delete calendar events from wearable</string>
+    <string name="log">Log</string>
+</resources>
diff --git a/samples/wearable/AgendaData/Application/src/main/res/values/styles.xml b/samples/wearable/AgendaData/Application/src/main/res/values/styles.xml
new file mode 100644
index 0000000..929c8f4
--- /dev/null
+++ b/samples/wearable/AgendaData/Application/src/main/res/values/styles.xml
@@ -0,0 +1,10 @@
+<resources>
+    <style name="AppBaseTheme" parent="android:Theme.Holo.Light.DarkActionBar">
+        <item name="android:windowAnimationStyle">@null</item>
+    </style>
+
+    <!-- Application theme. -->
+    <style name="AppTheme" parent="AppBaseTheme">
+        <!-- All customizations that are NOT specific to a particular API-level can go here. -->
+    </style>
+</resources>
diff --git a/samples/wearable/AgendaData/Wearable/build.gradle b/samples/wearable/AgendaData/Wearable/build.gradle
new file mode 100644
index 0000000..a1921f0
--- /dev/null
+++ b/samples/wearable/AgendaData/Wearable/build.gradle
@@ -0,0 +1,26 @@
+apply plugin: 'android'
+
+android {
+    compileSdkVersion 20
+    buildToolsVersion '20'
+
+    defaultConfig {
+        minSdkVersion 20
+        targetSdkVersion 20
+        versionCode 1
+        versionName "1.0"
+    }
+
+    buildTypes {
+        release {
+            runProguard false
+            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
+        }
+    }
+}
+
+dependencies {
+    compile 'com.google.android.gms:play-services:5.+@aar'
+    compile "com.android.support:support-v4:20.0.+"
+    compile "com.google.android.support:wearable:1.0.+"
+}
\ No newline at end of file
diff --git a/samples/wearable/AgendaData/Wearable/proguard-rules.txt b/samples/wearable/AgendaData/Wearable/proguard-rules.txt
new file mode 100644
index 0000000..08e5bdc
--- /dev/null
+++ b/samples/wearable/AgendaData/Wearable/proguard-rules.txt
@@ -0,0 +1,22 @@
+# To enable ProGuard in your project, edit project.properties
+# to define the proguard.config property as described in that file.
+#
+# Add project specific ProGuard rules here.
+# By default, the flags in this file are appended to flags specified
+# in ${sdk.dir}/tools/proguard/proguard-android.txt
+# You can edit the include path and order by changing the ProGuard
+# include property in project.properties.
+#
+# For more details, see
+#   http://developer.android.com/guide/developing/tools/proguard.html
+
+# Add any project specific keep options here:
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+#   public *;
+#}
+-dontwarn android.support.wearable.view.DelayedConfirmationView
+-dontwarn android.support.wearable.view.CircledImageView
diff --git a/samples/wearable/AgendaData/Wearable/project.properties b/samples/wearable/AgendaData/Wearable/project.properties
new file mode 100644
index 0000000..4ab1256
--- /dev/null
+++ b/samples/wearable/AgendaData/Wearable/project.properties
@@ -0,0 +1,14 @@
+# This file is automatically generated by Android Tools.
+# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
+#
+# This file must be checked in Version Control Systems.
+#
+# To customize properties used by the Ant build system edit
+# "ant.properties", and override values to adapt the script to your
+# project structure.
+#
+# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
+#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
+
+# Project target.
+target=android-19
diff --git a/samples/wearable/AgendaData/Wearable/src/main/AndroidManifest.xml b/samples/wearable/AgendaData/Wearable/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..f986b3a
--- /dev/null
+++ b/samples/wearable/AgendaData/Wearable/src/main/AndroidManifest.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+        package="com.example.android.wearable.agendadata" >
+
+    <uses-sdk android:minSdkVersion="20" android:targetSdkVersion="20" />
+
+    <application
+            android:icon="@drawable/ic_launcher"
+            android:label="@string/app_name"
+            android:allowBackup="false">
+
+        <meta-data
+                android:name="com.google.android.gms.version"
+                android:value="@integer/google_play_services_version" />
+
+        <service
+                android:name="com.example.android.wearable.agendadata.HomeListenerService" >
+            <intent-filter>
+                <action android:name="com.google.android.gms.wearable.BIND_LISTENER" />
+            </intent-filter>
+        </service>
+
+        <service android:name="com.example.android.wearable.agendadata.DeleteService"/>
+
+        <activity android:name="android.support.wearable.activity.ConfirmationActivity"/>
+
+    </application>
+</manifest>
diff --git a/samples/wearable/AgendaData/Wearable/src/main/java/com/example/android/wearable/agendadata/Constants.java b/samples/wearable/AgendaData/Wearable/src/main/java/com/example/android/wearable/agendadata/Constants.java
new file mode 100644
index 0000000..669a1a5
--- /dev/null
+++ b/samples/wearable/AgendaData/Wearable/src/main/java/com/example/android/wearable/agendadata/Constants.java
@@ -0,0 +1,19 @@
+package com.example.android.wearable.agendadata;
+
+/** Constants used in wearable app. */
+public final class Constants {
+
+    private Constants() {
+    }
+
+    public static final String TAG = "AgendaDataSample";
+
+    public static final String TITLE = "title";
+    public static final String DESCRIPTION = "description";
+    public static final String BEGIN = "begin";
+    public static final String END = "end";
+    public static final String ALL_DAY = "all_day";
+    public static final String PROFILE_PIC = "profile_pic";
+
+    public static final String EXTRA_SILENT = "silent";
+}
diff --git a/samples/wearable/AgendaData/Wearable/src/main/java/com/example/android/wearable/agendadata/DeleteService.java b/samples/wearable/AgendaData/Wearable/src/main/java/com/example/android/wearable/agendadata/DeleteService.java
new file mode 100644
index 0000000..906c0ee
--- /dev/null
+++ b/samples/wearable/AgendaData/Wearable/src/main/java/com/example/android/wearable/agendadata/DeleteService.java
@@ -0,0 +1,102 @@
+package com.example.android.wearable.agendadata;
+
+import static com.example.android.wearable.agendadata.Constants.TAG;
+import static com.example.android.wearable.agendadata.Constants.EXTRA_SILENT;
+
+import android.app.IntentService;
+import android.content.Intent;
+import android.net.Uri;
+import android.os.Bundle;
+import android.support.wearable.activity.ConfirmationActivity;
+import android.util.Log;
+
+import com.google.android.gms.common.ConnectionResult;
+import com.google.android.gms.common.api.GoogleApiClient;
+import com.google.android.gms.wearable.DataApi;
+import com.google.android.gms.wearable.Wearable;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Handles "Delete" button on calendar event card.
+ */
+public class DeleteService extends IntentService implements GoogleApiClient.ConnectionCallbacks,
+        GoogleApiClient.OnConnectionFailedListener {
+
+    /* Timeout for making a connection to GoogleApiClient (in milliseconds) */
+    private static final long TIME_OUT = 100;
+
+    private GoogleApiClient mGoogleApiClient;
+
+    public DeleteService() {
+        super(DeleteService.class.getSimpleName());
+    }
+
+    @Override
+    public void onCreate() {
+        super.onCreate();
+        mGoogleApiClient = new GoogleApiClient.Builder(this)
+                .addApi(Wearable.API)
+                .addConnectionCallbacks(this)
+                .addOnConnectionFailedListener(this)
+                .build();
+    }
+
+    @Override
+    protected void onHandleIntent(Intent intent) {
+        mGoogleApiClient.blockingConnect(TIME_OUT, TimeUnit.MILLISECONDS);
+        Uri dataItemUri = intent.getData();
+        if (Log.isLoggable(TAG, Log.VERBOSE)) {
+            Log.v(TAG, "DeleteService.onHandleIntent=" + dataItemUri);
+        }
+        if (mGoogleApiClient.isConnected()) {
+            DataApi.DeleteDataItemsResult result = Wearable.DataApi
+                    .deleteDataItems(mGoogleApiClient, dataItemUri).await();
+            if (result.getStatus().isSuccess() && !intent.getBooleanExtra(EXTRA_SILENT, false)) {
+                // Show the success animation on the watch unless Silent extra is true.
+                startConfirmationActivity(ConfirmationActivity.SUCCESS_ANIMATION,
+                                          getString(R.string.delete_successful));
+            } else {
+                if (Log.isLoggable(TAG, Log.VERBOSE)) {
+                    Log.v(TAG, "DeleteService.onHandleIntent: Failed to delete dataItem:"
+                            + dataItemUri);
+                }
+                // Show the failure animation on the watch unless Silent extra is true.
+                if (!intent.getBooleanExtra(EXTRA_SILENT, false)) {
+                    startConfirmationActivity(ConfirmationActivity.FAILURE_ANIMATION,
+                                              getString(R.string.delete_unsuccessful));
+                }
+            }
+        } else {
+            Log.e(TAG, "Failed to delete data item: " + dataItemUri
+                    + " - Client disconnected from Google Play Services");
+            // Show the failure animation on the watch unless Silent extra is true.
+            if (!intent.getBooleanExtra(EXTRA_SILENT, false)) {
+                startConfirmationActivity(ConfirmationActivity.FAILURE_ANIMATION,
+                        getString(R.string.delete_unsuccessful));
+            }
+        }
+        mGoogleApiClient.disconnect();
+    }
+
+    private void startConfirmationActivity(int animationType, String message) {
+        Intent confirmationActivity = new Intent(this, ConfirmationActivity.class)
+                .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_NO_ANIMATION)
+                .putExtra(ConfirmationActivity.EXTRA_ANIMATION_TYPE, animationType)
+                .putExtra(ConfirmationActivity.EXTRA_MESSAGE, message);
+        startActivity(confirmationActivity);
+    }
+
+    @Override
+    public void onConnected(Bundle connectionHint) {
+    }
+
+    @Override
+    public void onConnectionSuspended(int cause) {
+    }
+
+    @Override
+    public void onConnectionFailed(ConnectionResult result) {
+    }
+
+}
\ No newline at end of file
diff --git a/samples/wearable/AgendaData/Wearable/src/main/java/com/example/android/wearable/agendadata/HomeListenerService.java b/samples/wearable/AgendaData/Wearable/src/main/java/com/example/android/wearable/agendadata/HomeListenerService.java
new file mode 100644
index 0000000..7e702f4
--- /dev/null
+++ b/samples/wearable/AgendaData/Wearable/src/main/java/com/example/android/wearable/agendadata/HomeListenerService.java
@@ -0,0 +1,164 @@
+package com.example.android.wearable.agendadata;
+
+import static com.example.android.wearable.agendadata.Constants.TAG;
+import static com.example.android.wearable.agendadata.Constants.EXTRA_SILENT;
+
+import static com.example.android.wearable.agendadata.Constants.ALL_DAY;
+import static com.example.android.wearable.agendadata.Constants.BEGIN;
+import static com.example.android.wearable.agendadata.Constants.DESCRIPTION;
+import static com.example.android.wearable.agendadata.Constants.END;
+import static com.example.android.wearable.agendadata.Constants.PROFILE_PIC;
+import static com.example.android.wearable.agendadata.Constants.TITLE;
+
+import android.app.Notification;
+import android.app.NotificationManager;
+import android.app.PendingIntent;
+import android.content.Intent;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.net.Uri;
+import android.text.TextUtils;
+import android.text.format.DateFormat;
+import android.util.Log;
+
+import com.google.android.gms.common.api.GoogleApiClient;
+import com.google.android.gms.wearable.Asset;
+import com.google.android.gms.wearable.DataApi;
+import com.google.android.gms.wearable.DataEvent;
+import com.google.android.gms.wearable.DataEventBuffer;
+import com.google.android.gms.wearable.DataItem;
+import com.google.android.gms.wearable.DataMap;
+import com.google.android.gms.wearable.DataMapItem;
+import com.google.android.gms.wearable.MessageEvent;
+import com.google.android.gms.wearable.Wearable;
+import com.google.android.gms.wearable.WearableListenerService;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Listens to DataItem events on the home device.
+ */
+public class HomeListenerService extends WearableListenerService {
+
+    private static final Map<Uri, Integer> sNotificationIdByDataItemUri =
+            new HashMap<Uri, Integer>();
+    private static int sNotificationId = 1;
+    private GoogleApiClient mGoogleApiClient;
+
+    @Override
+    public void onDataChanged(DataEventBuffer dataEvents) {
+        if (Log.isLoggable(TAG, Log.DEBUG)) {
+            Log.d(TAG, "onDataChanged: " + dataEvents + " for " + getPackageName());
+        }
+        for (DataEvent event : dataEvents) {
+            if (event.getType() == DataEvent.TYPE_DELETED) {
+                deleteDataItem(event.getDataItem());
+            } else if (event.getType() == DataEvent.TYPE_CHANGED) {
+                UpdateNotificationForDataItem(event.getDataItem());
+            }
+        }
+        dataEvents.close();
+    }
+
+    @Override
+    public void onCreate() {
+        super.onCreate();
+        mGoogleApiClient = new GoogleApiClient.Builder(this.getApplicationContext())
+                .addApi(Wearable.API)
+                .build();
+        mGoogleApiClient.connect();
+    }
+
+    /**
+     * Posts a local notification to show calendar card.
+     */
+    private void UpdateNotificationForDataItem(DataItem dataItem) {
+        DataMapItem mapDataItem = DataMapItem.fromDataItem(dataItem);
+        DataMap data = mapDataItem.getDataMap();
+
+        String description = data.getString(DESCRIPTION);
+        if (TextUtils.isEmpty(description)) {
+            description = "";
+        } else {
+            // Add a space between the description and the time of the event.
+            description += " ";
+        }
+        String contentText;
+        if (data.getBoolean(ALL_DAY)) {
+            contentText = getString(R.string.desc_all_day, description);
+        } else {
+            String startTime = DateFormat.getTimeFormat(this).format(new Date(data.getLong(BEGIN)));
+            String endTime = DateFormat.getTimeFormat(this).format(new Date(data.getLong(END)));
+            contentText = getString(R.string.desc_time_period, description, startTime, endTime);
+        }
+
+        Intent deleteOperation = new Intent(this, DeleteService.class);
+        // Use a unique identifier for the delete action.
+        String deleteAction = "action_delete" + dataItem.getUri().toString() + sNotificationId;
+        deleteOperation.setAction(deleteAction);
+        deleteOperation.setData(dataItem.getUri());
+        PendingIntent deleteIntent = PendingIntent.getService(this, 0, deleteOperation,
+                PendingIntent.FLAG_ONE_SHOT);
+        PendingIntent silentDeleteIntent = PendingIntent.getService(this, 1,
+                deleteOperation.putExtra(EXTRA_SILENT, true), PendingIntent.FLAG_ONE_SHOT);
+
+        Notification.Builder notificationBuilder = new Notification.Builder(this)
+                .setContentTitle(data.getString(TITLE))
+                .setContentText(contentText)
+                .setSmallIcon(R.drawable.ic_launcher)
+                .addAction(R.drawable.ic_menu_delete, getText(R.string.delete), deleteIntent)
+                .setDeleteIntent(silentDeleteIntent)  // Delete DataItem if notification dismissed.
+                .setLocalOnly(true)
+                .setPriority(Notification.PRIORITY_MIN);
+
+        // Set the event owner's profile picture as the notification background.
+        Asset asset = data.getAsset(PROFILE_PIC);
+        if (null != asset) {
+            if (mGoogleApiClient.isConnected()) {
+                DataApi.GetFdForAssetResult assetFdResult =
+                        Wearable.DataApi.getFdForAsset(mGoogleApiClient, asset).await();
+                if (assetFdResult.getStatus().isSuccess()) {
+                    Bitmap profilePic = BitmapFactory.decodeStream(assetFdResult.getInputStream());
+                    notificationBuilder.extend(new Notification.WearableExtender()
+                            .setBackground(profilePic));
+                } else if (Log.isLoggable(TAG, Log.DEBUG)) {
+                    Log.d(TAG, "asset fetch failed with statusCode: "
+                            + assetFdResult.getStatus().getStatusCode());
+                }
+            } else {
+                Log.e(TAG, "Failed to set notification background"
+                         + " - Client disconnected from Google Play Services");
+            }
+        }
+        Notification card = notificationBuilder.build();
+
+        ((NotificationManager) getSystemService(NOTIFICATION_SERVICE))
+                .notify(sNotificationId, card);
+
+        sNotificationIdByDataItemUri.put(dataItem.getUri(), sNotificationId++);
+    }
+
+    /**
+     * Deletes the calendar card associated with the data item.
+     */
+    private void deleteDataItem(DataItem dataItem) {
+        if (Log.isLoggable(TAG, Log.VERBOSE)) {
+            Log.v(TAG, "onDataItemDeleted:DataItem=" + dataItem.getUri());
+        }
+        Integer notificationId = sNotificationIdByDataItemUri.remove(dataItem.getUri());
+        if (notificationId != null) {
+            ((NotificationManager) getSystemService(NOTIFICATION_SERVICE)).cancel(notificationId);
+        }
+    }
+
+    @Override
+    public void onMessageReceived(MessageEvent messageEvent) {
+        if (Log.isLoggable(TAG, Log.DEBUG)) {
+            Log.d(TAG, "onMessageReceived: " + messageEvent.getPath()
+                     + " " + messageEvent.getData() + " for " + getPackageName());
+        }
+    }
+
+}
diff --git a/samples/wearable/AgendaData/Wearable/src/main/res/drawable-hdpi/ic_launcher.png b/samples/wearable/AgendaData/Wearable/src/main/res/drawable-hdpi/ic_launcher.png
new file mode 100644
index 0000000..0564717
--- /dev/null
+++ b/samples/wearable/AgendaData/Wearable/src/main/res/drawable-hdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/AgendaData/Wearable/src/main/res/drawable-hdpi/ic_menu_delete.png b/samples/wearable/AgendaData/Wearable/src/main/res/drawable-hdpi/ic_menu_delete.png
new file mode 100644
index 0000000..24d8f6a
--- /dev/null
+++ b/samples/wearable/AgendaData/Wearable/src/main/res/drawable-hdpi/ic_menu_delete.png
Binary files differ
diff --git a/samples/wearable/AgendaData/Wearable/src/main/res/drawable-mdpi/ic_launcher.png b/samples/wearable/AgendaData/Wearable/src/main/res/drawable-mdpi/ic_launcher.png
new file mode 100644
index 0000000..0f40347
--- /dev/null
+++ b/samples/wearable/AgendaData/Wearable/src/main/res/drawable-mdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/AgendaData/Wearable/src/main/res/drawable-mdpi/ic_menu_delete.png b/samples/wearable/AgendaData/Wearable/src/main/res/drawable-mdpi/ic_menu_delete.png
new file mode 100644
index 0000000..e2c8700
--- /dev/null
+++ b/samples/wearable/AgendaData/Wearable/src/main/res/drawable-mdpi/ic_menu_delete.png
Binary files differ
diff --git a/samples/wearable/AgendaData/Wearable/src/main/res/drawable-xhdpi/ic_launcher.png b/samples/wearable/AgendaData/Wearable/src/main/res/drawable-xhdpi/ic_launcher.png
new file mode 100644
index 0000000..d7705cf
--- /dev/null
+++ b/samples/wearable/AgendaData/Wearable/src/main/res/drawable-xhdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/AgendaData/Wearable/src/main/res/drawable-xhdpi/ic_menu_delete.png b/samples/wearable/AgendaData/Wearable/src/main/res/drawable-xhdpi/ic_menu_delete.png
new file mode 100644
index 0000000..65b9cae
--- /dev/null
+++ b/samples/wearable/AgendaData/Wearable/src/main/res/drawable-xhdpi/ic_menu_delete.png
Binary files differ
diff --git a/samples/wearable/AgendaData/Wearable/src/main/res/drawable-xxhdpi/ic_launcher.png b/samples/wearable/AgendaData/Wearable/src/main/res/drawable-xxhdpi/ic_launcher.png
new file mode 100644
index 0000000..f07299f
--- /dev/null
+++ b/samples/wearable/AgendaData/Wearable/src/main/res/drawable-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/AgendaData/Wearable/src/main/res/drawable-xxhdpi/ic_menu_delete.png b/samples/wearable/AgendaData/Wearable/src/main/res/drawable-xxhdpi/ic_menu_delete.png
new file mode 100644
index 0000000..8e9e78d
--- /dev/null
+++ b/samples/wearable/AgendaData/Wearable/src/main/res/drawable-xxhdpi/ic_menu_delete.png
Binary files differ
diff --git a/samples/wearable/AgendaData/Wearable/src/main/res/values/strings.xml b/samples/wearable/AgendaData/Wearable/src/main/res/values/strings.xml
new file mode 100644
index 0000000..a4b3dcd
--- /dev/null
+++ b/samples/wearable/AgendaData/Wearable/src/main/res/values/strings.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name">Android Wear AgendaData Example Application</string>
+    <string name="delete">Delete</string>
+    <string name="desc_all_day">%s(All day)</string>
+    <string name="desc_time_period">%1$s(%2$s - %3$s)</string>
+    <string name="delete_successful">Event deleted</string>
+    <string name="delete_unsuccessful">Unable to delete event</string>
+</resources>
diff --git a/samples/wearable/AgendaData/build.gradle b/samples/wearable/AgendaData/build.gradle
new file mode 100644
index 0000000..07be865
--- /dev/null
+++ b/samples/wearable/AgendaData/build.gradle
@@ -0,0 +1,14 @@
+buildscript {
+    repositories {
+        mavenCentral()
+    }
+    dependencies {
+        classpath 'com.android.tools.build:gradle:0.11.+'
+    }
+}
+
+allprojects {
+    repositories {
+        mavenCentral()
+    }
+}
\ No newline at end of file
diff --git a/samples/wearable/AgendaData/gradle.properties b/samples/wearable/AgendaData/gradle.properties
new file mode 100644
index 0000000..5d08ba7
--- /dev/null
+++ b/samples/wearable/AgendaData/gradle.properties
@@ -0,0 +1,18 @@
+# Project-wide Gradle settings.
+
+# IDE (e.g. Android Studio) users:
+# Settings specified in this file will override any Gradle settings
+# configured through the IDE.
+
+# For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+# Default value: -Xmx10248m -XX:MaxPermSize=256m
+# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
+
+# When configured, Gradle will run in incubating parallel mode.
+# This option should only be used with decoupled projects. More details, visit
+# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
+# org.gradle.parallel=true
\ No newline at end of file
diff --git a/samples/wearable/AgendaData/gradle/wrapper/gradle-wrapper.jar b/samples/wearable/AgendaData/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 0000000..5838598
--- /dev/null
+++ b/samples/wearable/AgendaData/gradle/wrapper/gradle-wrapper.jar
Binary files differ
diff --git a/samples/wearable/AgendaData/gradle/wrapper/gradle-wrapper.properties b/samples/wearable/AgendaData/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..e83e460
--- /dev/null
+++ b/samples/wearable/AgendaData/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Fri Mar 14 14:02:22 PDT 2014
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=http\://services.gradle.org/distributions/gradle-1.11-all.zip
diff --git a/samples/wearable/AgendaData/gradlew b/samples/wearable/AgendaData/gradlew
new file mode 100755
index 0000000..91a7e26
--- /dev/null
+++ b/samples/wearable/AgendaData/gradlew
@@ -0,0 +1,164 @@
+#!/usr/bin/env bash
+
+##############################################################################
+##
+##  Gradle start up script for UN*X
+##
+##############################################################################
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn ( ) {
+    echo "$*"
+}
+
+die ( ) {
+    echo
+    echo "$*"
+    echo
+    exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+case "`uname`" in
+  CYGWIN* )
+    cygwin=true
+    ;;
+  Darwin* )
+    darwin=true
+    ;;
+  MINGW* )
+    msys=true
+    ;;
+esac
+
+# For Cygwin, ensure paths are in UNIX format before anything is touched.
+if $cygwin ; then
+    [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
+fi
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+    ls=`ls -ld "$PRG"`
+    link=`expr "$ls" : '.*-> \(.*\)$'`
+    if expr "$link" : '/.*' > /dev/null; then
+        PRG="$link"
+    else
+        PRG=`dirname "$PRG"`"/$link"
+    fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >&-
+APP_HOME="`pwd -P`"
+cd "$SAVED" >&-
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+        # IBM's JDK on AIX uses strange locations for the executables
+        JAVACMD="$JAVA_HOME/jre/sh/java"
+    else
+        JAVACMD="$JAVA_HOME/bin/java"
+    fi
+    if [ ! -x "$JAVACMD" ] ; then
+        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+    fi
+else
+    JAVACMD="java"
+    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
+    MAX_FD_LIMIT=`ulimit -H -n`
+    if [ $? -eq 0 ] ; then
+        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+            MAX_FD="$MAX_FD_LIMIT"
+        fi
+        ulimit -n $MAX_FD
+        if [ $? -ne 0 ] ; then
+            warn "Could not set maximum file descriptor limit: $MAX_FD"
+        fi
+    else
+        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+    fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+
+    # We build the pattern for arguments to be converted via cygpath
+    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+    SEP=""
+    for dir in $ROOTDIRSRAW ; do
+        ROOTDIRS="$ROOTDIRS$SEP$dir"
+        SEP="|"
+    done
+    OURCYGPATTERN="(^($ROOTDIRS))"
+    # Add a user-defined pattern to the cygpath arguments
+    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+    fi
+    # Now convert the arguments - kludge to limit ourselves to /bin/sh
+    i=0
+    for arg in "$@" ; do
+        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
+
+        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
+            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+        else
+            eval `echo args$i`="\"$arg\""
+        fi
+        i=$((i+1))
+    done
+    case $i in
+        (0) set -- ;;
+        (1) set -- "$args0" ;;
+        (2) set -- "$args0" "$args1" ;;
+        (3) set -- "$args0" "$args1" "$args2" ;;
+        (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+        (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+        (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+        (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+        (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+        (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+    esac
+fi
+
+# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
+function splitJvmOpts() {
+    JVM_OPTS=("$@")
+}
+eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
+JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
+
+exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
diff --git a/samples/wearable/AgendaData/gradlew.bat b/samples/wearable/AgendaData/gradlew.bat
new file mode 100644
index 0000000..aec9973
--- /dev/null
+++ b/samples/wearable/AgendaData/gradlew.bat
@@ -0,0 +1,90 @@
+@if "%DEBUG%" == "" @echo off

+@rem ##########################################################################

+@rem

+@rem  Gradle startup script for Windows

+@rem

+@rem ##########################################################################

+

+@rem Set local scope for the variables with windows NT shell

+if "%OS%"=="Windows_NT" setlocal

+

+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.

+set DEFAULT_JVM_OPTS=

+

+set DIRNAME=%~dp0

+if "%DIRNAME%" == "" set DIRNAME=.

+set APP_BASE_NAME=%~n0

+set APP_HOME=%DIRNAME%

+

+@rem Find java.exe

+if defined JAVA_HOME goto findJavaFromJavaHome

+

+set JAVA_EXE=java.exe

+%JAVA_EXE% -version >NUL 2>&1

+if "%ERRORLEVEL%" == "0" goto init

+

+echo.

+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.

+echo.

+echo Please set the JAVA_HOME variable in your environment to match the

+echo location of your Java installation.

+

+goto fail

+

+:findJavaFromJavaHome

+set JAVA_HOME=%JAVA_HOME:"=%

+set JAVA_EXE=%JAVA_HOME%/bin/java.exe

+

+if exist "%JAVA_EXE%" goto init

+

+echo.

+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%

+echo.

+echo Please set the JAVA_HOME variable in your environment to match the

+echo location of your Java installation.

+

+goto fail

+

+:init

+@rem Get command-line arguments, handling Windowz variants

+

+if not "%OS%" == "Windows_NT" goto win9xME_args

+if "%@eval[2+2]" == "4" goto 4NT_args

+

+:win9xME_args

+@rem Slurp the command line arguments.

+set CMD_LINE_ARGS=

+set _SKIP=2

+

+:win9xME_args_slurp

+if "x%~1" == "x" goto execute

+

+set CMD_LINE_ARGS=%*

+goto execute

+

+:4NT_args

+@rem Get arguments from the 4NT Shell from JP Software

+set CMD_LINE_ARGS=%$

+

+:execute

+@rem Setup the command line

+

+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar

+

+@rem Execute Gradle

+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%

+

+:end

+@rem End local scope for the variables with windows NT shell

+if "%ERRORLEVEL%"=="0" goto mainEnd

+

+:fail

+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of

+rem the _cmd.exe /c_ return code!

+if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1

+exit /b 1

+

+:mainEnd

+if "%OS%"=="Windows_NT" endlocal

+

+:omega

diff --git a/samples/wearable/AgendaData/settings.gradle b/samples/wearable/AgendaData/settings.gradle
new file mode 100644
index 0000000..f3f25a5
--- /dev/null
+++ b/samples/wearable/AgendaData/settings.gradle
@@ -0,0 +1 @@
+include 'Wearable', 'Application'
diff --git a/samples/wearable/DataLayer/Application/build.gradle b/samples/wearable/DataLayer/Application/build.gradle
new file mode 100644
index 0000000..9568da4
--- /dev/null
+++ b/samples/wearable/DataLayer/Application/build.gradle
@@ -0,0 +1,30 @@
+apply plugin: 'android'
+
+android {
+    compileSdkVersion 19
+    buildToolsVersion '20'
+
+    defaultConfig {
+        minSdkVersion 18
+        targetSdkVersion 19
+        versionCode 1
+        versionName "1.0"
+    }
+
+    buildTypes {
+        release {
+            runProguard false
+            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
+        }
+    }
+
+    aaptOptions {
+        noCompress 'apk'
+    }
+}
+
+dependencies {
+    compile 'com.google.android.gms:play-services:5.0.+@aar'
+    compile "com.android.support:support-v4:20.0.+"
+    wearApp project(':Wearable')
+}
\ No newline at end of file
diff --git a/samples/wearable/DataLayer/Application/proguard-rules.txt b/samples/wearable/DataLayer/Application/proguard-rules.txt
new file mode 100644
index 0000000..f2fe155
--- /dev/null
+++ b/samples/wearable/DataLayer/Application/proguard-rules.txt
@@ -0,0 +1,20 @@
+# To enable ProGuard in your project, edit project.properties
+# to define the proguard.config property as described in that file.
+#
+# Add project specific ProGuard rules here.
+# By default, the flags in this file are appended to flags specified
+# in ${sdk.dir}/tools/proguard/proguard-android.txt
+# You can edit the include path and order by changing the ProGuard
+# include property in project.properties.
+#
+# For more details, see
+#   http://developer.android.com/guide/developing/tools/proguard.html
+
+# Add any project specific keep options here:
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+#   public *;
+#}
diff --git a/samples/wearable/DataLayer/Application/src/main/AndroidManifest.xml b/samples/wearable/DataLayer/Application/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..12a18f0
--- /dev/null
+++ b/samples/wearable/DataLayer/Application/src/main/AndroidManifest.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+        package="com.example.android.wearable.datalayer" >
+
+    <uses-sdk android:minSdkVersion="18" android:targetSdkVersion="19" />
+    <uses-feature android:name="android.hardware.camera" android:required="false" />
+
+    <application
+            android:allowBackup="true"
+            android:icon="@drawable/ic_launcher"
+            android:label="@string/app_name">
+
+        <meta-data
+                android:name="com.google.android.gms.version"
+                android:value="@integer/google_play_services_version" />
+
+        <activity
+                android:name=".MainActivity"
+                android:label="@string/app_name"
+                android:launchMode="singleTask" >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
+    </application>
+</manifest>
diff --git a/samples/wearable/DataLayer/Application/src/main/java/com/example/android/wearable/datalayer/MainActivity.java b/samples/wearable/DataLayer/Application/src/main/java/com/example/android/wearable/datalayer/MainActivity.java
new file mode 100644
index 0000000..4a960ae
--- /dev/null
+++ b/samples/wearable/DataLayer/Application/src/main/java/com/example/android/wearable/datalayer/MainActivity.java
@@ -0,0 +1,468 @@
+package com.example.android.wearable.datalayer;
+
+import android.app.Activity;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentSender;
+import android.content.pm.PackageManager;
+import android.graphics.Bitmap;
+import android.os.AsyncTask;
+import android.os.Bundle;
+import android.os.Handler;
+import android.provider.MediaStore;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ArrayAdapter;
+import android.widget.Button;
+import android.widget.ImageView;
+import android.widget.ListView;
+import android.widget.TextView;
+
+import com.google.android.gms.common.ConnectionResult;
+import com.google.android.gms.common.api.ResultCallback;
+import com.google.android.gms.common.api.GoogleApiClient;
+import com.google.android.gms.common.api.GoogleApiClient.ConnectionCallbacks;
+import com.google.android.gms.common.api.GoogleApiClient.OnConnectionFailedListener;
+import com.google.android.gms.common.data.FreezableUtils;
+import com.google.android.gms.wearable.Asset;
+import com.google.android.gms.wearable.DataApi.DataItemResult;
+import com.google.android.gms.wearable.DataEvent;
+import com.google.android.gms.wearable.DataEventBuffer;
+import com.google.android.gms.wearable.MessageApi.SendMessageResult;
+import com.google.android.gms.wearable.DataApi;
+import com.google.android.gms.wearable.MessageApi;
+import com.google.android.gms.wearable.MessageEvent;
+import com.google.android.gms.wearable.Node;
+import com.google.android.gms.wearable.NodeApi;
+import com.google.android.gms.wearable.PutDataMapRequest;
+import com.google.android.gms.wearable.PutDataRequest;
+import com.google.android.gms.wearable.Wearable;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.util.Collection;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.List;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.ScheduledFuture;
+import java.util.concurrent.ScheduledThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Receives its own events using a listener API designed for foreground activities. Updates a data
+ * item every second while it is open. Also allows user to take a photo and send that as an asset to
+ * the paired wearable.
+ */
+public class MainActivity extends Activity implements DataApi.DataListener,
+        MessageApi.MessageListener, NodeApi.NodeListener, ConnectionCallbacks,
+        OnConnectionFailedListener {
+
+    private static final String TAG = "MainActivity";
+
+    /** Request code for launching the Intent to resolve Google Play services errors. */
+    private static final int REQUEST_RESOLVE_ERROR = 1000;
+
+    private static final String START_ACTIVITY_PATH = "/start-activity";
+    private static final String COUNT_PATH = "/count";
+    private static final String IMAGE_PATH = "/image";
+    private static final String IMAGE_KEY = "photo";
+    private static final String COUNT_KEY = "count";
+
+    private GoogleApiClient mGoogleApiClient;
+    private boolean mResolvingError = false;
+    private boolean mCameraSupported = false;
+
+    private ListView mDataItemList;
+    private Button mTakePhotoBtn;
+    private Button mSendPhotoBtn;
+    private ImageView mThumbView;
+    private Bitmap mImageBitmap;
+    private View mStartActivityBtn;
+
+    private DataItemAdapter mDataItemListAdapter;
+    private Handler mHandler;
+
+    // Send DataItems.
+    private ScheduledExecutorService mGeneratorExecutor;
+    private ScheduledFuture<?> mDataItemGeneratorFuture;
+
+    static final int REQUEST_IMAGE_CAPTURE = 1;
+
+    @Override
+    public void onCreate(Bundle b) {
+        super.onCreate(b);
+        mHandler = new Handler();
+        LOGD(TAG, "onCreate");
+        mCameraSupported = getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA);
+        setContentView(R.layout.main_activity);
+        setupViews();
+
+        // Stores DataItems received by the local broadcaster or from the paired watch.
+        mDataItemListAdapter = new DataItemAdapter(this, android.R.layout.simple_list_item_1);
+        mDataItemList.setAdapter(mDataItemListAdapter);
+
+        mGeneratorExecutor = new ScheduledThreadPoolExecutor(1);
+
+        mGoogleApiClient = new GoogleApiClient.Builder(this)
+                .addApi(Wearable.API)
+                .addConnectionCallbacks(this)
+                .addOnConnectionFailedListener(this)
+                .build();
+    }
+
+    @Override
+    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+        if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
+            Bundle extras = data.getExtras();
+            mImageBitmap = (Bitmap) extras.get("data");
+            mThumbView.setImageBitmap(mImageBitmap);
+        }
+    }
+
+    @Override
+    protected void onStart() {
+        super.onStart();
+        if (!mResolvingError) {
+            mGoogleApiClient.connect();
+        }
+    }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+        mDataItemGeneratorFuture = mGeneratorExecutor.scheduleWithFixedDelay(
+                new DataItemGenerator(), 1, 5, TimeUnit.SECONDS);
+    }
+
+    @Override
+    public void onPause() {
+        super.onPause();
+        mDataItemGeneratorFuture.cancel(true /* mayInterruptIfRunning */);
+    }
+
+    @Override
+    protected void onStop() {
+        if (!mResolvingError) {
+            Wearable.DataApi.removeListener(mGoogleApiClient, this);
+            Wearable.MessageApi.removeListener(mGoogleApiClient, this);
+            Wearable.NodeApi.removeListener(mGoogleApiClient, this);
+            mGoogleApiClient.disconnect();
+        }
+        super.onStop();
+    }
+
+    @Override //ConnectionCallbacks
+    public void onConnected(Bundle connectionHint) {
+        LOGD(TAG, "Google API Client was connected");
+        mResolvingError = false;
+        mStartActivityBtn.setEnabled(true);
+        mSendPhotoBtn.setEnabled(mCameraSupported);
+        Wearable.DataApi.addListener(mGoogleApiClient, this);
+        Wearable.MessageApi.addListener(mGoogleApiClient, this);
+        Wearable.NodeApi.addListener(mGoogleApiClient, this);
+    }
+
+    @Override //ConnectionCallbacks
+    public void onConnectionSuspended(int cause) {
+        LOGD(TAG, "Connection to Google API client was suspended");
+        mStartActivityBtn.setEnabled(false);
+        mSendPhotoBtn.setEnabled(false);
+    }
+
+    @Override //OnConnectionFailedListener
+    public void onConnectionFailed(ConnectionResult result) {
+        if (mResolvingError) {
+            // Already attempting to resolve an error.
+            return;
+        } else if (result.hasResolution()) {
+            try {
+                mResolvingError = true;
+                result.startResolutionForResult(this, REQUEST_RESOLVE_ERROR);
+            } catch (IntentSender.SendIntentException e) {
+                // There was an error with the resolution intent. Try again.
+                mGoogleApiClient.connect();
+            }
+        } else {
+            Log.e(TAG, "Connection to Google API client has failed");
+            mResolvingError = false;
+            mStartActivityBtn.setEnabled(false);
+            mSendPhotoBtn.setEnabled(false);
+            Wearable.DataApi.removeListener(mGoogleApiClient, this);
+            Wearable.MessageApi.removeListener(mGoogleApiClient, this);
+            Wearable.NodeApi.removeListener(mGoogleApiClient, this);
+        }
+    }
+
+    @Override //DataListener
+    public void onDataChanged(DataEventBuffer dataEvents) {
+        LOGD(TAG, "onDataChanged: " + dataEvents);
+        final List<DataEvent> events = FreezableUtils.freezeIterable(dataEvents);
+        dataEvents.close();
+        runOnUiThread(new Runnable() {
+            @Override
+            public void run() {
+                for (DataEvent event : events) {
+                    if (event.getType() == DataEvent.TYPE_CHANGED) {
+                        mDataItemListAdapter.add(
+                                new Event("DataItem Changed", event.getDataItem().toString()));
+                    } else if (event.getType() == DataEvent.TYPE_DELETED) {
+                        mDataItemListAdapter.add(
+                                new Event("DataItem Deleted", event.getDataItem().toString()));
+                    }
+                }
+            }
+        });
+    }
+
+    @Override //MessageListener
+    public void onMessageReceived(final MessageEvent messageEvent) {
+        LOGD(TAG, "onMessageReceived() A message from watch was received:" + messageEvent
+                .getRequestId() + " " + messageEvent.getPath());
+        mHandler.post(new Runnable() {
+            @Override
+            public void run() {
+                mDataItemListAdapter.add(new Event("Message from watch", messageEvent.toString()));
+            }
+        });
+
+    }
+
+    @Override //NodeListener
+    public void onPeerConnected(final Node peer) {
+        LOGD(TAG, "onPeerConnected: " + peer);
+        mHandler.post(new Runnable() {
+            @Override
+            public void run() {
+                mDataItemListAdapter.add(new Event("Connected", peer.toString()));
+            }
+        });
+
+    }
+
+    @Override //NodeListener
+    public void onPeerDisconnected(final Node peer) {
+        LOGD(TAG, "onPeerDisconnected: " + peer);
+        mHandler.post(new Runnable() {
+            @Override
+            public void run() {
+                mDataItemListAdapter.add(new Event("Disconnected", peer.toString()));
+            }
+        });
+    }
+
+    /**
+     * A View Adapter for presenting the Event objects in a list
+     */
+    private static class DataItemAdapter extends ArrayAdapter<Event> {
+
+        private final Context mContext;
+
+        public DataItemAdapter(Context context, int unusedResource) {
+            super(context, unusedResource);
+            mContext = context;
+        }
+
+        @Override
+        public View getView(int position, View convertView, ViewGroup parent) {
+            ViewHolder holder;
+            if (convertView == null) {
+                holder = new ViewHolder();
+                LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(
+                        Context.LAYOUT_INFLATER_SERVICE);
+                convertView = inflater.inflate(android.R.layout.two_line_list_item, null);
+                convertView.setTag(holder);
+                holder.text1 = (TextView) convertView.findViewById(android.R.id.text1);
+                holder.text2 = (TextView) convertView.findViewById(android.R.id.text2);
+            } else {
+                holder = (ViewHolder) convertView.getTag();
+            }
+            Event event = getItem(position);
+            holder.text1.setText(event.title);
+            holder.text2.setText(event.text);
+            return convertView;
+        }
+
+        private class ViewHolder {
+
+            TextView text1;
+            TextView text2;
+        }
+    }
+
+    private class Event {
+
+        String title;
+        String text;
+
+        public Event(String title, String text) {
+            this.title = title;
+            this.text = text;
+        }
+    }
+
+    private Collection<String> getNodes() {
+        HashSet<String> results = new HashSet<String>();
+        NodeApi.GetConnectedNodesResult nodes =
+                Wearable.NodeApi.getConnectedNodes(mGoogleApiClient).await();
+
+        for (Node node : nodes.getNodes()) {
+            results.add(node.getId());
+        }
+
+        return results;
+    }
+
+    private void sendStartActivityMessage(String node) {
+        Wearable.MessageApi.sendMessage(
+                mGoogleApiClient, node, START_ACTIVITY_PATH, new byte[0]).setResultCallback(
+                new ResultCallback<SendMessageResult>() {
+                    @Override
+                    public void onResult(SendMessageResult sendMessageResult) {
+                        if (!sendMessageResult.getStatus().isSuccess()) {
+                            Log.e(TAG, "Failed to send message with status code: "
+                                    + sendMessageResult.getStatus().getStatusCode());
+                        }
+                    }
+                }
+        );
+    }
+
+    private class StartWearableActivityTask extends AsyncTask<Void, Void, Void> {
+
+        @Override
+        protected Void doInBackground(Void... args) {
+            Collection<String> nodes = getNodes();
+            for (String node : nodes) {
+                sendStartActivityMessage(node);
+            }
+            return null;
+        }
+    }
+
+    /** Sends an RPC to start a fullscreen Activity on the wearable. */
+    public void onStartWearableActivityClick(View view) {
+        LOGD(TAG, "Generating RPC");
+
+        // Trigger an AsyncTask that will query for a list of connected nodes and send a
+        // "start-activity" message to each connected node.
+        new StartWearableActivityTask().execute();
+    }
+
+    /** Generates a DataItem based on an incrementing count. */
+    private class DataItemGenerator implements Runnable {
+
+        private int count = 0;
+
+        @Override
+        public void run() {
+            PutDataMapRequest putDataMapRequest = PutDataMapRequest.create(COUNT_PATH);
+            putDataMapRequest.getDataMap().putInt(COUNT_KEY, count++);
+            PutDataRequest request = putDataMapRequest.asPutDataRequest();
+
+            LOGD(TAG, "Generating DataItem: " + request);
+            if (!mGoogleApiClient.isConnected()) {
+                return;
+            }
+            Wearable.DataApi.putDataItem(mGoogleApiClient, request)
+                    .setResultCallback(new ResultCallback<DataItemResult>() {
+                        @Override
+                        public void onResult(DataItemResult dataItemResult) {
+                            if (!dataItemResult.getStatus().isSuccess()) {
+                                Log.e(TAG, "ERROR: failed to putDataItem, status code: "
+                                        + dataItemResult.getStatus().getStatusCode());
+                            }
+                        }
+                    });
+        }
+    }
+
+    /**
+     * Dispatches an {@link android.content.Intent} to take a photo. Result will be returned back
+     * in onActivityResult().
+     */
+    private void dispatchTakePictureIntent() {
+        Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
+        if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
+            startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
+        }
+    }
+
+    /**
+     * Builds an {@link com.google.android.gms.wearable.Asset} from a bitmap. The image that we get
+     * back from the camera in "data" is a thumbnail size. Typically, your image should not exceed
+     * 320x320 and if you want to have zoom and parallax effect in your app, limit the size of your
+     * image to 640x400. Resize your image before transferring to your wearable device.
+     */
+    private static Asset toAsset(Bitmap bitmap) {
+        ByteArrayOutputStream byteStream = null;
+        try {
+            byteStream = new ByteArrayOutputStream();
+            bitmap.compress(Bitmap.CompressFormat.PNG, 100, byteStream);
+            return Asset.createFromBytes(byteStream.toByteArray());
+        } finally {
+            if (null != byteStream) {
+                try {
+                    byteStream.close();
+                } catch (IOException e) {
+                    // ignore
+                }
+            }
+        }
+    }
+
+    /**
+     * Sends the asset that was created form the photo we took by adding it to the Data Item store.
+     */
+    private void sendPhoto(Asset asset) {
+        PutDataMapRequest dataMap = PutDataMapRequest.create(IMAGE_PATH);
+        dataMap.getDataMap().putAsset(IMAGE_KEY, asset);
+        dataMap.getDataMap().putLong("time", new Date().getTime());
+        PutDataRequest request = dataMap.asPutDataRequest();
+        Wearable.DataApi.putDataItem(mGoogleApiClient, request)
+                .setResultCallback(new ResultCallback<DataItemResult>() {
+                    @Override
+                    public void onResult(DataItemResult dataItemResult) {
+                        LOGD(TAG, "Sending image was successful: " + dataItemResult.getStatus()
+                                .isSuccess());
+                    }
+                });
+
+    }
+
+    public void onTakePhotoClick(View view) {
+        dispatchTakePictureIntent();
+    }
+
+    public void onSendPhotoClick(View view) {
+        if (null != mImageBitmap && mGoogleApiClient.isConnected()) {
+            sendPhoto(toAsset(mImageBitmap));
+        }
+    }
+
+    /**
+     * Sets up UI components and their callback handlers.
+     */
+    private void setupViews() {
+        mTakePhotoBtn = (Button) findViewById(R.id.takePhoto);
+        mSendPhotoBtn = (Button) findViewById(R.id.sendPhoto);
+
+        // Shows the image received from the handset
+        mThumbView = (ImageView) findViewById(R.id.imageView);
+        mDataItemList = (ListView) findViewById(R.id.data_item_list);
+
+        mStartActivityBtn = findViewById(R.id.start_wearable_activity);
+    }
+
+    /**
+     * As simple wrapper around Log.d
+     */
+    private static void LOGD(final String tag, String message) {
+        if (Log.isLoggable(tag, Log.DEBUG)) {
+            Log.d(tag, message);
+        }
+    }
+
+}
diff --git a/samples/wearable/DataLayer/Application/src/main/res/drawable-hdpi/ic_content_picture.png b/samples/wearable/DataLayer/Application/src/main/res/drawable-hdpi/ic_content_picture.png
new file mode 100644
index 0000000..597997c
--- /dev/null
+++ b/samples/wearable/DataLayer/Application/src/main/res/drawable-hdpi/ic_content_picture.png
Binary files differ
diff --git a/samples/wearable/DataLayer/Application/src/main/res/drawable-hdpi/ic_launcher.png b/samples/wearable/DataLayer/Application/src/main/res/drawable-hdpi/ic_launcher.png
new file mode 100755
index 0000000..589f229
--- /dev/null
+++ b/samples/wearable/DataLayer/Application/src/main/res/drawable-hdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/DataLayer/Application/src/main/res/drawable-mdpi/ic_content_picture.png b/samples/wearable/DataLayer/Application/src/main/res/drawable-mdpi/ic_content_picture.png
new file mode 100644
index 0000000..c23f4c0
--- /dev/null
+++ b/samples/wearable/DataLayer/Application/src/main/res/drawable-mdpi/ic_content_picture.png
Binary files differ
diff --git a/samples/wearable/DataLayer/Application/src/main/res/drawable-mdpi/ic_launcher.png b/samples/wearable/DataLayer/Application/src/main/res/drawable-mdpi/ic_launcher.png
new file mode 100755
index 0000000..77dd571
--- /dev/null
+++ b/samples/wearable/DataLayer/Application/src/main/res/drawable-mdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/DataLayer/Application/src/main/res/drawable-xhdpi/ic_content_picture.png b/samples/wearable/DataLayer/Application/src/main/res/drawable-xhdpi/ic_content_picture.png
new file mode 100644
index 0000000..289adf1
--- /dev/null
+++ b/samples/wearable/DataLayer/Application/src/main/res/drawable-xhdpi/ic_content_picture.png
Binary files differ
diff --git a/samples/wearable/DataLayer/Application/src/main/res/drawable-xhdpi/ic_launcher.png b/samples/wearable/DataLayer/Application/src/main/res/drawable-xhdpi/ic_launcher.png
new file mode 100755
index 0000000..fe34ebe
--- /dev/null
+++ b/samples/wearable/DataLayer/Application/src/main/res/drawable-xhdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/DataLayer/Application/src/main/res/drawable-xxhdpi/ic_content_picture.png b/samples/wearable/DataLayer/Application/src/main/res/drawable-xxhdpi/ic_content_picture.png
new file mode 100644
index 0000000..073ad55
--- /dev/null
+++ b/samples/wearable/DataLayer/Application/src/main/res/drawable-xxhdpi/ic_content_picture.png
Binary files differ
diff --git a/samples/wearable/DataLayer/Application/src/main/res/drawable-xxhdpi/ic_launcher.png b/samples/wearable/DataLayer/Application/src/main/res/drawable-xxhdpi/ic_launcher.png
new file mode 100755
index 0000000..ab80bcd
--- /dev/null
+++ b/samples/wearable/DataLayer/Application/src/main/res/drawable-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/DataLayer/Application/src/main/res/drawable/divider.xml b/samples/wearable/DataLayer/Application/src/main/res/drawable/divider.xml
new file mode 100644
index 0000000..f9f182e
--- /dev/null
+++ b/samples/wearable/DataLayer/Application/src/main/res/drawable/divider.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <size android:height="2dip"/>
+    <solid android:color="#ffffffff"/>
+</shape>
\ No newline at end of file
diff --git a/samples/wearable/DataLayer/Application/src/main/res/layout/main_activity.xml b/samples/wearable/DataLayer/Application/src/main/res/layout/main_activity.xml
new file mode 100644
index 0000000..6f5dbfd
--- /dev/null
+++ b/samples/wearable/DataLayer/Application/src/main/res/layout/main_activity.xml
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <RelativeLayout
+        android:id="@+id/top"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_alignParentTop="true"
+        android:layout_marginTop="10dp">
+
+        <Button
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@string/take_photo"
+            android:id="@+id/takePhoto"
+            android:onClick="onTakePhotoClick"
+            android:layout_marginLeft="39dp"
+            android:layout_alignParentStart="true"
+            android:layout_alignParentTop="true" />
+
+        <Button
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@string/send_photo"
+            android:id="@+id/sendPhoto"
+            android:layout_alignRight="@+id/takePhoto"
+            android:layout_marginLeft="39dp"
+            android:enabled="false"
+            android:onClick="onSendPhotoClick"
+            android:layout_alignParentStart="true"
+            android:layout_below="@+id/takePhoto" />
+
+        <ImageView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:id="@+id/imageView"
+            android:layout_marginLeft="29dp"
+            android:layout_centerVertical="true"
+            android:layout_alignParentRight="true"
+            android:src="@drawable/ic_content_picture" />
+    </RelativeLayout>
+
+    <View
+        style="@style/Divider"
+        android:id="@+id/divider"
+        android:layout_below="@+id/top"
+        android:layout_marginTop="5dp"
+        android:layout_marginLeft="20dp"
+        android:layout_marginRight="20dp" />
+
+    <Button
+        android:id="@+id/start_wearable_activity"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginRight="10dp"
+        android:onClick="onStartWearableActivityClick"
+        android:text="@string/start_wearable_activity"
+        android:enabled="false"
+        android:layout_below="@+id/divider"
+        android:layout_centerHorizontal="true"
+        android:layout_marginTop="10dp" />
+
+    <ListView
+        android:id="@+id/data_item_list"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_below="@+id/start_wearable_activity"
+        android:transcriptMode="alwaysScroll" />
+</RelativeLayout>
\ No newline at end of file
diff --git a/samples/wearable/DataLayer/Application/src/main/res/values/strings.xml b/samples/wearable/DataLayer/Application/src/main/res/values/strings.xml
new file mode 100644
index 0000000..ae2aeab
--- /dev/null
+++ b/samples/wearable/DataLayer/Application/src/main/res/values/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name">Data Layer Sample App</string>
+    <string name="start_wearable_activity">Start Wearable Activity</string>
+    <string name="start">Start</string>
+    <string name="take_photo">Take a Photo</string>
+    <string name="send_photo">Send Photo</string>
+</resources>
diff --git a/samples/wearable/DataLayer/Application/src/main/res/values/style.xml b/samples/wearable/DataLayer/Application/src/main/res/values/style.xml
new file mode 100644
index 0000000..219aeb7
--- /dev/null
+++ b/samples/wearable/DataLayer/Application/src/main/res/values/style.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <style name="Divider">
+        <item name="android:layout_width">match_parent</item>
+        <item name="android:layout_height">3dp</item>
+        <item name="android:background">?android:attr/listDivider</item>
+    </style>
+</resources>
\ No newline at end of file
diff --git a/samples/wearable/DataLayer/Wearable/build.gradle b/samples/wearable/DataLayer/Wearable/build.gradle
new file mode 100644
index 0000000..9bf690c
--- /dev/null
+++ b/samples/wearable/DataLayer/Wearable/build.gradle
@@ -0,0 +1,25 @@
+apply plugin: 'android'
+
+android {
+    compileSdkVersion 19
+    buildToolsVersion '20'
+
+    defaultConfig {
+        minSdkVersion 19
+        targetSdkVersion 19
+        versionCode 1
+        versionName "1.0"
+    }
+
+    buildTypes {
+        release {
+            runProguard false
+            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
+        }
+    }
+}
+
+dependencies {
+    compile 'com.google.android.gms:play-services:5.0.+@aar'
+    compile "com.android.support:support-v13:20.0.+"
+}
\ No newline at end of file
diff --git a/samples/wearable/DataLayer/Wearable/proguard-rules.txt b/samples/wearable/DataLayer/Wearable/proguard-rules.txt
new file mode 100644
index 0000000..f2fe155
--- /dev/null
+++ b/samples/wearable/DataLayer/Wearable/proguard-rules.txt
@@ -0,0 +1,20 @@
+# To enable ProGuard in your project, edit project.properties
+# to define the proguard.config property as described in that file.
+#
+# Add project specific ProGuard rules here.
+# By default, the flags in this file are appended to flags specified
+# in ${sdk.dir}/tools/proguard/proguard-android.txt
+# You can edit the include path and order by changing the ProGuard
+# include property in project.properties.
+#
+# For more details, see
+#   http://developer.android.com/guide/developing/tools/proguard.html
+
+# Add any project specific keep options here:
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+#   public *;
+#}
diff --git a/samples/wearable/DataLayer/Wearable/src/main/AndroidManifest.xml b/samples/wearable/DataLayer/Wearable/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..52aeb74
--- /dev/null
+++ b/samples/wearable/DataLayer/Wearable/src/main/AndroidManifest.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+        package="com.example.android.wearable.datalayer" >
+
+    <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="19" />
+
+    <application
+            android:allowBackup="true"
+            android:icon="@drawable/ic_launcher"
+            android:label="@string/app_name"
+            android:theme="@android:style/Theme.DeviceDefault">
+
+        <meta-data
+                android:name="com.google.android.gms.version"
+                android:value="@integer/google_play_services_version" />
+
+        <service
+                android:name=".DataLayerListenerService" >
+            <intent-filter>
+                <action android:name="com.google.android.gms.wearable.BIND_LISTENER" />
+            </intent-filter>
+        </service>
+
+        <activity
+            android:name=".MainActivity"
+            android:screenOrientation="portrait"
+            android:label="@string/app_name">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN"/>
+                <category android:name="android.intent.category.LAUNCHER"/>
+            </intent-filter>
+            <intent-filter>
+                <action android:name="com.example.android.wearable.datalayer.EXAMPLE"/>
+                <category android:name="android.intent.category.DEFAULT"/>
+            </intent-filter>
+        </activity>
+    </application>
+</manifest>
diff --git a/samples/wearable/DataLayer/Wearable/src/main/java/com/example/android/wearable/datalayer/DataLayerListenerService.java b/samples/wearable/DataLayer/Wearable/src/main/java/com/example/android/wearable/datalayer/DataLayerListenerService.java
new file mode 100644
index 0000000..d82cb7e
--- /dev/null
+++ b/samples/wearable/DataLayer/Wearable/src/main/java/com/example/android/wearable/datalayer/DataLayerListenerService.java
@@ -0,0 +1,104 @@
+package com.example.android.wearable.datalayer;
+
+import android.content.Intent;
+import android.net.Uri;
+import android.util.Log;
+
+import com.google.android.gms.common.ConnectionResult;
+import com.google.android.gms.common.api.GoogleApiClient;
+import com.google.android.gms.common.data.FreezableUtils;
+import com.google.android.gms.wearable.DataEvent;
+import com.google.android.gms.wearable.DataEventBuffer;
+import com.google.android.gms.wearable.MessageEvent;
+import com.google.android.gms.wearable.Node;
+import com.google.android.gms.wearable.Wearable;
+import com.google.android.gms.wearable.WearableListenerService;
+
+import java.util.List;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Listens to DataItems and Messages from the local node.
+ */
+public class DataLayerListenerService extends WearableListenerService {
+
+    private static final String TAG = "DataLayerListenerServic";
+
+    private static final String START_ACTIVITY_PATH = "/start-activity";
+    private static final String DATA_ITEM_RECEIVED_PATH = "/data-item-received";
+    public static final String COUNT_PATH = "/count";
+    public static final String IMAGE_PATH = "/image";
+    public static final String IMAGE_KEY = "photo";
+    private static final String COUNT_KEY = "count";
+    private static final int MAX_LOG_TAG_LENGTH = 23;
+    GoogleApiClient mGoogleApiClient;
+
+    @Override
+    public void onCreate() {
+        super.onCreate();
+        mGoogleApiClient = new GoogleApiClient.Builder(this)
+                .addApi(Wearable.API)
+                .build();
+        mGoogleApiClient.connect();
+    }
+
+    @Override
+    public void onDataChanged(DataEventBuffer dataEvents) {
+        LOGD(TAG, "onDataChanged: " + dataEvents);
+        final List<DataEvent> events = FreezableUtils.freezeIterable(dataEvents);
+        dataEvents.close();
+        if(!mGoogleApiClient.isConnected()) {
+            ConnectionResult connectionResult = mGoogleApiClient
+                    .blockingConnect(30, TimeUnit.SECONDS);
+            if (!connectionResult.isSuccess()) {
+                Log.e(TAG, "DataLayerListenerService failed to connect to GoogleApiClient.");
+                return;
+            }
+        }
+
+        // Loop through the events and send a message back to the node that created the data item.
+        for (DataEvent event : events) {
+            Uri uri = event.getDataItem().getUri();
+            String path = uri.getPath();
+            if (COUNT_PATH.equals(path)) {
+                // Get the node id of the node that created the data item from the host portion of
+                // the uri.
+                String nodeId = uri.getHost();
+                // Set the data of the message to be the bytes of the Uri.
+                byte[] payload = uri.toString().getBytes();
+
+                // Send the rpc
+                Wearable.MessageApi.sendMessage(mGoogleApiClient, nodeId, DATA_ITEM_RECEIVED_PATH,
+                        payload);
+            }
+        }
+    }
+
+    @Override
+    public void onMessageReceived(MessageEvent messageEvent) {
+        LOGD(TAG, "onMessageReceived: " + messageEvent);
+
+        // Check to see if the message is to start an activity
+        if (messageEvent.getPath().equals(START_ACTIVITY_PATH)) {
+            Intent startIntent = new Intent(this, MainActivity.class);
+            startIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+            startActivity(startIntent);
+        }
+    }
+
+    @Override
+    public void onPeerConnected(Node peer) {
+        LOGD(TAG, "onPeerConnected: " + peer);
+    }
+
+    @Override
+    public void onPeerDisconnected(Node peer) {
+        LOGD(TAG, "onPeerDisconnected: " + peer);
+    }
+
+    public static void LOGD(final String tag, String message) {
+        if (Log.isLoggable(tag, Log.DEBUG)) {
+            Log.d(tag, message);
+        }
+    }
+}
diff --git a/samples/wearable/DataLayer/Wearable/src/main/java/com/example/android/wearable/datalayer/MainActivity.java b/samples/wearable/DataLayer/Wearable/src/main/java/com/example/android/wearable/datalayer/MainActivity.java
new file mode 100644
index 0000000..d9faa8d
--- /dev/null
+++ b/samples/wearable/DataLayer/Wearable/src/main/java/com/example/android/wearable/datalayer/MainActivity.java
@@ -0,0 +1,239 @@
+package com.example.android.wearable.datalayer;
+
+import static com.example.android.wearable.datalayer.DataLayerListenerService.LOGD;
+
+import android.app.Activity;
+import android.content.Context;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.graphics.drawable.BitmapDrawable;
+import android.os.Bundle;
+import android.os.Handler;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.WindowManager;
+import android.widget.ArrayAdapter;
+import android.widget.ListView;
+import android.widget.TextView;
+
+import com.google.android.gms.common.ConnectionResult;
+import com.google.android.gms.common.api.GoogleApiClient;
+import com.google.android.gms.common.api.GoogleApiClient.ConnectionCallbacks;
+import com.google.android.gms.common.api.GoogleApiClient.OnConnectionFailedListener;
+import com.google.android.gms.common.data.FreezableUtils;
+import com.google.android.gms.wearable.Asset;
+import com.google.android.gms.wearable.DataApi;
+import com.google.android.gms.wearable.DataEvent;
+import com.google.android.gms.wearable.DataEventBuffer;
+import com.google.android.gms.wearable.DataMapItem;
+import com.google.android.gms.wearable.MessageApi;
+import com.google.android.gms.wearable.MessageEvent;
+import com.google.android.gms.wearable.Node;
+import com.google.android.gms.wearable.NodeApi;
+import com.google.android.gms.wearable.Wearable;
+
+import java.io.InputStream;
+import java.util.List;
+
+/**
+ * Shows events and photo from the Wearable APIs.
+ */
+public class MainActivity extends Activity implements ConnectionCallbacks,
+        OnConnectionFailedListener, DataApi.DataListener, MessageApi.MessageListener,
+        NodeApi.NodeListener {
+
+    private static final String TAG = "MainActivity";
+
+    private GoogleApiClient mGoogleApiClient;
+    private ListView mDataItemList;
+    private TextView mIntroText;
+    private DataItemAdapter mDataItemListAdapter;
+    private View mLayout;
+    private Handler mHandler;
+
+    @Override
+    public void onCreate(Bundle b) {
+        super.onCreate(b);
+        mHandler = new Handler();
+        LOGD(TAG, "onCreate");
+        setContentView(R.layout.main_activity);
+        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
+        mDataItemList = (ListView) findViewById(R.id.dataItem_list);
+        mIntroText = (TextView) findViewById(R.id.intro);
+        mLayout = findViewById(R.id.layout);
+
+        // Stores data events received by the local broadcaster.
+        mDataItemListAdapter = new DataItemAdapter(this, android.R.layout.simple_list_item_1);
+        mDataItemList.setAdapter(mDataItemListAdapter);
+
+        mGoogleApiClient = new GoogleApiClient.Builder(this)
+                .addApi(Wearable.API)
+                .addConnectionCallbacks(this)
+                .addOnConnectionFailedListener(this)
+                .build();
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        mGoogleApiClient.connect();
+    }
+
+    @Override
+    protected void onPause() {
+        super.onPause();
+        Wearable.DataApi.removeListener(mGoogleApiClient, this);
+        Wearable.MessageApi.removeListener(mGoogleApiClient, this);
+        Wearable.NodeApi.removeListener(mGoogleApiClient, this);
+        mGoogleApiClient.disconnect();
+    }
+
+    @Override
+    public void onConnected(Bundle connectionHint) {
+        LOGD(TAG, "onConnected(): Successfully connected to Google API client");
+        Wearable.DataApi.addListener(mGoogleApiClient, this);
+        Wearable.MessageApi.addListener(mGoogleApiClient, this);
+        Wearable.NodeApi.addListener(mGoogleApiClient, this);
+    }
+
+    @Override
+    public void onConnectionSuspended(int cause) {
+        LOGD(TAG, "onConnectionSuspended(): Connection to Google API client was suspended");
+    }
+
+    @Override
+    public void onConnectionFailed(ConnectionResult result) {
+        Log.e(TAG, "onConnectionFailed(): Failed to connect, with result: " + result);
+    }
+
+    private void generateEvent(final String title, final String text) {
+        runOnUiThread(new Runnable() {
+            @Override
+            public void run() {
+                mIntroText.setVisibility(View.INVISIBLE);
+                mDataItemListAdapter.add(new Event(title, text));
+            }
+        });
+    }
+
+    @Override
+    public void onDataChanged(DataEventBuffer dataEvents) {
+        LOGD(TAG, "onDataChanged(): " + dataEvents);
+
+        final List<DataEvent> events = FreezableUtils.freezeIterable(dataEvents);
+        dataEvents.close();
+        for (DataEvent event : events) {
+            if (event.getType() == DataEvent.TYPE_CHANGED) {
+                String path = event.getDataItem().getUri().getPath();
+                if (DataLayerListenerService.IMAGE_PATH.equals(path)) {
+                    DataMapItem dataMapItem = DataMapItem.fromDataItem(event.getDataItem());
+                    Asset photo = dataMapItem.getDataMap()
+                            .getAsset(DataLayerListenerService.IMAGE_KEY);
+                    final Bitmap bitmap = loadBitmapFromAsset(mGoogleApiClient, photo);
+                    mHandler.post(new Runnable() {
+                        @Override
+                        public void run() {
+                            Log.d(TAG, "Setting background image..");
+                            mLayout.setBackground(new BitmapDrawable(getResources(), bitmap));
+                        }
+                    });
+
+                } else if (DataLayerListenerService.COUNT_PATH.equals(path)) {
+                    LOGD(TAG, "Data Changed for COUNT_PATH");
+                    generateEvent("DataItem Changed", event.getDataItem().toString());
+                } else {
+                    LOGD(TAG, "Unrecognized path: " + path);
+                }
+
+            } else if (event.getType() == DataEvent.TYPE_DELETED) {
+                generateEvent("DataItem Deleted", event.getDataItem().toString());
+            } else {
+                generateEvent("Unknown data event type", "Type = " + event.getType());
+            }
+        }
+    }
+
+    /**
+     * Extracts {@link android.graphics.Bitmap} data from the
+     * {@link com.google.android.gms.wearable.Asset}
+     */
+    private Bitmap loadBitmapFromAsset(GoogleApiClient apiClient, Asset asset) {
+        if (asset == null) {
+            throw new IllegalArgumentException("Asset must be non-null");
+        }
+
+        InputStream assetInputStream = Wearable.DataApi.getFdForAsset(
+                apiClient, asset).await().getInputStream();
+
+        if (assetInputStream == null) {
+            Log.w(TAG, "Requested an unknown Asset.");
+            return null;
+        }
+        return BitmapFactory.decodeStream(assetInputStream);
+    }
+
+    @Override
+    public void onMessageReceived(MessageEvent event) {
+        LOGD(TAG, "onMessageReceived: " + event);
+        generateEvent("Message", event.toString());
+    }
+
+    @Override
+    public void onPeerConnected(Node node) {
+        generateEvent("Node Connected", node.getId());
+    }
+
+    @Override
+    public void onPeerDisconnected(Node node) {
+        generateEvent("Node Disconnected", node.getId());
+    }
+
+    private static class DataItemAdapter extends ArrayAdapter<Event> {
+
+        private final Context mContext;
+
+        public DataItemAdapter(Context context, int unusedResource) {
+            super(context, unusedResource);
+            mContext = context;
+        }
+
+        @Override
+        public View getView(int position, View convertView, ViewGroup parent) {
+            ViewHolder holder;
+            if (convertView == null) {
+                holder = new ViewHolder();
+                LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(
+                        Context.LAYOUT_INFLATER_SERVICE);
+                convertView = inflater.inflate(android.R.layout.two_line_list_item, null);
+                convertView.setTag(holder);
+                holder.text1 = (TextView) convertView.findViewById(android.R.id.text1);
+                holder.text2 = (TextView) convertView.findViewById(android.R.id.text2);
+            } else {
+                holder = (ViewHolder) convertView.getTag();
+            }
+            Event event = getItem(position);
+            holder.text1.setText(event.title);
+            holder.text2.setText(event.text);
+            return convertView;
+        }
+
+        private class ViewHolder {
+
+            TextView text1;
+            TextView text2;
+        }
+    }
+
+    private class Event {
+
+        String title;
+        String text;
+
+        public Event(String title, String text) {
+            this.title = title;
+            this.text = text;
+        }
+    }
+}
diff --git a/samples/wearable/DataLayer/Wearable/src/main/res/drawable-hdpi/ic_launcher.png b/samples/wearable/DataLayer/Wearable/src/main/res/drawable-hdpi/ic_launcher.png
new file mode 100755
index 0000000..589f229
--- /dev/null
+++ b/samples/wearable/DataLayer/Wearable/src/main/res/drawable-hdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/DataLayer/Wearable/src/main/res/drawable-mdpi/ic_launcher.png b/samples/wearable/DataLayer/Wearable/src/main/res/drawable-mdpi/ic_launcher.png
new file mode 100755
index 0000000..77dd571
--- /dev/null
+++ b/samples/wearable/DataLayer/Wearable/src/main/res/drawable-mdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/DataLayer/Wearable/src/main/res/drawable-xhdpi/ic_launcher.png b/samples/wearable/DataLayer/Wearable/src/main/res/drawable-xhdpi/ic_launcher.png
new file mode 100755
index 0000000..fe34ebe
--- /dev/null
+++ b/samples/wearable/DataLayer/Wearable/src/main/res/drawable-xhdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/DataLayer/Wearable/src/main/res/drawable-xxhdpi/ic_launcher.png b/samples/wearable/DataLayer/Wearable/src/main/res/drawable-xxhdpi/ic_launcher.png
new file mode 100755
index 0000000..ab80bcd
--- /dev/null
+++ b/samples/wearable/DataLayer/Wearable/src/main/res/drawable-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/DataLayer/Wearable/src/main/res/layout/main_activity.xml b/samples/wearable/DataLayer/Wearable/src/main/res/layout/main_activity.xml
new file mode 100644
index 0000000..e88c6d1
--- /dev/null
+++ b/samples/wearable/DataLayer/Wearable/src/main/res/layout/main_activity.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/layout"
+    android:layout_width="fill_parent"
+    android:layout_height="fill_parent">
+
+    <ListView
+        android:id="@+id/dataItem_list"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:transcriptMode="alwaysScroll"/>
+
+    <TextView
+        android:id="@+id/intro"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_centerInParent="true"
+        android:textSize="20sp"
+        android:layout_marginLeft="16dp"
+        android:layout_marginRight="16dp"
+        android:gravity="center"
+        android:fontFamily="sans-serif-condensed-light"
+        android:text="@string/intro" />
+</RelativeLayout>
\ No newline at end of file
diff --git a/samples/wearable/DataLayer/Wearable/src/main/res/values/strings.xml b/samples/wearable/DataLayer/Wearable/src/main/res/values/strings.xml
new file mode 100644
index 0000000..5582c7a
--- /dev/null
+++ b/samples/wearable/DataLayer/Wearable/src/main/res/values/strings.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name">Data Layer Sample Wearable App</string>
+    <string name="intro">Waiting for data to arrive\u2026</string>
+</resources>
diff --git a/samples/wearable/DataLayer/build.gradle b/samples/wearable/DataLayer/build.gradle
new file mode 100644
index 0000000..07be865
--- /dev/null
+++ b/samples/wearable/DataLayer/build.gradle
@@ -0,0 +1,14 @@
+buildscript {
+    repositories {
+        mavenCentral()
+    }
+    dependencies {
+        classpath 'com.android.tools.build:gradle:0.11.+'
+    }
+}
+
+allprojects {
+    repositories {
+        mavenCentral()
+    }
+}
\ No newline at end of file
diff --git a/samples/wearable/DataLayer/gradle/wrapper/gradle-wrapper.jar b/samples/wearable/DataLayer/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 0000000..5838598
--- /dev/null
+++ b/samples/wearable/DataLayer/gradle/wrapper/gradle-wrapper.jar
Binary files differ
diff --git a/samples/wearable/DataLayer/gradle/wrapper/gradle-wrapper.properties b/samples/wearable/DataLayer/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..e83e460
--- /dev/null
+++ b/samples/wearable/DataLayer/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Fri Mar 14 14:02:22 PDT 2014
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=http\://services.gradle.org/distributions/gradle-1.11-all.zip
diff --git a/samples/wearable/DataLayer/gradlew b/samples/wearable/DataLayer/gradlew
new file mode 100755
index 0000000..91a7e26
--- /dev/null
+++ b/samples/wearable/DataLayer/gradlew
@@ -0,0 +1,164 @@
+#!/usr/bin/env bash
+
+##############################################################################
+##
+##  Gradle start up script for UN*X
+##
+##############################################################################
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn ( ) {
+    echo "$*"
+}
+
+die ( ) {
+    echo
+    echo "$*"
+    echo
+    exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+case "`uname`" in
+  CYGWIN* )
+    cygwin=true
+    ;;
+  Darwin* )
+    darwin=true
+    ;;
+  MINGW* )
+    msys=true
+    ;;
+esac
+
+# For Cygwin, ensure paths are in UNIX format before anything is touched.
+if $cygwin ; then
+    [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
+fi
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+    ls=`ls -ld "$PRG"`
+    link=`expr "$ls" : '.*-> \(.*\)$'`
+    if expr "$link" : '/.*' > /dev/null; then
+        PRG="$link"
+    else
+        PRG=`dirname "$PRG"`"/$link"
+    fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >&-
+APP_HOME="`pwd -P`"
+cd "$SAVED" >&-
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+        # IBM's JDK on AIX uses strange locations for the executables
+        JAVACMD="$JAVA_HOME/jre/sh/java"
+    else
+        JAVACMD="$JAVA_HOME/bin/java"
+    fi
+    if [ ! -x "$JAVACMD" ] ; then
+        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+    fi
+else
+    JAVACMD="java"
+    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
+    MAX_FD_LIMIT=`ulimit -H -n`
+    if [ $? -eq 0 ] ; then
+        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+            MAX_FD="$MAX_FD_LIMIT"
+        fi
+        ulimit -n $MAX_FD
+        if [ $? -ne 0 ] ; then
+            warn "Could not set maximum file descriptor limit: $MAX_FD"
+        fi
+    else
+        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+    fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+
+    # We build the pattern for arguments to be converted via cygpath
+    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+    SEP=""
+    for dir in $ROOTDIRSRAW ; do
+        ROOTDIRS="$ROOTDIRS$SEP$dir"
+        SEP="|"
+    done
+    OURCYGPATTERN="(^($ROOTDIRS))"
+    # Add a user-defined pattern to the cygpath arguments
+    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+    fi
+    # Now convert the arguments - kludge to limit ourselves to /bin/sh
+    i=0
+    for arg in "$@" ; do
+        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
+
+        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
+            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+        else
+            eval `echo args$i`="\"$arg\""
+        fi
+        i=$((i+1))
+    done
+    case $i in
+        (0) set -- ;;
+        (1) set -- "$args0" ;;
+        (2) set -- "$args0" "$args1" ;;
+        (3) set -- "$args0" "$args1" "$args2" ;;
+        (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+        (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+        (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+        (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+        (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+        (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+    esac
+fi
+
+# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
+function splitJvmOpts() {
+    JVM_OPTS=("$@")
+}
+eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
+JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
+
+exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
diff --git a/samples/wearable/DataLayer/gradlew.bat b/samples/wearable/DataLayer/gradlew.bat
new file mode 100644
index 0000000..aec9973
--- /dev/null
+++ b/samples/wearable/DataLayer/gradlew.bat
@@ -0,0 +1,90 @@
+@if "%DEBUG%" == "" @echo off

+@rem ##########################################################################

+@rem

+@rem  Gradle startup script for Windows

+@rem

+@rem ##########################################################################

+

+@rem Set local scope for the variables with windows NT shell

+if "%OS%"=="Windows_NT" setlocal

+

+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.

+set DEFAULT_JVM_OPTS=

+

+set DIRNAME=%~dp0

+if "%DIRNAME%" == "" set DIRNAME=.

+set APP_BASE_NAME=%~n0

+set APP_HOME=%DIRNAME%

+

+@rem Find java.exe

+if defined JAVA_HOME goto findJavaFromJavaHome

+

+set JAVA_EXE=java.exe

+%JAVA_EXE% -version >NUL 2>&1

+if "%ERRORLEVEL%" == "0" goto init

+

+echo.

+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.

+echo.

+echo Please set the JAVA_HOME variable in your environment to match the

+echo location of your Java installation.

+

+goto fail

+

+:findJavaFromJavaHome

+set JAVA_HOME=%JAVA_HOME:"=%

+set JAVA_EXE=%JAVA_HOME%/bin/java.exe

+

+if exist "%JAVA_EXE%" goto init

+

+echo.

+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%

+echo.

+echo Please set the JAVA_HOME variable in your environment to match the

+echo location of your Java installation.

+

+goto fail

+

+:init

+@rem Get command-line arguments, handling Windowz variants

+

+if not "%OS%" == "Windows_NT" goto win9xME_args

+if "%@eval[2+2]" == "4" goto 4NT_args

+

+:win9xME_args

+@rem Slurp the command line arguments.

+set CMD_LINE_ARGS=

+set _SKIP=2

+

+:win9xME_args_slurp

+if "x%~1" == "x" goto execute

+

+set CMD_LINE_ARGS=%*

+goto execute

+

+:4NT_args

+@rem Get arguments from the 4NT Shell from JP Software

+set CMD_LINE_ARGS=%$

+

+:execute

+@rem Setup the command line

+

+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar

+

+@rem Execute Gradle

+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%

+

+:end

+@rem End local scope for the variables with windows NT shell

+if "%ERRORLEVEL%"=="0" goto mainEnd

+

+:fail

+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of

+rem the _cmd.exe /c_ return code!

+if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1

+exit /b 1

+

+:mainEnd

+if "%OS%"=="Windows_NT" endlocal

+

+:omega

diff --git a/samples/wearable/DataLayer/settings.gradle b/samples/wearable/DataLayer/settings.gradle
new file mode 100644
index 0000000..68726d4
--- /dev/null
+++ b/samples/wearable/DataLayer/settings.gradle
@@ -0,0 +1 @@
+include 'Application', 'Wearable'
\ No newline at end of file
diff --git a/samples/wearable/DelayedConfirmation/Application/_index.html b/samples/wearable/DelayedConfirmation/Application/_index.html
new file mode 100644
index 0000000..6996cc7
--- /dev/null
+++ b/samples/wearable/DelayedConfirmation/Application/_index.html
@@ -0,0 +1,5 @@
+<p>Demonstrates how to create a DelayedConfirmationView in your wearable app. In this sample,
+pressing a button on the phone app sends a message to the wearable to start a simple activity. This
+activity displays a DelayedConfirmationView that starts when the user presses "Start Timer." Then,
+callbacks are implemented on both the wearable and phone to show when the timer is selected or
+finishes.</p>
\ No newline at end of file
diff --git a/samples/wearable/DelayedConfirmation/Application/build.gradle b/samples/wearable/DelayedConfirmation/Application/build.gradle
new file mode 100644
index 0000000..ef83ddd
--- /dev/null
+++ b/samples/wearable/DelayedConfirmation/Application/build.gradle
@@ -0,0 +1,33 @@
+apply plugin: 'android'
+
+android {
+    compileSdkVersion 20
+    buildToolsVersion '20'
+
+    defaultConfig {
+        minSdkVersion 18
+        targetSdkVersion 20
+        versionCode 1
+        versionName "1.0"
+    }
+
+    buildTypes {
+        release {
+            runProguard false
+            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
+        }
+    }
+
+    aaptOptions {
+        noCompress 'apk'
+    }
+
+    lintOptions {
+        abortOnError false
+    }
+}
+
+dependencies {
+    compile 'com.google.android.gms:play-services:5.0.+@aar'
+    wearApp project(':Wearable')
+}
\ No newline at end of file
diff --git a/samples/wearable/DelayedConfirmation/Application/proguard-rules.txt b/samples/wearable/DelayedConfirmation/Application/proguard-rules.txt
new file mode 100644
index 0000000..f2fe155
--- /dev/null
+++ b/samples/wearable/DelayedConfirmation/Application/proguard-rules.txt
@@ -0,0 +1,20 @@
+# To enable ProGuard in your project, edit project.properties
+# to define the proguard.config property as described in that file.
+#
+# Add project specific ProGuard rules here.
+# By default, the flags in this file are appended to flags specified
+# in ${sdk.dir}/tools/proguard/proguard-android.txt
+# You can edit the include path and order by changing the ProGuard
+# include property in project.properties.
+#
+# For more details, see
+#   http://developer.android.com/guide/developing/tools/proguard.html
+
+# Add any project specific keep options here:
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+#   public *;
+#}
diff --git a/samples/wearable/DelayedConfirmation/Application/src/main/AndroidManifest.xml b/samples/wearable/DelayedConfirmation/Application/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..cff91a4
--- /dev/null
+++ b/samples/wearable/DelayedConfirmation/Application/src/main/AndroidManifest.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+        package="com.example.android.wearable.delayedconfirmation" >
+
+    <uses-sdk android:minSdkVersion="18" android:targetSdkVersion="20" />
+
+    <application
+            android:allowBackup="true"
+            android:icon="@drawable/ic_launcher"
+            android:label="@string/app_name">
+
+        <meta-data
+            android:name="com.google.android.gms.version"
+            android:value="@integer/google_play_services_version" />
+
+        <activity
+                android:name=".MainActivity"
+                android:label="@string/app_name"
+                android:launchMode="singleTask" >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
+    </application>
+</manifest>
diff --git a/samples/wearable/DelayedConfirmation/Application/src/main/java/com/example/android/wearable/delayedconfirmation/MainActivity.java b/samples/wearable/DelayedConfirmation/Application/src/main/java/com/example/android/wearable/delayedconfirmation/MainActivity.java
new file mode 100644
index 0000000..4bc17ba
--- /dev/null
+++ b/samples/wearable/DelayedConfirmation/Application/src/main/java/com/example/android/wearable/delayedconfirmation/MainActivity.java
@@ -0,0 +1,118 @@
+package com.example.android.wearable.delayedconfirmation;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.View;
+import android.widget.Toast;
+
+import com.google.android.gms.common.ConnectionResult;
+import com.google.android.gms.common.api.GoogleApiClient;
+import com.google.android.gms.common.api.ResultCallback;
+import com.google.android.gms.wearable.MessageApi;
+import com.google.android.gms.wearable.MessageEvent;
+import com.google.android.gms.wearable.Node;
+import com.google.android.gms.wearable.NodeApi;
+import com.google.android.gms.wearable.Wearable;
+
+/**
+ * Has a single button, used to start the Wearable MainActivity.
+ */
+public class MainActivity extends Activity implements MessageApi.MessageListener,
+        GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener {
+
+    private static final String TAG = "DelayedConfirmation";
+    private static final String START_ACTIVITY_PATH = "/start-activity";
+    private static final String TIMER_SELECTED_PATH = "/timer_selected";
+    private static final String TIMER_FINISHED_PATH = "/timer_finished";
+    private GoogleApiClient mGoogleApiClient;
+
+    @Override
+    public void onCreate(Bundle b) {
+        super.onCreate(b);
+        setContentView(R.layout.main_activity);
+        mGoogleApiClient = new GoogleApiClient.Builder(this)
+                .addApi(Wearable.API)
+                .addConnectionCallbacks(this)
+                .addOnConnectionFailedListener(this)
+                .build();
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        if (!mGoogleApiClient.isConnected()) {
+            mGoogleApiClient.connect();
+        }
+    }
+
+    @Override
+    protected void onDestroy() {
+        if (mGoogleApiClient.isConnected()) {
+            mGoogleApiClient.disconnect();
+        }
+        super.onDestroy();
+    }
+
+    @Override
+    public void onConnected(Bundle bundle) {
+        Wearable.MessageApi.addListener(mGoogleApiClient, this);
+    }
+
+    @Override
+    public void onConnectionSuspended(int i) {
+        Wearable.MessageApi.removeListener(mGoogleApiClient, this);
+    }
+
+    @Override
+    public void onMessageReceived(final MessageEvent messageEvent) {
+        runOnUiThread(new Runnable() {
+            @Override
+            public void run() {
+                if (messageEvent.getPath().equals(TIMER_SELECTED_PATH)) {
+                    Toast.makeText(getApplicationContext(), R.string.toast_timer_selected,
+                            Toast.LENGTH_SHORT).show();
+                } else if (messageEvent.getPath().equals(TIMER_FINISHED_PATH)) {
+                    Toast.makeText(getApplicationContext(), R.string.toast_timer_finished,
+                            Toast.LENGTH_SHORT).show();
+                }
+            }
+        });
+
+    }
+
+    @Override
+    public void onConnectionFailed(ConnectionResult connectionResult) {
+        Log.e(TAG, "Failed to connect to Google Api Client with error code "
+                + connectionResult.getErrorCode());
+    }
+
+    /**
+     * Sends a message to Wearable MainActivity when button is pressed.
+     */
+    public void onStartWearableActivityClick(View view) {
+        Wearable.NodeApi.getConnectedNodes(mGoogleApiClient).setResultCallback(
+                new ResultCallback<NodeApi.GetConnectedNodesResult>() {
+            @Override
+            public void onResult(NodeApi.GetConnectedNodesResult getConnectedNodesResult) {
+                for (final Node node : getConnectedNodesResult.getNodes()) {
+                    Wearable.MessageApi.sendMessage(
+                            mGoogleApiClient, node.getId(), START_ACTIVITY_PATH, new byte[0])
+                            .setResultCallback(getSendMessageResultCallback());
+                }
+            }
+        });
+    }
+
+    private ResultCallback<MessageApi.SendMessageResult> getSendMessageResultCallback() {
+        return new ResultCallback<MessageApi.SendMessageResult>() {
+            @Override
+            public void onResult(MessageApi.SendMessageResult sendMessageResult) {
+                if (!sendMessageResult.getStatus().isSuccess()) {
+                    Log.e(TAG, "Failed to connect to Google Api Client with status "
+                            + sendMessageResult.getStatus());
+                }
+            }
+        };
+    }
+}
diff --git a/samples/wearable/DelayedConfirmation/Application/src/main/res/drawable-hdpi/ic_launcher.png b/samples/wearable/DelayedConfirmation/Application/src/main/res/drawable-hdpi/ic_launcher.png
new file mode 100755
index 0000000..589f229
--- /dev/null
+++ b/samples/wearable/DelayedConfirmation/Application/src/main/res/drawable-hdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/DelayedConfirmation/Application/src/main/res/drawable-mdpi/ic_launcher.png b/samples/wearable/DelayedConfirmation/Application/src/main/res/drawable-mdpi/ic_launcher.png
new file mode 100755
index 0000000..77dd571
--- /dev/null
+++ b/samples/wearable/DelayedConfirmation/Application/src/main/res/drawable-mdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/DelayedConfirmation/Application/src/main/res/drawable-xhdpi/ic_launcher.png b/samples/wearable/DelayedConfirmation/Application/src/main/res/drawable-xhdpi/ic_launcher.png
new file mode 100755
index 0000000..fe34ebe
--- /dev/null
+++ b/samples/wearable/DelayedConfirmation/Application/src/main/res/drawable-xhdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/DelayedConfirmation/Application/src/main/res/drawable-xxhdpi/ic_launcher.png b/samples/wearable/DelayedConfirmation/Application/src/main/res/drawable-xxhdpi/ic_launcher.png
new file mode 100755
index 0000000..ab80bcd
--- /dev/null
+++ b/samples/wearable/DelayedConfirmation/Application/src/main/res/drawable-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/DelayedConfirmation/Application/src/main/res/layout/main_activity.xml b/samples/wearable/DelayedConfirmation/Application/src/main/res/layout/main_activity.xml
new file mode 100644
index 0000000..39f3a40
--- /dev/null
+++ b/samples/wearable/DelayedConfirmation/Application/src/main/res/layout/main_activity.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="horizontal">
+    <TextView
+        android:id="@+id/text_start_wearable_activity"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:textSize="20sp"
+        android:text="@string/start_wearable_activity" />
+    <Button
+        android:id="@+id/start_wearable_activity"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:minWidth="150dp"
+        android:onClick="onStartWearableActivityClick"
+        android:text="@string/start"/>
+</LinearLayout>
diff --git a/samples/wearable/DelayedConfirmation/Application/src/main/res/values/strings.xml b/samples/wearable/DelayedConfirmation/Application/src/main/res/values/strings.xml
new file mode 100644
index 0000000..7b5ee47
--- /dev/null
+++ b/samples/wearable/DelayedConfirmation/Application/src/main/res/values/strings.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name">Delayed Confirmation Sample App</string>
+    <string name="start_wearable_activity">Start Wearable Activity</string>
+    <string name="start">Start</string>
+
+    <string name="toast_timer_selected">Timer Selected</string>
+    <string name="toast_timer_finished">Timer Finished</string>
+</resources>
diff --git a/samples/wearable/DelayedConfirmation/Wearable/build.gradle b/samples/wearable/DelayedConfirmation/Wearable/build.gradle
new file mode 100644
index 0000000..fa6b67a
--- /dev/null
+++ b/samples/wearable/DelayedConfirmation/Wearable/build.gradle
@@ -0,0 +1,31 @@
+apply plugin: 'android'
+
+android {
+    compileSdkVersion 20
+    buildToolsVersion '20'
+
+    defaultConfig {
+        minSdkVersion 20
+        targetSdkVersion 20
+        versionCode 1
+        versionName "1.0"
+    }
+
+    buildTypes {
+        release {
+            runProguard false
+            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
+        }
+    }
+
+    lintOptions {
+            abortOnError false
+    }
+
+}
+
+dependencies {
+    compile 'com.google.android.gms:play-services:5.0.+@aar'
+    compile "com.android.support:support-v13:20.0.+"
+    compile "com.google.android.support:wearable:1.0.+"
+}
\ No newline at end of file
diff --git a/samples/wearable/DelayedConfirmation/Wearable/proguard-rules.txt b/samples/wearable/DelayedConfirmation/Wearable/proguard-rules.txt
new file mode 100644
index 0000000..2ddbcfc
--- /dev/null
+++ b/samples/wearable/DelayedConfirmation/Wearable/proguard-rules.txt
@@ -0,0 +1,21 @@
+# To enable ProGuard in your project, edit project.properties
+# to define the proguard.config property as described in that file.
+#
+# Add project specific ProGuard rules here.
+# By default, the flags in this file are appended to flags specified
+# in ${sdk.dir}/tools/proguard/proguard-android.txt
+# You can edit the include path and order by changing the ProGuard
+# include property in project.properties.
+#
+# For more details, see
+#   http://developer.android.com/guide/developing/tools/proguard.html
+
+# Add any project specific keep options here:
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+#   public *;
+#}
+-dontwarn android.support.wearable.view.DelayedConfirmationView
diff --git a/samples/wearable/DelayedConfirmation/Wearable/src/main/AndroidManifest.xml b/samples/wearable/DelayedConfirmation/Wearable/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..81bda1b
--- /dev/null
+++ b/samples/wearable/DelayedConfirmation/Wearable/src/main/AndroidManifest.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+        package="com.example.android.wearable.delayedconfirmation" >
+
+    <uses-sdk android:minSdkVersion="20" android:targetSdkVersion="20" />
+
+    <application
+            android:allowBackup="true"
+            android:icon="@drawable/ic_launcher"
+            android:label="@string/app_name"
+            android:theme="@android:style/Theme.DeviceDefault">
+
+        <meta-data
+            android:name="com.google.android.gms.version"
+            android:value="@integer/google_play_services_version" />
+
+        <service
+            android:name=".WearableMessageListenerService" >
+            <intent-filter>
+                <action android:name="com.google.android.gms.wearable.BIND_LISTENER" />
+            </intent-filter>
+        </service>
+
+        <activity
+            android:name=".MainActivity"
+            android:label="@string/app_name">
+        </activity>
+    </application>
+</manifest>
diff --git a/samples/wearable/DelayedConfirmation/Wearable/src/main/java/com/example/android/wearable/delayedconfirmation/MainActivity.java b/samples/wearable/DelayedConfirmation/Wearable/src/main/java/com/example/android/wearable/delayedconfirmation/MainActivity.java
new file mode 100644
index 0000000..0303aa6
--- /dev/null
+++ b/samples/wearable/DelayedConfirmation/Wearable/src/main/java/com/example/android/wearable/delayedconfirmation/MainActivity.java
@@ -0,0 +1,128 @@
+package com.example.android.wearable.delayedconfirmation;
+
+import android.app.Activity;
+import android.app.Notification;
+import android.os.Bundle;
+import android.support.v4.app.NotificationCompat;
+import android.support.v4.app.NotificationManagerCompat;
+import android.support.wearable.view.DelayedConfirmationView;
+import android.util.Log;
+import android.view.View;
+
+import com.google.android.gms.common.ConnectionResult;
+import com.google.android.gms.common.api.GoogleApiClient;
+import com.google.android.gms.common.api.ResultCallback;
+import com.google.android.gms.wearable.MessageApi;
+import com.google.android.gms.wearable.Node;
+import com.google.android.gms.wearable.NodeApi;
+import com.google.android.gms.wearable.Wearable;
+
+
+public class MainActivity extends Activity implements
+        DelayedConfirmationView.DelayedConfirmationListener,
+        GoogleApiClient.OnConnectionFailedListener {
+
+    private static final String TAG = "DelayedConfirmation";
+    private static final int NUM_SECONDS = 5;
+
+    private static final String TIMER_SELECTED_PATH = "/timer_selected";
+    private static final String TIMER_FINISHED_PATH = "/timer_finished";
+
+    private DelayedConfirmationView delayedConfirmationView;
+    private GoogleApiClient mGoogleApiClient;
+
+    @Override
+    public void onCreate(Bundle b) {
+        super.onCreate(b);
+        setContentView(R.layout.main_activity);
+        delayedConfirmationView = (DelayedConfirmationView) findViewById(R.id.delayed_confirmation);
+        delayedConfirmationView.setTotalTimeMs(NUM_SECONDS * 1000);
+        mGoogleApiClient = new GoogleApiClient.Builder(this)
+                .addApi(Wearable.API)
+                .addOnConnectionFailedListener(this)
+                .build();
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        if (!mGoogleApiClient.isConnected()) {
+            mGoogleApiClient.connect();
+        }
+    }
+
+    @Override
+    protected void onDestroy() {
+        if (mGoogleApiClient.isConnected()) {
+            mGoogleApiClient.disconnect();
+        }
+        super.onDestroy();
+    }
+
+    /**
+     * Starts the DelayedConfirmationView when user presses "Start Timer" button.
+     */
+    public void onStartTimer(View view) {
+        delayedConfirmationView.start();
+        delayedConfirmationView.setListener(this);
+    }
+
+    @Override
+    public void onTimerSelected(View v) {
+        v.setPressed(true);
+        Notification notification = new NotificationCompat.Builder(this)
+                .setSmallIcon(R.drawable.ic_launcher)
+                .setContentTitle(getString(R.string.notification_title))
+                .setContentText(getString(R.string.notification_timer_selected))
+                .build();
+        NotificationManagerCompat.from(this).notify(0, notification);
+        sendMessageToCompanion(TIMER_SELECTED_PATH);
+        // Prevent onTimerFinished from being heard.
+        ((DelayedConfirmationView) v).setListener(null);
+        finish();
+    }
+
+    @Override
+    public void onTimerFinished(View v) {
+        Notification notification = new NotificationCompat.Builder(this)
+                .setSmallIcon(R.drawable.ic_launcher)
+                .setContentTitle(getString(R.string.notification_title))
+                .setContentText(getString(R.string.notification_timer_finished))
+                .build();
+        NotificationManagerCompat.from(this).notify(0, notification);
+        sendMessageToCompanion(TIMER_FINISHED_PATH);
+        finish();
+    }
+
+    @Override
+    public void onConnectionFailed(ConnectionResult connectionResult) {
+        Log.e(TAG, "Failed to connect to Google Api Client");
+    }
+
+    private void sendMessageToCompanion(final String path) {
+        Wearable.NodeApi.getConnectedNodes(mGoogleApiClient).setResultCallback(
+                new ResultCallback<NodeApi.GetConnectedNodesResult>() {
+                    @Override
+                    public void onResult(NodeApi.GetConnectedNodesResult getConnectedNodesResult) {
+                        for (final Node node : getConnectedNodesResult.getNodes()) {
+                            Wearable.MessageApi.sendMessage(mGoogleApiClient, node.getId(), path,
+                                    new byte[0]).setResultCallback(getSendMessageResultCallback());
+                        }
+                    }
+                }
+        );
+
+    }
+
+    private ResultCallback<MessageApi.SendMessageResult> getSendMessageResultCallback() {
+        return new ResultCallback<MessageApi.SendMessageResult>() {
+            @Override
+            public void onResult(MessageApi.SendMessageResult sendMessageResult) {
+                if (!sendMessageResult.getStatus().isSuccess()) {
+                    Log.e(TAG, "Failed to connect to Google Api Client with status "
+                            + sendMessageResult.getStatus());
+                }
+            }
+        };
+    }
+}
diff --git a/samples/wearable/DelayedConfirmation/Wearable/src/main/java/com/example/android/wearable/delayedconfirmation/WearableMessageListenerService.java b/samples/wearable/DelayedConfirmation/Wearable/src/main/java/com/example/android/wearable/delayedconfirmation/WearableMessageListenerService.java
new file mode 100644
index 0000000..881de2e
--- /dev/null
+++ b/samples/wearable/DelayedConfirmation/Wearable/src/main/java/com/example/android/wearable/delayedconfirmation/WearableMessageListenerService.java
@@ -0,0 +1,22 @@
+package com.example.android.wearable.delayedconfirmation;
+
+import android.content.Intent;
+
+import com.google.android.gms.wearable.MessageEvent;
+import com.google.android.gms.wearable.WearableListenerService;
+
+/**
+ * Listens for a message telling it to start the Wearable MainActivity.
+ */
+public class WearableMessageListenerService extends WearableListenerService {
+    private static final String START_ACTIVITY_PATH = "/start-activity";
+
+    @Override
+    public void onMessageReceived(MessageEvent event) {
+        if (event.getPath().equals(START_ACTIVITY_PATH)) {
+            Intent startIntent = new Intent(this, MainActivity.class);
+            startIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+            startActivity(startIntent);
+        }
+    }
+}
diff --git a/samples/wearable/DelayedConfirmation/Wearable/src/main/res/drawable-hdpi/ic_launcher.png b/samples/wearable/DelayedConfirmation/Wearable/src/main/res/drawable-hdpi/ic_launcher.png
new file mode 100755
index 0000000..589f229
--- /dev/null
+++ b/samples/wearable/DelayedConfirmation/Wearable/src/main/res/drawable-hdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/DelayedConfirmation/Wearable/src/main/res/drawable-mdpi/ic_launcher.png b/samples/wearable/DelayedConfirmation/Wearable/src/main/res/drawable-mdpi/ic_launcher.png
new file mode 100755
index 0000000..77dd571
--- /dev/null
+++ b/samples/wearable/DelayedConfirmation/Wearable/src/main/res/drawable-mdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/DelayedConfirmation/Wearable/src/main/res/drawable-xhdpi/ic_launcher.png b/samples/wearable/DelayedConfirmation/Wearable/src/main/res/drawable-xhdpi/ic_launcher.png
new file mode 100755
index 0000000..fe34ebe
--- /dev/null
+++ b/samples/wearable/DelayedConfirmation/Wearable/src/main/res/drawable-xhdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/DelayedConfirmation/Wearable/src/main/res/drawable-xxhdpi/ic_launcher.png b/samples/wearable/DelayedConfirmation/Wearable/src/main/res/drawable-xxhdpi/ic_launcher.png
new file mode 100755
index 0000000..ab80bcd
--- /dev/null
+++ b/samples/wearable/DelayedConfirmation/Wearable/src/main/res/drawable-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/DelayedConfirmation/Wearable/src/main/res/layout/main_activity.xml b/samples/wearable/DelayedConfirmation/Wearable/src/main/res/layout/main_activity.xml
new file mode 100644
index 0000000..970af03
--- /dev/null
+++ b/samples/wearable/DelayedConfirmation/Wearable/src/main/res/layout/main_activity.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<android.support.wearable.view.BoxInsetLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_height="match_parent"
+    android:layout_width="match_parent">
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:orientation="vertical"
+        android:background="@color/grey"
+        app:layout_box="top">
+
+        <Button
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:onClick="onStartTimer"
+            android:text="@string/start_timer"/>
+
+        <android.support.wearable.view.DelayedConfirmationView
+            android:id="@+id/delayed_confirmation"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center"
+            android:src="@drawable/ic_launcher"
+            app:circle_color="@color/blue"
+            app:circle_radius="@dimen/circle_radius"
+            app:circle_radius_pressed="@dimen/circle_radius_pressed"
+            app:circle_padding="@dimen/circle_padding"
+            app:circle_border_width="@dimen/circle_border_normal_width"
+            app:circle_border_color="@color/white"/>
+
+    </LinearLayout>
+</android.support.wearable.view.BoxInsetLayout>
diff --git a/samples/wearable/DelayedConfirmation/Wearable/src/main/res/values/dimens.xml b/samples/wearable/DelayedConfirmation/Wearable/src/main/res/values/dimens.xml
new file mode 100644
index 0000000..a0439944
--- /dev/null
+++ b/samples/wearable/DelayedConfirmation/Wearable/src/main/res/values/dimens.xml
@@ -0,0 +1,6 @@
+<resources>
+    <dimen name="circle_border_normal_width">10dp</dimen>
+    <dimen name="circle_padding">5dp</dimen>
+    <dimen name="circle_radius">60dp</dimen>
+    <dimen name="circle_radius_pressed">55dp</dimen>
+</resources>
diff --git a/samples/wearable/DelayedConfirmation/Wearable/src/main/res/values/strings.xml b/samples/wearable/DelayedConfirmation/Wearable/src/main/res/values/strings.xml
new file mode 100644
index 0000000..ad9ce88
--- /dev/null
+++ b/samples/wearable/DelayedConfirmation/Wearable/src/main/res/values/strings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+
+    <string name="app_name">Delayed Confirmation</string>
+    <string name="start_timer">Start Timer (5 seconds)</string>
+
+    <string name="notification_title">DelayedConfirmation</string>
+    <string name="notification_timer_selected">Timer Selected</string>
+    <string name="notification_timer_finished">Timer Finished</string>
+</resources>
diff --git a/samples/wearable/DelayedConfirmation/build.gradle b/samples/wearable/DelayedConfirmation/build.gradle
new file mode 100644
index 0000000..07be865
--- /dev/null
+++ b/samples/wearable/DelayedConfirmation/build.gradle
@@ -0,0 +1,14 @@
+buildscript {
+    repositories {
+        mavenCentral()
+    }
+    dependencies {
+        classpath 'com.android.tools.build:gradle:0.11.+'
+    }
+}
+
+allprojects {
+    repositories {
+        mavenCentral()
+    }
+}
\ No newline at end of file
diff --git a/samples/wearable/DelayedConfirmation/gradle.properties b/samples/wearable/DelayedConfirmation/gradle.properties
new file mode 100644
index 0000000..5d08ba7
--- /dev/null
+++ b/samples/wearable/DelayedConfirmation/gradle.properties
@@ -0,0 +1,18 @@
+# Project-wide Gradle settings.
+
+# IDE (e.g. Android Studio) users:
+# Settings specified in this file will override any Gradle settings
+# configured through the IDE.
+
+# For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+# Default value: -Xmx10248m -XX:MaxPermSize=256m
+# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
+
+# When configured, Gradle will run in incubating parallel mode.
+# This option should only be used with decoupled projects. More details, visit
+# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
+# org.gradle.parallel=true
\ No newline at end of file
diff --git a/samples/wearable/DelayedConfirmation/gradle/wrapper/gradle-wrapper.jar b/samples/wearable/DelayedConfirmation/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 0000000..5838598
--- /dev/null
+++ b/samples/wearable/DelayedConfirmation/gradle/wrapper/gradle-wrapper.jar
Binary files differ
diff --git a/samples/wearable/DelayedConfirmation/gradle/wrapper/gradle-wrapper.properties b/samples/wearable/DelayedConfirmation/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..e83e460
--- /dev/null
+++ b/samples/wearable/DelayedConfirmation/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Fri Mar 14 14:02:22 PDT 2014
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=http\://services.gradle.org/distributions/gradle-1.11-all.zip
diff --git a/samples/wearable/DelayedConfirmation/gradlew b/samples/wearable/DelayedConfirmation/gradlew
new file mode 100755
index 0000000..91a7e26
--- /dev/null
+++ b/samples/wearable/DelayedConfirmation/gradlew
@@ -0,0 +1,164 @@
+#!/usr/bin/env bash
+
+##############################################################################
+##
+##  Gradle start up script for UN*X
+##
+##############################################################################
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn ( ) {
+    echo "$*"
+}
+
+die ( ) {
+    echo
+    echo "$*"
+    echo
+    exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+case "`uname`" in
+  CYGWIN* )
+    cygwin=true
+    ;;
+  Darwin* )
+    darwin=true
+    ;;
+  MINGW* )
+    msys=true
+    ;;
+esac
+
+# For Cygwin, ensure paths are in UNIX format before anything is touched.
+if $cygwin ; then
+    [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
+fi
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+    ls=`ls -ld "$PRG"`
+    link=`expr "$ls" : '.*-> \(.*\)$'`
+    if expr "$link" : '/.*' > /dev/null; then
+        PRG="$link"
+    else
+        PRG=`dirname "$PRG"`"/$link"
+    fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >&-
+APP_HOME="`pwd -P`"
+cd "$SAVED" >&-
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+        # IBM's JDK on AIX uses strange locations for the executables
+        JAVACMD="$JAVA_HOME/jre/sh/java"
+    else
+        JAVACMD="$JAVA_HOME/bin/java"
+    fi
+    if [ ! -x "$JAVACMD" ] ; then
+        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+    fi
+else
+    JAVACMD="java"
+    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
+    MAX_FD_LIMIT=`ulimit -H -n`
+    if [ $? -eq 0 ] ; then
+        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+            MAX_FD="$MAX_FD_LIMIT"
+        fi
+        ulimit -n $MAX_FD
+        if [ $? -ne 0 ] ; then
+            warn "Could not set maximum file descriptor limit: $MAX_FD"
+        fi
+    else
+        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+    fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+
+    # We build the pattern for arguments to be converted via cygpath
+    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+    SEP=""
+    for dir in $ROOTDIRSRAW ; do
+        ROOTDIRS="$ROOTDIRS$SEP$dir"
+        SEP="|"
+    done
+    OURCYGPATTERN="(^($ROOTDIRS))"
+    # Add a user-defined pattern to the cygpath arguments
+    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+    fi
+    # Now convert the arguments - kludge to limit ourselves to /bin/sh
+    i=0
+    for arg in "$@" ; do
+        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
+
+        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
+            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+        else
+            eval `echo args$i`="\"$arg\""
+        fi
+        i=$((i+1))
+    done
+    case $i in
+        (0) set -- ;;
+        (1) set -- "$args0" ;;
+        (2) set -- "$args0" "$args1" ;;
+        (3) set -- "$args0" "$args1" "$args2" ;;
+        (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+        (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+        (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+        (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+        (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+        (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+    esac
+fi
+
+# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
+function splitJvmOpts() {
+    JVM_OPTS=("$@")
+}
+eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
+JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
+
+exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
diff --git a/samples/wearable/DelayedConfirmation/gradlew.bat b/samples/wearable/DelayedConfirmation/gradlew.bat
new file mode 100644
index 0000000..aec9973
--- /dev/null
+++ b/samples/wearable/DelayedConfirmation/gradlew.bat
@@ -0,0 +1,90 @@
+@if "%DEBUG%" == "" @echo off

+@rem ##########################################################################

+@rem

+@rem  Gradle startup script for Windows

+@rem

+@rem ##########################################################################

+

+@rem Set local scope for the variables with windows NT shell

+if "%OS%"=="Windows_NT" setlocal

+

+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.

+set DEFAULT_JVM_OPTS=

+

+set DIRNAME=%~dp0

+if "%DIRNAME%" == "" set DIRNAME=.

+set APP_BASE_NAME=%~n0

+set APP_HOME=%DIRNAME%

+

+@rem Find java.exe

+if defined JAVA_HOME goto findJavaFromJavaHome

+

+set JAVA_EXE=java.exe

+%JAVA_EXE% -version >NUL 2>&1

+if "%ERRORLEVEL%" == "0" goto init

+

+echo.

+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.

+echo.

+echo Please set the JAVA_HOME variable in your environment to match the

+echo location of your Java installation.

+

+goto fail

+

+:findJavaFromJavaHome

+set JAVA_HOME=%JAVA_HOME:"=%

+set JAVA_EXE=%JAVA_HOME%/bin/java.exe

+

+if exist "%JAVA_EXE%" goto init

+

+echo.

+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%

+echo.

+echo Please set the JAVA_HOME variable in your environment to match the

+echo location of your Java installation.

+

+goto fail

+

+:init

+@rem Get command-line arguments, handling Windowz variants

+

+if not "%OS%" == "Windows_NT" goto win9xME_args

+if "%@eval[2+2]" == "4" goto 4NT_args

+

+:win9xME_args

+@rem Slurp the command line arguments.

+set CMD_LINE_ARGS=

+set _SKIP=2

+

+:win9xME_args_slurp

+if "x%~1" == "x" goto execute

+

+set CMD_LINE_ARGS=%*

+goto execute

+

+:4NT_args

+@rem Get arguments from the 4NT Shell from JP Software

+set CMD_LINE_ARGS=%$

+

+:execute

+@rem Setup the command line

+

+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar

+

+@rem Execute Gradle

+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%

+

+:end

+@rem End local scope for the variables with windows NT shell

+if "%ERRORLEVEL%"=="0" goto mainEnd

+

+:fail

+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of

+rem the _cmd.exe /c_ return code!

+if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1

+exit /b 1

+

+:mainEnd

+if "%OS%"=="Windows_NT" endlocal

+

+:omega

diff --git a/samples/wearable/DelayedConfirmation/settings.gradle b/samples/wearable/DelayedConfirmation/settings.gradle
new file mode 100644
index 0000000..68726d4
--- /dev/null
+++ b/samples/wearable/DelayedConfirmation/settings.gradle
@@ -0,0 +1 @@
+include 'Application', 'Wearable'
\ No newline at end of file
diff --git a/samples/wearable/ElizaChat/_index.html b/samples/wearable/ElizaChat/_index.html
new file mode 100644
index 0000000..bdf2508
--- /dev/null
+++ b/samples/wearable/ElizaChat/_index.html
@@ -0,0 +1,19 @@
+<p>This sample is a phone application that provides a chat experience in which
+users can respond to messages with a quick voice response. New messages create
+a notification with a "Reply" action. The notification is bridged from phone
+to wearable, and selecting the "Reply" action on the wearable opens the voice
+transcription UI allowing the user to speak a response.</p>
+
+<p>To keep the example simple and self-contained, instead of a real chat
+application (which would require a server or a peer-to-peer connection), the
+conversation is conducted with an chat bot on the phone. Each time the bot
+responds, the phone app updates the notification and allows the user to write
+back. This sample is primarily intended to demonstrate the voice-reply
+capabilities provided by the Android Wear notification API.</p>
+
+<p>When using the emulator you can type a response instead of speaking it
+aloud. To allow typed responses, ensure that your emulator image has the
+"hardware keyboard present" option enabled. After typing your message into
+the emulator window, hit the enter key and wait a few seconds for your
+message to be sent.</p>
+
diff --git a/samples/wearable/ElizaChat/build.gradle b/samples/wearable/ElizaChat/build.gradle
new file mode 100644
index 0000000..0b1d4e6
--- /dev/null
+++ b/samples/wearable/ElizaChat/build.gradle
@@ -0,0 +1,41 @@
+// Top-level build file where you can add configuration options common to all sub-projects/modules.
+
+buildscript {
+    repositories {
+        mavenCentral()
+    }
+    dependencies {
+        classpath 'com.android.tools.build:gradle:0.11.+'
+    }
+}
+
+allprojects {
+    repositories {
+        mavenCentral()
+    }
+}
+
+apply plugin: 'android'
+
+android {
+    compileSdkVersion 19
+    buildToolsVersion '20'
+
+    defaultConfig {
+        minSdkVersion 18
+        targetSdkVersion 19
+        versionCode 1
+        versionName "1.0"
+    }
+
+    buildTypes {
+        release {
+            runProguard false
+            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
+        }
+    }
+}
+
+dependencies {
+    compile "com.android.support:support-v4:20.0.+"
+}
\ No newline at end of file
diff --git a/samples/wearable/ElizaChat/gradle.properties b/samples/wearable/ElizaChat/gradle.properties
new file mode 100644
index 0000000..5d08ba7
--- /dev/null
+++ b/samples/wearable/ElizaChat/gradle.properties
@@ -0,0 +1,18 @@
+# Project-wide Gradle settings.
+
+# IDE (e.g. Android Studio) users:
+# Settings specified in this file will override any Gradle settings
+# configured through the IDE.
+
+# For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+# Default value: -Xmx10248m -XX:MaxPermSize=256m
+# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
+
+# When configured, Gradle will run in incubating parallel mode.
+# This option should only be used with decoupled projects. More details, visit
+# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
+# org.gradle.parallel=true
\ No newline at end of file
diff --git a/samples/wearable/ElizaChat/gradle/wrapper/gradle-wrapper.jar b/samples/wearable/ElizaChat/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 0000000..5838598
--- /dev/null
+++ b/samples/wearable/ElizaChat/gradle/wrapper/gradle-wrapper.jar
Binary files differ
diff --git a/samples/wearable/ElizaChat/gradle/wrapper/gradle-wrapper.properties b/samples/wearable/ElizaChat/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..e83e460
--- /dev/null
+++ b/samples/wearable/ElizaChat/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Fri Mar 14 14:02:22 PDT 2014
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=http\://services.gradle.org/distributions/gradle-1.11-all.zip
diff --git a/samples/wearable/ElizaChat/gradlew b/samples/wearable/ElizaChat/gradlew
new file mode 100755
index 0000000..91a7e26
--- /dev/null
+++ b/samples/wearable/ElizaChat/gradlew
@@ -0,0 +1,164 @@
+#!/usr/bin/env bash
+
+##############################################################################
+##
+##  Gradle start up script for UN*X
+##
+##############################################################################
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn ( ) {
+    echo "$*"
+}
+
+die ( ) {
+    echo
+    echo "$*"
+    echo
+    exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+case "`uname`" in
+  CYGWIN* )
+    cygwin=true
+    ;;
+  Darwin* )
+    darwin=true
+    ;;
+  MINGW* )
+    msys=true
+    ;;
+esac
+
+# For Cygwin, ensure paths are in UNIX format before anything is touched.
+if $cygwin ; then
+    [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
+fi
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+    ls=`ls -ld "$PRG"`
+    link=`expr "$ls" : '.*-> \(.*\)$'`
+    if expr "$link" : '/.*' > /dev/null; then
+        PRG="$link"
+    else
+        PRG=`dirname "$PRG"`"/$link"
+    fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >&-
+APP_HOME="`pwd -P`"
+cd "$SAVED" >&-
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+        # IBM's JDK on AIX uses strange locations for the executables
+        JAVACMD="$JAVA_HOME/jre/sh/java"
+    else
+        JAVACMD="$JAVA_HOME/bin/java"
+    fi
+    if [ ! -x "$JAVACMD" ] ; then
+        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+    fi
+else
+    JAVACMD="java"
+    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
+    MAX_FD_LIMIT=`ulimit -H -n`
+    if [ $? -eq 0 ] ; then
+        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+            MAX_FD="$MAX_FD_LIMIT"
+        fi
+        ulimit -n $MAX_FD
+        if [ $? -ne 0 ] ; then
+            warn "Could not set maximum file descriptor limit: $MAX_FD"
+        fi
+    else
+        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+    fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+
+    # We build the pattern for arguments to be converted via cygpath
+    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+    SEP=""
+    for dir in $ROOTDIRSRAW ; do
+        ROOTDIRS="$ROOTDIRS$SEP$dir"
+        SEP="|"
+    done
+    OURCYGPATTERN="(^($ROOTDIRS))"
+    # Add a user-defined pattern to the cygpath arguments
+    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+    fi
+    # Now convert the arguments - kludge to limit ourselves to /bin/sh
+    i=0
+    for arg in "$@" ; do
+        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
+
+        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
+            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+        else
+            eval `echo args$i`="\"$arg\""
+        fi
+        i=$((i+1))
+    done
+    case $i in
+        (0) set -- ;;
+        (1) set -- "$args0" ;;
+        (2) set -- "$args0" "$args1" ;;
+        (3) set -- "$args0" "$args1" "$args2" ;;
+        (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+        (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+        (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+        (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+        (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+        (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+    esac
+fi
+
+# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
+function splitJvmOpts() {
+    JVM_OPTS=("$@")
+}
+eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
+JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
+
+exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
diff --git a/samples/wearable/ElizaChat/gradlew.bat b/samples/wearable/ElizaChat/gradlew.bat
new file mode 100644
index 0000000..aec9973
--- /dev/null
+++ b/samples/wearable/ElizaChat/gradlew.bat
@@ -0,0 +1,90 @@
+@if "%DEBUG%" == "" @echo off

+@rem ##########################################################################

+@rem

+@rem  Gradle startup script for Windows

+@rem

+@rem ##########################################################################

+

+@rem Set local scope for the variables with windows NT shell

+if "%OS%"=="Windows_NT" setlocal

+

+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.

+set DEFAULT_JVM_OPTS=

+

+set DIRNAME=%~dp0

+if "%DIRNAME%" == "" set DIRNAME=.

+set APP_BASE_NAME=%~n0

+set APP_HOME=%DIRNAME%

+

+@rem Find java.exe

+if defined JAVA_HOME goto findJavaFromJavaHome

+

+set JAVA_EXE=java.exe

+%JAVA_EXE% -version >NUL 2>&1

+if "%ERRORLEVEL%" == "0" goto init

+

+echo.

+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.

+echo.

+echo Please set the JAVA_HOME variable in your environment to match the

+echo location of your Java installation.

+

+goto fail

+

+:findJavaFromJavaHome

+set JAVA_HOME=%JAVA_HOME:"=%

+set JAVA_EXE=%JAVA_HOME%/bin/java.exe

+

+if exist "%JAVA_EXE%" goto init

+

+echo.

+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%

+echo.

+echo Please set the JAVA_HOME variable in your environment to match the

+echo location of your Java installation.

+

+goto fail

+

+:init

+@rem Get command-line arguments, handling Windowz variants

+

+if not "%OS%" == "Windows_NT" goto win9xME_args

+if "%@eval[2+2]" == "4" goto 4NT_args

+

+:win9xME_args

+@rem Slurp the command line arguments.

+set CMD_LINE_ARGS=

+set _SKIP=2

+

+:win9xME_args_slurp

+if "x%~1" == "x" goto execute

+

+set CMD_LINE_ARGS=%*

+goto execute

+

+:4NT_args

+@rem Get arguments from the 4NT Shell from JP Software

+set CMD_LINE_ARGS=%$

+

+:execute

+@rem Setup the command line

+

+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar

+

+@rem Execute Gradle

+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%

+

+:end

+@rem End local scope for the variables with windows NT shell

+if "%ERRORLEVEL%"=="0" goto mainEnd

+

+:fail

+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of

+rem the _cmd.exe /c_ return code!

+if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1

+exit /b 1

+

+:mainEnd

+if "%OS%"=="Windows_NT" endlocal

+

+:omega

diff --git a/samples/wearable/ElizaChat/proguard-rules.txt b/samples/wearable/ElizaChat/proguard-rules.txt
new file mode 100644
index 0000000..08e5bdc
--- /dev/null
+++ b/samples/wearable/ElizaChat/proguard-rules.txt
@@ -0,0 +1,22 @@
+# To enable ProGuard in your project, edit project.properties
+# to define the proguard.config property as described in that file.
+#
+# Add project specific ProGuard rules here.
+# By default, the flags in this file are appended to flags specified
+# in ${sdk.dir}/tools/proguard/proguard-android.txt
+# You can edit the include path and order by changing the ProGuard
+# include property in project.properties.
+#
+# For more details, see
+#   http://developer.android.com/guide/developing/tools/proguard.html
+
+# Add any project specific keep options here:
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+#   public *;
+#}
+-dontwarn android.support.wearable.view.DelayedConfirmationView
+-dontwarn android.support.wearable.view.CircledImageView
diff --git a/samples/wearable/ElizaChat/src/main/AndroidManifest.xml b/samples/wearable/ElizaChat/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..fef7224
--- /dev/null
+++ b/samples/wearable/ElizaChat/src/main/AndroidManifest.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.example.android.wearable.elizachat" >
+
+    <uses-sdk android:minSdkVersion="18" android:targetSdkVersion="19"/>
+
+    <application
+        android:allowBackup="true"
+        android:icon="@mipmap/ic_app_eliza"
+        android:label="@string/app_name"
+        android:theme="@style/AppTheme" >
+        <activity
+            android:name=".MainActivity"
+            android:label="@string/app_name" >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
+        <service
+            android:name=".ResponderService">
+            <intent-filter>
+                <action android:name="com.example.android.wearable.elizachat.REPLY" />
+                <action android:name="com.example.android.wearable.elizachat.CONVERSATION" />
+            </intent-filter>
+        </service>
+    </application>
+
+</manifest>
diff --git a/samples/wearable/ElizaChat/src/main/java/com/example/android/wearable/elizachat/ElizaResponder.java b/samples/wearable/ElizaChat/src/main/java/com/example/android/wearable/elizachat/ElizaResponder.java
new file mode 100644
index 0000000..4062ae8
--- /dev/null
+++ b/samples/wearable/ElizaChat/src/main/java/com/example/android/wearable/elizachat/ElizaResponder.java
@@ -0,0 +1,152 @@
+package com.example.android.wearable.elizachat;
+
+import android.text.TextUtils;
+
+/**
+ * A basic chat bot based on ELIZA, one of the earliest programs to employ primitive natural
+ * language processing. Like ELIZA, this bot can simulate a Rogerian psychotherapist using a
+ * collection of vague and generic responses.
+ */
+public class ElizaResponder {
+
+    private static final String[] CONVERSATION_KEYWORDS = {
+            "CAN YOU", "CAN I", "YOU ARE", "YOURE", "I DONT", "I FEEL", "WHY DONT YOU", "WHY CANT I",
+            "ARE YOU", "I CANT", "I AM", " IM ", "YOU", "I WANT", "WHAT", "HOW", "WHO", "WHERE",
+            "WHEN", "WHY", "NAME", "CAUSE", "SORRY", "DREAM", "HELLO", "HI", "MAYBE", "NO", "YOUR",
+            "ALWAYS", "THINK", "ALIKE", "YES", "FRIEND", "COMPUTER", "NOKEYFOUND" };
+
+    private static String[] WORDS_TO_REPLACE = {"ARE","AM","WERE","WAS","YOU","I","YOUR","MY",
+            "IVE","YOUVE","IM","YOURE", "YOU", "ME"};
+
+    private static String[] QUESTIONS = {
+            "DON'T YOU BELIEVE THAT I CAN.", "PERHAPS YOU WOULD LIKE TO BE ABLE TO.",
+            "YOU WANT ME TO BE ABLE TO*", "PERHAPS YOU DON'T WANT TO*",
+            "DO YOU WANT TO BE ABLE TO*", "WHAT MAKES YOU THINK I AM*",
+            "DOES IT PLEASE YOU TO BELIEVE I AM*", "PERHAPS YOU WOULD LIKE TO BE*",
+            "DO YOU SOMETIMES WISH YOU WERE*", "DON'T YOU REALLY*", "WHY DON'T YOU*",
+            "DO YOU WISH TO BE ABLE TO*", "DOES THAT TROUBLE YOU?",
+            "TELL ME MORE ABOUT SUCH FEELINGS*", "DO YOU OFTEN FEEL*",
+            "DO YOU ENJOY FEELING*", "DO YOU REALLY BELIEVE I DON'T*",
+            "PERHAPS IN TIME I WILL*", "DO YOU WANT ME TO*",
+            "DO YOU THINK YOU SHOULD BE ABLE TO*", "WHY CAN'T YOU*",
+            "WHAT MAKES YOU WONDER WHETHER OR NOT I AM*",
+            "WOULD YOU PREFER IF I WERE NOT*", "PERHAPS IN YOUR FANTASIES I AM*",
+            "HOW DO YOU KNOW YOU CAN'T*", "HAVE YOU TRIED?", "PERHAPS YOU CAN NOW*",
+            "DID YOU COME TO ME BECAUSE YOU ARE*", "HOW LONG HAVE YOU BEEN*",
+            "DO YOU BELIEVE IT IS NORMAL TO BE*", "DO YOU ENJOY BEING*",
+            "I AM MORE INTERESTED IN TALKING ABOUT YOU.", "OH, I*",
+            "ARE YOU REALLY SO INTERESTED IN SOMEONE LIKE ME?",
+            "WHAT WOULD IT MEAN TO YOU IF YOU GOT*", "WHY DO YOU WANT*",
+            "SUPPOSE YOU SOON GOT*", "WHAT IF YOU NEVER GOT*", "I SOMETIMES ALSO WANT*",
+            "WHY DO YOU ASK?", "DOES THAT QUESTION INTEREST YOU?",
+            "WHAT ANSWER WOULD PLEASE YOU THE MOST?", "WHAT DO YOU THINK?",
+            "ARE SUCH QUESTIONS ON YOUR MIND OFTEN?",
+            "WHAT IS IT THAT YOU REALLY WANT TO KNOW?", "HAVE YOU ASKED ANYONE ELSE?",
+            "HAVE YOU ASKED SUCH QUESTIONS BEFORE?",
+            "WHAT ELSE COMES TO MIND WHEN YOU ASK THAT?", "WE CAN KEEP THIS ANONYMOUS.",
+            "NO NEED TO SPECIFY ANY NAMES-- PLEASE GO ON.", "IS THAT THE REAL REASON?",
+            "DON'T ANY OTHER REASONS COME TO MIND?",
+            "DOES THAT REASON EXPLAIN ANYTHING ELSE?", "WHAT OTHER REASONS MIGHT THERE BE?",
+            "PLEASE DON'T APOLOGIZE.", "APOLOGIES ARE NOT NECESSARY.",
+            "WHAT FEELINGS DO YOU HAVE WHEN YOU APOLOGIZE?", "NO NEED TO BE DEFENSIVE!",
+            "WHAT DOES THAT DREAM SUGGEST TO YOU?", "DO YOU DREAM OFTEN?",
+            "WHAT PERSONS APPEAR IN YOUR DREAMS?", "DO YOU HAVE PLEASANT DREAMS?",
+            "HOW DO YOU DO ... PLEASE STATE YOUR PROBLEM.", "YOU DON'T SEEM QUITE CERTAIN.",
+            "WHY THE UNCERTAIN TONE?", "LET'S TRY TO KEEP THIS POSITIVE.", "YOU AREN'T SURE?",
+            "DON'T YOU KNOW?", "IS THAT A DEFINITE NO OR MIGHT YOU CHANGE YOUR MIND?",
+            "I AM SENSING SOME NEGATIVITY.", "WHY NOT?", "ARE YOU SURE?", "WHY NO?",
+            "WHY ARE YOU CONCERNED ABOUT MY*", "WHAT ABOUT YOUR OWN*",
+            "CAN'T YOU THINK OF A SPECIFIC EXAMPLE?", "WHEN?", "WHAT ARE YOU THINKING OF?",
+            "REALLY. ALWAYS?", "DO YOU REALLY THINK SO?", "BUT YOU ARE NOT SURE YOU.",
+            "BELIEVE IN YOURSELF.", "IN WHAT WAY?", "WHAT RESEMBLANCE DO YOU SEE?",
+            "WHAT DOES THE SIMILARITY SUGGEST TO YOU?",
+            "WHAT OTHER CONNECTIONS DO YOU SEE?", "COULD THERE REALLY BE SOME CONNECTION?",
+            "HOW?", "YOU SEEM QUITE POSITIVE.", "ARE YOU SURE?", "I SEE.", "I UNDERSTAND.",
+            "TELL ME ABOUT YOUR FRIENDS.", "ARE YOU WORRIED ABOUT YOUR FRIENDS?",
+            "DO YOUR FRIENDS EVER GIVE YOU A HARD TIME?", "WHAT DO YOU LIKE ABOUT YOUR FRIENDS?",
+            "DO YOU LOVE YOUR FRIENDS?", "PERHAPS YOUR LOVE FOR FRIENDS WORRIES YOU.",
+            "DO COMPUTERS EXCITE YOU?", "ARE YOU TALKING ABOUT ME IN PARTICULAR?",
+            "HOW DO YOU LIKE YOUR WATCH?", "WHY DO YOU MENTION COMPUTERS?",
+            "DO YOU FIND MACHINES AS FASCINATING AS I DO?",
+            "DON'T YOU THINK COMPUTERS CAN HELP PEOPLE?",
+            "WHAT ABOUT MACHINES EXCITES YOU THE MOST?",
+            "HEY THERE, HOW CAN I HELP YOU?",
+            "WHAT DOES THAT SUGGEST TO YOU?", "I SEE.",
+            "I'M NOT SURE I UNDERSTAND YOU FULLY.", "COME COME ELUCIDATE YOUR THOUGHTS.",
+            "CAN YOU ELABORATE ON THAT?", "THAT IS QUITE INTERESTING."};
+
+    private static char[] CONVERSATION_TO_RESPONSES_MAP = {
+            1,3,4,2,6,4,6,4,10,4,14,3,17,3,20,2,22,3,25,3,
+            28,4,28,4,32,3,35,5,40,9,40,9,40,9,40,9,40,9,40,9,
+            49,2,51,4,55,4,59,4,63,1,63,1,64,5,69,5,74,2,76,4,
+            80,3,83,7,90,3,93,6,99,7,106,6};
+
+    private int[] responseStarts = new int[36];
+    private int[] responseCurrentIndices = new int[36];
+    private int[] responseEnds = new int[36];
+    private String previousInput = null;
+
+    public ElizaResponder() {
+        for (int i = 0; i < CONVERSATION_TO_RESPONSES_MAP.length / 2; i++) {
+            responseStarts[i] = CONVERSATION_TO_RESPONSES_MAP[2 * i];
+            responseCurrentIndices[i] = CONVERSATION_TO_RESPONSES_MAP[2 * i];
+            responseEnds[i] = responseStarts[i] + CONVERSATION_TO_RESPONSES_MAP[2 * i  + 1];
+        }
+    }
+
+    public String elzTalk(String input) {
+        if (null == input) {
+            input = "";
+        }
+        String result = "";
+
+        input = " " + input.toUpperCase().replace("\'", "") + " ";
+
+        if (previousInput != null && input.equals(previousInput)) {
+            return "DIDN'T YOU JUST SAY THAT?\n";
+        }
+        previousInput = input;
+
+        int keywordIndex = 0;
+        for (; keywordIndex < CONVERSATION_KEYWORDS.length; ++keywordIndex) {
+            int index = input.indexOf(CONVERSATION_KEYWORDS[keywordIndex]);
+            if (index != -1) {
+                break;
+            }
+        }
+
+        String afterKeyword = "";
+        if (keywordIndex == CONVERSATION_KEYWORDS.length) {
+            keywordIndex = 35;
+        } else {
+            int index = input.indexOf(CONVERSATION_KEYWORDS[keywordIndex]);
+            afterKeyword = input.substring(index + CONVERSATION_KEYWORDS[keywordIndex].length());
+            String[] parts = afterKeyword.split("\\s+");
+            for (int i = 0; i < WORDS_TO_REPLACE.length / 2; i++) {
+                String first = WORDS_TO_REPLACE[i * 2];
+                String second = WORDS_TO_REPLACE[i * 2 + 1];
+                for (int j = 0; j < parts.length; ++j) {
+                    if (parts[j].equals(first)) {
+                        parts[j] = second;
+                    } else if (parts[j].equals(second)) {
+                        parts[j] = first;
+                    }
+                }
+            }
+            afterKeyword = TextUtils.join(" ", parts);
+        }
+
+        String question = QUESTIONS[responseCurrentIndices[keywordIndex] - 1];
+        responseCurrentIndices[keywordIndex] = responseCurrentIndices[keywordIndex] + 1;
+        if (responseCurrentIndices[keywordIndex] > responseEnds[keywordIndex]) {
+            responseCurrentIndices[keywordIndex] = responseStarts[keywordIndex];
+        }
+        result += question;
+        if (result.endsWith("*")) {
+            result = result.substring(0, result.length() - 1);
+            result += " " + afterKeyword;
+        }
+
+        return result;
+    }
+}
diff --git a/samples/wearable/ElizaChat/src/main/java/com/example/android/wearable/elizachat/MainActivity.java b/samples/wearable/ElizaChat/src/main/java/com/example/android/wearable/elizachat/MainActivity.java
new file mode 100644
index 0000000..9209536
--- /dev/null
+++ b/samples/wearable/ElizaChat/src/main/java/com/example/android/wearable/elizachat/MainActivity.java
@@ -0,0 +1,94 @@
+package com.example.android.wearable.elizachat;
+
+import android.app.Activity;
+import android.app.Notification;
+import android.app.PendingIntent;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.graphics.BitmapFactory;
+import android.os.Bundle;
+import android.support.v4.content.LocalBroadcastManager;
+import android.text.TextUtils;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.widget.TextView;
+
+public class MainActivity extends Activity {
+
+    @SuppressWarnings("unused")
+    private static final String TAG = "MainActivity";
+
+    public static final String EXTRA_MESSAGE = "message";
+
+    public static final String ACTION_NOTIFY = "com.example.android.wearable.elizachat.NOTIFY";
+
+    public static final String ACTION_GET_CONVERSATION
+            = "com.example.android.wearable.elizachat.CONVERSATION";
+
+    private BroadcastReceiver mReceiver;
+
+    private TextView mHistoryView;
+
+    @Override
+    protected void onCreate(Bundle saved) {
+        super.onCreate(saved);
+        setContentView(R.layout.activity_main);
+        mReceiver = new BroadcastReceiver() {
+            @Override
+            public void onReceive(Context context, Intent intent) {
+                processMessage(intent);
+            }
+        };
+        mHistoryView = (TextView) findViewById(R.id.history);
+        startResponderService();
+    }
+
+    private void startResponderService() {
+        Intent serviceIntent = new Intent(ResponderService.ACTION_INCOMING);
+        startService(serviceIntent);
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        LocalBroadcastManager.getInstance(this).registerReceiver(mReceiver,
+                new IntentFilter(ACTION_NOTIFY));
+        mHistoryView.setText("");
+        Intent serviceIntent = new Intent(ACTION_GET_CONVERSATION);
+        startService(serviceIntent);
+
+    }
+
+    @Override
+    protected void onPause() {
+        LocalBroadcastManager.getInstance(this).unregisterReceiver(mReceiver);
+        super.onPause();
+    }
+
+    private void processMessage(Intent intent) {
+        String text = intent.getStringExtra(EXTRA_MESSAGE);
+        if (!TextUtils.isEmpty(text)) {
+            mHistoryView.append("\n" + text);
+        }
+    }
+
+    @Override
+    public boolean onCreateOptionsMenu(Menu menu) {
+        super.onCreateOptionsMenu(menu);
+        getMenuInflater().inflate(R.menu.main, menu);
+        return true;
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        switch (item.getItemId()) {
+            case R.id.action_stop_service:
+                stopService(new Intent(this, ResponderService.class));
+                finish();
+                break;
+        }
+        return true;
+    }
+}
diff --git a/samples/wearable/ElizaChat/src/main/java/com/example/android/wearable/elizachat/ResponderService.java b/samples/wearable/ElizaChat/src/main/java/com/example/android/wearable/elizachat/ResponderService.java
new file mode 100644
index 0000000..d776acc
--- /dev/null
+++ b/samples/wearable/ElizaChat/src/main/java/com/example/android/wearable/elizachat/ResponderService.java
@@ -0,0 +1,132 @@
+package com.example.android.wearable.elizachat;
+
+import android.app.Notification;
+import android.app.PendingIntent;
+import android.app.Service;
+import android.content.Intent;
+import android.graphics.BitmapFactory;
+import android.os.Bundle;
+import android.os.IBinder;
+import android.support.v4.app.NotificationCompat;
+import android.support.v4.app.RemoteInput;
+import android.support.v4.content.LocalBroadcastManager;
+import android.support.v4.app.NotificationManagerCompat;
+import android.text.TextUtils;
+import android.util.Log;
+
+/**
+ * A service that runs in the background and provides responses to the incoming messages from the
+ * wearable. It also keeps a record of the chat session history, which it can provide upon request.
+ */
+public class ResponderService extends Service {
+
+    public static final String ACTION_INCOMING = "com.example.android.wearable.elizachat.INCOMING";
+
+    public static final String ACTION_RESPONSE = "com.example.android.wearable.elizachat.REPLY";
+
+    public static final String EXTRA_REPLY = "reply";
+
+    private static final String TAG = "ResponderService";
+
+    private ElizaResponder mResponder;
+
+    private String mLastResponse = null;
+
+    private StringBuffer mCompleteConversation = new StringBuffer();
+
+    private LocalBroadcastManager mBroadcastManager;
+
+    @Override
+    public void onCreate() {
+        super.onCreate();
+        if (Log.isLoggable(TAG, Log.DEBUG)) {
+            Log.d(TAG, "Chat Service started");
+        }
+        mResponder = new ElizaResponder();
+        mBroadcastManager = LocalBroadcastManager.getInstance(this);
+        processIncoming(null);
+    }
+
+    @Override
+    public IBinder onBind(Intent intent) {
+        return null;
+    }
+
+    @Override
+    public int onStartCommand(Intent intent, int flags, int startId) {
+        if (null == intent || null == intent.getAction()) {
+            return Service.START_STICKY;
+        }
+        String action = intent.getAction();
+        if (action.equals(ACTION_RESPONSE)) {
+            Bundle remoteInputResults = RemoteInput.getResultsFromIntent(intent);
+            CharSequence replyMessage = "";
+            if (remoteInputResults != null) {
+                replyMessage = remoteInputResults.getCharSequence(EXTRA_REPLY);
+            }
+            processIncoming(replyMessage.toString());
+        } else if (action.equals(MainActivity.ACTION_GET_CONVERSATION)) {
+            broadcastMessage(mCompleteConversation.toString());
+        }
+        return Service.START_STICKY;
+    }
+
+    private void showNotification() {
+        if (Log.isLoggable(TAG, Log.DEBUG)) {
+            Log.d(TAG, "Sent: " + mLastResponse);
+        }
+        NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
+                .setContentTitle(getString(R.string.eliza))
+                .setContentText(mLastResponse)
+                .setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.bg_eliza))
+                .setSmallIcon(R.drawable.bg_eliza)
+                .setPriority(NotificationCompat.PRIORITY_MIN);
+
+        Intent intent = new Intent(ACTION_RESPONSE);
+        PendingIntent pendingIntent = PendingIntent.getService(this, 0, intent,
+                PendingIntent.FLAG_ONE_SHOT | PendingIntent.FLAG_CANCEL_CURRENT);
+        Notification notification = builder
+                .extend(new NotificationCompat.WearableExtender()
+                        .addAction(new NotificationCompat.Action.Builder(
+                                R.drawable.ic_full_reply, getString(R.string.reply), pendingIntent)
+                                .addRemoteInput(new RemoteInput.Builder(EXTRA_REPLY)
+                                        .setLabel(getString(R.string.reply))
+                                        .build())
+                                .build()))
+                .build();
+        NotificationManagerCompat.from(this).notify(0, notification);
+    }
+
+    private void processIncoming(String text) {
+        if (Log.isLoggable(TAG, Log.DEBUG)) {
+            Log.d(TAG, "Received: " + text);
+        }
+        mLastResponse = mResponder.elzTalk(text);
+        String line = TextUtils.isEmpty(text) ? mLastResponse : text + "\n" + mLastResponse;
+
+        // Send a new line of conversation to update the Activity, unless the incoming text was
+        // empty.
+        if (!TextUtils.isEmpty(text)) {
+            broadcastMessage(line);
+        }
+        NotificationManagerCompat.from(this).cancelAll();
+        showNotification();
+        mCompleteConversation.append("\n" + line);
+    }
+
+    private void broadcastMessage(String message) {
+        Intent intent = new Intent(MainActivity.ACTION_NOTIFY);
+        intent.putExtra(MainActivity.EXTRA_MESSAGE, message);
+        mBroadcastManager.sendBroadcast(intent);
+    }
+
+    @Override
+    public void onDestroy() {
+        if (Log.isLoggable(TAG, Log.DEBUG)) {
+            Log.d(TAG, "Chat Service stopped");
+        }
+        NotificationManagerCompat.from(this).cancel(0);
+        mBroadcastManager = null;
+        super.onDestroy();
+    }
+}
diff --git a/samples/wearable/ElizaChat/src/main/res/drawable-hdpi/ic_full_reply.png b/samples/wearable/ElizaChat/src/main/res/drawable-hdpi/ic_full_reply.png
new file mode 100644
index 0000000..66388d5
--- /dev/null
+++ b/samples/wearable/ElizaChat/src/main/res/drawable-hdpi/ic_full_reply.png
Binary files differ
diff --git a/samples/wearable/ElizaChat/src/main/res/drawable-mdpi/ic_full_reply.png b/samples/wearable/ElizaChat/src/main/res/drawable-mdpi/ic_full_reply.png
new file mode 100644
index 0000000..60ce9f9
--- /dev/null
+++ b/samples/wearable/ElizaChat/src/main/res/drawable-mdpi/ic_full_reply.png
Binary files differ
diff --git a/samples/wearable/ElizaChat/src/main/res/drawable-nodpi/bg_eliza.png b/samples/wearable/ElizaChat/src/main/res/drawable-nodpi/bg_eliza.png
new file mode 100644
index 0000000..3bbdf48
--- /dev/null
+++ b/samples/wearable/ElizaChat/src/main/res/drawable-nodpi/bg_eliza.png
Binary files differ
diff --git a/samples/wearable/ElizaChat/src/main/res/drawable-xhdpi/ic_full_reply.png b/samples/wearable/ElizaChat/src/main/res/drawable-xhdpi/ic_full_reply.png
new file mode 100644
index 0000000..dba6fa7
--- /dev/null
+++ b/samples/wearable/ElizaChat/src/main/res/drawable-xhdpi/ic_full_reply.png
Binary files differ
diff --git a/samples/wearable/ElizaChat/src/main/res/layout/activity_main.xml b/samples/wearable/ElizaChat/src/main/res/layout/activity_main.xml
new file mode 100644
index 0000000..6ffed8e
--- /dev/null
+++ b/samples/wearable/ElizaChat/src/main/res/layout/activity_main.xml
@@ -0,0 +1,17 @@
+<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:paddingLeft="@dimen/activity_horizontal_margin"
+    android:paddingRight="@dimen/activity_horizontal_margin"
+    android:paddingTop="@dimen/activity_vertical_margin"
+    android:paddingBottom="@dimen/activity_vertical_margin"
+    tools:context="com.example.android.wearable.elizachat.MainActivity$PlaceholderFragment"
+    android:orientation="vertical" >
+
+    <TextView
+        android:id="@+id/history"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"/>
+
+</ScrollView>
diff --git a/samples/wearable/ElizaChat/src/main/res/menu/main.xml b/samples/wearable/ElizaChat/src/main/res/menu/main.xml
new file mode 100644
index 0000000..2ec4cf7
--- /dev/null
+++ b/samples/wearable/ElizaChat/src/main/res/menu/main.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<menu xmlns:android="http://schemas.android.com/apk/res/android">
+    <item
+        android:id="@+id/action_stop_service"
+        android:orderInCategory="100"
+        android:showAsAction="always|withText"
+        android:title="@string/stop_service" />
+
+</menu>
\ No newline at end of file
diff --git a/samples/wearable/ElizaChat/src/main/res/mipmap-hdpi/ic_app_eliza.png b/samples/wearable/ElizaChat/src/main/res/mipmap-hdpi/ic_app_eliza.png
new file mode 100644
index 0000000..1bdb147
--- /dev/null
+++ b/samples/wearable/ElizaChat/src/main/res/mipmap-hdpi/ic_app_eliza.png
Binary files differ
diff --git a/samples/wearable/ElizaChat/src/main/res/mipmap-mdpi/ic_app_eliza.png b/samples/wearable/ElizaChat/src/main/res/mipmap-mdpi/ic_app_eliza.png
new file mode 100644
index 0000000..2e0e198
--- /dev/null
+++ b/samples/wearable/ElizaChat/src/main/res/mipmap-mdpi/ic_app_eliza.png
Binary files differ
diff --git a/samples/wearable/ElizaChat/src/main/res/mipmap-xhdpi/ic_app_eliza.png b/samples/wearable/ElizaChat/src/main/res/mipmap-xhdpi/ic_app_eliza.png
new file mode 100644
index 0000000..8d0f436
--- /dev/null
+++ b/samples/wearable/ElizaChat/src/main/res/mipmap-xhdpi/ic_app_eliza.png
Binary files differ
diff --git a/samples/wearable/ElizaChat/src/main/res/mipmap-xxhdpi/ic_app_eliza.png b/samples/wearable/ElizaChat/src/main/res/mipmap-xxhdpi/ic_app_eliza.png
new file mode 100644
index 0000000..e72b967
--- /dev/null
+++ b/samples/wearable/ElizaChat/src/main/res/mipmap-xxhdpi/ic_app_eliza.png
Binary files differ
diff --git a/samples/wearable/ElizaChat/src/main/res/mipmap-xxxhdpi/ic_app_eliza.png b/samples/wearable/ElizaChat/src/main/res/mipmap-xxxhdpi/ic_app_eliza.png
new file mode 100644
index 0000000..06ea079
--- /dev/null
+++ b/samples/wearable/ElizaChat/src/main/res/mipmap-xxxhdpi/ic_app_eliza.png
Binary files differ
diff --git a/samples/wearable/ElizaChat/src/main/res/values/dimens.xml b/samples/wearable/ElizaChat/src/main/res/values/dimens.xml
new file mode 100644
index 0000000..47c8224
--- /dev/null
+++ b/samples/wearable/ElizaChat/src/main/res/values/dimens.xml
@@ -0,0 +1,5 @@
+<resources>
+    <!-- Default screen margins, per the Android Design guidelines. -->
+    <dimen name="activity_horizontal_margin">16dp</dimen>
+    <dimen name="activity_vertical_margin">16dp</dimen>
+</resources>
diff --git a/samples/wearable/ElizaChat/src/main/res/values/strings.xml b/samples/wearable/ElizaChat/src/main/res/values/strings.xml
new file mode 100644
index 0000000..20a31d6
--- /dev/null
+++ b/samples/wearable/ElizaChat/src/main/res/values/strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+
+    <string name="app_name">ElizaChat</string>
+    <string name="send_notification">Send notification!</string>
+    <string name="eliza">Eliza</string>
+    <string name="answer_eliza">Answer Eliza</string>
+    <string name="reply">Reply</string>
+    <string name="stop_service">End Chat Session</string>
+
+</resources>
diff --git a/samples/wearable/ElizaChat/src/main/res/values/styles.xml b/samples/wearable/ElizaChat/src/main/res/values/styles.xml
new file mode 100644
index 0000000..ff6c9d2
--- /dev/null
+++ b/samples/wearable/ElizaChat/src/main/res/values/styles.xml
@@ -0,0 +1,8 @@
+<resources>
+
+    <!-- Base application theme. -->
+    <style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar">
+        <!-- Customize your theme here. -->
+    </style>
+
+</resources>
diff --git a/samples/wearable/FindMyPhone/Application/build.gradle b/samples/wearable/FindMyPhone/Application/build.gradle
new file mode 100644
index 0000000..7de0d36
--- /dev/null
+++ b/samples/wearable/FindMyPhone/Application/build.gradle
@@ -0,0 +1,30 @@
+apply plugin: 'android'
+
+android {
+    compileSdkVersion 20
+    buildToolsVersion '20'
+
+    defaultConfig {
+        minSdkVersion 18
+        targetSdkVersion 20
+        versionCode 1
+        versionName "1.0"
+    }
+
+    buildTypes {
+        release {
+            runProguard false
+            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
+        }
+    }
+
+    aaptOptions {
+        noCompress 'apk'
+    }
+}
+
+dependencies {
+    compile 'com.google.android.gms:play-services:5.0.+@aar'
+    compile "com.android.support:support-v4:20.0.+"
+    wearApp project(':Wearable')
+}
\ No newline at end of file
diff --git a/samples/wearable/FindMyPhone/Application/proguard-rules.txt b/samples/wearable/FindMyPhone/Application/proguard-rules.txt
new file mode 100644
index 0000000..08e5bdc
--- /dev/null
+++ b/samples/wearable/FindMyPhone/Application/proguard-rules.txt
@@ -0,0 +1,22 @@
+# To enable ProGuard in your project, edit project.properties
+# to define the proguard.config property as described in that file.
+#
+# Add project specific ProGuard rules here.
+# By default, the flags in this file are appended to flags specified
+# in ${sdk.dir}/tools/proguard/proguard-android.txt
+# You can edit the include path and order by changing the ProGuard
+# include property in project.properties.
+#
+# For more details, see
+#   http://developer.android.com/guide/developing/tools/proguard.html
+
+# Add any project specific keep options here:
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+#   public *;
+#}
+-dontwarn android.support.wearable.view.DelayedConfirmationView
+-dontwarn android.support.wearable.view.CircledImageView
diff --git a/samples/wearable/FindMyPhone/Application/project.properties b/samples/wearable/FindMyPhone/Application/project.properties
new file mode 100644
index 0000000..4ab1256
--- /dev/null
+++ b/samples/wearable/FindMyPhone/Application/project.properties
@@ -0,0 +1,14 @@
+# This file is automatically generated by Android Tools.
+# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
+#
+# This file must be checked in Version Control Systems.
+#
+# To customize properties used by the Ant build system edit
+# "ant.properties", and override values to adapt the script to your
+# project structure.
+#
+# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
+#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
+
+# Project target.
+target=android-19
diff --git a/samples/wearable/FindMyPhone/Application/src/main/AndroidManifest.xml b/samples/wearable/FindMyPhone/Application/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..97fd35f
--- /dev/null
+++ b/samples/wearable/FindMyPhone/Application/src/main/AndroidManifest.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+          package="com.example.android.wearable.findphone">
+
+    <uses-sdk android:minSdkVersion="18" android:targetSdkVersion="20" />
+
+    <application
+            android:icon="@drawable/ic_launcher"
+            android:label="@string/app_name"
+            android:theme="@android:style/Theme.Holo.Light"
+            android:allowBackup="true">
+
+        <meta-data
+                android:name="com.google.android.gms.version"
+                android:value="@integer/google_play_services_version" />
+
+        <service
+            android:name="com.example.android.wearable.findphone.SoundAlarmListenerService" >
+            <intent-filter>
+                <action android:name="com.google.android.gms.wearable.BIND_LISTENER" />
+            </intent-filter>
+        </service>
+
+    </application>
+</manifest>
diff --git a/samples/wearable/FindMyPhone/Application/src/main/java/com/example/android/wearable/findphone/SoundAlarmListenerService.java b/samples/wearable/FindMyPhone/Application/src/main/java/com/example/android/wearable/findphone/SoundAlarmListenerService.java
new file mode 100644
index 0000000..c6dd460
--- /dev/null
+++ b/samples/wearable/FindMyPhone/Application/src/main/java/com/example/android/wearable/findphone/SoundAlarmListenerService.java
@@ -0,0 +1,85 @@
+package com.example.android.wearable.findphone;
+
+import android.media.AudioManager;
+import android.media.MediaPlayer;
+import android.media.RingtoneManager;
+import android.net.Uri;
+import android.util.Log;
+
+import com.google.android.gms.wearable.DataEvent;
+import com.google.android.gms.wearable.DataEventBuffer;
+import com.google.android.gms.wearable.DataMap;
+import com.google.android.gms.wearable.WearableListenerService;
+
+import java.io.IOException;
+
+/**
+ * Listens for disconnection from home device.
+ */
+public class SoundAlarmListenerService extends WearableListenerService {
+
+    private static final String TAG = "ExampleFindPhoneApp";
+
+    private static final String FIELD_ALARM_ON = "alarm_on";
+
+    private AudioManager mAudioManager;
+    private static int mOrigVolume;
+    private int mMaxVolume;
+    private Uri mAlarmSound;
+    private MediaPlayer mMediaPlayer;
+
+    @Override
+    public void onCreate() {
+        super.onCreate();
+        mAudioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
+        mOrigVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_ALARM);
+        mMaxVolume = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_ALARM);
+        mAlarmSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM);
+        mMediaPlayer = new MediaPlayer();
+    }
+
+    @Override
+    public void onDestroy() {
+        // Reset the alarm volume to the user's original setting.
+        mAudioManager.setStreamVolume(AudioManager.STREAM_ALARM, mOrigVolume, 0);
+        mMediaPlayer.release();
+        super.onDestroy();
+    }
+
+    @Override
+    public void onDataChanged(DataEventBuffer dataEvents) {
+        if (Log.isLoggable(TAG, Log.DEBUG)) {
+            Log.d(TAG, "onDataChanged: " + dataEvents + " for " + getPackageName());
+        }
+        for (DataEvent event : dataEvents) {
+            if (event.getType() == DataEvent.TYPE_DELETED) {
+                Log.i(TAG, event + " deleted");
+            } else if (event.getType() == DataEvent.TYPE_CHANGED) {
+                Boolean alarmOn =
+                        DataMap.fromByteArray(event.getDataItem().getData()).get(FIELD_ALARM_ON);
+                if (alarmOn) {
+                    mOrigVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_ALARM);
+                    mMediaPlayer.reset();
+                    // Sound alarm at max volume.
+                    mAudioManager.setStreamVolume(AudioManager.STREAM_ALARM, mMaxVolume, 0);
+                    mMediaPlayer.setAudioStreamType(AudioManager.STREAM_ALARM);
+                    try {
+                        mMediaPlayer.setDataSource(getApplicationContext(), mAlarmSound);
+                        mMediaPlayer.prepare();
+                    } catch (IOException e) {
+                        Log.e(TAG, "Failed to prepare media player to play alarm.", e);
+                    }
+                    mMediaPlayer.start();
+                } else {
+                    // Reset the alarm volume to the user's original setting.
+                    mAudioManager.setStreamVolume(AudioManager.STREAM_ALARM, mOrigVolume, 0);
+                    if (mMediaPlayer.isPlaying()) {
+                        mMediaPlayer.stop();
+                    }
+                }
+            }
+        }
+        dataEvents.close();
+    }
+
+}
diff --git a/samples/wearable/FindMyPhone/Application/src/main/res/drawable-hdpi/ic_launcher.png b/samples/wearable/FindMyPhone/Application/src/main/res/drawable-hdpi/ic_launcher.png
new file mode 100644
index 0000000..43254bd
--- /dev/null
+++ b/samples/wearable/FindMyPhone/Application/src/main/res/drawable-hdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/FindMyPhone/Application/src/main/res/drawable-mdpi/ic_launcher.png b/samples/wearable/FindMyPhone/Application/src/main/res/drawable-mdpi/ic_launcher.png
new file mode 100644
index 0000000..de255d6
--- /dev/null
+++ b/samples/wearable/FindMyPhone/Application/src/main/res/drawable-mdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/FindMyPhone/Application/src/main/res/drawable-xhdpi/ic_launcher.png b/samples/wearable/FindMyPhone/Application/src/main/res/drawable-xhdpi/ic_launcher.png
new file mode 100644
index 0000000..5a849da
--- /dev/null
+++ b/samples/wearable/FindMyPhone/Application/src/main/res/drawable-xhdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/FindMyPhone/Application/src/main/res/drawable-xxhdpi/ic_launcher.png b/samples/wearable/FindMyPhone/Application/src/main/res/drawable-xxhdpi/ic_launcher.png
new file mode 100644
index 0000000..96a7cb8
--- /dev/null
+++ b/samples/wearable/FindMyPhone/Application/src/main/res/drawable-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/FindMyPhone/Application/src/main/res/values/strings.xml b/samples/wearable/FindMyPhone/Application/src/main/res/values/strings.xml
new file mode 100644
index 0000000..faf03ef
--- /dev/null
+++ b/samples/wearable/FindMyPhone/Application/src/main/res/values/strings.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+
+    <string name="app_name">Find My Phone</string>
+
+</resources>
\ No newline at end of file
diff --git a/samples/wearable/FindMyPhone/Wearable/build.gradle b/samples/wearable/FindMyPhone/Wearable/build.gradle
new file mode 100644
index 0000000..7a81345
--- /dev/null
+++ b/samples/wearable/FindMyPhone/Wearable/build.gradle
@@ -0,0 +1,26 @@
+apply plugin: 'android'
+
+android {
+    compileSdkVersion 20
+    buildToolsVersion '20'
+
+    defaultConfig {
+        minSdkVersion 20
+        targetSdkVersion 20
+        versionCode 1
+        versionName "1.0"
+    }
+
+    buildTypes {
+        release {
+            runProguard false
+            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
+        }
+    }
+}
+
+dependencies {
+    compile 'com.google.android.gms:play-services:5.+@aar'
+    compile "com.android.support:support-v13:20.0.+"
+    compile "com.google.android.support:wearable:1.0.+"
+}
\ No newline at end of file
diff --git a/samples/wearable/FindMyPhone/Wearable/proguard-rules.txt b/samples/wearable/FindMyPhone/Wearable/proguard-rules.txt
new file mode 100644
index 0000000..08e5bdc
--- /dev/null
+++ b/samples/wearable/FindMyPhone/Wearable/proguard-rules.txt
@@ -0,0 +1,22 @@
+# To enable ProGuard in your project, edit project.properties
+# to define the proguard.config property as described in that file.
+#
+# Add project specific ProGuard rules here.
+# By default, the flags in this file are appended to flags specified
+# in ${sdk.dir}/tools/proguard/proguard-android.txt
+# You can edit the include path and order by changing the ProGuard
+# include property in project.properties.
+#
+# For more details, see
+#   http://developer.android.com/guide/developing/tools/proguard.html
+
+# Add any project specific keep options here:
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+#   public *;
+#}
+-dontwarn android.support.wearable.view.DelayedConfirmationView
+-dontwarn android.support.wearable.view.CircledImageView
diff --git a/samples/wearable/FindMyPhone/Wearable/project.properties b/samples/wearable/FindMyPhone/Wearable/project.properties
new file mode 100644
index 0000000..4ab1256
--- /dev/null
+++ b/samples/wearable/FindMyPhone/Wearable/project.properties
@@ -0,0 +1,14 @@
+# This file is automatically generated by Android Tools.
+# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
+#
+# This file must be checked in Version Control Systems.
+#
+# To customize properties used by the Ant build system edit
+# "ant.properties", and override values to adapt the script to your
+# project structure.
+#
+# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
+#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
+
+# Project target.
+target=android-19
diff --git a/samples/wearable/FindMyPhone/Wearable/src/main/AndroidManifest.xml b/samples/wearable/FindMyPhone/Wearable/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..4208898
--- /dev/null
+++ b/samples/wearable/FindMyPhone/Wearable/src/main/AndroidManifest.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.example.android.wearable.findphone" >
+
+    <uses-sdk android:minSdkVersion="20" android:targetSdkVersion="20" />
+    <uses-permission android:name="android.permission.VIBRATE" />
+
+    <application
+            android:allowBackup="true"
+            android:icon="@drawable/ic_launcher"
+            android:label="@string/app_name"
+            android:theme="@android:style/Theme.DeviceDefault" >
+
+        <meta-data
+            android:name="com.google.android.gms.version"
+            android:value="@integer/google_play_services_version" />
+
+        <service android:name=".DisconnectListenerService" >
+            <intent-filter>
+                <action android:name="com.google.android.gms.wearable.BIND_LISTENER" />
+            </intent-filter>
+        </service>
+
+        <service android:name="com.example.android.wearable.findphone.FindPhoneService"/>
+
+        <activity
+                android:name=".FindPhoneActivity"
+                android:label="@string/app_name" >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN"/>
+                <category android:name="android.intent.category.LAUNCHER"/>
+            </intent-filter>
+        </activity>
+    </application>
+
+</manifest>
diff --git a/samples/wearable/FindMyPhone/Wearable/src/main/java/com/example/android/wearable/findphone/DisconnectListenerService.java b/samples/wearable/FindMyPhone/Wearable/src/main/java/com/example/android/wearable/findphone/DisconnectListenerService.java
new file mode 100644
index 0000000..dacd608
--- /dev/null
+++ b/samples/wearable/FindMyPhone/Wearable/src/main/java/com/example/android/wearable/findphone/DisconnectListenerService.java
@@ -0,0 +1,39 @@
+package com.example.android.wearable.findphone;
+
+import android.app.Notification;
+import android.app.NotificationManager;
+
+import com.google.android.gms.wearable.WearableListenerService;
+
+/**
+ * Listens for disconnection from home device.
+ */
+public class DisconnectListenerService extends WearableListenerService {
+
+    private static final String TAG = "ExampleFindPhoneApp";
+
+    private static final int FORGOT_PHONE_NOTIFICATION_ID = 1;
+
+    @Override
+    public void onPeerDisconnected(com.google.android.gms.wearable.Node peer) {
+        // Create a "forgot phone" notification when phone connection is broken.
+        Notification.Builder notificationBuilder = new Notification.Builder(this)
+                .setContentTitle(getString(R.string.left_phone_title))
+                .setContentText(getString(R.string.left_phone_content))
+                .setVibrate(new long[] {0, 200})  // Vibrate for 200 milliseconds.
+                .setSmallIcon(R.drawable.ic_launcher)
+                .setLocalOnly(true)
+                .setPriority(Notification.PRIORITY_MAX);
+        Notification card = notificationBuilder.build();
+        ((NotificationManager) getSystemService(NOTIFICATION_SERVICE))
+                .notify(FORGOT_PHONE_NOTIFICATION_ID, card);
+    }
+
+    @Override
+    public void onPeerConnected(com.google.android.gms.wearable.Node peer) {
+        // Remove the "forgot phone" notification when connection is restored.
+        ((NotificationManager) getSystemService(NOTIFICATION_SERVICE))
+                .cancel(FORGOT_PHONE_NOTIFICATION_ID);
+    }
+
+}
diff --git a/samples/wearable/FindMyPhone/Wearable/src/main/java/com/example/android/wearable/findphone/FindPhoneActivity.java b/samples/wearable/FindMyPhone/Wearable/src/main/java/com/example/android/wearable/findphone/FindPhoneActivity.java
new file mode 100644
index 0000000..10e1345
--- /dev/null
+++ b/samples/wearable/FindMyPhone/Wearable/src/main/java/com/example/android/wearable/findphone/FindPhoneActivity.java
@@ -0,0 +1,71 @@
+package com.example.android.wearable.findphone;
+
+import android.app.Activity;
+import android.app.Notification;
+import android.app.Notification.Action;
+import android.app.NotificationManager;
+import android.app.PendingIntent;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import android.text.Spannable;
+import android.text.SpannableString;
+import android.text.style.RelativeSizeSpan;
+
+
+public class FindPhoneActivity extends Activity {
+
+    private static final int FIND_PHONE_NOTIFICATION_ID = 2;
+    private static Notification.Builder notification;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        // Create a notification with an action to toggle an alarm on the phone.
+        Intent toggleAlarmOperation = new Intent(this, FindPhoneService.class);
+        toggleAlarmOperation.setAction(FindPhoneService.ACTION_TOGGLE_ALARM);
+        PendingIntent toggleAlarmIntent = PendingIntent.getService(this, 0, toggleAlarmOperation,
+                PendingIntent.FLAG_CANCEL_CURRENT);
+        Action alarmAction = new Action(R.drawable.alarm_action_icon, "", toggleAlarmIntent);
+        // This intent turns off the alarm if the user dismisses the card from the wearable.
+        Intent cancelAlarmOperation = new Intent(this, FindPhoneService.class);
+        cancelAlarmOperation.setAction(FindPhoneService.ACTION_CANCEL_ALARM);
+        PendingIntent cancelAlarmIntent = PendingIntent.getService(this, 0, cancelAlarmOperation,
+                PendingIntent.FLAG_CANCEL_CURRENT);
+        // Use a spannable string for the notification title to resize it.
+        SpannableString title = new SpannableString(getString(R.string.app_name));
+        title.setSpan(new RelativeSizeSpan(0.85f), 0, title.length(), Spannable.SPAN_POINT_MARK);
+        notification = new Notification.Builder(this)
+                .setContentTitle(title)
+                .setContentText(getString(R.string.turn_alarm_on))
+                .setSmallIcon(R.drawable.ic_launcher)
+                .setVibrate(new long[] {0, 50})  // Vibrate to bring card to top of stream.
+                .setDeleteIntent(cancelAlarmIntent)
+                .extend(new Notification.WearableExtender()
+                        .addAction(alarmAction)
+                        .setContentAction(0)
+                        .setHintHideIcon(true))
+                .setLocalOnly(true)
+                .setPriority(Notification.PRIORITY_MAX);
+        ((NotificationManager) getSystemService(NOTIFICATION_SERVICE))
+                .notify(FIND_PHONE_NOTIFICATION_ID, notification.build());
+
+        finish();
+    }
+
+    /**
+     * Updates the text on the wearable notification. This is used so the notification reflects the
+     * current state of the alarm on the phone. For instance, if the alarm is turned on, the
+     * notification text indicates that the user can tap it to turn it off, and vice-versa.
+     *
+     * @param context
+     * @param notificationText The new text to display on the wearable notification.
+     */
+    public static void updateNotification(Context context, String notificationText) {
+        notification.setContentText(notificationText);
+        ((NotificationManager) context.getSystemService(NOTIFICATION_SERVICE))
+                .notify(FIND_PHONE_NOTIFICATION_ID, notification.build());
+    }
+
+}
\ No newline at end of file
diff --git a/samples/wearable/FindMyPhone/Wearable/src/main/java/com/example/android/wearable/findphone/FindPhoneService.java b/samples/wearable/FindMyPhone/Wearable/src/main/java/com/example/android/wearable/findphone/FindPhoneService.java
new file mode 100644
index 0000000..df0a724
--- /dev/null
+++ b/samples/wearable/FindMyPhone/Wearable/src/main/java/com/example/android/wearable/findphone/FindPhoneService.java
@@ -0,0 +1,105 @@
+package com.example.android.wearable.findphone;
+
+import android.app.IntentService;
+import android.content.Intent;
+import android.os.Bundle;
+import android.util.Log;
+
+import com.google.android.gms.common.ConnectionResult;
+import com.google.android.gms.common.api.GoogleApiClient;
+import com.google.android.gms.wearable.DataItemBuffer;
+import com.google.android.gms.wearable.DataMap;
+import com.google.android.gms.wearable.PutDataMapRequest;
+import com.google.android.gms.wearable.Wearable;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Creates a sound on the paired phone to find it.
+ */
+public class FindPhoneService extends IntentService implements GoogleApiClient.ConnectionCallbacks,
+        GoogleApiClient.OnConnectionFailedListener {
+
+    private static final String TAG = "ExampleFindPhoneApp";
+
+    private static final String FIELD_ALARM_ON = "alarm_on";
+    private static final String PATH_SOUND_ALARM = "/sound_alarm";
+    public static final String ACTION_TOGGLE_ALARM = "action_toggle_alarm";
+    public static final String ACTION_CANCEL_ALARM = "action_alarm_off";
+
+    // Timeout for making a connection to GoogleApiClient (in milliseconds).
+    private static final long CONNECTION_TIME_OUT_MS = 100;
+    private GoogleApiClient mGoogleApiClient;
+
+    public FindPhoneService() {
+        super(FindPhoneService.class.getSimpleName());
+    }
+
+    @Override
+    public void onCreate() {
+        super.onCreate();
+        mGoogleApiClient = new GoogleApiClient.Builder(this)
+                .addApi(Wearable.API)
+                .addConnectionCallbacks(this)
+                .addOnConnectionFailedListener(this)
+                .build();
+    }
+
+    @Override
+    protected void onHandleIntent(Intent intent) {
+        mGoogleApiClient.blockingConnect(CONNECTION_TIME_OUT_MS, TimeUnit.MILLISECONDS);
+        if (Log.isLoggable(TAG, Log.VERBOSE)) {
+            Log.v(TAG, "FindPhoneService.onHandleIntent");
+        }
+        if (mGoogleApiClient.isConnected()) {
+            // Set the alarm off by default.
+            boolean alarmOn = false;
+            if (intent.getAction().equals(ACTION_TOGGLE_ALARM)) {
+                // Get current state of the alarm.
+                DataItemBuffer result = Wearable.DataApi.getDataItems(mGoogleApiClient).await();
+                if (result.getStatus().isSuccess()) {
+                    if (result.getCount() == 1) {
+                        alarmOn = DataMap.fromByteArray(result.get(0).getData())
+                                .getBoolean(FIELD_ALARM_ON, false);
+                    } else {
+                        Log.e(TAG, "Unexpected number of DataItems found.\n"
+                                 + "\tExpected: 1\n"
+                                 + "\tActual: " + result.getCount());
+                    }
+                } else if (Log.isLoggable(TAG, Log.DEBUG)) {
+                    Log.d(TAG, "onHandleIntent: failed to get current alarm state");
+                }
+                result.close();
+                // Toggle alarm.
+                alarmOn = !alarmOn;
+                // Change notification text based on new value of alarmOn.
+                String notificationText = alarmOn ? getString(R.string.turn_alarm_off)
+                                                  : getString(R.string.turn_alarm_on);
+                FindPhoneActivity.updateNotification(this, notificationText);
+            }
+            // Use alarmOn boolean to update the DataItem - phone will respond accordingly
+            // when it receives the change.
+            PutDataMapRequest putDataMapRequest = PutDataMapRequest.create(PATH_SOUND_ALARM);
+            putDataMapRequest.getDataMap().putBoolean(FIELD_ALARM_ON, alarmOn);
+            Wearable.DataApi.putDataItem(mGoogleApiClient, putDataMapRequest.asPutDataRequest())
+                    .await();
+        } else {
+            Log.e(TAG, "Failed to toggle alarm on phone - Client disconnected from Google Play "
+                     + "Services");
+        }
+        mGoogleApiClient.disconnect();
+    }
+
+    @Override
+    public void onConnected(Bundle connectionHint) {
+    }
+
+    @Override
+    public void onConnectionSuspended(int cause) {
+    }
+
+    @Override
+    public void onConnectionFailed(ConnectionResult result) {
+    }
+
+}
diff --git a/samples/wearable/FindMyPhone/Wearable/src/main/res/drawable-hdpi/alarm_action_icon.png b/samples/wearable/FindMyPhone/Wearable/src/main/res/drawable-hdpi/alarm_action_icon.png
new file mode 100644
index 0000000..4331a51
--- /dev/null
+++ b/samples/wearable/FindMyPhone/Wearable/src/main/res/drawable-hdpi/alarm_action_icon.png
Binary files differ
diff --git a/samples/wearable/FindMyPhone/Wearable/src/main/res/drawable-hdpi/ic_launcher.png b/samples/wearable/FindMyPhone/Wearable/src/main/res/drawable-hdpi/ic_launcher.png
new file mode 100644
index 0000000..43254bd
--- /dev/null
+++ b/samples/wearable/FindMyPhone/Wearable/src/main/res/drawable-hdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/FindMyPhone/Wearable/src/main/res/drawable-mdpi/ic_launcher.png b/samples/wearable/FindMyPhone/Wearable/src/main/res/drawable-mdpi/ic_launcher.png
new file mode 100644
index 0000000..de255d6
--- /dev/null
+++ b/samples/wearable/FindMyPhone/Wearable/src/main/res/drawable-mdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/FindMyPhone/Wearable/src/main/res/drawable-xhdpi/ic_launcher.png b/samples/wearable/FindMyPhone/Wearable/src/main/res/drawable-xhdpi/ic_launcher.png
new file mode 100644
index 0000000..5a849da
--- /dev/null
+++ b/samples/wearable/FindMyPhone/Wearable/src/main/res/drawable-xhdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/FindMyPhone/Wearable/src/main/res/drawable-xxhdpi/ic_launcher.png b/samples/wearable/FindMyPhone/Wearable/src/main/res/drawable-xxhdpi/ic_launcher.png
new file mode 100644
index 0000000..96a7cb8
--- /dev/null
+++ b/samples/wearable/FindMyPhone/Wearable/src/main/res/drawable-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/FindMyPhone/Wearable/src/main/res/values/strings.xml b/samples/wearable/FindMyPhone/Wearable/src/main/res/values/strings.xml
new file mode 100644
index 0000000..b72dc82
--- /dev/null
+++ b/samples/wearable/FindMyPhone/Wearable/src/main/res/values/strings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+
+    <string name="app_name">Find My Phone</string>
+    <string name="left_phone_title">Forgetting something?</string>
+    <string name="left_phone_content">You may have left your phone behind.</string>
+    <string name="turn_alarm_on">Tap to sound an alarm on phone.</string>
+    <string name="turn_alarm_off">Tap to stop the alarm.</string>
+
+</resources>
diff --git a/samples/wearable/FindMyPhone/build.gradle b/samples/wearable/FindMyPhone/build.gradle
new file mode 100644
index 0000000..f9e56ee
--- /dev/null
+++ b/samples/wearable/FindMyPhone/build.gradle
@@ -0,0 +1,16 @@
+// Top-level build file where you can add configuration options common to all sub-projects/modules.
+
+buildscript {
+    repositories {
+        mavenCentral()
+    }
+    dependencies {
+        classpath 'com.android.tools.build:gradle:0.11.+'
+    }
+}
+
+allprojects {
+    repositories {
+        mavenCentral()
+    }
+}
\ No newline at end of file
diff --git a/samples/wearable/FindMyPhone/gradle.properties b/samples/wearable/FindMyPhone/gradle.properties
new file mode 100644
index 0000000..5d08ba7
--- /dev/null
+++ b/samples/wearable/FindMyPhone/gradle.properties
@@ -0,0 +1,18 @@
+# Project-wide Gradle settings.
+
+# IDE (e.g. Android Studio) users:
+# Settings specified in this file will override any Gradle settings
+# configured through the IDE.
+
+# For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+# Default value: -Xmx10248m -XX:MaxPermSize=256m
+# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
+
+# When configured, Gradle will run in incubating parallel mode.
+# This option should only be used with decoupled projects. More details, visit
+# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
+# org.gradle.parallel=true
\ No newline at end of file
diff --git a/samples/wearable/FindMyPhone/gradle/wrapper/gradle-wrapper.jar b/samples/wearable/FindMyPhone/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 0000000..5838598
--- /dev/null
+++ b/samples/wearable/FindMyPhone/gradle/wrapper/gradle-wrapper.jar
Binary files differ
diff --git a/samples/wearable/FindMyPhone/gradle/wrapper/gradle-wrapper.properties b/samples/wearable/FindMyPhone/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..e83e460
--- /dev/null
+++ b/samples/wearable/FindMyPhone/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Fri Mar 14 14:02:22 PDT 2014
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=http\://services.gradle.org/distributions/gradle-1.11-all.zip
diff --git a/samples/wearable/FindMyPhone/gradlew b/samples/wearable/FindMyPhone/gradlew
new file mode 100755
index 0000000..91a7e26
--- /dev/null
+++ b/samples/wearable/FindMyPhone/gradlew
@@ -0,0 +1,164 @@
+#!/usr/bin/env bash
+
+##############################################################################
+##
+##  Gradle start up script for UN*X
+##
+##############################################################################
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn ( ) {
+    echo "$*"
+}
+
+die ( ) {
+    echo
+    echo "$*"
+    echo
+    exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+case "`uname`" in
+  CYGWIN* )
+    cygwin=true
+    ;;
+  Darwin* )
+    darwin=true
+    ;;
+  MINGW* )
+    msys=true
+    ;;
+esac
+
+# For Cygwin, ensure paths are in UNIX format before anything is touched.
+if $cygwin ; then
+    [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
+fi
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+    ls=`ls -ld "$PRG"`
+    link=`expr "$ls" : '.*-> \(.*\)$'`
+    if expr "$link" : '/.*' > /dev/null; then
+        PRG="$link"
+    else
+        PRG=`dirname "$PRG"`"/$link"
+    fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >&-
+APP_HOME="`pwd -P`"
+cd "$SAVED" >&-
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+        # IBM's JDK on AIX uses strange locations for the executables
+        JAVACMD="$JAVA_HOME/jre/sh/java"
+    else
+        JAVACMD="$JAVA_HOME/bin/java"
+    fi
+    if [ ! -x "$JAVACMD" ] ; then
+        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+    fi
+else
+    JAVACMD="java"
+    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
+    MAX_FD_LIMIT=`ulimit -H -n`
+    if [ $? -eq 0 ] ; then
+        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+            MAX_FD="$MAX_FD_LIMIT"
+        fi
+        ulimit -n $MAX_FD
+        if [ $? -ne 0 ] ; then
+            warn "Could not set maximum file descriptor limit: $MAX_FD"
+        fi
+    else
+        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+    fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+
+    # We build the pattern for arguments to be converted via cygpath
+    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+    SEP=""
+    for dir in $ROOTDIRSRAW ; do
+        ROOTDIRS="$ROOTDIRS$SEP$dir"
+        SEP="|"
+    done
+    OURCYGPATTERN="(^($ROOTDIRS))"
+    # Add a user-defined pattern to the cygpath arguments
+    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+    fi
+    # Now convert the arguments - kludge to limit ourselves to /bin/sh
+    i=0
+    for arg in "$@" ; do
+        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
+
+        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
+            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+        else
+            eval `echo args$i`="\"$arg\""
+        fi
+        i=$((i+1))
+    done
+    case $i in
+        (0) set -- ;;
+        (1) set -- "$args0" ;;
+        (2) set -- "$args0" "$args1" ;;
+        (3) set -- "$args0" "$args1" "$args2" ;;
+        (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+        (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+        (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+        (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+        (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+        (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+    esac
+fi
+
+# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
+function splitJvmOpts() {
+    JVM_OPTS=("$@")
+}
+eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
+JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
+
+exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
diff --git a/samples/wearable/FindMyPhone/gradlew.bat b/samples/wearable/FindMyPhone/gradlew.bat
new file mode 100644
index 0000000..aec9973
--- /dev/null
+++ b/samples/wearable/FindMyPhone/gradlew.bat
@@ -0,0 +1,90 @@
+@if "%DEBUG%" == "" @echo off

+@rem ##########################################################################

+@rem

+@rem  Gradle startup script for Windows

+@rem

+@rem ##########################################################################

+

+@rem Set local scope for the variables with windows NT shell

+if "%OS%"=="Windows_NT" setlocal

+

+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.

+set DEFAULT_JVM_OPTS=

+

+set DIRNAME=%~dp0

+if "%DIRNAME%" == "" set DIRNAME=.

+set APP_BASE_NAME=%~n0

+set APP_HOME=%DIRNAME%

+

+@rem Find java.exe

+if defined JAVA_HOME goto findJavaFromJavaHome

+

+set JAVA_EXE=java.exe

+%JAVA_EXE% -version >NUL 2>&1

+if "%ERRORLEVEL%" == "0" goto init

+

+echo.

+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.

+echo.

+echo Please set the JAVA_HOME variable in your environment to match the

+echo location of your Java installation.

+

+goto fail

+

+:findJavaFromJavaHome

+set JAVA_HOME=%JAVA_HOME:"=%

+set JAVA_EXE=%JAVA_HOME%/bin/java.exe

+

+if exist "%JAVA_EXE%" goto init

+

+echo.

+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%

+echo.

+echo Please set the JAVA_HOME variable in your environment to match the

+echo location of your Java installation.

+

+goto fail

+

+:init

+@rem Get command-line arguments, handling Windowz variants

+

+if not "%OS%" == "Windows_NT" goto win9xME_args

+if "%@eval[2+2]" == "4" goto 4NT_args

+

+:win9xME_args

+@rem Slurp the command line arguments.

+set CMD_LINE_ARGS=

+set _SKIP=2

+

+:win9xME_args_slurp

+if "x%~1" == "x" goto execute

+

+set CMD_LINE_ARGS=%*

+goto execute

+

+:4NT_args

+@rem Get arguments from the 4NT Shell from JP Software

+set CMD_LINE_ARGS=%$

+

+:execute

+@rem Setup the command line

+

+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar

+

+@rem Execute Gradle

+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%

+

+:end

+@rem End local scope for the variables with windows NT shell

+if "%ERRORLEVEL%"=="0" goto mainEnd

+

+:fail

+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of

+rem the _cmd.exe /c_ return code!

+if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1

+exit /b 1

+

+:mainEnd

+if "%OS%"=="Windows_NT" endlocal

+

+:omega

diff --git a/samples/wearable/FindMyPhone/settings.gradle b/samples/wearable/FindMyPhone/settings.gradle
new file mode 100644
index 0000000..f3f25a5
--- /dev/null
+++ b/samples/wearable/FindMyPhone/settings.gradle
@@ -0,0 +1 @@
+include 'Wearable', 'Application'
diff --git a/samples/wearable/Flashlight/Wearable/build.gradle b/samples/wearable/Flashlight/Wearable/build.gradle
new file mode 100644
index 0000000..58ffd2c
--- /dev/null
+++ b/samples/wearable/Flashlight/Wearable/build.gradle
@@ -0,0 +1,29 @@
+apply plugin: 'android'
+
+android {
+    compileSdkVersion 20
+    buildToolsVersion '20'
+
+    defaultConfig {
+        minSdkVersion 20
+        targetSdkVersion 20
+        versionCode 1
+        versionName "1.0"
+    }
+
+    buildTypes {
+        release {
+            runProguard false
+            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
+        }
+    }
+
+    lintOptions {
+        abortOnError false
+    }
+}
+
+dependencies {
+    compile "com.android.support:support-v13:20.0.+"
+    compile "com.google.android.support:wearable:1.0.+"
+}
diff --git a/samples/wearable/Flashlight/Wearable/proguard-rules.txt b/samples/wearable/Flashlight/Wearable/proguard-rules.txt
new file mode 100644
index 0000000..277118a
--- /dev/null
+++ b/samples/wearable/Flashlight/Wearable/proguard-rules.txt
@@ -0,0 +1,44 @@
+# Add project specific ProGuard rules here.
+# By default, the flags in this file are appended to flags specified
+# in ${sdk.dir}/tools/proguard/proguard-android.txt
+# You can edit the include path and order by changing the ProGuard
+# include property in project.properties.
+#
+# For more details, see
+#   http://developer.android.com/guide/developing/tools/proguard.html
+
+# Add classes here when necessary.
+
+-keep class android.support.wearable.view.WearableListView {
+  private void setScrollAnimator(int);
+  private void setScrollVertically(int);
+}
+-keep class android.support.wearable.view.WearableListView.ViewHolder {
+  private void setFocusPaddingTop(int);
+  private void setFocusPaddingBottom(int);
+}
+
+# GmsCore Proguard rules.
+# See: https://developer.android.com/google/play-services/setup.html
+-keep class * extends java.util.ListResourceBundle {
+    protected Object[][] getContents();
+}
+
+# Keep SafeParcelable value, needed for reflection. This is required to support backwards
+# compatibility of some classes.
+-keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable {
+    public static final *** NULL;
+}
+
+# Keep the names of classes/members we need for client functionality.
+-keepnames @com.google.android.gms.common.annotation.KeepName class *
+-keepclassmembernames class * {
+    @com.google.android.gms.common.annotation.KeepName *;
+}
+
+# Needed for Parcelable/SafeParcelable Creators to not get stripped
+-keepnames class * implements android.os.Parcelable {
+    public static final ** CREATOR;
+}
+
+# End GmsCore Proguard rules.
diff --git a/samples/wearable/Flashlight/Wearable/src/main/AndroidManifest.xml b/samples/wearable/Flashlight/Wearable/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..ee05292
--- /dev/null
+++ b/samples/wearable/Flashlight/Wearable/src/main/AndroidManifest.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+          package="com.example.android.wearable.flashlight" >
+
+    <uses-sdk android:minSdkVersion="20" android:targetSdkVersion="20" />
+
+    <application
+            android:label="@string/app_name"
+            android:icon="@drawable/ic_launcher"
+            android:theme="@android:style/Theme.DeviceDefault" >
+        <activity android:name=".MainActivity"
+                  android:label="@string/app_name"
+                  android:launchMode="singleTop"
+                  android:configChanges="orientation|keyboardHidden">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.LAUNCHER" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity>
+    </application>
+</manifest>
diff --git a/samples/wearable/Flashlight/Wearable/src/main/java/com/example/android/wearable/flashlight/MainActivity.java b/samples/wearable/Flashlight/Wearable/src/main/java/com/example/android/wearable/flashlight/MainActivity.java
new file mode 100644
index 0000000..f32b993
--- /dev/null
+++ b/samples/wearable/Flashlight/Wearable/src/main/java/com/example/android/wearable/flashlight/MainActivity.java
@@ -0,0 +1,109 @@
+package com.example.android.wearable.flashlight;
+
+import android.app.Activity;
+import android.app.Fragment;
+import android.app.FragmentManager;
+import android.os.Bundle;
+import android.support.v13.app.FragmentPagerAdapter;
+import android.support.v4.view.ViewPager;
+import android.support.v4.view.ViewPager.OnPageChangeListener;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import java.util.ArrayList;
+
+/**
+ * Let there be light.
+ */
+public class MainActivity extends Activity {
+
+    private ViewPager mViewPager;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        setContentView(R.layout.main);
+        mViewPager = (ViewPager) findViewById(R.id.pager);
+        final LightFragmentAdapter adapter = new LightFragmentAdapter(getFragmentManager());
+        adapter.addFragment(new WhiteLightFragment());
+        final PartyLightFragment partyFragment = new PartyLightFragment();
+        adapter.addFragment(partyFragment);
+        mViewPager.setAdapter(adapter);
+        mViewPager.setOnPageChangeListener(new OnPageChangeListener() {
+
+            @Override
+            public void onPageSelected(int position) {
+                if (position == 1) {
+                    partyFragment.startCycling();
+                } else {
+                    partyFragment.stopCycling();
+                }
+            }
+
+            @Override
+            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
+            }
+
+            @Override
+            public void onPageScrollStateChanged(int state) {
+            }
+        });
+    }
+
+    static class LightFragmentAdapter extends FragmentPagerAdapter {
+        private ArrayList<Fragment> mFragments;
+
+        public LightFragmentAdapter(FragmentManager fm) {
+            super(fm);
+            mFragments = new ArrayList<Fragment>();
+        }
+
+        @Override
+        public Fragment getItem(int position) {
+            return mFragments.get(position);
+        }
+
+        @Override
+        public int getCount() {
+            return mFragments.size();
+        }
+
+        public void addFragment(Fragment fragment) {
+            mFragments.add(fragment);
+            // Update the pager when adding a fragment.
+            notifyDataSetChanged();
+        }
+    }
+
+    static class WhiteLightFragment extends Fragment {
+
+        @Override
+        public View onCreateView(LayoutInflater inflater, ViewGroup container,
+                Bundle savedInstanceState) {
+            return inflater.inflate(R.layout.white_light, container, false);
+        }
+    }
+
+    static class PartyLightFragment extends Fragment {
+
+        private PartyLightView mView;
+
+        @Override
+        public View onCreateView(LayoutInflater inflater, ViewGroup container,
+                Bundle savedInstanceState) {
+            mView = (PartyLightView) inflater.inflate(R.layout.party_light, container, false);
+            return mView;
+        }
+
+        public void startCycling() {
+            mView.startCycling();
+        }
+
+        public void stopCycling() {
+            mView.stopCycling();
+        }
+
+    }
+}
diff --git a/samples/wearable/Flashlight/Wearable/src/main/java/com/example/android/wearable/flashlight/PartyLightView.java b/samples/wearable/Flashlight/Wearable/src/main/java/com/example/android/wearable/flashlight/PartyLightView.java
new file mode 100644
index 0000000..7de1309
--- /dev/null
+++ b/samples/wearable/Flashlight/Wearable/src/main/java/com/example/android/wearable/flashlight/PartyLightView.java
@@ -0,0 +1,104 @@
+package com.example.android.wearable.flashlight;
+
+import android.animation.ArgbEvaluator;
+import android.content.Context;
+import android.graphics.Canvas;
+import android.graphics.Color;
+import android.os.Handler;
+import android.os.Message;
+import android.util.AttributeSet;
+import android.view.View;
+
+/**
+ * Flashing party lights!
+ */
+public class PartyLightView extends View {
+
+    private int[] mColors = new int[] {
+            Color.RED,
+            Color.GREEN,
+            Color.BLUE,
+            Color.CYAN,
+            Color.MAGENTA
+    };
+
+    private int mFromColorIndex;
+    private int mToColorIndex;
+
+    /**
+     * Value b/t 0 and 1.
+     */
+    private float mProgress;
+
+    private ArgbEvaluator mEvaluator;
+
+    private int mCurrentColor;
+
+    private Handler mHandler;
+
+    public PartyLightView(Context context) {
+        super(context);
+        init();
+    }
+
+    public PartyLightView(Context context, AttributeSet attrs) {
+        super(context, attrs);
+        init();
+    }
+
+    @Override
+    protected void onDraw(Canvas canvas) {
+        canvas.drawColor(mCurrentColor);
+        super.onDraw(canvas);
+    }
+
+    public void startCycling() {
+        mHandler.sendEmptyMessage(0);
+    }
+
+    public void stopCycling() {
+        mHandler.removeMessages(0);
+    }
+
+    private void init() {
+        mEvaluator = new ArgbEvaluator();
+        mHandler = new Handler() {
+
+            @Override
+            public void handleMessage(Message msg) {
+                mCurrentColor = getColor(mProgress, mColors[mFromColorIndex],
+                        mColors[mToColorIndex]);
+                postInvalidate();
+                mProgress += 0.1;
+                if (mProgress > 1.0) {
+                    mFromColorIndex = mToColorIndex;
+                    // Find a new color.
+                    mToColorIndex++;
+                    if (mToColorIndex >= mColors.length) {
+                        mToColorIndex = 0;
+                    }
+                }
+                mHandler.sendEmptyMessageDelayed(0, 100);
+            }
+        };
+    }
+
+    private int getColor(float fraction, int colorStart, int colorEnd) {
+        int startInt = colorStart;
+        int startA = (startInt >> 24) & 0xff;
+        int startR = (startInt >> 16) & 0xff;
+        int startG = (startInt >> 8) & 0xff;
+        int startB = startInt & 0xff;
+
+        int endInt = colorEnd;
+        int endA = (endInt >> 24) & 0xff;
+        int endR = (endInt >> 16) & 0xff;
+        int endG = (endInt >> 8) & 0xff;
+        int endB = endInt & 0xff;
+
+        return (startA + (int)(fraction * (endA - startA))) << 24 |
+                (startR + (int)(fraction * (endR - startR))) << 16 |
+                (startG + (int)(fraction * (endG - startG))) << 8 |
+                ((startB + (int)(fraction * (endB - startB))));
+    }
+}
diff --git a/samples/wearable/Flashlight/Wearable/src/main/res/drawable-hdpi/ic_launcher.png b/samples/wearable/Flashlight/Wearable/src/main/res/drawable-hdpi/ic_launcher.png
new file mode 100755
index 0000000..589f229
--- /dev/null
+++ b/samples/wearable/Flashlight/Wearable/src/main/res/drawable-hdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/Flashlight/Wearable/src/main/res/drawable-mdpi/ic_launcher.png b/samples/wearable/Flashlight/Wearable/src/main/res/drawable-mdpi/ic_launcher.png
new file mode 100755
index 0000000..77dd571
--- /dev/null
+++ b/samples/wearable/Flashlight/Wearable/src/main/res/drawable-mdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/Flashlight/Wearable/src/main/res/drawable-xhdpi/ic_launcher.png b/samples/wearable/Flashlight/Wearable/src/main/res/drawable-xhdpi/ic_launcher.png
new file mode 100755
index 0000000..fe34ebe
--- /dev/null
+++ b/samples/wearable/Flashlight/Wearable/src/main/res/drawable-xhdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/Flashlight/Wearable/src/main/res/drawable-xxhdpi/ic_launcher.png b/samples/wearable/Flashlight/Wearable/src/main/res/drawable-xxhdpi/ic_launcher.png
new file mode 100755
index 0000000..ab80bcd
--- /dev/null
+++ b/samples/wearable/Flashlight/Wearable/src/main/res/drawable-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/Flashlight/Wearable/src/main/res/layout/main.xml b/samples/wearable/Flashlight/Wearable/src/main/res/layout/main.xml
new file mode 100644
index 0000000..934a922
--- /dev/null
+++ b/samples/wearable/Flashlight/Wearable/src/main/res/layout/main.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<android.support.v4.view.ViewPager
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/pager"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="#000"
+    android:keepScreenOn="true"
+    />
diff --git a/samples/wearable/Flashlight/Wearable/src/main/res/layout/party_light.xml b/samples/wearable/Flashlight/Wearable/src/main/res/layout/party_light.xml
new file mode 100644
index 0000000..26d333b
--- /dev/null
+++ b/samples/wearable/Flashlight/Wearable/src/main/res/layout/party_light.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<com.example.android.wearable.flashlight.PartyLightView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    />
diff --git a/samples/wearable/Flashlight/Wearable/src/main/res/layout/white_light.xml b/samples/wearable/Flashlight/Wearable/src/main/res/layout/white_light.xml
new file mode 100644
index 0000000..de3ad9f
--- /dev/null
+++ b/samples/wearable/Flashlight/Wearable/src/main/res/layout/white_light.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<View xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="#fff"
+    />
diff --git a/samples/wearable/Flashlight/Wearable/src/main/res/values/strings.xml b/samples/wearable/Flashlight/Wearable/src/main/res/values/strings.xml
new file mode 100644
index 0000000..06f2453
--- /dev/null
+++ b/samples/wearable/Flashlight/Wearable/src/main/res/values/strings.xml
@@ -0,0 +1,5 @@
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Name of the wearable app [CHAR LIMIT=NONE] -->
+    <string name="app_name">Flashlight</string>
+
+</resources>
diff --git a/samples/wearable/Flashlight/build.gradle b/samples/wearable/Flashlight/build.gradle
new file mode 100644
index 0000000..4c8f6d8
--- /dev/null
+++ b/samples/wearable/Flashlight/build.gradle
@@ -0,0 +1,16 @@
+// Top-level build file where you can add configuration options common to all sub-projects/modules.
+
+buildscript {
+    repositories {
+        mavenCentral()
+    }
+    dependencies {
+        classpath 'com.android.tools.build:gradle:0.11.+'
+    }
+}
+
+allprojects {
+    repositories {
+        mavenCentral()
+    }
+}
diff --git a/samples/wearable/Flashlight/gradle/wrapper/gradle-wrapper.jar b/samples/wearable/Flashlight/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 0000000..5838598
--- /dev/null
+++ b/samples/wearable/Flashlight/gradle/wrapper/gradle-wrapper.jar
Binary files differ
diff --git a/samples/wearable/Flashlight/gradle/wrapper/gradle-wrapper.properties b/samples/wearable/Flashlight/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..e83e460
--- /dev/null
+++ b/samples/wearable/Flashlight/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Fri Mar 14 14:02:22 PDT 2014
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=http\://services.gradle.org/distributions/gradle-1.11-all.zip
diff --git a/samples/wearable/Flashlight/gradlew b/samples/wearable/Flashlight/gradlew
new file mode 100755
index 0000000..91a7e26
--- /dev/null
+++ b/samples/wearable/Flashlight/gradlew
@@ -0,0 +1,164 @@
+#!/usr/bin/env bash
+
+##############################################################################
+##
+##  Gradle start up script for UN*X
+##
+##############################################################################
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn ( ) {
+    echo "$*"
+}
+
+die ( ) {
+    echo
+    echo "$*"
+    echo
+    exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+case "`uname`" in
+  CYGWIN* )
+    cygwin=true
+    ;;
+  Darwin* )
+    darwin=true
+    ;;
+  MINGW* )
+    msys=true
+    ;;
+esac
+
+# For Cygwin, ensure paths are in UNIX format before anything is touched.
+if $cygwin ; then
+    [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
+fi
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+    ls=`ls -ld "$PRG"`
+    link=`expr "$ls" : '.*-> \(.*\)$'`
+    if expr "$link" : '/.*' > /dev/null; then
+        PRG="$link"
+    else
+        PRG=`dirname "$PRG"`"/$link"
+    fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >&-
+APP_HOME="`pwd -P`"
+cd "$SAVED" >&-
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+        # IBM's JDK on AIX uses strange locations for the executables
+        JAVACMD="$JAVA_HOME/jre/sh/java"
+    else
+        JAVACMD="$JAVA_HOME/bin/java"
+    fi
+    if [ ! -x "$JAVACMD" ] ; then
+        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+    fi
+else
+    JAVACMD="java"
+    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
+    MAX_FD_LIMIT=`ulimit -H -n`
+    if [ $? -eq 0 ] ; then
+        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+            MAX_FD="$MAX_FD_LIMIT"
+        fi
+        ulimit -n $MAX_FD
+        if [ $? -ne 0 ] ; then
+            warn "Could not set maximum file descriptor limit: $MAX_FD"
+        fi
+    else
+        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+    fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+
+    # We build the pattern for arguments to be converted via cygpath
+    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+    SEP=""
+    for dir in $ROOTDIRSRAW ; do
+        ROOTDIRS="$ROOTDIRS$SEP$dir"
+        SEP="|"
+    done
+    OURCYGPATTERN="(^($ROOTDIRS))"
+    # Add a user-defined pattern to the cygpath arguments
+    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+    fi
+    # Now convert the arguments - kludge to limit ourselves to /bin/sh
+    i=0
+    for arg in "$@" ; do
+        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
+
+        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
+            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+        else
+            eval `echo args$i`="\"$arg\""
+        fi
+        i=$((i+1))
+    done
+    case $i in
+        (0) set -- ;;
+        (1) set -- "$args0" ;;
+        (2) set -- "$args0" "$args1" ;;
+        (3) set -- "$args0" "$args1" "$args2" ;;
+        (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+        (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+        (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+        (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+        (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+        (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+    esac
+fi
+
+# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
+function splitJvmOpts() {
+    JVM_OPTS=("$@")
+}
+eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
+JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
+
+exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
diff --git a/samples/wearable/Flashlight/gradlew.bat b/samples/wearable/Flashlight/gradlew.bat
new file mode 100755
index 0000000..aec9973
--- /dev/null
+++ b/samples/wearable/Flashlight/gradlew.bat
@@ -0,0 +1,90 @@
+@if "%DEBUG%" == "" @echo off

+@rem ##########################################################################

+@rem

+@rem  Gradle startup script for Windows

+@rem

+@rem ##########################################################################

+

+@rem Set local scope for the variables with windows NT shell

+if "%OS%"=="Windows_NT" setlocal

+

+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.

+set DEFAULT_JVM_OPTS=

+

+set DIRNAME=%~dp0

+if "%DIRNAME%" == "" set DIRNAME=.

+set APP_BASE_NAME=%~n0

+set APP_HOME=%DIRNAME%

+

+@rem Find java.exe

+if defined JAVA_HOME goto findJavaFromJavaHome

+

+set JAVA_EXE=java.exe

+%JAVA_EXE% -version >NUL 2>&1

+if "%ERRORLEVEL%" == "0" goto init

+

+echo.

+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.

+echo.

+echo Please set the JAVA_HOME variable in your environment to match the

+echo location of your Java installation.

+

+goto fail

+

+:findJavaFromJavaHome

+set JAVA_HOME=%JAVA_HOME:"=%

+set JAVA_EXE=%JAVA_HOME%/bin/java.exe

+

+if exist "%JAVA_EXE%" goto init

+

+echo.

+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%

+echo.

+echo Please set the JAVA_HOME variable in your environment to match the

+echo location of your Java installation.

+

+goto fail

+

+:init

+@rem Get command-line arguments, handling Windowz variants

+

+if not "%OS%" == "Windows_NT" goto win9xME_args

+if "%@eval[2+2]" == "4" goto 4NT_args

+

+:win9xME_args

+@rem Slurp the command line arguments.

+set CMD_LINE_ARGS=

+set _SKIP=2

+

+:win9xME_args_slurp

+if "x%~1" == "x" goto execute

+

+set CMD_LINE_ARGS=%*

+goto execute

+

+:4NT_args

+@rem Get arguments from the 4NT Shell from JP Software

+set CMD_LINE_ARGS=%$

+

+:execute

+@rem Setup the command line

+

+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar

+

+@rem Execute Gradle

+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%

+

+:end

+@rem End local scope for the variables with windows NT shell

+if "%ERRORLEVEL%"=="0" goto mainEnd

+

+:fail

+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of

+rem the _cmd.exe /c_ return code!

+if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1

+exit /b 1

+

+:mainEnd

+if "%OS%"=="Windows_NT" endlocal

+

+:omega

diff --git a/samples/wearable/Flashlight/settings.gradle b/samples/wearable/Flashlight/settings.gradle
new file mode 100644
index 0000000..1d97d30
--- /dev/null
+++ b/samples/wearable/Flashlight/settings.gradle
@@ -0,0 +1 @@
+include ':Wearable'
diff --git a/samples/wearable/Geofencing/Application/build.gradle b/samples/wearable/Geofencing/Application/build.gradle
new file mode 100644
index 0000000..7de0d36
--- /dev/null
+++ b/samples/wearable/Geofencing/Application/build.gradle
@@ -0,0 +1,30 @@
+apply plugin: 'android'
+
+android {
+    compileSdkVersion 20
+    buildToolsVersion '20'
+
+    defaultConfig {
+        minSdkVersion 18
+        targetSdkVersion 20
+        versionCode 1
+        versionName "1.0"
+    }
+
+    buildTypes {
+        release {
+            runProguard false
+            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
+        }
+    }
+
+    aaptOptions {
+        noCompress 'apk'
+    }
+}
+
+dependencies {
+    compile 'com.google.android.gms:play-services:5.0.+@aar'
+    compile "com.android.support:support-v4:20.0.+"
+    wearApp project(':Wearable')
+}
\ No newline at end of file
diff --git a/samples/wearable/Geofencing/Application/proguard-rules.txt b/samples/wearable/Geofencing/Application/proguard-rules.txt
new file mode 100644
index 0000000..5b89420
--- /dev/null
+++ b/samples/wearable/Geofencing/Application/proguard-rules.txt
@@ -0,0 +1,20 @@
+# To enable ProGuard in your project, edit project.properties
+# to define the proguard.config property as described in that file.
+#
+# Add project specific ProGuard rules here.
+# By default, the flags in this file are appended to flags specified
+# in ${sdk.dir}/tools/proguard/proguard-android.txt
+# You can edit the include path and order by changing the ProGuard
+# include property in project.properties.
+#
+# For more details, see
+#   http://developer.android.com/guide/developing/tools/proguard.html
+
+# Add any project specific keep options here:
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+#   public *;
+#}
\ No newline at end of file
diff --git a/samples/wearable/Geofencing/Application/project.properties b/samples/wearable/Geofencing/Application/project.properties
new file mode 100644
index 0000000..4ab1256
--- /dev/null
+++ b/samples/wearable/Geofencing/Application/project.properties
@@ -0,0 +1,14 @@
+# This file is automatically generated by Android Tools.
+# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
+#
+# This file must be checked in Version Control Systems.
+#
+# To customize properties used by the Ant build system edit
+# "ant.properties", and override values to adapt the script to your
+# project structure.
+#
+# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
+#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
+
+# Project target.
+target=android-19
diff --git a/samples/wearable/Geofencing/Application/src/main/AndroidManifest.xml b/samples/wearable/Geofencing/Application/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..d56f37d
--- /dev/null
+++ b/samples/wearable/Geofencing/Application/src/main/AndroidManifest.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+          package="com.example.android.wearable.geofencing">
+
+    <uses-sdk android:minSdkVersion="18" android:targetSdkVersion="20"/>
+
+    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
+
+    <application
+            android:icon="@drawable/ic_launcher"
+            android:label="@string/app_name"
+            android:theme="@android:style/Theme.Holo.Light"
+            android:allowBackup="true">
+
+        <meta-data
+                android:name="com.google.android.gms.version"
+                android:value="@integer/google_play_services_version"/>
+
+        <activity
+                android:name=".MainActivity"
+                android:label="@string/app_name"
+                android:theme="@android:style/Theme.Translucent.NoTitleBar"
+                android:excludeFromRecents="true">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN"/>
+                <category android:name="android.intent.category.LAUNCHER"/>
+            </intent-filter>
+        </activity>
+
+        <service
+            android:name=".GeofenceTransitionsIntentService"
+            android:exported="false">
+        </service>
+    </application>
+</manifest>
diff --git a/samples/wearable/Geofencing/Application/src/main/java/com/example/android/wearable/geofencing/Constants.java b/samples/wearable/Geofencing/Application/src/main/java/com/example/android/wearable/geofencing/Constants.java
new file mode 100644
index 0000000..628acf2
--- /dev/null
+++ b/samples/wearable/Geofencing/Application/src/main/java/com/example/android/wearable/geofencing/Constants.java
@@ -0,0 +1,61 @@
+package com.example.android.wearable.geofencing;
+
+import android.net.Uri;
+
+import com.google.android.gms.location.Geofence;
+
+/** Constants used in companion app. */
+public final class Constants {
+
+    private Constants() {
+    }
+
+    public static final String TAG = "ExampleGeofencingApp";
+
+    // Request code to attempt to resolve Google Play services connection failures.
+    public final static int CONNECTION_FAILURE_RESOLUTION_REQUEST = 9000;
+    // Timeout for making a connection to GoogleApiClient (in milliseconds).
+    public static final long CONNECTION_TIME_OUT_MS = 100;
+
+    // For the purposes of this demo, the geofences are hard-coded and should not expire.
+    // An app with dynamically-created geofences would want to include a reasonable expiration time.
+    public static final long GEOFENCE_EXPIRATION_TIME = Geofence.NEVER_EXPIRE;
+
+    // Geofence parameters for the Android building on Google's main campus in Mountain View.
+    public static final String ANDROID_BUILDING_ID = "1";
+    public static final double ANDROID_BUILDING_LATITUDE = 37.420092;
+    public static final double ANDROID_BUILDING_LONGITUDE = -122.083648;
+    public static final float ANDROID_BUILDING_RADIUS_METERS = 60.0f;
+
+    // Geofence parameters for the Yerba Buena Gardens near the Moscone Center in San Francisco.
+    public static final String YERBA_BUENA_ID = "2";
+    public static final double YERBA_BUENA_LATITUDE = 37.784886;
+    public static final double YERBA_BUENA_LONGITUDE = -122.402671;
+    public static final float YERBA_BUENA_RADIUS_METERS = 72.0f;
+
+
+    // The constants below are less interesting than those above.
+
+    // Path for the DataItem containing the last geofence id entered.
+    public static final String GEOFENCE_DATA_ITEM_PATH = "/geofenceid";
+    public static final Uri GEOFENCE_DATA_ITEM_URI =
+            new Uri.Builder().scheme("wear").path(GEOFENCE_DATA_ITEM_PATH).build();
+    public static final String KEY_GEOFENCE_ID = "geofence_id";
+
+    // Keys for flattened geofences stored in SharedPreferences.
+    public static final String KEY_LATITUDE = "com.example.wearable.geofencing.KEY_LATITUDE";
+    public static final String KEY_LONGITUDE = "com.example.wearable.geofencing.KEY_LONGITUDE";
+    public static final String KEY_RADIUS = "com.example.wearable.geofencing.KEY_RADIUS";
+    public static final String KEY_EXPIRATION_DURATION =
+            "com.example.wearable.geofencing.KEY_EXPIRATION_DURATION";
+    public static final String KEY_TRANSITION_TYPE =
+            "com.example.wearable.geofencing.KEY_TRANSITION_TYPE";
+    // The prefix for flattened geofence keys.
+    public static final String KEY_PREFIX = "com.example.wearable.geofencing.KEY";
+
+    // Invalid values, used to test geofence storage when retrieving geofences.
+    public static final long INVALID_LONG_VALUE = -999l;
+    public static final float INVALID_FLOAT_VALUE = -999.0f;
+    public static final int INVALID_INT_VALUE = -999;
+
+}
diff --git a/samples/wearable/Geofencing/Application/src/main/java/com/example/android/wearable/geofencing/GeofenceTransitionsIntentService.java b/samples/wearable/Geofencing/Application/src/main/java/com/example/android/wearable/geofencing/GeofenceTransitionsIntentService.java
new file mode 100644
index 0000000..d60b15d
--- /dev/null
+++ b/samples/wearable/Geofencing/Application/src/main/java/com/example/android/wearable/geofencing/GeofenceTransitionsIntentService.java
@@ -0,0 +1,103 @@
+package com.example.android.wearable.geofencing;
+
+import static com.example.android.wearable.geofencing.Constants.CONNECTION_TIME_OUT_MS;
+import static com.example.android.wearable.geofencing.Constants.GEOFENCE_DATA_ITEM_PATH;
+import static com.example.android.wearable.geofencing.Constants.GEOFENCE_DATA_ITEM_URI;
+import static com.example.android.wearable.geofencing.Constants.KEY_GEOFENCE_ID;
+import static com.example.android.wearable.geofencing.Constants.TAG;
+
+import android.app.IntentService;
+import android.content.Intent;
+import android.os.Bundle;
+import android.util.Log;
+
+import com.google.android.gms.common.ConnectionResult;
+import com.google.android.gms.common.api.GoogleApiClient;
+import com.google.android.gms.location.Geofence;
+import com.google.android.gms.location.LocationClient;
+import com.google.android.gms.wearable.PutDataMapRequest;
+import com.google.android.gms.wearable.Wearable;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Listens for geofence transition changes.
+ */
+public class GeofenceTransitionsIntentService extends IntentService
+        implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener {
+
+    private GoogleApiClient mGoogleApiClient;
+
+    public GeofenceTransitionsIntentService() {
+        super(GeofenceTransitionsIntentService.class.getSimpleName());
+    }
+
+    @Override
+    public void onCreate() {
+        super.onCreate();
+        mGoogleApiClient = new GoogleApiClient.Builder(this)
+                .addApi(Wearable.API)
+                .addConnectionCallbacks(this)
+                .addOnConnectionFailedListener(this)
+                .build();
+    }
+
+    /**
+     * Handles incoming intents.
+     * @param intent The Intent sent by Location Services. This Intent is provided to Location
+     *               Services (inside a PendingIntent) when addGeofences() is called.
+     */
+    @Override
+    protected void onHandleIntent(Intent intent) {
+        // First check for errors.
+        if (LocationClient.hasError(intent)) {
+            int errorCode = LocationClient.getErrorCode(intent);
+            Log.e(TAG, "Location Services error: " + errorCode);
+        } else {
+            // Get the type of geofence transition (i.e. enter or exit in this sample).
+            int transitionType = LocationClient.getGeofenceTransition(intent);
+            // Create a DataItem when a user enters one of the geofences. The wearable app will
+            // receive this and create a notification to prompt him/her to check in.
+            if (Geofence.GEOFENCE_TRANSITION_ENTER == transitionType) {
+                // Connect to the Google Api service in preparation for sending a DataItem.
+                mGoogleApiClient.blockingConnect(CONNECTION_TIME_OUT_MS, TimeUnit.MILLISECONDS);
+                // Get the geofence id triggered. Note that only one geofence can be triggered at a
+                // time in this example, but in some cases you might want to consider the full list
+                // of geofences triggered.
+                String triggeredGeofenceId = LocationClient.getTriggeringGeofences(intent).get(0)
+                        .getRequestId();
+                // Create a DataItem with this geofence's id. The wearable can use this to create
+                // a notification.
+                final PutDataMapRequest putDataMapRequest =
+                        PutDataMapRequest.create(GEOFENCE_DATA_ITEM_PATH);
+                putDataMapRequest.getDataMap().putString(KEY_GEOFENCE_ID, triggeredGeofenceId);
+                if (mGoogleApiClient.isConnected()) {
+                    Wearable.DataApi.putDataItem(
+                        mGoogleApiClient, putDataMapRequest.asPutDataRequest()).await();
+                } else {
+                    Log.e(TAG, "Failed to send data item: " + putDataMapRequest
+                             + " - Client disconnected from Google Play Services");
+                }
+                mGoogleApiClient.disconnect();
+            } else if (Geofence.GEOFENCE_TRANSITION_EXIT == transitionType) {
+                // Delete the data item when leaving a geofence region.
+                mGoogleApiClient.blockingConnect(CONNECTION_TIME_OUT_MS, TimeUnit.MILLISECONDS);
+                Wearable.DataApi.deleteDataItems(mGoogleApiClient, GEOFENCE_DATA_ITEM_URI).await();
+                mGoogleApiClient.disconnect();
+            }
+        }
+    }
+
+    @Override
+    public void onConnected(Bundle connectionHint) {
+    }
+
+    @Override
+    public void onConnectionSuspended(int cause) {
+    }
+
+    @Override
+    public void onConnectionFailed(ConnectionResult result) {
+    }
+
+}
diff --git a/samples/wearable/Geofencing/Application/src/main/java/com/example/android/wearable/geofencing/MainActivity.java b/samples/wearable/Geofencing/Application/src/main/java/com/example/android/wearable/geofencing/MainActivity.java
new file mode 100644
index 0000000..c8bf1ff
--- /dev/null
+++ b/samples/wearable/Geofencing/Application/src/main/java/com/example/android/wearable/geofencing/MainActivity.java
@@ -0,0 +1,224 @@
+package com.example.android.wearable.geofencing;
+
+import static com.example.android.wearable.geofencing.Constants.ANDROID_BUILDING_ID;
+import static com.example.android.wearable.geofencing.Constants.ANDROID_BUILDING_LATITUDE;
+import static com.example.android.wearable.geofencing.Constants.ANDROID_BUILDING_LONGITUDE;
+import static com.example.android.wearable.geofencing.Constants.ANDROID_BUILDING_RADIUS_METERS;
+import static com.example.android.wearable.geofencing.Constants.CONNECTION_FAILURE_RESOLUTION_REQUEST;
+import static com.example.android.wearable.geofencing.Constants.GEOFENCE_EXPIRATION_TIME;
+import static com.example.android.wearable.geofencing.Constants.TAG;
+import static com.example.android.wearable.geofencing.Constants.YERBA_BUENA_ID;
+import static com.example.android.wearable.geofencing.Constants.YERBA_BUENA_LATITUDE;
+import static com.example.android.wearable.geofencing.Constants.YERBA_BUENA_LONGITUDE;
+import static com.example.android.wearable.geofencing.Constants.YERBA_BUENA_RADIUS_METERS;
+
+import android.app.Activity;
+import android.app.PendingIntent;
+import android.content.Intent;
+import android.content.IntentSender;
+import android.os.Bundle;
+import android.util.Log;
+import android.widget.Toast;
+
+import com.google.android.gms.common.ConnectionResult;
+import com.google.android.gms.common.GooglePlayServicesClient.ConnectionCallbacks;
+import com.google.android.gms.common.GooglePlayServicesUtil;
+import com.google.android.gms.common.api.GoogleApiClient.OnConnectionFailedListener;
+import com.google.android.gms.location.Geofence;
+import com.google.android.gms.location.LocationClient;
+import com.google.android.gms.location.LocationClient.OnAddGeofencesResultListener;
+import com.google.android.gms.location.LocationStatusCodes;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class MainActivity extends Activity implements ConnectionCallbacks,
+        OnConnectionFailedListener, OnAddGeofencesResultListener {
+
+    // Internal List of Geofence objects. In a real app, these might be provided by an API based on
+    // locations within the user's proximity.
+    List<Geofence> mGeofenceList;
+
+    // These will store hard-coded geofences in this sample app.
+    private SimpleGeofence mAndroidBuildingGeofence;
+    private SimpleGeofence mYerbaBuenaGeofence;
+
+    // Persistent storage for geofences.
+    private SimpleGeofenceStore mGeofenceStorage;
+
+    private LocationClient mLocationClient;
+    // Stores the PendingIntent used to request geofence monitoring.
+    private PendingIntent mGeofenceRequestIntent;
+
+    // Defines the allowable request types (in this example, we only add geofences).
+    private enum REQUEST_TYPE {ADD}
+    private REQUEST_TYPE mRequestType;
+    // Flag that indicates if a request is underway.
+    private boolean mInProgress;
+
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        // Rather than displayng this activity, simply display a toast indicating that the geofence
+        // service is being created. This should happen in less than a second.
+        Toast.makeText(this, getString(R.string.start_geofence_service), Toast.LENGTH_SHORT).show();
+
+        // Instantiate a new geofence storage area.
+        mGeofenceStorage = new SimpleGeofenceStore(this);
+        // Instantiate the current List of geofences.
+        mGeofenceList = new ArrayList<Geofence>();
+        // Start with the request flag set to false.
+        mInProgress = false;
+
+        createGeofences();
+        addGeofences();
+
+        finish();
+    }
+
+    /**
+     * In this sample, the geofences are predetermined and are hard-coded here. A real app might
+     * dynamically create geofences based on the user's location.
+     */
+    public void createGeofences() {
+        // Create internal "flattened" objects containing the geofence data.
+        mAndroidBuildingGeofence = new SimpleGeofence(
+                ANDROID_BUILDING_ID,                // geofenceId.
+                ANDROID_BUILDING_LATITUDE,
+                ANDROID_BUILDING_LONGITUDE,
+                ANDROID_BUILDING_RADIUS_METERS,
+                GEOFENCE_EXPIRATION_TIME,
+                Geofence.GEOFENCE_TRANSITION_ENTER | Geofence.GEOFENCE_TRANSITION_EXIT
+        );
+        mYerbaBuenaGeofence = new SimpleGeofence(
+                YERBA_BUENA_ID,                // geofenceId.
+                YERBA_BUENA_LATITUDE,
+                YERBA_BUENA_LONGITUDE,
+                YERBA_BUENA_RADIUS_METERS,
+                GEOFENCE_EXPIRATION_TIME,
+                Geofence.GEOFENCE_TRANSITION_ENTER | Geofence.GEOFENCE_TRANSITION_EXIT
+        );
+
+        // Store these flat versions in SharedPreferences and add them to the geofence list.
+        mGeofenceStorage.setGeofence(ANDROID_BUILDING_ID, mAndroidBuildingGeofence);
+        mGeofenceStorage.setGeofence(YERBA_BUENA_ID, mYerbaBuenaGeofence);
+        mGeofenceList.add(mAndroidBuildingGeofence.toGeofence());
+        mGeofenceList.add(mYerbaBuenaGeofence.toGeofence());
+    }
+
+    /**
+     * Start a request for geofence monitoring by calling LocationClient.connect().
+     */
+    public void addGeofences() {
+        // Start a request to add geofences.
+        mRequestType = REQUEST_TYPE.ADD;
+        // Test for Google Play services after setting the request type.
+        if (!isGooglePlayServicesAvailable()) {
+            Log.e(TAG, "Unable to add geofences - Google Play services unavailable.");
+            return;
+        }
+        // Create a new location client object. Since this activity class implements
+        // ConnectionCallbacks and OnConnectionFailedListener, it can be used as the listener for
+        // both parameters.
+        mLocationClient = new LocationClient(this, this, this);
+        // If a request is not already underway.
+        if (!mInProgress) {
+            // Indicate that a request is underway.
+            mInProgress = true;
+            // Request a connection from the client to Location Services.
+            mLocationClient.connect();
+        // A request is already underway, so disconnect the client and retry the request.
+        } else {
+            mLocationClient.disconnect();
+            mLocationClient.connect();
+        }
+    }
+
+    @Override
+    public void onConnectionFailed(ConnectionResult connectionResult) {
+        mInProgress = false;
+        // If the error has a resolution, start a Google Play services activity to resolve it.
+        if (connectionResult.hasResolution()) {
+            try {
+                connectionResult.startResolutionForResult(this,
+                        CONNECTION_FAILURE_RESOLUTION_REQUEST);
+            } catch (IntentSender.SendIntentException e) {
+                Log.e(TAG, "Exception while resolving connection error.", e);
+            }
+        } else {
+            int errorCode = connectionResult.getErrorCode();
+            Log.e(TAG, "Connection to Google Play services failed with error code " + errorCode);
+        }
+    }
+
+    /**
+     * Called by Location Services if the location client disconnects.
+     */
+    @Override
+    public void onDisconnected() {
+        // Turn off the request flag.
+        mInProgress = false;
+        // Destroy the current location client.
+        mLocationClient = null;
+    }
+
+    /**
+     * Once the connection is available, send a request to add the Geofences.
+     */
+    @Override
+    public void onConnected(Bundle connectionHint) {
+        // Use mRequestType to determine what action to take. Only ADD is used in this sample.
+        if (REQUEST_TYPE.ADD == mRequestType) {
+            // Get the PendingIntent for the geofence monitoring request.
+            mGeofenceRequestIntent = getGeofenceTransitionPendingIntent();
+            // Send a request to add the current geofences.
+            mLocationClient.addGeofences(mGeofenceList, mGeofenceRequestIntent, this);
+        }
+    }
+
+    /**
+     * Called when request to add geofences is complete, with a result status code.
+     */
+    @Override
+    public void onAddGeofencesResult(int statusCode, String[] geofenceRequestIds) {
+        // Log if adding the geofences was successful.
+        if (LocationStatusCodes.SUCCESS == statusCode) {
+            if (Log.isLoggable(TAG, Log.DEBUG)) {
+                Log.d(TAG, "Added geofences successfully.");
+            }
+        } else {
+            Log.e(TAG, "Failed to add geofences. Status code: " + statusCode);
+        }
+        // Turn off the in progress flag and disconnect the client.
+        mInProgress = false;
+        mLocationClient.disconnect();
+    }
+
+    /**
+     * Checks if Google Play services is available.
+     * @return true if it is.
+     */
+    private boolean isGooglePlayServicesAvailable() {
+        int resultCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
+        if (ConnectionResult.SUCCESS == resultCode) {
+            if (Log.isLoggable(TAG, Log.DEBUG)) {
+                Log.d(TAG, "Google Play services is available.");
+            }
+            return true;
+        } else {
+            Log.e(TAG, "Google Play services is unavailable.");
+            return false;
+        }
+    }
+
+    /**
+     * Create a PendingIntent that triggers GeofenceTransitionIntentService when a geofence
+     * transition occurs.
+     */
+    private PendingIntent getGeofenceTransitionPendingIntent() {
+        Intent intent = new Intent(this, GeofenceTransitionsIntentService.class);
+        return PendingIntent.getService(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
+    }
+
+}
diff --git a/samples/wearable/Geofencing/Application/src/main/java/com/example/android/wearable/geofencing/SimpleGeofence.java b/samples/wearable/Geofencing/Application/src/main/java/com/example/android/wearable/geofencing/SimpleGeofence.java
new file mode 100644
index 0000000..be7e6bd
--- /dev/null
+++ b/samples/wearable/Geofencing/Application/src/main/java/com/example/android/wearable/geofencing/SimpleGeofence.java
@@ -0,0 +1,71 @@
+package com.example.android.wearable.geofencing;
+
+import com.google.android.gms.location.Geofence;
+
+/**
+ * A single Geofence object, defined by its center and radius.
+ */
+public class SimpleGeofence {
+
+    // Instance variables
+    private final String mId;
+    private final double mLatitude;
+    private final double mLongitude;
+    private final float mRadius;
+    private long mExpirationDuration;
+    private int mTransitionType;
+
+    /**
+     * @param geofenceId The Geofence's request ID.
+     * @param latitude Latitude of the Geofence's center in degrees.
+     * @param longitude Longitude of the Geofence's center in degrees.
+     * @param radius Radius of the geofence circle in meters.
+     * @param expiration Geofence expiration duration.
+     * @param transition Type of Geofence transition.
+     */
+    public SimpleGeofence(String geofenceId, double latitude, double longitude, float radius,
+            long expiration, int transition) {
+        // Set the instance fields from the constructor.
+        this.mId = geofenceId;
+        this.mLatitude = latitude;
+        this.mLongitude = longitude;
+        this.mRadius = radius;
+        this.mExpirationDuration = expiration;
+        this.mTransitionType = transition;
+    }
+
+    // Instance field getters.
+    public String getId() {
+        return mId;
+    }
+    public double getLatitude() {
+        return mLatitude;
+    }
+    public double getLongitude() {
+        return mLongitude;
+    }
+    public float getRadius() {
+        return mRadius;
+    }
+    public long getExpirationDuration() {
+        return mExpirationDuration;
+    }
+    public int getTransitionType() {
+        return mTransitionType;
+    }
+
+    /**
+     * Creates a Location Services Geofence object from a SimpleGeofence.
+     * @return A Geofence object.
+     */
+    public Geofence toGeofence() {
+        // Build a new Geofence object.
+        return new Geofence.Builder()
+                .setRequestId(mId)
+                .setTransitionTypes(mTransitionType)
+                .setCircularRegion(mLatitude, mLongitude, mRadius)
+                .setExpirationDuration(mExpirationDuration)
+                .build();
+    }
+
+}
diff --git a/samples/wearable/Geofencing/Application/src/main/java/com/example/android/wearable/geofencing/SimpleGeofenceStore.java b/samples/wearable/Geofencing/Application/src/main/java/com/example/android/wearable/geofencing/SimpleGeofenceStore.java
new file mode 100644
index 0000000..db93a80
--- /dev/null
+++ b/samples/wearable/Geofencing/Application/src/main/java/com/example/android/wearable/geofencing/SimpleGeofenceStore.java
@@ -0,0 +1,108 @@
+package com.example.android.wearable.geofencing;
+
+import static com.example.android.wearable.geofencing.Constants.INVALID_FLOAT_VALUE;
+import static com.example.android.wearable.geofencing.Constants.INVALID_INT_VALUE;
+import static com.example.android.wearable.geofencing.Constants.INVALID_LONG_VALUE;
+import static com.example.android.wearable.geofencing.Constants.KEY_EXPIRATION_DURATION;
+import static com.example.android.wearable.geofencing.Constants.KEY_LATITUDE;
+import static com.example.android.wearable.geofencing.Constants.KEY_LONGITUDE;
+import static com.example.android.wearable.geofencing.Constants.KEY_PREFIX;
+import static com.example.android.wearable.geofencing.Constants.KEY_RADIUS;
+import static com.example.android.wearable.geofencing.Constants.KEY_TRANSITION_TYPE;
+
+import android.content.Context;
+import android.content.SharedPreferences;
+
+/**
+ * Storage for geofence values, implemented in SharedPreferences.
+ */
+public class SimpleGeofenceStore {
+
+    // The SharedPreferences object in which geofences are stored.
+    private final SharedPreferences mPrefs;
+    // The name of the SharedPreferences.
+    private static final String SHARED_PREFERENCES = "SharedPreferences";
+
+    /**
+     * Create the SharedPreferences storage with private access only.
+     */
+    public SimpleGeofenceStore(Context context) {
+        mPrefs = context.getSharedPreferences(SHARED_PREFERENCES, Context.MODE_PRIVATE);
+    }
+
+    /**
+     * Returns a stored geofence by its id, or returns null if it's not found.
+     * @param id The ID of a stored geofence.
+     * @return A SimpleGeofence defined by its center and radius, or null if the ID is invalid.
+     */
+    public SimpleGeofence getGeofence(String id) {
+        // Get the latitude for the geofence identified by id, or INVALID_FLOAT_VALUE if it doesn't
+        // exist (similarly for the other values that follow).
+        double lat = mPrefs.getFloat(getGeofenceFieldKey(id, KEY_LATITUDE),
+                INVALID_FLOAT_VALUE);
+        double lng = mPrefs.getFloat(getGeofenceFieldKey(id, KEY_LONGITUDE),
+                INVALID_FLOAT_VALUE);
+        float radius = mPrefs.getFloat(getGeofenceFieldKey(id, KEY_RADIUS),
+                INVALID_FLOAT_VALUE);
+        long expirationDuration =
+                mPrefs.getLong(getGeofenceFieldKey(id, KEY_EXPIRATION_DURATION),
+                        INVALID_LONG_VALUE);
+        int transitionType = mPrefs.getInt(getGeofenceFieldKey(id, KEY_TRANSITION_TYPE),
+                INVALID_INT_VALUE);
+        // If none of the values is incorrect, return the object.
+        if (lat != INVALID_FLOAT_VALUE
+                && lng != INVALID_FLOAT_VALUE
+                && radius != INVALID_FLOAT_VALUE
+                && expirationDuration != INVALID_LONG_VALUE
+                && transitionType != INVALID_INT_VALUE) {
+            return new SimpleGeofence(id, lat, lng, radius, expirationDuration, transitionType);
+        }
+        // Otherwise, return null.
+        return null;
+    }
+
+    /**
+     * Save a geofence.
+     * @param geofence The SimpleGeofence with the values you want to save in SharedPreferences.
+     */
+    public void setGeofence(String id, SimpleGeofence geofence) {
+        // Get a SharedPreferences editor instance. Among other things, SharedPreferences
+        // ensures that updates are atomic and non-concurrent.
+        SharedPreferences.Editor prefs = mPrefs.edit();
+        // Write the Geofence values to SharedPreferences.
+        prefs.putFloat(getGeofenceFieldKey(id, KEY_LATITUDE), (float) geofence.getLatitude());
+        prefs.putFloat(getGeofenceFieldKey(id, KEY_LONGITUDE), (float) geofence.getLongitude());
+        prefs.putFloat(getGeofenceFieldKey(id, KEY_RADIUS), geofence.getRadius());
+        prefs.putLong(getGeofenceFieldKey(id, KEY_EXPIRATION_DURATION),
+                geofence.getExpirationDuration());
+        prefs.putInt(getGeofenceFieldKey(id, KEY_TRANSITION_TYPE),
+                geofence.getTransitionType());
+        // Commit the changes.
+        prefs.commit();
+    }
+
+    /**
+     * Remove a flattened geofence object from storage by removing all of its keys.
+     */
+    public void clearGeofence(String id) {
+        SharedPreferences.Editor prefs = mPrefs.edit();
+        prefs.remove(getGeofenceFieldKey(id, KEY_LATITUDE));
+        prefs.remove(getGeofenceFieldKey(id, KEY_LONGITUDE));
+        prefs.remove(getGeofenceFieldKey(id, KEY_RADIUS));
+        prefs.remove(getGeofenceFieldKey(id, KEY_EXPIRATION_DURATION));
+        prefs.remove(getGeofenceFieldKey(id, KEY_TRANSITION_TYPE));
+        prefs.commit();
+    }
+
+    /**
+     * Given a Geofence object's ID and the name of a field (for example, KEY_LATITUDE), return
+     * the key name of the object's values in SharedPreferences.
+     * @param id The ID of a Geofence object.
+     * @param fieldName The field represented by the key.
+     * @return The full key name of a value in SharedPreferences.
+     */
+    private String getGeofenceFieldKey(String id, String fieldName) {
+        return KEY_PREFIX + "_" + id + "_" + fieldName;
+    }
+
+}
\ No newline at end of file
diff --git a/samples/wearable/Geofencing/Application/src/main/res/drawable-hdpi/ic_launcher.png b/samples/wearable/Geofencing/Application/src/main/res/drawable-hdpi/ic_launcher.png
new file mode 100644
index 0000000..4e3e000
--- /dev/null
+++ b/samples/wearable/Geofencing/Application/src/main/res/drawable-hdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/Geofencing/Application/src/main/res/drawable-mdpi/ic_launcher.png b/samples/wearable/Geofencing/Application/src/main/res/drawable-mdpi/ic_launcher.png
new file mode 100644
index 0000000..b405cb2
--- /dev/null
+++ b/samples/wearable/Geofencing/Application/src/main/res/drawable-mdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/Geofencing/Application/src/main/res/drawable-xhdpi/ic_launcher.png b/samples/wearable/Geofencing/Application/src/main/res/drawable-xhdpi/ic_launcher.png
new file mode 100644
index 0000000..61f9d88
--- /dev/null
+++ b/samples/wearable/Geofencing/Application/src/main/res/drawable-xhdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/Geofencing/Application/src/main/res/drawable-xxhdpi/ic_launcher.png b/samples/wearable/Geofencing/Application/src/main/res/drawable-xxhdpi/ic_launcher.png
new file mode 100644
index 0000000..81c1008
--- /dev/null
+++ b/samples/wearable/Geofencing/Application/src/main/res/drawable-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/Geofencing/Application/src/main/res/values/strings.xml b/samples/wearable/Geofencing/Application/src/main/res/values/strings.xml
new file mode 100644
index 0000000..57539b9
--- /dev/null
+++ b/samples/wearable/Geofencing/Application/src/main/res/values/strings.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name">Android Wear Geofencing Example Application</string>
+    <string name="start_geofence_service">Starting geofence transition service</string>
+</resources>
diff --git a/samples/wearable/Geofencing/Wearable/build.gradle b/samples/wearable/Geofencing/Wearable/build.gradle
new file mode 100644
index 0000000..a1921f0
--- /dev/null
+++ b/samples/wearable/Geofencing/Wearable/build.gradle
@@ -0,0 +1,26 @@
+apply plugin: 'android'
+
+android {
+    compileSdkVersion 20
+    buildToolsVersion '20'
+
+    defaultConfig {
+        minSdkVersion 20
+        targetSdkVersion 20
+        versionCode 1
+        versionName "1.0"
+    }
+
+    buildTypes {
+        release {
+            runProguard false
+            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
+        }
+    }
+}
+
+dependencies {
+    compile 'com.google.android.gms:play-services:5.+@aar'
+    compile "com.android.support:support-v4:20.0.+"
+    compile "com.google.android.support:wearable:1.0.+"
+}
\ No newline at end of file
diff --git a/samples/wearable/Geofencing/Wearable/proguard-rules.txt b/samples/wearable/Geofencing/Wearable/proguard-rules.txt
new file mode 100644
index 0000000..f2fe155
--- /dev/null
+++ b/samples/wearable/Geofencing/Wearable/proguard-rules.txt
@@ -0,0 +1,20 @@
+# To enable ProGuard in your project, edit project.properties
+# to define the proguard.config property as described in that file.
+#
+# Add project specific ProGuard rules here.
+# By default, the flags in this file are appended to flags specified
+# in ${sdk.dir}/tools/proguard/proguard-android.txt
+# You can edit the include path and order by changing the ProGuard
+# include property in project.properties.
+#
+# For more details, see
+#   http://developer.android.com/guide/developing/tools/proguard.html
+
+# Add any project specific keep options here:
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+#   public *;
+#}
diff --git a/samples/wearable/Geofencing/Wearable/project.properties b/samples/wearable/Geofencing/Wearable/project.properties
new file mode 100644
index 0000000..4ab1256
--- /dev/null
+++ b/samples/wearable/Geofencing/Wearable/project.properties
@@ -0,0 +1,14 @@
+# This file is automatically generated by Android Tools.
+# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
+#
+# This file must be checked in Version Control Systems.
+#
+# To customize properties used by the Ant build system edit
+# "ant.properties", and override values to adapt the script to your
+# project structure.
+#
+# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
+#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
+
+# Project target.
+target=android-19
diff --git a/samples/wearable/Geofencing/Wearable/src/main/AndroidManifest.xml b/samples/wearable/Geofencing/Wearable/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..79145cd
--- /dev/null
+++ b/samples/wearable/Geofencing/Wearable/src/main/AndroidManifest.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+        package="com.example.android.wearable.geofencing" >
+
+    <uses-sdk android:minSdkVersion="20" android:targetSdkVersion="20" />
+
+    <application
+            android:icon="@drawable/ic_launcher"
+            android:label="@string/app_name"
+            android:allowBackup="true">
+
+        <meta-data
+                android:name="com.google.android.gms.version"
+                android:value="@integer/google_play_services_version" />
+
+        <service
+                android:name="com.example.android.wearable.geofencing.HomeListenerService" >
+            <intent-filter>
+                <action android:name="com.google.android.gms.wearable.BIND_LISTENER" />
+            </intent-filter>
+        </service>
+        <service android:name=".CheckInAndDeleteDataItemsService"/>
+
+        <activity android:name="android.support.wearable.activity.ConfirmationActivity"/>
+    </application>
+</manifest>
diff --git a/samples/wearable/Geofencing/Wearable/src/main/java/com/example/android/wearable/geofencing/CheckInAndDeleteDataItemsService.java b/samples/wearable/Geofencing/Wearable/src/main/java/com/example/android/wearable/geofencing/CheckInAndDeleteDataItemsService.java
new file mode 100644
index 0000000..ad69293
--- /dev/null
+++ b/samples/wearable/Geofencing/Wearable/src/main/java/com/example/android/wearable/geofencing/CheckInAndDeleteDataItemsService.java
@@ -0,0 +1,108 @@
+package com.example.android.wearable.geofencing;
+
+import com.google.android.gms.common.ConnectionResult;
+import com.google.android.gms.common.api.GoogleApiClient;
+import com.google.android.gms.wearable.DataApi;
+import com.google.android.gms.wearable.Wearable;
+
+import android.app.IntentService;
+import android.app.NotificationManager;
+import android.content.Intent;
+import android.net.Uri;
+import android.os.Bundle;
+import android.support.wearable.activity.ConfirmationActivity;
+import android.util.Log;
+
+import java.util.concurrent.TimeUnit;
+
+import static com.example.android.wearable.geofencing.Constants.ACTION_CHECK_IN;
+import static com.example.android.wearable.geofencing.Constants.ACTION_DELETE_DATA_ITEM;
+import static com.example.android.wearable.geofencing.Constants.CONNECTION_TIME_OUT_MS;
+import static com.example.android.wearable.geofencing.Constants.NOTIFICATION_ID;
+import static com.example.android.wearable.geofencing.Constants.TAG;
+
+/**
+ * Handles "Check In" action on the location-based notification. Also deletes orphan DataItems
+ * when a notification is dismissed from the wearable.
+ */
+public class CheckInAndDeleteDataItemsService extends IntentService
+        implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener {
+
+    private GoogleApiClient mGoogleApiClient;
+
+    public CheckInAndDeleteDataItemsService() {
+        super(CheckInAndDeleteDataItemsService.class.getSimpleName());
+    }
+
+    @Override
+    public void onCreate() {
+        super.onCreate();
+        mGoogleApiClient = new GoogleApiClient.Builder(this)
+                .addApi(Wearable.API)
+                .addConnectionCallbacks(this)
+                .addOnConnectionFailedListener(this)
+                .build();
+    }
+
+    @Override
+    protected void onHandleIntent(Intent intent) {
+        if (ACTION_CHECK_IN.equals(intent.getAction())) {
+            // In a real app, code for checking in would go here. For this sample, we will simply
+            // display a success animation.
+            startConfirmationActivity(ConfirmationActivity.SUCCESS_ANIMATION,
+                    getString(R.string.check_in_success));
+            // Dismiss the check-in notification.
+            ((NotificationManager) getSystemService(NOTIFICATION_SERVICE)).cancel(NOTIFICATION_ID);
+        } else if (!ACTION_DELETE_DATA_ITEM.equals(intent.getAction())) {
+            // The only possible actions should be checking in or dismissing the notification
+            // (which causes an intent with ACTION_DELETE_DATA_ITEM).
+            Log.e(TAG, "Unrecognized action: " + intent.getAction());
+            return;
+        }
+        // Regardless of the action, delete the DataItem (we are only be handling intents
+        // if the notification is dismissed or if the user has chosen to check in, either of which
+        // would be completed at this point).
+        mGoogleApiClient.blockingConnect(CONNECTION_TIME_OUT_MS, TimeUnit.MILLISECONDS);
+        Uri dataItemUri = intent.getData();
+        if (mGoogleApiClient.isConnected()) {
+            DataApi.DeleteDataItemsResult result = Wearable.DataApi
+                    .deleteDataItems(mGoogleApiClient, dataItemUri).await();
+            if (!result.getStatus().isSuccess()) {
+                Log.e(TAG, "CheckInAndDeleteDataItemsService.onHandleIntent: "
+                         + "Failed to delete dataItem: " + dataItemUri);
+            } else if (Log.isLoggable(TAG, Log.DEBUG)) {
+                Log.d(TAG, "Successfully deleted data item: " + dataItemUri);
+            }
+        } else {
+            Log.e(TAG, "Failed to delete data item: " + dataItemUri
+                     + " - Client disconnected from Google Play Services");
+        }
+        mGoogleApiClient.disconnect();
+    }
+
+    /**
+     * Helper method to create confirmation animations on the wearable.
+     * @param animationType Defined by constants in ConfirmationActivity.
+     * @param message The message to display with the animation.
+     */
+    private void startConfirmationActivity(int animationType, String message) {
+        Intent confirmationActivity = new Intent(this, ConfirmationActivity.class)
+                .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_NO_ANIMATION)
+                .putExtra(ConfirmationActivity.EXTRA_ANIMATION_TYPE, animationType)
+                .putExtra(ConfirmationActivity.EXTRA_MESSAGE, message);
+        startActivity(confirmationActivity);
+    }
+
+    @Override
+    public void onConnected(Bundle connectionHint) {
+    }
+
+    @Override
+    public void onConnectionSuspended(int cause) {
+    }
+
+    @Override
+    public void onConnectionFailed(ConnectionResult result) {
+    }
+
+}
\ No newline at end of file
diff --git a/samples/wearable/Geofencing/Wearable/src/main/java/com/example/android/wearable/geofencing/Constants.java b/samples/wearable/Geofencing/Wearable/src/main/java/com/example/android/wearable/geofencing/Constants.java
new file mode 100644
index 0000000..7103a4e
--- /dev/null
+++ b/samples/wearable/Geofencing/Wearable/src/main/java/com/example/android/wearable/geofencing/Constants.java
@@ -0,0 +1,22 @@
+package com.example.android.wearable.geofencing;
+
+/** Constants used in wearable app. */
+public final class Constants {
+
+    private Constants() {
+    }
+
+    public static final String TAG = "ExampleGeofencingApp";
+
+    // Timeout for making a connection to GoogleApiClient (in milliseconds).
+    public static final long CONNECTION_TIME_OUT_MS = 100;
+
+    public static final int NOTIFICATION_ID = 1;
+    public static final String ANDROID_BUILDING_ID = "1";
+    public static final String YERBA_BUENA_ID = "2";
+
+    public static final String ACTION_CHECK_IN = "check_in";
+    public static final String ACTION_DELETE_DATA_ITEM = "delete_data_item";
+    public static final String KEY_GEOFENCE_ID = "geofence_id";
+
+}
diff --git a/samples/wearable/Geofencing/Wearable/src/main/java/com/example/android/wearable/geofencing/HomeListenerService.java b/samples/wearable/Geofencing/Wearable/src/main/java/com/example/android/wearable/geofencing/HomeListenerService.java
new file mode 100644
index 0000000..5ecc8a6
--- /dev/null
+++ b/samples/wearable/Geofencing/Wearable/src/main/java/com/example/android/wearable/geofencing/HomeListenerService.java
@@ -0,0 +1,136 @@
+package com.example.android.wearable.geofencing;
+
+import static com.example.android.wearable.geofencing.Constants.ACTION_CHECK_IN;
+import static com.example.android.wearable.geofencing.Constants.ACTION_DELETE_DATA_ITEM;
+import static com.example.android.wearable.geofencing.Constants.ANDROID_BUILDING_ID;
+import static com.example.android.wearable.geofencing.Constants.KEY_GEOFENCE_ID;
+import static com.example.android.wearable.geofencing.Constants.NOTIFICATION_ID;
+import static com.example.android.wearable.geofencing.Constants.TAG;
+import static com.example.android.wearable.geofencing.Constants.YERBA_BUENA_ID;
+
+import android.app.Notification;
+import android.app.Notification.Action;
+import android.app.NotificationManager;
+import android.app.PendingIntent;
+import android.content.Intent;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.net.Uri;
+import android.text.Spannable;
+import android.text.SpannableString;
+import android.text.style.RelativeSizeSpan;
+import android.util.Log;
+
+import com.google.android.gms.common.api.GoogleApiClient;
+import com.google.android.gms.wearable.DataEvent;
+import com.google.android.gms.wearable.DataEventBuffer;
+import com.google.android.gms.wearable.DataItem;
+import com.google.android.gms.wearable.DataMap;
+import com.google.android.gms.wearable.Wearable;
+import com.google.android.gms.wearable.WearableListenerService;
+
+/**
+ * Listens to DataItem events on the wearable device.
+ */
+public class HomeListenerService extends WearableListenerService {
+
+    private GoogleApiClient mGoogleApiClient;
+
+    @Override
+    public void onCreate() {
+        super.onCreate();
+        mGoogleApiClient = new GoogleApiClient.Builder(this.getApplicationContext())
+                .addApi(Wearable.API)
+                .build();
+        mGoogleApiClient.connect();
+    }
+
+    /**
+     * Listen for DataItems added/deleted from the geofence service running on the companion.
+     */
+    @Override
+    public void onDataChanged(DataEventBuffer dataEvents) {
+        if (Log.isLoggable(TAG, Log.DEBUG)) {
+            Log.d(TAG, "onDataChanged: " + dataEvents + " for " + getPackageName());
+        }
+        for (DataEvent event : dataEvents) {
+            if (event.getType() == DataEvent.TYPE_DELETED) {
+                cancelNotificationForDataItem(event.getDataItem());
+            } else if (event.getType() == DataEvent.TYPE_CHANGED) {
+                // The user has entered a geofence - post a notification!
+                String geofenceId = DataMap.fromByteArray(event.getDataItem().getData())
+                        .getString(KEY_GEOFENCE_ID);
+                postNotificationForGeofenceId(geofenceId, event.getDataItem().getUri());
+            }
+        }
+        dataEvents.close();
+    }
+
+    /**
+     * Deletes the check-in notification when the DataItem is deleted.
+     * @param dataItem Used only for logging in this sample, but could be used to identify which
+     *                 notification to cancel (in this case, there is at most 1 notification).
+     */
+    private void cancelNotificationForDataItem(DataItem dataItem) {
+        if (Log.isLoggable(TAG, Log.VERBOSE)) {
+            Log.v(TAG, "onDataItemDeleted:DataItem=" + dataItem.getUri());
+        }
+        ((NotificationManager) getSystemService(NOTIFICATION_SERVICE)).cancel(NOTIFICATION_ID);
+    }
+
+    /**
+     * Posts a local notification for the given geofence id, with an option to check in.
+     * @param geofenceId The geofence id that the user has triggered.
+     * @param dataItemUri The Uri for the DataItem that triggered this notification. Used to delete
+     *                    this DataItem when the notification is dismissed.
+     */
+    private void postNotificationForGeofenceId(String geofenceId, Uri dataItemUri) {
+        // Use the geofenceId to determine the title and background of the check-in notification.
+        // A SpannableString is used for the notification title for resizing capabilities.
+        SpannableString checkInTitle;
+        Bitmap notificationBackground;
+        if (ANDROID_BUILDING_ID.equals(geofenceId)) {
+            checkInTitle = new SpannableString(getText(R.string.android_building_title));
+            notificationBackground =
+                    BitmapFactory.decodeResource(getResources(), R.drawable.android_building);
+        } else if (YERBA_BUENA_ID.equals(geofenceId)) {
+            checkInTitle = new SpannableString(getText(R.string.yerba_buena_title));
+            notificationBackground =
+                    BitmapFactory.decodeResource(getResources(), R.drawable.yerba_buena);
+        } else {
+            Log.e(TAG, "Unrecognized geofence id: " + geofenceId);
+            return;
+        }
+        // Resize the title to avoid truncation.
+        checkInTitle.setSpan(new RelativeSizeSpan(0.8f), 0, checkInTitle.length(),
+                Spannable.SPAN_POINT_MARK);
+
+        Intent checkInOperation =
+                new Intent(this, CheckInAndDeleteDataItemsService.class).setData(dataItemUri);
+        PendingIntent checkInIntent = PendingIntent.getService(this, 0,
+                checkInOperation.setAction(ACTION_CHECK_IN), PendingIntent.FLAG_CANCEL_CURRENT);
+        PendingIntent deleteDataItemIntent = PendingIntent.getService(this, 1,
+                checkInOperation.setAction(ACTION_DELETE_DATA_ITEM),
+                PendingIntent.FLAG_CANCEL_CURRENT);
+        // This action will be embedded into the notification.
+        Action checkInAction = new Action(R.drawable.ic_action_check_in,
+                getText(R.string.check_in_prompt), checkInIntent);
+
+        Notification notification = new Notification.Builder(this)
+                .setContentTitle(checkInTitle)
+                .setContentText(getText(R.string.check_in_prompt))
+                .setSmallIcon(R.drawable.ic_launcher)
+                .setDeleteIntent(deleteDataItemIntent)
+                .extend(new Notification.WearableExtender()
+                        .setBackground(notificationBackground)
+                        .addAction(checkInAction)
+                        .setContentAction(0)
+                        .setHintHideIcon(true))
+                .setLocalOnly(true)
+                .build();
+
+        ((NotificationManager) getSystemService(NOTIFICATION_SERVICE))
+                .notify(NOTIFICATION_ID, notification);
+    }
+
+}
diff --git a/samples/wearable/Geofencing/Wearable/src/main/res/drawable-hdpi/ic_action_check_in.png b/samples/wearable/Geofencing/Wearable/src/main/res/drawable-hdpi/ic_action_check_in.png
new file mode 100644
index 0000000..f94a1c4
--- /dev/null
+++ b/samples/wearable/Geofencing/Wearable/src/main/res/drawable-hdpi/ic_action_check_in.png
Binary files differ
diff --git a/samples/wearable/Geofencing/Wearable/src/main/res/drawable-hdpi/ic_launcher.png b/samples/wearable/Geofencing/Wearable/src/main/res/drawable-hdpi/ic_launcher.png
new file mode 100644
index 0000000..4e3e000
--- /dev/null
+++ b/samples/wearable/Geofencing/Wearable/src/main/res/drawable-hdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/Geofencing/Wearable/src/main/res/drawable-mdpi/ic_launcher.png b/samples/wearable/Geofencing/Wearable/src/main/res/drawable-mdpi/ic_launcher.png
new file mode 100644
index 0000000..b405cb2
--- /dev/null
+++ b/samples/wearable/Geofencing/Wearable/src/main/res/drawable-mdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/Geofencing/Wearable/src/main/res/drawable-nodpi/android_building.png b/samples/wearable/Geofencing/Wearable/src/main/res/drawable-nodpi/android_building.png
new file mode 100644
index 0000000..2a28bd4
--- /dev/null
+++ b/samples/wearable/Geofencing/Wearable/src/main/res/drawable-nodpi/android_building.png
Binary files differ
diff --git a/samples/wearable/Geofencing/Wearable/src/main/res/drawable-nodpi/yerba_buena.png b/samples/wearable/Geofencing/Wearable/src/main/res/drawable-nodpi/yerba_buena.png
new file mode 100644
index 0000000..04f39f8
--- /dev/null
+++ b/samples/wearable/Geofencing/Wearable/src/main/res/drawable-nodpi/yerba_buena.png
Binary files differ
diff --git a/samples/wearable/Geofencing/Wearable/src/main/res/drawable-xhdpi/ic_launcher.png b/samples/wearable/Geofencing/Wearable/src/main/res/drawable-xhdpi/ic_launcher.png
new file mode 100644
index 0000000..61f9d88
--- /dev/null
+++ b/samples/wearable/Geofencing/Wearable/src/main/res/drawable-xhdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/Geofencing/Wearable/src/main/res/drawable-xxhdpi/ic_launcher.png b/samples/wearable/Geofencing/Wearable/src/main/res/drawable-xxhdpi/ic_launcher.png
new file mode 100644
index 0000000..81c1008
--- /dev/null
+++ b/samples/wearable/Geofencing/Wearable/src/main/res/drawable-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/Geofencing/Wearable/src/main/res/values/strings.xml b/samples/wearable/Geofencing/Wearable/src/main/res/values/strings.xml
new file mode 100644
index 0000000..348b4b6
--- /dev/null
+++ b/samples/wearable/Geofencing/Wearable/src/main/res/values/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name">Android Wear Geofencing Example Application</string>
+    <string name="android_building_title">Android Building</string>
+    <string name="yerba_buena_title">Yerba Buena Gardens</string>
+    <string name="check_in_prompt">Check in here?</string>
+    <string name="check_in_success">Checked In</string>
+</resources>
diff --git a/samples/wearable/Geofencing/build.gradle b/samples/wearable/Geofencing/build.gradle
new file mode 100644
index 0000000..07be865
--- /dev/null
+++ b/samples/wearable/Geofencing/build.gradle
@@ -0,0 +1,14 @@
+buildscript {
+    repositories {
+        mavenCentral()
+    }
+    dependencies {
+        classpath 'com.android.tools.build:gradle:0.11.+'
+    }
+}
+
+allprojects {
+    repositories {
+        mavenCentral()
+    }
+}
\ No newline at end of file
diff --git a/samples/wearable/Geofencing/gradle/wrapper/gradle-wrapper.jar b/samples/wearable/Geofencing/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 0000000..5838598
--- /dev/null
+++ b/samples/wearable/Geofencing/gradle/wrapper/gradle-wrapper.jar
Binary files differ
diff --git a/samples/wearable/Geofencing/gradle/wrapper/gradle-wrapper.properties b/samples/wearable/Geofencing/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..e83e460
--- /dev/null
+++ b/samples/wearable/Geofencing/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Fri Mar 14 14:02:22 PDT 2014
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=http\://services.gradle.org/distributions/gradle-1.11-all.zip
diff --git a/samples/wearable/Geofencing/gradlew b/samples/wearable/Geofencing/gradlew
new file mode 100755
index 0000000..91a7e26
--- /dev/null
+++ b/samples/wearable/Geofencing/gradlew
@@ -0,0 +1,164 @@
+#!/usr/bin/env bash
+
+##############################################################################
+##
+##  Gradle start up script for UN*X
+##
+##############################################################################
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn ( ) {
+    echo "$*"
+}
+
+die ( ) {
+    echo
+    echo "$*"
+    echo
+    exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+case "`uname`" in
+  CYGWIN* )
+    cygwin=true
+    ;;
+  Darwin* )
+    darwin=true
+    ;;
+  MINGW* )
+    msys=true
+    ;;
+esac
+
+# For Cygwin, ensure paths are in UNIX format before anything is touched.
+if $cygwin ; then
+    [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
+fi
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+    ls=`ls -ld "$PRG"`
+    link=`expr "$ls" : '.*-> \(.*\)$'`
+    if expr "$link" : '/.*' > /dev/null; then
+        PRG="$link"
+    else
+        PRG=`dirname "$PRG"`"/$link"
+    fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >&-
+APP_HOME="`pwd -P`"
+cd "$SAVED" >&-
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+        # IBM's JDK on AIX uses strange locations for the executables
+        JAVACMD="$JAVA_HOME/jre/sh/java"
+    else
+        JAVACMD="$JAVA_HOME/bin/java"
+    fi
+    if [ ! -x "$JAVACMD" ] ; then
+        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+    fi
+else
+    JAVACMD="java"
+    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
+    MAX_FD_LIMIT=`ulimit -H -n`
+    if [ $? -eq 0 ] ; then
+        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+            MAX_FD="$MAX_FD_LIMIT"
+        fi
+        ulimit -n $MAX_FD
+        if [ $? -ne 0 ] ; then
+            warn "Could not set maximum file descriptor limit: $MAX_FD"
+        fi
+    else
+        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+    fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+
+    # We build the pattern for arguments to be converted via cygpath
+    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+    SEP=""
+    for dir in $ROOTDIRSRAW ; do
+        ROOTDIRS="$ROOTDIRS$SEP$dir"
+        SEP="|"
+    done
+    OURCYGPATTERN="(^($ROOTDIRS))"
+    # Add a user-defined pattern to the cygpath arguments
+    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+    fi
+    # Now convert the arguments - kludge to limit ourselves to /bin/sh
+    i=0
+    for arg in "$@" ; do
+        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
+
+        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
+            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+        else
+            eval `echo args$i`="\"$arg\""
+        fi
+        i=$((i+1))
+    done
+    case $i in
+        (0) set -- ;;
+        (1) set -- "$args0" ;;
+        (2) set -- "$args0" "$args1" ;;
+        (3) set -- "$args0" "$args1" "$args2" ;;
+        (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+        (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+        (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+        (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+        (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+        (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+    esac
+fi
+
+# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
+function splitJvmOpts() {
+    JVM_OPTS=("$@")
+}
+eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
+JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
+
+exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
diff --git a/samples/wearable/Geofencing/gradlew.bat b/samples/wearable/Geofencing/gradlew.bat
new file mode 100644
index 0000000..aec9973
--- /dev/null
+++ b/samples/wearable/Geofencing/gradlew.bat
@@ -0,0 +1,90 @@
+@if "%DEBUG%" == "" @echo off

+@rem ##########################################################################

+@rem

+@rem  Gradle startup script for Windows

+@rem

+@rem ##########################################################################

+

+@rem Set local scope for the variables with windows NT shell

+if "%OS%"=="Windows_NT" setlocal

+

+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.

+set DEFAULT_JVM_OPTS=

+

+set DIRNAME=%~dp0

+if "%DIRNAME%" == "" set DIRNAME=.

+set APP_BASE_NAME=%~n0

+set APP_HOME=%DIRNAME%

+

+@rem Find java.exe

+if defined JAVA_HOME goto findJavaFromJavaHome

+

+set JAVA_EXE=java.exe

+%JAVA_EXE% -version >NUL 2>&1

+if "%ERRORLEVEL%" == "0" goto init

+

+echo.

+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.

+echo.

+echo Please set the JAVA_HOME variable in your environment to match the

+echo location of your Java installation.

+

+goto fail

+

+:findJavaFromJavaHome

+set JAVA_HOME=%JAVA_HOME:"=%

+set JAVA_EXE=%JAVA_HOME%/bin/java.exe

+

+if exist "%JAVA_EXE%" goto init

+

+echo.

+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%

+echo.

+echo Please set the JAVA_HOME variable in your environment to match the

+echo location of your Java installation.

+

+goto fail

+

+:init

+@rem Get command-line arguments, handling Windowz variants

+

+if not "%OS%" == "Windows_NT" goto win9xME_args

+if "%@eval[2+2]" == "4" goto 4NT_args

+

+:win9xME_args

+@rem Slurp the command line arguments.

+set CMD_LINE_ARGS=

+set _SKIP=2

+

+:win9xME_args_slurp

+if "x%~1" == "x" goto execute

+

+set CMD_LINE_ARGS=%*

+goto execute

+

+:4NT_args

+@rem Get arguments from the 4NT Shell from JP Software

+set CMD_LINE_ARGS=%$

+

+:execute

+@rem Setup the command line

+

+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar

+

+@rem Execute Gradle

+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%

+

+:end

+@rem End local scope for the variables with windows NT shell

+if "%ERRORLEVEL%"=="0" goto mainEnd

+

+:fail

+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of

+rem the _cmd.exe /c_ return code!

+if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1

+exit /b 1

+

+:mainEnd

+if "%OS%"=="Windows_NT" endlocal

+

+:omega

diff --git a/samples/wearable/Geofencing/settings.gradle b/samples/wearable/Geofencing/settings.gradle
new file mode 100644
index 0000000..f3f25a5
--- /dev/null
+++ b/samples/wearable/Geofencing/settings.gradle
@@ -0,0 +1 @@
+include 'Wearable', 'Application'
diff --git a/samples/wearable/GridViewPager/Wearable/build.gradle b/samples/wearable/GridViewPager/Wearable/build.gradle
new file mode 100644
index 0000000..58ffd2c
--- /dev/null
+++ b/samples/wearable/GridViewPager/Wearable/build.gradle
@@ -0,0 +1,29 @@
+apply plugin: 'android'
+
+android {
+    compileSdkVersion 20
+    buildToolsVersion '20'
+
+    defaultConfig {
+        minSdkVersion 20
+        targetSdkVersion 20
+        versionCode 1
+        versionName "1.0"
+    }
+
+    buildTypes {
+        release {
+            runProguard false
+            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
+        }
+    }
+
+    lintOptions {
+        abortOnError false
+    }
+}
+
+dependencies {
+    compile "com.android.support:support-v13:20.0.+"
+    compile "com.google.android.support:wearable:1.0.+"
+}
diff --git a/samples/wearable/GridViewPager/Wearable/proguard-rules.txt b/samples/wearable/GridViewPager/Wearable/proguard-rules.txt
new file mode 100644
index 0000000..08e5bdc
--- /dev/null
+++ b/samples/wearable/GridViewPager/Wearable/proguard-rules.txt
@@ -0,0 +1,22 @@
+# To enable ProGuard in your project, edit project.properties
+# to define the proguard.config property as described in that file.
+#
+# Add project specific ProGuard rules here.
+# By default, the flags in this file are appended to flags specified
+# in ${sdk.dir}/tools/proguard/proguard-android.txt
+# You can edit the include path and order by changing the ProGuard
+# include property in project.properties.
+#
+# For more details, see
+#   http://developer.android.com/guide/developing/tools/proguard.html
+
+# Add any project specific keep options here:
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+#   public *;
+#}
+-dontwarn android.support.wearable.view.DelayedConfirmationView
+-dontwarn android.support.wearable.view.CircledImageView
diff --git a/samples/wearable/GridViewPager/Wearable/src/main/AndroidManifest.xml b/samples/wearable/GridViewPager/Wearable/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..e3a5ebe
--- /dev/null
+++ b/samples/wearable/GridViewPager/Wearable/src/main/AndroidManifest.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.example.android.wearable.gridviewpager"
+    android:versionCode="1"
+    android:versionName="1.0" >
+
+    <uses-sdk
+        android:minSdkVersion="20"
+        android:targetSdkVersion="20" />
+
+    <application
+        android:allowBackup="true"
+        android:icon="@drawable/ic_launcher"
+        android:label="@string/app_name"
+        android:theme="@android:style/Theme.DeviceDefault.Light" >
+        <activity
+            android:name="com.example.android.wearable.gridviewpager.MainActivity"
+            android:label="@string/app_name" >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
+    </application>
+
+</manifest>
diff --git a/samples/wearable/GridViewPager/Wearable/src/main/java/com/example/android/wearable/gridviewpager/MainActivity.java b/samples/wearable/GridViewPager/Wearable/src/main/java/com/example/android/wearable/gridviewpager/MainActivity.java
new file mode 100644
index 0000000..498b4da
--- /dev/null
+++ b/samples/wearable/GridViewPager/Wearable/src/main/java/com/example/android/wearable/gridviewpager/MainActivity.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * 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.
+ */
+package com.example.android.wearable.gridviewpager;
+
+import android.app.Activity;
+import android.content.res.Resources;
+import android.os.Bundle;
+import android.support.wearable.view.GridViewPager;
+import android.view.View;
+import android.view.View.OnApplyWindowInsetsListener;
+import android.view.WindowInsets;
+
+public class MainActivity extends Activity {
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_main);
+        final Resources res = getResources();
+        final GridViewPager pager = (GridViewPager) findViewById(R.id.pager);
+        pager.setOnApplyWindowInsetsListener(new OnApplyWindowInsetsListener() {
+            @Override
+            public WindowInsets onApplyWindowInsets(View v, WindowInsets insets) {
+                // Adjust page margins:
+                //   A little extra horizontal spacing between pages looks a bit
+                //   less crowded on a round display.
+                final boolean round = insets.isRound();
+                int rowMargin = res.getDimensionPixelOffset(R.dimen.page_row_margin);
+                int colMargin = res.getDimensionPixelOffset(round ?
+                        R.dimen.page_column_margin_round : R.dimen.page_column_margin);
+                pager.setPageMargins(rowMargin, colMargin);
+                return insets;
+            }
+        });
+        pager.setAdapter(new SampleGridPagerAdapter(this, getFragmentManager()));
+    }
+}
diff --git a/samples/wearable/GridViewPager/Wearable/src/main/java/com/example/android/wearable/gridviewpager/SampleGridPagerAdapter.java b/samples/wearable/GridViewPager/Wearable/src/main/java/com/example/android/wearable/gridviewpager/SampleGridPagerAdapter.java
new file mode 100644
index 0000000..62277a8
--- /dev/null
+++ b/samples/wearable/GridViewPager/Wearable/src/main/java/com/example/android/wearable/gridviewpager/SampleGridPagerAdapter.java
@@ -0,0 +1,133 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * 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.
+ */
+package com.example.android.wearable.gridviewpager;
+
+import android.app.Fragment;
+import android.app.FragmentManager;
+import android.content.Context;
+import android.support.wearable.view.CardFragment;
+import android.support.wearable.view.FragmentGridPagerAdapter;
+import android.support.wearable.view.ImageReference;
+import android.view.Gravity;
+
+/**
+ * Constructs fragments as requested by the GridViewPager. For each row a
+ * different background is provided.
+ */
+public class SampleGridPagerAdapter extends FragmentGridPagerAdapter {
+
+    private final Context mContext;
+
+    public SampleGridPagerAdapter(Context ctx, FragmentManager fm) {
+        super(fm);
+        mContext = ctx;
+    }
+
+    static final int[] BG_IMAGES = new int[] {
+            R.drawable.debug_background_1,
+            R.drawable.debug_background_2,
+            R.drawable.debug_background_3,
+            R.drawable.debug_background_4,
+            R.drawable.debug_background_5
+    };
+
+    /** A simple container for static data in each page */
+    private static class Page {
+        int titleRes;
+        int textRes;
+        int iconRes;
+        int cardGravity = Gravity.BOTTOM;
+        boolean expansionEnabled = true;
+        float expansionFactor = 1.0f;
+        int expansionDirection = CardFragment.EXPAND_DOWN;
+
+        public Page(int titleRes, int textRes, boolean expansion) {
+            this(titleRes, textRes, 0);
+            this.expansionEnabled = expansion;
+        }
+
+        public Page(int titleRes, int textRes, boolean expansion, float expansionFactor) {
+            this(titleRes, textRes, 0);
+            this.expansionEnabled = expansion;
+            this.expansionFactor = expansionFactor;
+        }
+
+        public Page(int titleRes, int textRes, int iconRes) {
+            this.titleRes = titleRes;
+            this.textRes = textRes;
+            this.iconRes = iconRes;
+        }
+
+        public Page(int titleRes, int textRes, int iconRes, int gravity) {
+            this.titleRes = titleRes;
+            this.textRes = textRes;
+            this.iconRes = iconRes;
+            this.cardGravity = gravity;
+        }
+    }
+
+    private final Page[][] PAGES = {
+            {
+                    new Page(R.string.welcome_title, R.string.welcome_text, R.drawable.bugdroid,
+                            Gravity.CENTER_VERTICAL),
+            },
+            {
+                    new Page(R.string.about_title, R.string.about_text, false),
+            },
+            {
+                    new Page(R.string.cards_title, R.string.cards_text, true, 2),
+                    new Page(R.string.expansion_title, R.string.expansion_text, true, 10),
+            },
+            {
+                    new Page(R.string.backgrounds_title, R.string.backgrounds_text, true, 2),
+                    new Page(R.string.columns_title, R.string.columns_text, true, 2)
+            },
+            {
+                    new Page(R.string.dismiss_title, R.string.dismiss_text, R.drawable.bugdroid,
+                            Gravity.CENTER_VERTICAL),
+            },
+
+    };
+
+    @Override
+    public Fragment getFragment(int row, int col) {
+        Page page = PAGES[row][col];
+        String title = page.titleRes != 0 ? mContext.getString(page.titleRes) : null;
+        String text = page.textRes != 0 ? mContext.getString(page.textRes) : null;
+        CardFragment fragment = CardFragment.create(title, text, page.iconRes);
+        // Advanced settings
+        fragment.setCardGravity(page.cardGravity);
+        fragment.setExpansionEnabled(page.expansionEnabled);
+        fragment.setExpansionDirection(page.expansionDirection);
+        fragment.setExpansionFactor(page.expansionFactor);
+        return fragment;
+    }
+
+    @Override
+    public ImageReference getBackground(int row, int column) {
+        return ImageReference.forDrawable(BG_IMAGES[row % BG_IMAGES.length]);
+    }
+
+    @Override
+    public int getRowCount() {
+        return PAGES.length;
+    }
+
+    @Override
+    public int getColumnCount(int rowNum) {
+        return PAGES[rowNum].length;
+    }
+}
diff --git a/samples/wearable/GridViewPager/Wearable/src/main/res/drawable-hdpi/bugdroid.png b/samples/wearable/GridViewPager/Wearable/src/main/res/drawable-hdpi/bugdroid.png
new file mode 100644
index 0000000..7cbe661
--- /dev/null
+++ b/samples/wearable/GridViewPager/Wearable/src/main/res/drawable-hdpi/bugdroid.png
Binary files differ
diff --git a/samples/wearable/GridViewPager/Wearable/src/main/res/drawable-hdpi/ic_launcher.png b/samples/wearable/GridViewPager/Wearable/src/main/res/drawable-hdpi/ic_launcher.png
new file mode 100644
index 0000000..589f229
--- /dev/null
+++ b/samples/wearable/GridViewPager/Wearable/src/main/res/drawable-hdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/GridViewPager/Wearable/src/main/res/drawable-hdpi/ic_swipe_arrow_left.png b/samples/wearable/GridViewPager/Wearable/src/main/res/drawable-hdpi/ic_swipe_arrow_left.png
new file mode 100644
index 0000000..88a497f
--- /dev/null
+++ b/samples/wearable/GridViewPager/Wearable/src/main/res/drawable-hdpi/ic_swipe_arrow_left.png
Binary files differ
diff --git a/samples/wearable/GridViewPager/Wearable/src/main/res/drawable-hdpi/ic_swipe_arrow_right.png b/samples/wearable/GridViewPager/Wearable/src/main/res/drawable-hdpi/ic_swipe_arrow_right.png
new file mode 100644
index 0000000..5bf0e47
--- /dev/null
+++ b/samples/wearable/GridViewPager/Wearable/src/main/res/drawable-hdpi/ic_swipe_arrow_right.png
Binary files differ
diff --git a/samples/wearable/GridViewPager/Wearable/src/main/res/drawable-hdpi/ic_swipe_arrow_up.png b/samples/wearable/GridViewPager/Wearable/src/main/res/drawable-hdpi/ic_swipe_arrow_up.png
new file mode 100644
index 0000000..9a3256a
--- /dev/null
+++ b/samples/wearable/GridViewPager/Wearable/src/main/res/drawable-hdpi/ic_swipe_arrow_up.png
Binary files differ
diff --git a/samples/wearable/GridViewPager/Wearable/src/main/res/drawable-mdpi/bugdroid.png b/samples/wearable/GridViewPager/Wearable/src/main/res/drawable-mdpi/bugdroid.png
new file mode 100644
index 0000000..8bf7596
--- /dev/null
+++ b/samples/wearable/GridViewPager/Wearable/src/main/res/drawable-mdpi/bugdroid.png
Binary files differ
diff --git a/samples/wearable/GridViewPager/Wearable/src/main/res/drawable-mdpi/ic_launcher.png b/samples/wearable/GridViewPager/Wearable/src/main/res/drawable-mdpi/ic_launcher.png
new file mode 100644
index 0000000..77dd571
--- /dev/null
+++ b/samples/wearable/GridViewPager/Wearable/src/main/res/drawable-mdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/GridViewPager/Wearable/src/main/res/drawable-mdpi/ic_swipe_arrow_left.png b/samples/wearable/GridViewPager/Wearable/src/main/res/drawable-mdpi/ic_swipe_arrow_left.png
new file mode 100644
index 0000000..ba36d9d
--- /dev/null
+++ b/samples/wearable/GridViewPager/Wearable/src/main/res/drawable-mdpi/ic_swipe_arrow_left.png
Binary files differ
diff --git a/samples/wearable/GridViewPager/Wearable/src/main/res/drawable-mdpi/ic_swipe_arrow_right.png b/samples/wearable/GridViewPager/Wearable/src/main/res/drawable-mdpi/ic_swipe_arrow_right.png
new file mode 100644
index 0000000..e5930ac
--- /dev/null
+++ b/samples/wearable/GridViewPager/Wearable/src/main/res/drawable-mdpi/ic_swipe_arrow_right.png
Binary files differ
diff --git a/samples/wearable/GridViewPager/Wearable/src/main/res/drawable-mdpi/ic_swipe_arrow_up.png b/samples/wearable/GridViewPager/Wearable/src/main/res/drawable-mdpi/ic_swipe_arrow_up.png
new file mode 100644
index 0000000..5ded1c3
--- /dev/null
+++ b/samples/wearable/GridViewPager/Wearable/src/main/res/drawable-mdpi/ic_swipe_arrow_up.png
Binary files differ
diff --git a/samples/wearable/GridViewPager/Wearable/src/main/res/drawable-xhdpi/ic_launcher.png b/samples/wearable/GridViewPager/Wearable/src/main/res/drawable-xhdpi/ic_launcher.png
new file mode 100644
index 0000000..fe34ebe
--- /dev/null
+++ b/samples/wearable/GridViewPager/Wearable/src/main/res/drawable-xhdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/GridViewPager/Wearable/src/main/res/drawable-xhdpi/ic_swipe_arrow_left.png b/samples/wearable/GridViewPager/Wearable/src/main/res/drawable-xhdpi/ic_swipe_arrow_left.png
new file mode 100644
index 0000000..f02901b
--- /dev/null
+++ b/samples/wearable/GridViewPager/Wearable/src/main/res/drawable-xhdpi/ic_swipe_arrow_left.png
Binary files differ
diff --git a/samples/wearable/GridViewPager/Wearable/src/main/res/drawable-xhdpi/ic_swipe_arrow_right.png b/samples/wearable/GridViewPager/Wearable/src/main/res/drawable-xhdpi/ic_swipe_arrow_right.png
new file mode 100644
index 0000000..154a87e
--- /dev/null
+++ b/samples/wearable/GridViewPager/Wearable/src/main/res/drawable-xhdpi/ic_swipe_arrow_right.png
Binary files differ
diff --git a/samples/wearable/GridViewPager/Wearable/src/main/res/drawable-xhdpi/ic_swipe_arrow_up.png b/samples/wearable/GridViewPager/Wearable/src/main/res/drawable-xhdpi/ic_swipe_arrow_up.png
new file mode 100644
index 0000000..e99d982
--- /dev/null
+++ b/samples/wearable/GridViewPager/Wearable/src/main/res/drawable-xhdpi/ic_swipe_arrow_up.png
Binary files differ
diff --git a/samples/wearable/GridViewPager/Wearable/src/main/res/drawable-xxhdpi/ic_launcher.png b/samples/wearable/GridViewPager/Wearable/src/main/res/drawable-xxhdpi/ic_launcher.png
new file mode 100755
index 0000000..ab80bcd
--- /dev/null
+++ b/samples/wearable/GridViewPager/Wearable/src/main/res/drawable-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/GridViewPager/Wearable/src/main/res/drawable/debug_background_1.png b/samples/wearable/GridViewPager/Wearable/src/main/res/drawable/debug_background_1.png
new file mode 100644
index 0000000..7e6437b
--- /dev/null
+++ b/samples/wearable/GridViewPager/Wearable/src/main/res/drawable/debug_background_1.png
Binary files differ
diff --git a/samples/wearable/GridViewPager/Wearable/src/main/res/drawable/debug_background_2.png b/samples/wearable/GridViewPager/Wearable/src/main/res/drawable/debug_background_2.png
new file mode 100644
index 0000000..4fdc5c9
--- /dev/null
+++ b/samples/wearable/GridViewPager/Wearable/src/main/res/drawable/debug_background_2.png
Binary files differ
diff --git a/samples/wearable/GridViewPager/Wearable/src/main/res/drawable/debug_background_3.png b/samples/wearable/GridViewPager/Wearable/src/main/res/drawable/debug_background_3.png
new file mode 100644
index 0000000..20faf46
--- /dev/null
+++ b/samples/wearable/GridViewPager/Wearable/src/main/res/drawable/debug_background_3.png
Binary files differ
diff --git a/samples/wearable/GridViewPager/Wearable/src/main/res/drawable/debug_background_4.png b/samples/wearable/GridViewPager/Wearable/src/main/res/drawable/debug_background_4.png
new file mode 100644
index 0000000..1fd25c6
--- /dev/null
+++ b/samples/wearable/GridViewPager/Wearable/src/main/res/drawable/debug_background_4.png
Binary files differ
diff --git a/samples/wearable/GridViewPager/Wearable/src/main/res/drawable/debug_background_5.png b/samples/wearable/GridViewPager/Wearable/src/main/res/drawable/debug_background_5.png
new file mode 100644
index 0000000..eecdb2c
--- /dev/null
+++ b/samples/wearable/GridViewPager/Wearable/src/main/res/drawable/debug_background_5.png
Binary files differ
diff --git a/samples/wearable/GridViewPager/Wearable/src/main/res/layout/activity_main.xml b/samples/wearable/GridViewPager/Wearable/src/main/res/layout/activity_main.xml
new file mode 100644
index 0000000..24afd91
--- /dev/null
+++ b/samples/wearable/GridViewPager/Wearable/src/main/res/layout/activity_main.xml
@@ -0,0 +1,6 @@
+<android.support.wearable.view.GridViewPager
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/pager"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:keepScreenOn="true" />
diff --git a/samples/wearable/GridViewPager/Wearable/src/main/res/values/dimens.xml b/samples/wearable/GridViewPager/Wearable/src/main/res/values/dimens.xml
new file mode 100644
index 0000000..e354e2b
--- /dev/null
+++ b/samples/wearable/GridViewPager/Wearable/src/main/res/values/dimens.xml
@@ -0,0 +1,5 @@
+<resources>
+    <dimen name="page_row_margin">100dp</dimen>
+    <dimen name="page_column_margin">10dp</dimen>
+    <dimen name="page_column_margin_round">50dp</dimen>
+</resources>
diff --git a/samples/wearable/GridViewPager/Wearable/src/main/res/values/strings.xml b/samples/wearable/GridViewPager/Wearable/src/main/res/values/strings.xml
new file mode 100644
index 0000000..adcd8f9
--- /dev/null
+++ b/samples/wearable/GridViewPager/Wearable/src/main/res/values/strings.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+
+    <string name="app_name">GridViewPager Sample</string>
+    <string name="welcome_title">GridViewPager</string>
+    <string name="welcome_text">Welcome!</string>
+
+    <string name="about_title">About</string>
+    <string name="about_text">Content is organized into multiple pages. Swipe
+        between cards to view other content.</string>
+
+    <string name="cards_title">Cards</string>
+    <string name="cards_text">Each page is created using a CardFragment. A
+        layout is placed inside the card and the rest is handled
+        automatically.</string>
+
+    <string name="expansion_title">Expansion</string>
+    <string name="expansion_text">By default, each card will grow taller to
+        accommodate extra content. Tall cards can be scrolled through
+        like any scrollable view. The maximum height is controlled by
+        setExpansionFactor() with a default of 10 pages. After that
+        you\'ll notice a faded edge to indicate there is more. Expansion
+        can be disabled completely using setExpansionEnabled(false).
+        With this, the content will be clipped if it\'s taller than one
+        page.</string>
+
+    <string name="backgrounds_title">Backgrounds</string>
+    <string name="backgrounds_text">Backgrounds are supplied by the adapter\'s
+        getBackground method. Parallax and crossfade effects are applied
+        automatically.</string>
+
+    <string name="columns_title">Columns</string>
+    <string name="columns_text">When moving between rows, the pager always
+        returns to column 0. This is adjustable in the adapter. See
+        method getCurrentColumnForRow().</string>
+
+    <string name="dismiss_title">Dismiss</string>
+    <string name="dismiss_text">To exit the application, swipe from left to
+        right.</string>
+
+</resources>
\ No newline at end of file
diff --git a/samples/wearable/GridViewPager/build.gradle b/samples/wearable/GridViewPager/build.gradle
new file mode 100644
index 0000000..8bafed4
--- /dev/null
+++ b/samples/wearable/GridViewPager/build.gradle
@@ -0,0 +1,14 @@
+buildscript {
+    repositories {
+        mavenCentral()
+    }
+    dependencies {
+        classpath 'com.android.tools.build:gradle:0.11.+'
+    }
+}
+
+allprojects {
+    repositories {
+        mavenCentral()
+    }
+}
diff --git a/samples/wearable/GridViewPager/gradle.properties b/samples/wearable/GridViewPager/gradle.properties
new file mode 100644
index 0000000..5d08ba7
--- /dev/null
+++ b/samples/wearable/GridViewPager/gradle.properties
@@ -0,0 +1,18 @@
+# Project-wide Gradle settings.
+
+# IDE (e.g. Android Studio) users:
+# Settings specified in this file will override any Gradle settings
+# configured through the IDE.
+
+# For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+# Default value: -Xmx10248m -XX:MaxPermSize=256m
+# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
+
+# When configured, Gradle will run in incubating parallel mode.
+# This option should only be used with decoupled projects. More details, visit
+# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
+# org.gradle.parallel=true
\ No newline at end of file
diff --git a/samples/wearable/GridViewPager/gradle/wrapper/gradle-wrapper.jar b/samples/wearable/GridViewPager/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 0000000..5838598
--- /dev/null
+++ b/samples/wearable/GridViewPager/gradle/wrapper/gradle-wrapper.jar
Binary files differ
diff --git a/samples/wearable/GridViewPager/gradle/wrapper/gradle-wrapper.properties b/samples/wearable/GridViewPager/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..e83e460
--- /dev/null
+++ b/samples/wearable/GridViewPager/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Fri Mar 14 14:02:22 PDT 2014
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=http\://services.gradle.org/distributions/gradle-1.11-all.zip
diff --git a/samples/wearable/GridViewPager/gradlew b/samples/wearable/GridViewPager/gradlew
new file mode 100755
index 0000000..91a7e26
--- /dev/null
+++ b/samples/wearable/GridViewPager/gradlew
@@ -0,0 +1,164 @@
+#!/usr/bin/env bash
+
+##############################################################################
+##
+##  Gradle start up script for UN*X
+##
+##############################################################################
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn ( ) {
+    echo "$*"
+}
+
+die ( ) {
+    echo
+    echo "$*"
+    echo
+    exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+case "`uname`" in
+  CYGWIN* )
+    cygwin=true
+    ;;
+  Darwin* )
+    darwin=true
+    ;;
+  MINGW* )
+    msys=true
+    ;;
+esac
+
+# For Cygwin, ensure paths are in UNIX format before anything is touched.
+if $cygwin ; then
+    [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
+fi
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+    ls=`ls -ld "$PRG"`
+    link=`expr "$ls" : '.*-> \(.*\)$'`
+    if expr "$link" : '/.*' > /dev/null; then
+        PRG="$link"
+    else
+        PRG=`dirname "$PRG"`"/$link"
+    fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >&-
+APP_HOME="`pwd -P`"
+cd "$SAVED" >&-
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+        # IBM's JDK on AIX uses strange locations for the executables
+        JAVACMD="$JAVA_HOME/jre/sh/java"
+    else
+        JAVACMD="$JAVA_HOME/bin/java"
+    fi
+    if [ ! -x "$JAVACMD" ] ; then
+        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+    fi
+else
+    JAVACMD="java"
+    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
+    MAX_FD_LIMIT=`ulimit -H -n`
+    if [ $? -eq 0 ] ; then
+        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+            MAX_FD="$MAX_FD_LIMIT"
+        fi
+        ulimit -n $MAX_FD
+        if [ $? -ne 0 ] ; then
+            warn "Could not set maximum file descriptor limit: $MAX_FD"
+        fi
+    else
+        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+    fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+
+    # We build the pattern for arguments to be converted via cygpath
+    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+    SEP=""
+    for dir in $ROOTDIRSRAW ; do
+        ROOTDIRS="$ROOTDIRS$SEP$dir"
+        SEP="|"
+    done
+    OURCYGPATTERN="(^($ROOTDIRS))"
+    # Add a user-defined pattern to the cygpath arguments
+    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+    fi
+    # Now convert the arguments - kludge to limit ourselves to /bin/sh
+    i=0
+    for arg in "$@" ; do
+        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
+
+        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
+            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+        else
+            eval `echo args$i`="\"$arg\""
+        fi
+        i=$((i+1))
+    done
+    case $i in
+        (0) set -- ;;
+        (1) set -- "$args0" ;;
+        (2) set -- "$args0" "$args1" ;;
+        (3) set -- "$args0" "$args1" "$args2" ;;
+        (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+        (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+        (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+        (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+        (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+        (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+    esac
+fi
+
+# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
+function splitJvmOpts() {
+    JVM_OPTS=("$@")
+}
+eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
+JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
+
+exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
diff --git a/samples/wearable/GridViewPager/gradlew.bat b/samples/wearable/GridViewPager/gradlew.bat
new file mode 100755
index 0000000..aec9973
--- /dev/null
+++ b/samples/wearable/GridViewPager/gradlew.bat
@@ -0,0 +1,90 @@
+@if "%DEBUG%" == "" @echo off

+@rem ##########################################################################

+@rem

+@rem  Gradle startup script for Windows

+@rem

+@rem ##########################################################################

+

+@rem Set local scope for the variables with windows NT shell

+if "%OS%"=="Windows_NT" setlocal

+

+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.

+set DEFAULT_JVM_OPTS=

+

+set DIRNAME=%~dp0

+if "%DIRNAME%" == "" set DIRNAME=.

+set APP_BASE_NAME=%~n0

+set APP_HOME=%DIRNAME%

+

+@rem Find java.exe

+if defined JAVA_HOME goto findJavaFromJavaHome

+

+set JAVA_EXE=java.exe

+%JAVA_EXE% -version >NUL 2>&1

+if "%ERRORLEVEL%" == "0" goto init

+

+echo.

+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.

+echo.

+echo Please set the JAVA_HOME variable in your environment to match the

+echo location of your Java installation.

+

+goto fail

+

+:findJavaFromJavaHome

+set JAVA_HOME=%JAVA_HOME:"=%

+set JAVA_EXE=%JAVA_HOME%/bin/java.exe

+

+if exist "%JAVA_EXE%" goto init

+

+echo.

+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%

+echo.

+echo Please set the JAVA_HOME variable in your environment to match the

+echo location of your Java installation.

+

+goto fail

+

+:init

+@rem Get command-line arguments, handling Windowz variants

+

+if not "%OS%" == "Windows_NT" goto win9xME_args

+if "%@eval[2+2]" == "4" goto 4NT_args

+

+:win9xME_args

+@rem Slurp the command line arguments.

+set CMD_LINE_ARGS=

+set _SKIP=2

+

+:win9xME_args_slurp

+if "x%~1" == "x" goto execute

+

+set CMD_LINE_ARGS=%*

+goto execute

+

+:4NT_args

+@rem Get arguments from the 4NT Shell from JP Software

+set CMD_LINE_ARGS=%$

+

+:execute

+@rem Setup the command line

+

+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar

+

+@rem Execute Gradle

+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%

+

+:end

+@rem End local scope for the variables with windows NT shell

+if "%ERRORLEVEL%"=="0" goto mainEnd

+

+:fail

+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of

+rem the _cmd.exe /c_ return code!

+if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1

+exit /b 1

+

+:mainEnd

+if "%OS%"=="Windows_NT" endlocal

+

+:omega

diff --git a/samples/wearable/GridViewPager/settings.gradle b/samples/wearable/GridViewPager/settings.gradle
new file mode 100644
index 0000000..d804d8b
--- /dev/null
+++ b/samples/wearable/GridViewPager/settings.gradle
@@ -0,0 +1 @@
+include 'Wearable'
diff --git a/samples/wearable/JumpingJack/Wearable/build.gradle b/samples/wearable/JumpingJack/Wearable/build.gradle
new file mode 100644
index 0000000..c07ae51
--- /dev/null
+++ b/samples/wearable/JumpingJack/Wearable/build.gradle
@@ -0,0 +1,34 @@
+apply plugin: 'android'
+
+repositories {
+    mavenCentral()
+}
+
+android {
+    compileSdkVersion 20
+    buildToolsVersion '20'
+
+    defaultConfig {
+        minSdkVersion 20
+        targetSdkVersion 20
+        versionCode 1
+        versionName "1.0"
+    }
+    buildTypes {
+        release {
+            runProguard false
+            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
+        }
+    }
+
+    lintOptions {
+        abortOnError false
+    }
+
+}
+
+dependencies {
+    compile 'com.google.android.gms:play-services:5.0.+@aar'
+    compile "com.android.support:support-v13:20.0.+"
+    compile "com.google.android.support:wearable:1.0.+"
+}
diff --git a/samples/wearable/JumpingJack/Wearable/proguard-rules.txt b/samples/wearable/JumpingJack/Wearable/proguard-rules.txt
new file mode 100644
index 0000000..0cc65ee
--- /dev/null
+++ b/samples/wearable/JumpingJack/Wearable/proguard-rules.txt
@@ -0,0 +1,17 @@
+# Add project specific ProGuard rules here.
+# By default, the flags in this file are appended to flags specified
+# in ${sdk.dir}/tools/proguard/proguard-android.txt
+# You can edit the include path and order by changing the ProGuard
+# include property in project.properties.
+#
+# For more details, see
+#   http://developer.android.com/guide/developing/tools/proguard.html
+
+# Add any project specific keep options here:
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+#   public *;
+#}
\ No newline at end of file
diff --git a/samples/wearable/JumpingJack/Wearable/src/main/AndroidManifest.xml b/samples/wearable/JumpingJack/Wearable/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..0be9b06
--- /dev/null
+++ b/samples/wearable/JumpingJack/Wearable/src/main/AndroidManifest.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+          package="com.example.android.wearable.jumpingjack">
+
+    <uses-permission android:name="android.permission.VIBRATE"/>
+
+    <application
+            android:allowBackup="true"
+            android:icon="@drawable/ic_launcher"
+            android:label="@string/app_name"
+            android:theme="@android:style/Theme.DeviceDefault.Light">
+        <activity
+                android:name=".MainActivity"
+                android:label="@string/app_name">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN"/>
+                <category android:name="android.intent.category.LAUNCHER"/>
+            </intent-filter>
+        </activity>
+    </application>
+
+</manifest>
diff --git a/samples/wearable/JumpingJack/Wearable/src/main/java/com/example/android/wearable/jumpingjack/MainActivity.java b/samples/wearable/JumpingJack/Wearable/src/main/java/com/example/android/wearable/jumpingjack/MainActivity.java
new file mode 100644
index 0000000..cdaaf6e
--- /dev/null
+++ b/samples/wearable/JumpingJack/Wearable/src/main/java/com/example/android/wearable/jumpingjack/MainActivity.java
@@ -0,0 +1,257 @@
+/*
+ * Copyright (C) 2014 Google Inc. All Rights Reserved.
+ *
+ * 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.
+ */
+
+package com.example.android.wearable.jumpingjack;
+
+import com.example.android.wearable.jumpingjack.fragments.CounterFragment;
+import com.example.android.wearable.jumpingjack.fragments.SettingsFragment;
+
+import android.app.Activity;
+import android.content.Context;
+import android.hardware.Sensor;
+import android.hardware.SensorEvent;
+import android.hardware.SensorEventListener;
+import android.hardware.SensorManager;
+import android.os.Bundle;
+import android.os.Handler;
+import android.support.v4.view.ViewPager;
+import android.util.Log;
+import android.view.WindowManager;
+import android.widget.ImageView;
+
+import java.util.Timer;
+import java.util.TimerTask;
+
+/**
+ * The main activity for the Jumping Jack application. This activity registers itself to receive
+ * sensor values. Since on wearable devices a full screen activity is very short-lived, we set the
+ * FLAG_KEEP_SCREEN_ON to give user adequate time for taking actions but since we don't want to
+ * keep screen on for an extended period of time, there is a SCREEN_ON_TIMEOUT_MS that is enforced
+ * if no interaction is discovered.
+ *
+ * This activity includes a {@link android.support.v4.view.ViewPager} with two pages, one that
+ * shows the current count and one that allows user to reset the counter. the current value of the
+ * counter is persisted so that upon re-launch, the counter picks up from the last value. At any
+ * stage, user can set this counter to 0.
+ */
+public class MainActivity extends Activity
+        implements SensorEventListener {
+
+    private static final String TAG = "JJMainActivity";
+
+    /** How long to keep the screen on when no activity is happening **/
+    private static final long SCREEN_ON_TIMEOUT_MS = 20000; // in milliseconds
+
+    /** an up-down movement that takes more than this will not be registered as such **/
+    private static final long TIME_THRESHOLD_NS = 2000000000; // in nanoseconds (= 2sec)
+
+    /**
+     * Earth gravity is around 9.8 m/s^2 but user may not completely direct his/her hand vertical
+     * during the exercise so we leave some room. Basically if the x-component of gravity, as
+     * measured by the Gravity sensor, changes with a variation (delta) > GRAVITY_THRESHOLD,
+     * we consider that a successful count.
+     */
+    private static final float GRAVITY_THRESHOLD = 7.0f;
+
+    private SensorManager mSensorManager;
+    private Sensor mSensor;
+    private long mLastTime = 0;
+    private boolean mUp = false;
+    private int mJumpCounter = 0;
+    private ViewPager mPager;
+    private CounterFragment mCounterPage;
+    private SettingsFragment mSettingPage;
+    private ImageView mSecondIndicator;
+    private ImageView mFirstIndicator;
+    private Timer mTimer;
+    private TimerTask mTimerTask;
+    private Handler mHandler;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.jj_layout);
+        setupViews();
+        mHandler = new Handler();
+        mJumpCounter = Utils.getCounterFromPreference(this);
+        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
+        renewTimer();
+        mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
+        mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_GRAVITY);
+    }
+
+    private void setupViews() {
+        mPager = (ViewPager) findViewById(R.id.pager);
+        mFirstIndicator = (ImageView) findViewById(R.id.indicator_0);
+        mSecondIndicator = (ImageView) findViewById(R.id.indicator_1);
+        final PagerAdapter adapter = new PagerAdapter(getFragmentManager());
+        mCounterPage = new CounterFragment();
+        mSettingPage = new SettingsFragment(this);
+        adapter.addFragment(mCounterPage);
+        adapter.addFragment(mSettingPage);
+        setIndicator(0);
+        mPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
+            @Override
+            public void onPageScrolled(int i, float v, int i2) {
+            }
+
+            @Override
+            public void onPageSelected(int i) {
+                setIndicator(i);
+                renewTimer();
+            }
+
+            @Override
+            public void onPageScrollStateChanged(int i) {
+            }
+        });
+
+        mPager.setAdapter(adapter);
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        if (mSensorManager.registerListener(this, mSensor,
+                SensorManager.SENSOR_DELAY_NORMAL)) {
+            if (Log.isLoggable(TAG, Log.DEBUG)) {
+                Log.d(TAG, "Successfully registered for the sensor updates");
+            }
+        }
+    }
+
+    @Override
+    protected void onPause() {
+        super.onPause();
+        mSensorManager.unregisterListener(this);
+        if (Log.isLoggable(TAG, Log.DEBUG)) {
+            Log.d(TAG, "Unregistered for sensor events");
+        }
+    }
+
+    @Override
+    public void onSensorChanged(SensorEvent event) {
+        detectJump(event.values[0], event.timestamp);
+    }
+
+    @Override
+    public void onAccuracyChanged(Sensor sensor, int accuracy) {
+    }
+
+    /**
+     * A simple algorithm to detect a successful up-down movement of hand(s). The algorithm is
+     * based on the assumption that when a person is wearing the watch, the x-component of gravity
+     * as measured by the Gravity Sensor is +9.8 when the hand is downward and -9.8 when the hand
+     * is upward (signs are reversed if the watch is worn on the right hand). Since the upward or
+     * downward may not be completely accurate, we leave some room and instead of 9.8, we use
+     * GRAVITY_THRESHOLD. We also consider the up <-> down movement successful if it takes less than
+     * TIME_THRESHOLD_NS.
+     */
+    private void detectJump(float xValue, long timestamp) {
+        if ((Math.abs(xValue) > GRAVITY_THRESHOLD)) {
+            if(timestamp - mLastTime < TIME_THRESHOLD_NS && mUp != (xValue > 0)) {
+                onJumpDetected(!mUp);
+            }
+            mUp = xValue > 0;
+            mLastTime = timestamp;
+        }
+    }
+
+    /**
+     * Called on detection of a successful down -> up or up -> down movement of hand.
+     */
+    private void onJumpDetected(boolean up) {
+        // we only count a pair of up and down as one successful movement
+        if (up) {
+            return;
+        }
+        mJumpCounter++;
+        setCounter(mJumpCounter);
+        renewTimer();
+    }
+
+    /**
+     * Updates the counter on UI, saves it to preferences and vibrates the watch when counter
+     * reaches a multiple of 10.
+     */
+    private void setCounter(int i) {
+        mCounterPage.setCounter(i);
+        Utils.saveCounterToPreference(this, i);
+        if (i > 0 && i % 10 == 0) {
+            Utils.vibrate(this, 0);
+        }
+    }
+
+    public void resetCounter() {
+        setCounter(0);
+        renewTimer();
+    }
+
+    /**
+     * Starts a timer to clear the flag FLAG_KEEP_SCREEN_ON.
+     */
+    private void renewTimer() {
+        if (null != mTimer) {
+            mTimer.cancel();
+        }
+        mTimerTask = new TimerTask() {
+            @Override
+            public void run() {
+                if (Log.isLoggable(TAG, Log.DEBUG)) {
+                    Log.d(TAG,
+                            "Removing the FLAG_KEEP_SCREEN_ON flag to allow going to background");
+                }
+                resetFlag();
+            }
+        };
+        mTimer = new Timer();
+        mTimer.schedule(mTimerTask, SCREEN_ON_TIMEOUT_MS);
+    }
+
+    /**
+     * Resets the FLAG_KEEP_SCREEN_ON flag so activity can go into background.
+     */
+    private void resetFlag() {
+        mHandler.post(new Runnable() {
+            @Override
+            public void run() {
+                if (Log.isLoggable(TAG, Log.DEBUG)) {
+                    Log.d(TAG, "Resetting FLAG_KEEP_SCREEN_ON flag to allow going to background");
+                }
+                getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
+                finish();
+            }
+        });
+    }
+
+    /**
+     * Sets the page indicator for the ViewPager.
+     */
+    private void setIndicator(int i) {
+        switch (i) {
+            case 0:
+                mFirstIndicator.setImageResource(R.drawable.full_10);
+                mSecondIndicator.setImageResource(R.drawable.empty_10);
+                break;
+            case 1:
+                mFirstIndicator.setImageResource(R.drawable.empty_10);
+                mSecondIndicator.setImageResource(R.drawable.full_10);
+                break;
+        }
+    }
+
+
+}
diff --git a/samples/wearable/JumpingJack/Wearable/src/main/java/com/example/android/wearable/jumpingjack/PagerAdapter.java b/samples/wearable/JumpingJack/Wearable/src/main/java/com/example/android/wearable/jumpingjack/PagerAdapter.java
new file mode 100644
index 0000000..f7ac2b0
--- /dev/null
+++ b/samples/wearable/JumpingJack/Wearable/src/main/java/com/example/android/wearable/jumpingjack/PagerAdapter.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2014 Google Inc. All Rights Reserved.
+ *
+ * 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.
+ */
+
+package com.example.android.wearable.jumpingjack;
+
+import android.app.Fragment;
+import android.app.FragmentManager;
+import android.support.v13.app.FragmentPagerAdapter;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * A simple adapter for the {@link android.support.v4.view.ViewPager}
+ */
+public class PagerAdapter extends FragmentPagerAdapter {
+
+    List<Fragment> mFragments = null;
+
+    public PagerAdapter(FragmentManager fm) {
+        super(fm);
+        mFragments = new ArrayList<Fragment>();
+    }
+
+    @Override
+    public Fragment getItem(int position) {
+        return mFragments.get(position);
+    }
+
+    @Override
+    public int getCount() {
+        return mFragments.size();
+    }
+
+    public void addFragment(Fragment fragment) {
+        mFragments.add(fragment);
+        notifyDataSetChanged();
+    }
+}
diff --git a/samples/wearable/JumpingJack/Wearable/src/main/java/com/example/android/wearable/jumpingjack/Utils.java b/samples/wearable/JumpingJack/Wearable/src/main/java/com/example/android/wearable/jumpingjack/Utils.java
new file mode 100644
index 0000000..4db66c9
--- /dev/null
+++ b/samples/wearable/JumpingJack/Wearable/src/main/java/com/example/android/wearable/jumpingjack/Utils.java
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 2014 Google Inc. All Rights Reserved.
+ *
+ * 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.
+ */
+
+package com.example.android.wearable.jumpingjack;
+
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.os.Vibrator;
+import android.preference.PreferenceManager;
+
+/**
+ * A utility class for some helper methods.
+ */
+public class Utils {
+
+    private static final int DEFAULT_VIBRATION_DURATION_MS = 200; // in millis
+    private static final String PREF_KEY_COUNTER = "counter";
+
+    /**
+     * Causes device to vibrate for the given duration (in millis). If duration is set to 0, then it
+     * will use the <code>DEFAULT_VIBRATION_DURATION_MS</code>.
+     */
+    public final static void vibrate(Context context, int duration) {
+        if (duration == 0) {
+            duration = DEFAULT_VIBRATION_DURATION_MS;
+        }
+        Vibrator v = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
+        v.vibrate(duration);
+    }
+
+    /**
+     * Saves the counter value in the preference storage. If <code>value</code>
+     * is negative, then the value will be removed from the preferences.
+     */
+    public static void saveCounterToPreference(Context context, int value) {
+        SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(context);
+        if (value < 0) {
+            // we want to remove
+            pref.edit().remove(PREF_KEY_COUNTER).apply();
+        } else {
+            pref.edit().putInt(PREF_KEY_COUNTER, value).apply();
+        }
+    }
+
+    /**
+     * Retrieves the value of counter from preference manager. If no value exists, it will return
+     * <code>0</code>.
+     */
+    public static int getCounterFromPreference(Context context) {
+        SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(context);
+        return pref.getInt(PREF_KEY_COUNTER, 0);
+    }
+
+}
diff --git a/samples/wearable/JumpingJack/Wearable/src/main/java/com/example/android/wearable/jumpingjack/fragments/CounterFragment.java b/samples/wearable/JumpingJack/Wearable/src/main/java/com/example/android/wearable/jumpingjack/fragments/CounterFragment.java
new file mode 100644
index 0000000..c55eb9b
--- /dev/null
+++ b/samples/wearable/JumpingJack/Wearable/src/main/java/com/example/android/wearable/jumpingjack/fragments/CounterFragment.java
@@ -0,0 +1,94 @@
+/*
+ * Copyright (C) 2014 Google Inc. All Rights Reserved.
+ *
+ * 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.
+ */
+
+package com.example.android.wearable.jumpingjack.fragments;
+
+import com.example.android.wearable.jumpingjack.R;
+import com.example.android.wearable.jumpingjack.Utils;
+
+import android.app.Fragment;
+import android.graphics.drawable.Drawable;
+import android.os.Bundle;
+import android.os.Handler;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import java.util.Timer;
+import java.util.TimerTask;
+
+/**
+ * A simple fragment for showing the count
+ */
+public class CounterFragment extends Fragment {
+
+    private static final long ANIMATION_INTERVAL_MS = 500; // in milliseconds
+    private TextView mCounterText;
+    private Timer mAnimationTimer;
+    private Handler mHandler;
+    private TimerTask mAnimationTask;
+    private boolean up = false;
+    private Drawable mDownDrawable;
+    private Drawable mUpDrawable;
+
+    @Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container,
+            Bundle savedInstanceState) {
+        View view = inflater.inflate(R.layout.counter_layout, container, false);
+        mDownDrawable = getResources().getDrawable(R.drawable.jump_down_50);
+        mUpDrawable = getResources().getDrawable(R.drawable.jump_up_50);
+        mCounterText = (TextView) view.findViewById(R.id.counter);
+        mCounterText.setCompoundDrawablesWithIntrinsicBounds(mUpDrawable, null, null, null);
+        setCounter(Utils.getCounterFromPreference(getActivity()));
+        mHandler = new Handler();
+        startAnimation();
+        return view;
+    }
+
+    private void startAnimation() {
+        mAnimationTask = new TimerTask() {
+            @Override
+            public void run() {
+                mHandler.post(new Runnable() {
+                    @Override
+                    public void run() {
+                        mCounterText.setCompoundDrawablesWithIntrinsicBounds(
+                                up ? mUpDrawable : mDownDrawable, null, null, null);
+                        up = !up;
+                    }
+                });
+            }
+        };
+        mAnimationTimer = new Timer();
+        mAnimationTimer.scheduleAtFixedRate(mAnimationTask, ANIMATION_INTERVAL_MS,
+                ANIMATION_INTERVAL_MS);
+    }
+
+    public void setCounter(String text) {
+        mCounterText.setText(text);
+    }
+
+    public void setCounter(int i) {
+        setCounter(i < 0 ? "0" : String.valueOf(i));
+    }
+
+    @Override
+    public void onDetach() {
+        mAnimationTimer.cancel();
+        super.onDetach();
+    }
+}
diff --git a/samples/wearable/JumpingJack/Wearable/src/main/java/com/example/android/wearable/jumpingjack/fragments/SettingsFragment.java b/samples/wearable/JumpingJack/Wearable/src/main/java/com/example/android/wearable/jumpingjack/fragments/SettingsFragment.java
new file mode 100644
index 0000000..fffe8fb
--- /dev/null
+++ b/samples/wearable/JumpingJack/Wearable/src/main/java/com/example/android/wearable/jumpingjack/fragments/SettingsFragment.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2014 Google Inc. All Rights Reserved.
+ *
+ * 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.
+ */
+
+package com.example.android.wearable.jumpingjack.fragments;
+
+import com.example.android.wearable.jumpingjack.MainActivity;
+import com.example.android.wearable.jumpingjack.R;
+
+import android.app.Fragment;
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.Button;
+
+/**
+ * A simple fragment that shows a button to reset the counter
+ */
+public class SettingsFragment extends Fragment {
+
+    private Button mButton;
+    private MainActivity mMainActivity;
+
+    public SettingsFragment(MainActivity mainActivity) {
+        mMainActivity = mainActivity;
+    }
+
+    @Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container,
+            Bundle savedInstanceState) {
+        View view = inflater.inflate(R.layout.setting_layout, container, false);
+        mButton = (Button) view.findViewById(R.id.btn);
+        mButton.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                mMainActivity.resetCounter();
+            }
+        });
+        return view;
+    }
+
+}
diff --git a/samples/wearable/JumpingJack/Wearable/src/main/res/drawable-hdpi/btn_reset_normal_200.png b/samples/wearable/JumpingJack/Wearable/src/main/res/drawable-hdpi/btn_reset_normal_200.png
new file mode 100644
index 0000000..e585202
--- /dev/null
+++ b/samples/wearable/JumpingJack/Wearable/src/main/res/drawable-hdpi/btn_reset_normal_200.png
Binary files differ
diff --git a/samples/wearable/JumpingJack/Wearable/src/main/res/drawable-hdpi/btn_reset_pressed_200.png b/samples/wearable/JumpingJack/Wearable/src/main/res/drawable-hdpi/btn_reset_pressed_200.png
new file mode 100644
index 0000000..0b83b6d
--- /dev/null
+++ b/samples/wearable/JumpingJack/Wearable/src/main/res/drawable-hdpi/btn_reset_pressed_200.png
Binary files differ
diff --git a/samples/wearable/JumpingJack/Wearable/src/main/res/drawable-hdpi/ic_launcher.png b/samples/wearable/JumpingJack/Wearable/src/main/res/drawable-hdpi/ic_launcher.png
new file mode 100644
index 0000000..2d0c37d
--- /dev/null
+++ b/samples/wearable/JumpingJack/Wearable/src/main/res/drawable-hdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/JumpingJack/Wearable/src/main/res/drawable-mdpi/ic_launcher.png b/samples/wearable/JumpingJack/Wearable/src/main/res/drawable-mdpi/ic_launcher.png
new file mode 100644
index 0000000..3211c9e
--- /dev/null
+++ b/samples/wearable/JumpingJack/Wearable/src/main/res/drawable-mdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/JumpingJack/Wearable/src/main/res/drawable-xhdpi/ic_launcher.png b/samples/wearable/JumpingJack/Wearable/src/main/res/drawable-xhdpi/ic_launcher.png
new file mode 100644
index 0000000..4ead8a2
--- /dev/null
+++ b/samples/wearable/JumpingJack/Wearable/src/main/res/drawable-xhdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/JumpingJack/Wearable/src/main/res/drawable-xxhdpi/ic_launcher.png b/samples/wearable/JumpingJack/Wearable/src/main/res/drawable-xxhdpi/ic_launcher.png
new file mode 100644
index 0000000..8b357e4
--- /dev/null
+++ b/samples/wearable/JumpingJack/Wearable/src/main/res/drawable-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/JumpingJack/Wearable/src/main/res/drawable-xxxhdpi/ic_launcher.png b/samples/wearable/JumpingJack/Wearable/src/main/res/drawable-xxxhdpi/ic_launcher.png
new file mode 100644
index 0000000..da3c00a
--- /dev/null
+++ b/samples/wearable/JumpingJack/Wearable/src/main/res/drawable-xxxhdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/JumpingJack/Wearable/src/main/res/drawable/empty_10.png b/samples/wearable/JumpingJack/Wearable/src/main/res/drawable/empty_10.png
new file mode 100644
index 0000000..78ee76b
--- /dev/null
+++ b/samples/wearable/JumpingJack/Wearable/src/main/res/drawable/empty_10.png
Binary files differ
diff --git a/samples/wearable/JumpingJack/Wearable/src/main/res/drawable/full_10.png b/samples/wearable/JumpingJack/Wearable/src/main/res/drawable/full_10.png
new file mode 100644
index 0000000..53b799e
--- /dev/null
+++ b/samples/wearable/JumpingJack/Wearable/src/main/res/drawable/full_10.png
Binary files differ
diff --git a/samples/wearable/JumpingJack/Wearable/src/main/res/drawable/jump_down_50.png b/samples/wearable/JumpingJack/Wearable/src/main/res/drawable/jump_down_50.png
new file mode 100644
index 0000000..28980f8
--- /dev/null
+++ b/samples/wearable/JumpingJack/Wearable/src/main/res/drawable/jump_down_50.png
Binary files differ
diff --git a/samples/wearable/JumpingJack/Wearable/src/main/res/drawable/jump_up_50.png b/samples/wearable/JumpingJack/Wearable/src/main/res/drawable/jump_up_50.png
new file mode 100644
index 0000000..86dcef5
--- /dev/null
+++ b/samples/wearable/JumpingJack/Wearable/src/main/res/drawable/jump_up_50.png
Binary files differ
diff --git a/samples/wearable/JumpingJack/Wearable/src/main/res/drawable/submit_button.xml b/samples/wearable/JumpingJack/Wearable/src/main/res/drawable/submit_button.xml
new file mode 100644
index 0000000..e202e9a
--- /dev/null
+++ b/samples/wearable/JumpingJack/Wearable/src/main/res/drawable/submit_button.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@drawable/btn_reset_pressed_200"
+          android:state_pressed="true" />
+    <item android:drawable="@drawable/btn_reset_pressed_200"
+          android:state_focused="true" />
+    <item android:drawable="@drawable/btn_reset_normal_200" />
+</selector>
\ No newline at end of file
diff --git a/samples/wearable/JumpingJack/Wearable/src/main/res/layout/counter_layout.xml b/samples/wearable/JumpingJack/Wearable/src/main/res/layout/counter_layout.xml
new file mode 100644
index 0000000..2216d2f
--- /dev/null
+++ b/samples/wearable/JumpingJack/Wearable/src/main/res/layout/counter_layout.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="@color/white">
+
+    <TextView
+        android:id="@+id/counter"
+        android:layout_centerInParent="true"
+        android:textSize="50sp"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content" />
+
+</RelativeLayout>
\ No newline at end of file
diff --git a/samples/wearable/JumpingJack/Wearable/src/main/res/layout/jj_layout.xml b/samples/wearable/JumpingJack/Wearable/src/main/res/layout/jj_layout.xml
new file mode 100644
index 0000000..371cfe8
--- /dev/null
+++ b/samples/wearable/JumpingJack/Wearable/src/main/res/layout/jj_layout.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="@color/white">
+
+    <android.support.v4.view.ViewPager
+        xmlns:android="http://schemas.android.com/apk/res/android"
+        android:id="@+id/pager"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:background="#000"
+        />
+
+    <LinearLayout
+        android:layout_alignParentBottom="true"
+        android:layout_centerHorizontal="true"
+        android:layout_marginBottom="10dp"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content">
+        <ImageView
+            android:id="@+id/indicator_0"
+            android:layout_marginRight="5dp"
+            android:src="@drawable/full_10"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content" />
+        <ImageView
+            android:id="@+id/indicator_1"
+            android:src="@drawable/empty_10"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content" />
+    </LinearLayout>
+
+</RelativeLayout>
diff --git a/samples/wearable/JumpingJack/Wearable/src/main/res/layout/setting_layout.xml b/samples/wearable/JumpingJack/Wearable/src/main/res/layout/setting_layout.xml
new file mode 100644
index 0000000..c012560
--- /dev/null
+++ b/samples/wearable/JumpingJack/Wearable/src/main/res/layout/setting_layout.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="@color/white">
+
+    <Button
+        android:id="@+id/btn"
+        android:layout_alignParentTop="true"
+        android:layout_centerHorizontal="true"
+        android:layout_marginTop="40dp"
+        android:layout_width="75dp"
+        android:layout_height="75dp"
+        android:background="@drawable/submit_button"/>
+
+    <TextView
+        android:layout_width="fill_parent"
+        android:layout_height="wrap_content"
+        android:layout_below="@+id/btn"
+        android:layout_marginTop="5dp"
+        android:gravity="center"
+        android:textColor="@color/blue"
+        android:text="@string/reset_counter"/>
+
+</RelativeLayout>
\ No newline at end of file
diff --git a/samples/wearable/JumpingJack/Wearable/src/main/res/values/colors.xml b/samples/wearable/JumpingJack/Wearable/src/main/res/values/colors.xml
new file mode 100644
index 0000000..3e62ace
--- /dev/null
+++ b/samples/wearable/JumpingJack/Wearable/src/main/res/values/colors.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <color name="white">#ffffff</color>
+    <color name="blue">#3f51b5</color>
+</resources>
\ No newline at end of file
diff --git a/samples/wearable/JumpingJack/Wearable/src/main/res/values/dimens.xml b/samples/wearable/JumpingJack/Wearable/src/main/res/values/dimens.xml
new file mode 100644
index 0000000..47c8224
--- /dev/null
+++ b/samples/wearable/JumpingJack/Wearable/src/main/res/values/dimens.xml
@@ -0,0 +1,5 @@
+<resources>
+    <!-- Default screen margins, per the Android Design guidelines. -->
+    <dimen name="activity_horizontal_margin">16dp</dimen>
+    <dimen name="activity_vertical_margin">16dp</dimen>
+</resources>
diff --git a/samples/wearable/JumpingJack/Wearable/src/main/res/values/strings.xml b/samples/wearable/JumpingJack/Wearable/src/main/res/values/strings.xml
new file mode 100644
index 0000000..0c762c7
--- /dev/null
+++ b/samples/wearable/JumpingJack/Wearable/src/main/res/values/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+
+    <string name="app_name">Jumping Jack</string>
+    <string name="reset_counter">Reset Counter</string>
+
+</resources>
diff --git a/samples/wearable/JumpingJack/build.gradle b/samples/wearable/JumpingJack/build.gradle
new file mode 100644
index 0000000..ce58a8f
--- /dev/null
+++ b/samples/wearable/JumpingJack/build.gradle
@@ -0,0 +1,17 @@
+// Top-level build file where you can add configuration options common to all sub-projects/modules.
+
+buildscript {
+    repositories {
+        mavenCentral()
+    }
+    dependencies {
+        classpath 'com.android.tools.build:gradle:0.11.+'
+    }
+}
+
+allprojects {
+    repositories {
+        mavenCentral()
+    }
+}
+
diff --git a/samples/wearable/JumpingJack/gradle.properties b/samples/wearable/JumpingJack/gradle.properties
new file mode 100644
index 0000000..5d08ba7
--- /dev/null
+++ b/samples/wearable/JumpingJack/gradle.properties
@@ -0,0 +1,18 @@
+# Project-wide Gradle settings.
+
+# IDE (e.g. Android Studio) users:
+# Settings specified in this file will override any Gradle settings
+# configured through the IDE.
+
+# For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+# Default value: -Xmx10248m -XX:MaxPermSize=256m
+# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
+
+# When configured, Gradle will run in incubating parallel mode.
+# This option should only be used with decoupled projects. More details, visit
+# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
+# org.gradle.parallel=true
\ No newline at end of file
diff --git a/samples/wearable/JumpingJack/gradle/wrapper/gradle-wrapper.jar b/samples/wearable/JumpingJack/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 0000000..5838598
--- /dev/null
+++ b/samples/wearable/JumpingJack/gradle/wrapper/gradle-wrapper.jar
Binary files differ
diff --git a/samples/wearable/JumpingJack/gradle/wrapper/gradle-wrapper.properties b/samples/wearable/JumpingJack/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..e83e460
--- /dev/null
+++ b/samples/wearable/JumpingJack/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Fri Mar 14 14:02:22 PDT 2014
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=http\://services.gradle.org/distributions/gradle-1.11-all.zip
diff --git a/samples/wearable/JumpingJack/gradlew b/samples/wearable/JumpingJack/gradlew
new file mode 100755
index 0000000..91a7e26
--- /dev/null
+++ b/samples/wearable/JumpingJack/gradlew
@@ -0,0 +1,164 @@
+#!/usr/bin/env bash
+
+##############################################################################
+##
+##  Gradle start up script for UN*X
+##
+##############################################################################
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn ( ) {
+    echo "$*"
+}
+
+die ( ) {
+    echo
+    echo "$*"
+    echo
+    exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+case "`uname`" in
+  CYGWIN* )
+    cygwin=true
+    ;;
+  Darwin* )
+    darwin=true
+    ;;
+  MINGW* )
+    msys=true
+    ;;
+esac
+
+# For Cygwin, ensure paths are in UNIX format before anything is touched.
+if $cygwin ; then
+    [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
+fi
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+    ls=`ls -ld "$PRG"`
+    link=`expr "$ls" : '.*-> \(.*\)$'`
+    if expr "$link" : '/.*' > /dev/null; then
+        PRG="$link"
+    else
+        PRG=`dirname "$PRG"`"/$link"
+    fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >&-
+APP_HOME="`pwd -P`"
+cd "$SAVED" >&-
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+        # IBM's JDK on AIX uses strange locations for the executables
+        JAVACMD="$JAVA_HOME/jre/sh/java"
+    else
+        JAVACMD="$JAVA_HOME/bin/java"
+    fi
+    if [ ! -x "$JAVACMD" ] ; then
+        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+    fi
+else
+    JAVACMD="java"
+    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
+    MAX_FD_LIMIT=`ulimit -H -n`
+    if [ $? -eq 0 ] ; then
+        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+            MAX_FD="$MAX_FD_LIMIT"
+        fi
+        ulimit -n $MAX_FD
+        if [ $? -ne 0 ] ; then
+            warn "Could not set maximum file descriptor limit: $MAX_FD"
+        fi
+    else
+        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+    fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+
+    # We build the pattern for arguments to be converted via cygpath
+    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+    SEP=""
+    for dir in $ROOTDIRSRAW ; do
+        ROOTDIRS="$ROOTDIRS$SEP$dir"
+        SEP="|"
+    done
+    OURCYGPATTERN="(^($ROOTDIRS))"
+    # Add a user-defined pattern to the cygpath arguments
+    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+    fi
+    # Now convert the arguments - kludge to limit ourselves to /bin/sh
+    i=0
+    for arg in "$@" ; do
+        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
+
+        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
+            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+        else
+            eval `echo args$i`="\"$arg\""
+        fi
+        i=$((i+1))
+    done
+    case $i in
+        (0) set -- ;;
+        (1) set -- "$args0" ;;
+        (2) set -- "$args0" "$args1" ;;
+        (3) set -- "$args0" "$args1" "$args2" ;;
+        (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+        (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+        (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+        (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+        (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+        (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+    esac
+fi
+
+# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
+function splitJvmOpts() {
+    JVM_OPTS=("$@")
+}
+eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
+JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
+
+exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
diff --git a/samples/wearable/JumpingJack/gradlew.bat b/samples/wearable/JumpingJack/gradlew.bat
new file mode 100644
index 0000000..aec9973
--- /dev/null
+++ b/samples/wearable/JumpingJack/gradlew.bat
@@ -0,0 +1,90 @@
+@if "%DEBUG%" == "" @echo off

+@rem ##########################################################################

+@rem

+@rem  Gradle startup script for Windows

+@rem

+@rem ##########################################################################

+

+@rem Set local scope for the variables with windows NT shell

+if "%OS%"=="Windows_NT" setlocal

+

+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.

+set DEFAULT_JVM_OPTS=

+

+set DIRNAME=%~dp0

+if "%DIRNAME%" == "" set DIRNAME=.

+set APP_BASE_NAME=%~n0

+set APP_HOME=%DIRNAME%

+

+@rem Find java.exe

+if defined JAVA_HOME goto findJavaFromJavaHome

+

+set JAVA_EXE=java.exe

+%JAVA_EXE% -version >NUL 2>&1

+if "%ERRORLEVEL%" == "0" goto init

+

+echo.

+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.

+echo.

+echo Please set the JAVA_HOME variable in your environment to match the

+echo location of your Java installation.

+

+goto fail

+

+:findJavaFromJavaHome

+set JAVA_HOME=%JAVA_HOME:"=%

+set JAVA_EXE=%JAVA_HOME%/bin/java.exe

+

+if exist "%JAVA_EXE%" goto init

+

+echo.

+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%

+echo.

+echo Please set the JAVA_HOME variable in your environment to match the

+echo location of your Java installation.

+

+goto fail

+

+:init

+@rem Get command-line arguments, handling Windowz variants

+

+if not "%OS%" == "Windows_NT" goto win9xME_args

+if "%@eval[2+2]" == "4" goto 4NT_args

+

+:win9xME_args

+@rem Slurp the command line arguments.

+set CMD_LINE_ARGS=

+set _SKIP=2

+

+:win9xME_args_slurp

+if "x%~1" == "x" goto execute

+

+set CMD_LINE_ARGS=%*

+goto execute

+

+:4NT_args

+@rem Get arguments from the 4NT Shell from JP Software

+set CMD_LINE_ARGS=%$

+

+:execute

+@rem Setup the command line

+

+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar

+

+@rem Execute Gradle

+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%

+

+:end

+@rem End local scope for the variables with windows NT shell

+if "%ERRORLEVEL%"=="0" goto mainEnd

+

+:fail

+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of

+rem the _cmd.exe /c_ return code!

+if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1

+exit /b 1

+

+:mainEnd

+if "%OS%"=="Windows_NT" endlocal

+

+:omega

diff --git a/samples/wearable/JumpingJack/license.txt b/samples/wearable/JumpingJack/license.txt
new file mode 100644
index 0000000..1555b52
--- /dev/null
+++ b/samples/wearable/JumpingJack/license.txt
@@ -0,0 +1,5 @@
+The Jumping Jack icons used in this app have been created by Jasper Reyes
+(http://thenounproject.com/term/jumping-jack/26440/) and Co-Effect Creative
+(http://thenounproject.com/term/exercise/15085/) from The Noun Project and are used under the
+Creative Commons (CC By 3.0) license
+
diff --git a/samples/wearable/JumpingJack/proguard-rules.txt b/samples/wearable/JumpingJack/proguard-rules.txt
new file mode 100644
index 0000000..0cc65ee
--- /dev/null
+++ b/samples/wearable/JumpingJack/proguard-rules.txt
@@ -0,0 +1,17 @@
+# Add project specific ProGuard rules here.
+# By default, the flags in this file are appended to flags specified
+# in ${sdk.dir}/tools/proguard/proguard-android.txt
+# You can edit the include path and order by changing the ProGuard
+# include property in project.properties.
+#
+# For more details, see
+#   http://developer.android.com/guide/developing/tools/proguard.html
+
+# Add any project specific keep options here:
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+#   public *;
+#}
\ No newline at end of file
diff --git a/samples/wearable/JumpingJack/settings.gradle b/samples/wearable/JumpingJack/settings.gradle
new file mode 100644
index 0000000..1d97d30
--- /dev/null
+++ b/samples/wearable/JumpingJack/settings.gradle
@@ -0,0 +1 @@
+include ':Wearable'
diff --git a/samples/wearable/Notifications/Application/_index.html b/samples/wearable/Notifications/Application/_index.html
new file mode 100644
index 0000000..4bda0fa
--- /dev/null
+++ b/samples/wearable/Notifications/Application/_index.html
@@ -0,0 +1,24 @@
+<p>This sample phone application provides a showcase of available notification
+styles and demonstrates various features of the Android Wear notifications
+API. Running the sample on your phone allows you to select between various
+notification styles and to see how these notifications are displayed, both in
+a phone's notification shade and on the wearable. The sample allows you to
+create the following types of notifications:</p>
+<ul>
+<li>Basic notification</li>
+<li>"Inbox style" notification: multiple lines of text</li>
+<li>"Big picture style" notification: a full-screen background image for the
+card on the wearable</li>
+<li>"Big text style" notification: a tall card that is collapsed and can be
+expanded with a tap</li>
+<li>"Big action style" notification: tapping anywhere on the card triggers the
+notification content intent</li>
+<li>Notification with multiple pages: swipe horizontally to view the second
+page</li>
+<li>Bundled Notifications: a stack of cards that can be individually
+expanded</li>
+</ul>
+<p>This sample also allows you to toggle other attributes for each of these
+notification types, including whether a content intent or action are included,
+and whether the notification is marked as "local only," indicating that it
+should not be bridged between devices.</p>
diff --git a/samples/wearable/Notifications/Application/build.gradle b/samples/wearable/Notifications/Application/build.gradle
new file mode 100644
index 0000000..32208a3
--- /dev/null
+++ b/samples/wearable/Notifications/Application/build.gradle
@@ -0,0 +1,29 @@
+apply plugin: 'android'
+
+android {
+    compileSdkVersion 19
+    buildToolsVersion '20'
+
+    defaultConfig {
+        minSdkVersion 18
+        targetSdkVersion 19
+        versionCode 1
+        versionName "1.0"
+    }
+
+    buildTypes {
+        release {
+            runProguard false
+            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
+        }
+    }
+
+    aaptOptions {
+        noCompress 'apk'
+    }
+}
+
+dependencies {
+    compile "com.android.support:support-v4:20.0.+"
+    wearApp project(':Wearable')
+}
\ No newline at end of file
diff --git a/samples/wearable/Notifications/Application/proguard-rules.txt b/samples/wearable/Notifications/Application/proguard-rules.txt
new file mode 100644
index 0000000..08e5bdc
--- /dev/null
+++ b/samples/wearable/Notifications/Application/proguard-rules.txt
@@ -0,0 +1,22 @@
+# To enable ProGuard in your project, edit project.properties
+# to define the proguard.config property as described in that file.
+#
+# Add project specific ProGuard rules here.
+# By default, the flags in this file are appended to flags specified
+# in ${sdk.dir}/tools/proguard/proguard-android.txt
+# You can edit the include path and order by changing the ProGuard
+# include property in project.properties.
+#
+# For more details, see
+#   http://developer.android.com/guide/developing/tools/proguard.html
+
+# Add any project specific keep options here:
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+#   public *;
+#}
+-dontwarn android.support.wearable.view.DelayedConfirmationView
+-dontwarn android.support.wearable.view.CircledImageView
diff --git a/samples/wearable/Notifications/Application/src/main/AndroidManifest.xml b/samples/wearable/Notifications/Application/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..a5e530e
--- /dev/null
+++ b/samples/wearable/Notifications/Application/src/main/AndroidManifest.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+        package="com.example.android.support.wearable.notifications" >
+
+    <uses-sdk android:minSdkVersion="18" android:targetSdkVersion="19"/>
+
+    <application
+            android:allowBackup="true"
+            android:icon="@mipmap/ic_launcher"
+            android:label="@string/app_name"
+            android:theme="@style/AppTheme" >
+
+        <activity
+                android:name=".MainActivity"
+                android:label="@string/app_name"
+                android:windowSoftInputMode="stateHidden" >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
+
+        <receiver android:name=".NotificationIntentReceiver"
+                android:exported="false">
+            <intent-filter>
+                <action android:name="com.example.android.support.wearable.notifications.ACTION_EXAMPLE" />
+                <action android:name="com.example.android.support.wearable.notifications.ACTION_ENABLE_MESSAGES" />
+                <action android:name="com.example.android.support.wearable.notifications.ACTION_DISABLE_MESSAGES" />
+            </intent-filter>
+        </receiver>
+
+    </application>
+
+</manifest>
diff --git a/samples/wearable/Notifications/Application/src/main/java/com/example/android/support/wearable/notifications/ActionsPreset.java b/samples/wearable/Notifications/Application/src/main/java/com/example/android/support/wearable/notifications/ActionsPreset.java
new file mode 100644
index 0000000..86fe67e
--- /dev/null
+++ b/samples/wearable/Notifications/Application/src/main/java/com/example/android/support/wearable/notifications/ActionsPreset.java
@@ -0,0 +1,17 @@
+package com.example.android.support.wearable.notifications;
+
+import android.content.Context;
+import android.support.v4.app.NotificationCompat;
+
+/**
+ * Base class for notification actions presets.
+ */
+public abstract class ActionsPreset extends NamedPreset {
+    public ActionsPreset(int nameResId) {
+        super(nameResId);
+    }
+
+    /** Apply the priority to a notification builder */
+    public abstract void apply(Context context, NotificationCompat.Builder builder,
+            NotificationCompat.WearableExtender wearableOptions);
+}
diff --git a/samples/wearable/Notifications/Application/src/main/java/com/example/android/support/wearable/notifications/ActionsPresets.java b/samples/wearable/Notifications/Application/src/main/java/com/example/android/support/wearable/notifications/ActionsPresets.java
new file mode 100644
index 0000000..ebac6c0
--- /dev/null
+++ b/samples/wearable/Notifications/Application/src/main/java/com/example/android/support/wearable/notifications/ActionsPresets.java
@@ -0,0 +1,142 @@
+package com.example.android.support.wearable.notifications;
+
+import android.content.Context;
+import android.support.v4.app.NotificationCompat;
+import android.support.v4.app.RemoteInput;
+
+/**
+ * Collection of notification actions presets.
+ */
+public class ActionsPresets {
+    public static final ActionsPreset NO_ACTIONS_PRESET = new NoActionsPreset();
+    public static final ActionsPreset SINGLE_ACTION_PRESET = new SingleActionPreset();
+
+    public static final ActionsPreset[] PRESETS = new ActionsPreset[] {
+            NO_ACTIONS_PRESET,
+            SINGLE_ACTION_PRESET,
+            new ReplyActionPreset(),
+            new ReplyWithChoicesActionPreset(),
+            new DifferentActionsOnPhoneAndWearable(),
+            new LongTitleActionPreset()
+    };
+
+    private static class NoActionsPreset extends ActionsPreset {
+        public NoActionsPreset() {
+            super(R.string.no_actions);
+        }
+
+        @Override
+        public void apply(Context context, NotificationCompat.Builder builder,
+                NotificationCompat.WearableExtender wearableOptions) {
+        }
+    }
+
+    private static class SingleActionPreset extends ActionsPreset {
+        public SingleActionPreset() {
+            super(R.string.single_action);
+        }
+
+        @Override
+        public void apply(Context context, NotificationCompat.Builder builder,
+                NotificationCompat.WearableExtender wearableOptions) {
+            builder.addAction(R.drawable.ic_full_action,
+                    context.getString(R.string.example_action),
+                    NotificationUtil.getExamplePendingIntent(context,
+                            R.string.example_action_clicked))
+                    .build();
+        }
+    }
+
+    private static class LongTitleActionPreset extends ActionsPreset {
+        public LongTitleActionPreset() {
+            super(R.string.long_title_action);
+        }
+
+        @Override
+        public void apply(Context context, NotificationCompat.Builder builder,
+                NotificationCompat.WearableExtender wearableOptions) {
+            builder.addAction(R.drawable.ic_full_action,
+                    context.getString(R.string.example_action_long_title),
+                    NotificationUtil.getExamplePendingIntent(context,
+                            R.string.example_action_clicked))
+                    .build();
+        }
+    }
+
+    private static class ReplyActionPreset extends ActionsPreset {
+        public ReplyActionPreset() {
+            super(R.string.reply_action);
+        }
+
+        @Override
+        public void apply(Context context, NotificationCompat.Builder builder,
+                NotificationCompat.WearableExtender wearableOptions) {
+            RemoteInput remoteInput = new RemoteInput.Builder(NotificationUtil.EXTRA_REPLY)
+                    .setLabel(context.getString(R.string.example_reply_label))
+                    .build();
+            NotificationCompat.Action action = new NotificationCompat.Action.Builder(
+                    R.drawable.ic_full_reply,
+                    context.getString(R.string.example_reply_action),
+                    NotificationUtil.getExamplePendingIntent(context,
+                            R.string.example_reply_action_clicked))
+                    .addRemoteInput(remoteInput)
+                    .build();
+            builder.addAction(action);
+        }
+    }
+
+    private static class ReplyWithChoicesActionPreset extends ActionsPreset {
+        public ReplyWithChoicesActionPreset() {
+            super(R.string.reply_action_with_choices);
+        }
+
+        @Override
+        public void apply(Context context, NotificationCompat.Builder builder,
+                NotificationCompat.WearableExtender wearableOptions) {
+            RemoteInput remoteInput = new RemoteInput.Builder(NotificationUtil.EXTRA_REPLY)
+                    .setLabel(context.getString(R.string.example_reply_answer_label))
+                    .setChoices(new String[] { context.getString(R.string.yes),
+                            context.getString(R.string.no), context.getString(R.string.maybe) })
+                    .build();
+            NotificationCompat.Action action = new NotificationCompat.Action.Builder(
+                    R.drawable.ic_full_reply,
+                    context.getString(R.string.example_reply_action),
+                    NotificationUtil.getExamplePendingIntent(context,
+                            R.string.example_reply_action_clicked))
+                    .addRemoteInput(remoteInput)
+                    .build();
+            wearableOptions.addAction(action);
+        }
+    }
+
+    private static class DifferentActionsOnPhoneAndWearable extends ActionsPreset {
+        public DifferentActionsOnPhoneAndWearable() {
+            super(R.string.different_actions_on_phone_and_wearable);
+        }
+
+        @Override
+        public void apply(Context context, NotificationCompat.Builder builder,
+                NotificationCompat.WearableExtender wearableOptions) {
+            NotificationCompat.Action phoneAction = new NotificationCompat.Action.Builder(
+                    R.drawable.ic_full_action,
+                    context.getString(R.string.phone_action),
+                    NotificationUtil.getExamplePendingIntent(context,
+                            R.string.phone_action_clicked))
+                    .build();
+            builder.addAction(phoneAction);
+
+            RemoteInput remoteInput = new RemoteInput.Builder(NotificationUtil.EXTRA_REPLY)
+                    .setLabel(context.getString(R.string.example_reply_label))
+                    .build();
+
+            NotificationCompat.Action wearableAction = new NotificationCompat.Action.Builder(
+                    R.drawable.ic_full_reply,
+                    context.getString(R.string.wearable_action),
+                    NotificationUtil.getExamplePendingIntent(context,
+                            R.string.wearable_action_clicked))
+                    .addRemoteInput(remoteInput)
+                    .build();
+            wearableOptions.addAction(wearableAction);
+        }
+    }
+}
diff --git a/samples/wearable/Notifications/Application/src/main/java/com/example/android/support/wearable/notifications/BackgroundPickers.java b/samples/wearable/Notifications/Application/src/main/java/com/example/android/support/wearable/notifications/BackgroundPickers.java
new file mode 100644
index 0000000..58b3dfe
--- /dev/null
+++ b/samples/wearable/Notifications/Application/src/main/java/com/example/android/support/wearable/notifications/BackgroundPickers.java
@@ -0,0 +1,124 @@
+package com.example.android.support.wearable.notifications;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Manages the background image pickers.
+ */
+public class BackgroundPickers {
+
+    public interface OnBackgroundPickersChangedListener {
+        public void onBackgroundPickersChanged(BackgroundPickers pickers);
+    }
+
+    private final ViewGroup mContainer;
+    private final OnPickedListener mOnPickedListener;
+    private final List<ViewGroup> mPickers;
+    private final OnBackgroundPickersChangedListener listener;
+
+    public BackgroundPickers(ViewGroup container, OnBackgroundPickersChangedListener listener) {
+        this.mContainer = container;
+        this.mOnPickedListener = new OnPickedListener();
+        this.mPickers = new ArrayList<ViewGroup>();
+        this.listener = listener;
+    }
+
+    /**
+     * Generates the pickers as necessary.
+     */
+    public void generatePickers(int count) {
+        // Clear existing containers.
+        clear();
+
+        // Fill in new pickers.
+        LayoutInflater inflater = LayoutInflater.from(mContainer.getContext());
+        Resources res = mContainer.getResources();
+        for (int i = 0; i < count; i++) {
+            View picker = inflater.inflate(R.layout.background_picker, mContainer, false);
+            TextView label = (TextView) picker.findViewById(R.id.bg_picker_label);
+            label.setText(String.format(res.getString(R.string.bg_picker_label), i+1));
+            ViewGroup pickerBox = (ViewGroup) picker.findViewById(R.id.bg_picker_container);
+            mPickers.add(pickerBox);
+            for (int j = 0; j < pickerBox.getChildCount(); j++) {
+                ImageView img = (ImageView) pickerBox.getChildAt(j);
+                img.setOnClickListener(mOnPickedListener);
+            }
+            mContainer.addView(picker);
+        }
+    }
+
+    /**
+     * Returns the background resource for the picker at the given index.
+     * @param position Index of the background picker.
+     * @return Id of the background image resource. null if no image is picked.
+     */
+    public Integer getRes(int position) {
+        String tag = (String) mPickers.get(position).getTag();
+        if (tag == null) {
+            return null;
+        }
+
+        Context context = mContainer.getContext();
+        return context.getResources().getIdentifier(tag, "drawable", context.getPackageName());
+    }
+
+    /**
+     * Returns the all the background resources for the pickers managed by this object. Returns null
+     * if no pickers exist.
+     */
+    public Integer[] getRes() {
+        if (mPickers.size() == 0) {
+            return null;
+        }
+
+        Integer[] res = new Integer[mPickers.size()];
+        for (int i = 0; i < mPickers.size(); i++) {
+            res[i] = getRes(i);
+        }
+        return res;
+    }
+
+    /**
+     * Clears the pickers.
+     */
+    public void clear() {
+        mContainer.removeAllViews();
+        mPickers.clear();
+    }
+
+    public int getCount() {
+        return mPickers.size();
+    }
+
+    private class OnPickedListener implements View.OnClickListener {
+
+        @Override
+        public void onClick(View view) {
+            ImageView pickedView = (ImageView) view;
+            ViewGroup pickerBox = (ViewGroup) view.getParent();
+
+            // Clear old selection.
+            for (int i = 0; i < pickerBox.getChildCount(); i++) {
+                ImageView childView = (ImageView) pickerBox.getChildAt(i);
+                childView.setBackgroundResource(R.drawable.unselected_background);
+            }
+
+            // Set new selection.
+            pickedView.setBackgroundResource(R.drawable.selected_background);
+            pickerBox.setTag(pickedView.getTag());
+
+            if (listener != null) {
+                listener.onBackgroundPickersChanged(BackgroundPickers.this);
+            }
+        }
+    }
+}
diff --git a/samples/wearable/Notifications/Application/src/main/java/com/example/android/support/wearable/notifications/MainActivity.java b/samples/wearable/Notifications/Application/src/main/java/com/example/android/support/wearable/notifications/MainActivity.java
new file mode 100644
index 0000000..a7474aa
--- /dev/null
+++ b/samples/wearable/Notifications/Application/src/main/java/com/example/android/support/wearable/notifications/MainActivity.java
@@ -0,0 +1,336 @@
+package com.example.android.support.wearable.notifications;
+
+import android.app.Activity;
+import android.app.Notification;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.support.v4.app.NotificationManagerCompat;
+import android.text.Editable;
+import android.text.TextWatcher;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.AdapterView;
+import android.widget.ArrayAdapter;
+import android.widget.CheckBox;
+import android.widget.CompoundButton;
+import android.widget.EditText;
+import android.widget.Spinner;
+import android.widget.TextView;
+
+import java.util.Arrays;
+
+/**
+ * Main activity which posts a notification when resumed, and allows customization
+ * of that notification via controls.
+ */
+public class MainActivity extends Activity implements Handler.Callback {
+    private static final int MSG_POST_NOTIFICATIONS = 0;
+    private static final long POST_NOTIFICATIONS_DELAY_MS = 200;
+
+    private Handler mHandler;
+    private Spinner mPresetSpinner;
+    private EditText mTitleEditText;
+    private EditText mTextEditText;
+    private TextWatcher mTextChangedListener;
+    private Spinner mPrioritySpinner;
+    private Spinner mActionsSpinner;
+    private CheckBox mIncludeLargeIconCheckbox;
+    private CheckBox mLocalOnlyCheckbox;
+    private CheckBox mIncludeContentIntentCheckbox;
+    private CheckBox mVibrateCheckbox;
+    private BackgroundPickers mBackgroundPickers;
+    private int postedNotificationCount = 0;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_main);
+
+        mHandler = new Handler(this);
+        mTextChangedListener = new UpdateNotificationsOnTextChangeListener();
+
+        initPresetSpinner();
+        initTitleEditText();
+        initTextEditText();
+        initPrioritySpinner();
+        initActionsSpinner();
+        initIncludeLargeIconCheckbox();
+        initLocalOnlyCheckbox();
+        initIncludeContentIntentCheckbox();
+        initVibrateCheckbox();
+        initBackgroundPickers();
+
+        NotificationPreset preset = NotificationPresets.PRESETS[
+                mPresetSpinner.getSelectedItemPosition()];
+        updateTextEditors(preset);
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        updateNotifications(false /* cancelExisting */);
+    }
+
+    private void initPresetSpinner() {
+        mPresetSpinner = (Spinner) findViewById(R.id.preset_spinner);
+        mPresetSpinner.setAdapter(new NamedPresetSpinnerArrayAdapter(this,
+                NotificationPresets.PRESETS));
+        mPresetSpinner.post(new Runnable() {
+            @Override
+            public void run() {
+                mPresetSpinner.setOnItemSelectedListener(new PresetSpinnerListener());
+            }
+        });
+    }
+
+    private void initTitleEditText() {
+        mTitleEditText = (EditText) findViewById(R.id.title_editor);
+    }
+
+    private void initTextEditText() {
+        mTextEditText = (EditText) findViewById(R.id.text_editor);
+    }
+
+    private void initPrioritySpinner() {
+        mPrioritySpinner = (Spinner) findViewById(R.id.priority_spinner);
+        mPrioritySpinner.setAdapter(new NamedPresetSpinnerArrayAdapter(this,
+                PriorityPresets.PRESETS));
+        mPrioritySpinner.setSelection(Arrays.asList(PriorityPresets.PRESETS)
+                .indexOf(PriorityPresets.DEFAULT));
+        mPrioritySpinner.post(new Runnable() {
+            @Override
+            public void run() {
+                mPrioritySpinner.setOnItemSelectedListener(
+                        new UpdateNotificationsOnItemSelectedListener(true /* cancelExisting */));
+            }
+        });
+    }
+
+    private void initActionsSpinner() {
+        mActionsSpinner = (Spinner) findViewById(R.id.actions_spinner);
+        mActionsSpinner.setAdapter(new NamedPresetSpinnerArrayAdapter(this,
+                ActionsPresets.PRESETS));
+        mActionsSpinner.post(new Runnable() {
+            @Override
+            public void run() {
+                mActionsSpinner.setOnItemSelectedListener(
+                        new UpdateNotificationsOnItemSelectedListener(false /* cancelExisting */));
+            }
+        });
+    }
+
+    private void initIncludeLargeIconCheckbox() {
+        mIncludeLargeIconCheckbox = (CheckBox) findViewById(R.id.include_large_icon_checkbox);
+        mIncludeLargeIconCheckbox.setOnCheckedChangeListener(
+                new UpdateNotificationsOnCheckedChangeListener(false /* cancelExisting */));
+    }
+
+    private void initLocalOnlyCheckbox() {
+        mLocalOnlyCheckbox = (CheckBox) findViewById(R.id.local_only_checkbox);
+        mLocalOnlyCheckbox.setOnCheckedChangeListener(
+                new UpdateNotificationsOnCheckedChangeListener(false /* cancelExisting */));
+    }
+
+    private void initIncludeContentIntentCheckbox() {
+        mIncludeContentIntentCheckbox = (CheckBox) findViewById(
+                R.id.include_content_intent_checkbox);
+        mIncludeContentIntentCheckbox.setOnCheckedChangeListener(
+                new UpdateNotificationsOnCheckedChangeListener(false /* cancelExisting */));
+    }
+
+    private void initVibrateCheckbox() {
+        mVibrateCheckbox = (CheckBox) findViewById(R.id.vibrate_checkbox);
+        mVibrateCheckbox.setOnCheckedChangeListener(
+                new UpdateNotificationsOnCheckedChangeListener(false /* cancelExisting */));
+    }
+
+    private void initBackgroundPickers() {
+        mBackgroundPickers = new BackgroundPickers(
+                (ViewGroup) findViewById(R.id.background_pickers),
+                new BackgroundPickerListener());
+    }
+
+    private void updateTextEditors(NotificationPreset preset) {
+        if (preset == NotificationPresets.BASIC) {
+            findViewById(R.id.title_edit_field).setVisibility(View.VISIBLE);
+            mTitleEditText.setText(getString(preset.titleResId));
+            mTitleEditText.addTextChangedListener(mTextChangedListener);
+            findViewById(R.id.text_edit_field).setVisibility(View.VISIBLE);
+            mTextEditText.setText(getString(preset.textResId));
+            mTextEditText.addTextChangedListener(mTextChangedListener);
+        } else {
+            findViewById(R.id.title_edit_field).setVisibility(View.GONE);
+            mTitleEditText.removeTextChangedListener(mTextChangedListener);
+            findViewById(R.id.text_edit_field).setVisibility(View.GONE);
+            mTextEditText.removeTextChangedListener(mTextChangedListener);
+        }
+    }
+
+    /**
+     * Begin to re-post the sample notification(s).
+     */
+    private void updateNotifications(boolean cancelExisting) {
+        // Disable messages to skip notification deleted messages during cancel.
+        sendBroadcast(new Intent(NotificationIntentReceiver.ACTION_DISABLE_MESSAGES)
+                .setClass(this, NotificationIntentReceiver.class));
+
+        if (cancelExisting) {
+            // Cancel all existing notifications to trigger fresh-posting behavior: For example,
+            // switching from HIGH to LOW priority does not cause a reordering in Notification Shade.
+            NotificationManagerCompat.from(this).cancelAll();
+            postedNotificationCount = 0;
+
+            // Post the updated notifications on a delay to avoid a cancel+post race condition
+            // with notification manager.
+            mHandler.removeMessages(MSG_POST_NOTIFICATIONS);
+            mHandler.sendEmptyMessageDelayed(MSG_POST_NOTIFICATIONS, POST_NOTIFICATIONS_DELAY_MS);
+        } else {
+            postNotifications();
+        }
+    }
+
+    /**
+     * Post the sample notification(s) using current options.
+     */
+    private void postNotifications() {
+        sendBroadcast(new Intent(NotificationIntentReceiver.ACTION_ENABLE_MESSAGES)
+                .setClass(this, NotificationIntentReceiver.class));
+
+        NotificationPreset preset = NotificationPresets.PRESETS[
+                mPresetSpinner.getSelectedItemPosition()];
+        CharSequence titlePreset = mTitleEditText.getText();
+        CharSequence textPreset = mTextEditText.getText();
+        PriorityPreset priorityPreset = PriorityPresets.PRESETS[
+                mPrioritySpinner.getSelectedItemPosition()];
+        ActionsPreset actionsPreset = ActionsPresets.PRESETS[
+                mActionsSpinner.getSelectedItemPosition()];
+        if (preset.actionsRequired() && actionsPreset == ActionsPresets.NO_ACTIONS_PRESET) {
+            // If actions are required, but the no-actions preset was selected, change presets.
+            actionsPreset = ActionsPresets.SINGLE_ACTION_PRESET;
+            mActionsSpinner.setSelection(Arrays.asList(ActionsPresets.PRESETS).indexOf(
+                    actionsPreset), true);
+        }
+        NotificationPreset.BuildOptions options = new NotificationPreset.BuildOptions(
+                titlePreset,
+                textPreset,
+                priorityPreset,
+                actionsPreset,
+                mIncludeLargeIconCheckbox.isChecked(),
+                mLocalOnlyCheckbox.isChecked(),
+                mIncludeContentIntentCheckbox.isChecked(),
+                mVibrateCheckbox.isChecked(),
+                mBackgroundPickers.getRes());
+        Notification[] notifications = preset.buildNotifications(this, options);
+
+        // Post new notifications
+        for (int i = 0; i < notifications.length; i++) {
+            NotificationManagerCompat.from(this).notify(i, notifications[i]);
+        }
+        // Cancel any that are beyond the current count.
+        for (int i = notifications.length; i < postedNotificationCount; i++) {
+            NotificationManagerCompat.from(this).cancel(i);
+        }
+        postedNotificationCount = notifications.length;
+    }
+
+    @Override
+    public boolean handleMessage(Message message) {
+        switch (message.what) {
+            case MSG_POST_NOTIFICATIONS:
+                postNotifications();
+                return true;
+        }
+        return false;
+    }
+
+    private class PresetSpinnerListener implements AdapterView.OnItemSelectedListener {
+        @Override
+        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
+            NotificationPreset preset = NotificationPresets.PRESETS[position];
+            mBackgroundPickers.generatePickers(preset.countBackgroundPickersRequired());
+            updateTextEditors(preset);
+            updateNotifications(false /* cancelExisting */);
+        }
+
+        @Override
+        public void onNothingSelected(AdapterView<?> adapterView) {
+        }
+    }
+
+    private class UpdateNotificationsOnTextChangeListener implements TextWatcher {
+        @Override
+        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
+        }
+
+        public void onTextChanged(CharSequence s, int start, int before, int count) {
+        }
+
+        @Override
+        public void afterTextChanged(Editable s) {
+            updateNotifications(false /* cancelExisting */);
+        }
+    }
+
+    private class UpdateNotificationsOnItemSelectedListener
+            implements AdapterView.OnItemSelectedListener {
+        private final boolean mCancelExisting;
+
+        public UpdateNotificationsOnItemSelectedListener(boolean cancelExisting) {
+            mCancelExisting = cancelExisting;
+        }
+        @Override
+        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
+            updateNotifications(mCancelExisting);
+        }
+
+        @Override
+        public void onNothingSelected(AdapterView<?> adapterView) {
+        }
+    }
+
+    private class UpdateNotificationsOnCheckedChangeListener
+            implements CompoundButton.OnCheckedChangeListener {
+        private final boolean mCancelExisting;
+
+        public UpdateNotificationsOnCheckedChangeListener(boolean cancelExisting) {
+            mCancelExisting = cancelExisting;
+        }
+
+        @Override
+        public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
+            updateNotifications(mCancelExisting);
+        }
+    }
+
+    private class BackgroundPickerListener
+            implements BackgroundPickers.OnBackgroundPickersChangedListener {
+        @Override
+        public void onBackgroundPickersChanged(BackgroundPickers pickers) {
+            updateNotifications(false /* cancelExisting */);
+        }
+    }
+
+    private class NamedPresetSpinnerArrayAdapter extends ArrayAdapter<NamedPreset> {
+        public NamedPresetSpinnerArrayAdapter(Context context, NamedPreset[] presets) {
+            super(context, R.layout.simple_spinner_item, presets);
+        }
+
+        @Override
+        public View getDropDownView(int position, View convertView, ViewGroup parent) {
+            TextView view = (TextView) super.getDropDownView(position, convertView, parent);
+            view.setText(getString(getItem(position).nameResId));
+            return view;
+        }
+
+        @Override
+        public View getView(int position, View convertView, ViewGroup parent) {
+            TextView view = (TextView) getLayoutInflater().inflate(
+                    android.R.layout.simple_spinner_item, parent, false);
+            view.setText(getString(getItem(position).nameResId));
+            return view;
+        }
+    }
+}
diff --git a/samples/wearable/Notifications/Application/src/main/java/com/example/android/support/wearable/notifications/NamedPreset.java b/samples/wearable/Notifications/Application/src/main/java/com/example/android/support/wearable/notifications/NamedPreset.java
new file mode 100644
index 0000000..c68251f
--- /dev/null
+++ b/samples/wearable/Notifications/Application/src/main/java/com/example/android/support/wearable/notifications/NamedPreset.java
@@ -0,0 +1,12 @@
+package com.example.android.support.wearable.notifications;
+
+/**
+ * Base class for presets that have a simple name to display.
+ */
+public abstract class NamedPreset {
+    public final int nameResId;
+
+    public NamedPreset(int nameResId) {
+        this.nameResId = nameResId;
+    }
+}
diff --git a/samples/wearable/Notifications/Application/src/main/java/com/example/android/support/wearable/notifications/NotificationIntentReceiver.java b/samples/wearable/Notifications/Application/src/main/java/com/example/android/support/wearable/notifications/NotificationIntentReceiver.java
new file mode 100644
index 0000000..08d7208
--- /dev/null
+++ b/samples/wearable/Notifications/Application/src/main/java/com/example/android/support/wearable/notifications/NotificationIntentReceiver.java
@@ -0,0 +1,44 @@
+package com.example.android.support.wearable.notifications;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import android.support.v4.app.RemoteInput;
+import android.widget.Toast;
+
+/**
+ * Broadcast receiver to post toast messages in response to notification intents firing.
+ */
+public class NotificationIntentReceiver extends BroadcastReceiver {
+    public static final String ACTION_EXAMPLE =
+            "com.example.android.support.wearable.notifications.ACTION_EXAMPLE";
+    public static final String ACTION_ENABLE_MESSAGES =
+            "com.example.android.support.wearable.notifications.ACTION_ENABLE_MESSAGES";
+    public static final String ACTION_DISABLE_MESSAGES =
+            "com.example.android.support.wearable.notifications.ACTION_DISABLE_MESSAGES";
+
+    private boolean mEnableMessages = true;
+
+    @Override
+    public void onReceive(Context context, Intent intent) {
+        if (intent.getAction().equals(ACTION_EXAMPLE)) {
+            if (mEnableMessages) {
+                String message = intent.getStringExtra(NotificationUtil.EXTRA_MESSAGE);
+                Bundle remoteInputResults = RemoteInput.getResultsFromIntent(intent);
+                CharSequence replyMessage = null;
+                if (remoteInputResults != null) {
+                    replyMessage = remoteInputResults.getCharSequence(NotificationUtil.EXTRA_REPLY);
+                }
+                if (replyMessage != null) {
+                    message = message + ": \"" + replyMessage + "\"";
+                }
+                Toast.makeText(context, message, Toast.LENGTH_SHORT).show();
+            }
+        } else if (intent.getAction().equals(ACTION_ENABLE_MESSAGES)) {
+            mEnableMessages = true;
+        } else if (intent.getAction().equals(ACTION_DISABLE_MESSAGES)) {
+            mEnableMessages = false;
+        }
+    }
+}
diff --git a/samples/wearable/Notifications/Application/src/main/java/com/example/android/support/wearable/notifications/NotificationPreset.java b/samples/wearable/Notifications/Application/src/main/java/com/example/android/support/wearable/notifications/NotificationPreset.java
new file mode 100644
index 0000000..a289494
--- /dev/null
+++ b/samples/wearable/Notifications/Application/src/main/java/com/example/android/support/wearable/notifications/NotificationPreset.java
@@ -0,0 +1,58 @@
+package com.example.android.support.wearable.notifications;
+
+import android.app.Notification;
+import android.content.Context;
+
+/**
+ * Base class for notification preset generators.
+ */
+public abstract class NotificationPreset extends NamedPreset {
+    public final int titleResId;
+    public final int textResId;
+
+    public NotificationPreset(int nameResId, int titleResId, int textResId) {
+        super(nameResId);
+        this.titleResId = titleResId;
+        this.textResId = textResId;
+    }
+
+    public static class BuildOptions {
+        public final CharSequence titlePreset;
+        public final CharSequence textPreset;
+        public final PriorityPreset priorityPreset;
+        public final ActionsPreset actionsPreset;
+        public final boolean includeLargeIcon;
+        public final boolean isLocalOnly;
+        public final boolean hasContentIntent;
+        public final boolean vibrate;
+        public final Integer[] backgroundIds;
+
+        public BuildOptions(CharSequence titlePreset, CharSequence textPreset,
+                PriorityPreset priorityPreset, ActionsPreset actionsPreset,
+                boolean includeLargeIcon, boolean isLocalOnly, boolean hasContentIntent,
+                boolean vibrate, Integer[] backgroundIds) {
+            this.titlePreset = titlePreset;
+            this.textPreset = textPreset;
+            this.priorityPreset = priorityPreset;
+            this.actionsPreset = actionsPreset;
+            this.includeLargeIcon = includeLargeIcon;
+            this.isLocalOnly = isLocalOnly;
+            this.hasContentIntent = hasContentIntent;
+            this.vibrate = vibrate;
+            this.backgroundIds = backgroundIds;
+        }
+    }
+
+    /** Build a notification with this preset and the provided options */
+    public abstract Notification[] buildNotifications(Context context, BuildOptions options);
+
+    /** Whether actions are required to use this preset. */
+    public boolean actionsRequired() {
+        return false;
+    }
+
+    /** Number of background pickers required */
+    public int countBackgroundPickersRequired() {
+        return 0;
+    }
+}
diff --git a/samples/wearable/Notifications/Application/src/main/java/com/example/android/support/wearable/notifications/NotificationPresets.java b/samples/wearable/Notifications/Application/src/main/java/com/example/android/support/wearable/notifications/NotificationPresets.java
new file mode 100644
index 0000000..f175145
--- /dev/null
+++ b/samples/wearable/Notifications/Application/src/main/java/com/example/android/support/wearable/notifications/NotificationPresets.java
@@ -0,0 +1,463 @@
+package com.example.android.support.wearable.notifications;
+
+import android.app.Notification;
+import android.content.Context;
+import android.graphics.BitmapFactory;
+import android.graphics.Color;
+import android.graphics.Typeface;
+import android.support.v4.app.NotificationCompat;
+import android.text.SpannableStringBuilder;
+import android.text.style.ForegroundColorSpan;
+import android.text.style.RelativeSizeSpan;
+import android.text.style.StrikethroughSpan;
+import android.text.style.StyleSpan;
+import android.text.style.SubscriptSpan;
+import android.text.style.SuperscriptSpan;
+import android.text.style.TypefaceSpan;
+import android.text.style.UnderlineSpan;
+import android.view.Gravity;
+
+/**
+ * Collection of notification builder presets.
+ */
+public class NotificationPresets {
+    private static final String EXAMPLE_GROUP_KEY = "example";
+
+    public static final NotificationPreset BASIC = new BasicNotificationPreset();
+    public static final NotificationPreset STYLIZED_TEXT = new StylizedTextNotificationPreset();
+    public static final NotificationPreset INBOX = new InboxNotificationPreset();
+    public static final NotificationPreset BIG_PICTURE = new BigPictureNotificationPreset();
+    public static final NotificationPreset BIG_TEXT = new BigTextNotificationPreset();
+    public static final NotificationPreset BOTTOM_ALIGNED = new BottomAlignedNotificationPreset();
+    public static final NotificationPreset GRAVITY = new GravityNotificationPreset();
+    public static final NotificationPreset CONTENT_ACTION = new ContentActionNotificationPreset();
+    public static final NotificationPreset CONTENT_ICON = new ContentIconNotificationPreset();
+    public static final NotificationPreset MULTIPLE_PAGE = new MultiplePageNotificationPreset();
+    public static final NotificationPreset BUNDLE = new NotificationBundlePreset();
+
+    public static final NotificationPreset[] PRESETS = new NotificationPreset[] {
+            BASIC,
+            STYLIZED_TEXT,
+            INBOX,
+            BIG_PICTURE,
+            BIG_TEXT,
+            BOTTOM_ALIGNED,
+            GRAVITY,
+            CONTENT_ACTION,
+            CONTENT_ICON,
+            MULTIPLE_PAGE,
+            BUNDLE
+    };
+
+    private static NotificationCompat.Builder applyBasicOptions(Context context,
+            NotificationCompat.Builder builder, NotificationCompat.WearableExtender wearableOptions,
+            NotificationPreset.BuildOptions options) {
+        builder.setContentTitle(options.titlePreset)
+                .setContentText(options.textPreset)
+                .setSmallIcon(R.mipmap.ic_launcher)
+                .setDeleteIntent(NotificationUtil.getExamplePendingIntent(
+                        context, R.string.example_notification_deleted));
+        options.actionsPreset.apply(context, builder, wearableOptions);
+        options.priorityPreset.apply(builder, wearableOptions);
+        if (options.includeLargeIcon) {
+            builder.setLargeIcon(BitmapFactory.decodeResource(
+                    context.getResources(), R.drawable.example_large_icon));
+        }
+        if (options.isLocalOnly) {
+            builder.setLocalOnly(true);
+        }
+        if (options.hasContentIntent) {
+            builder.setContentIntent(NotificationUtil.getExamplePendingIntent(context,
+                    R.string.content_intent_clicked));
+        }
+        if (options.vibrate) {
+            builder.setVibrate(new long[] {0, 100, 50, 100} );
+        }
+        return builder;
+    }
+
+    private static class BasicNotificationPreset extends NotificationPreset {
+        public BasicNotificationPreset() {
+            super(R.string.basic_example, R.string.example_content_title,
+                R.string.example_content_text);
+        }
+
+        @Override
+        public Notification[] buildNotifications(Context context, BuildOptions options) {
+            NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
+            NotificationCompat.WearableExtender wearableOptions =
+                    new NotificationCompat.WearableExtender();
+            applyBasicOptions(context, builder, wearableOptions, options);
+            builder.extend(wearableOptions);
+            return new Notification[] { builder.build() };
+        }
+    }
+
+    private static class StylizedTextNotificationPreset extends NotificationPreset {
+        public StylizedTextNotificationPreset() {
+            super(R.string.stylized_text_example, R.string.example_content_title,
+                    R.string.example_content_text);
+        }
+
+        @Override
+        public Notification[] buildNotifications(Context context, BuildOptions options) {
+            NotificationCompat.BigTextStyle style = new NotificationCompat.BigTextStyle();
+
+            SpannableStringBuilder title = new SpannableStringBuilder();
+            appendStyled(title, "Stylized", new StyleSpan(Typeface.BOLD_ITALIC));
+            title.append(" title");
+            SpannableStringBuilder text = new SpannableStringBuilder("Stylized text: ");
+            appendStyled(text, "C", new ForegroundColorSpan(Color.RED));
+            appendStyled(text, "O", new ForegroundColorSpan(Color.GREEN));
+            appendStyled(text, "L", new ForegroundColorSpan(Color.BLUE));
+            appendStyled(text, "O", new ForegroundColorSpan(Color.YELLOW));
+            appendStyled(text, "R", new ForegroundColorSpan(Color.MAGENTA));
+            appendStyled(text, "S", new ForegroundColorSpan(Color.CYAN));
+            text.append("; ");
+            appendStyled(text, "1.25x size", new RelativeSizeSpan(1.25f));
+            text.append("; ");
+            appendStyled(text, "0.75x size", new RelativeSizeSpan(0.75f));
+            text.append("; ");
+            appendStyled(text, "underline", new UnderlineSpan());
+            text.append("; ");
+            appendStyled(text, "strikethrough", new StrikethroughSpan());
+            text.append("; ");
+            appendStyled(text, "bold", new StyleSpan(Typeface.BOLD));
+            text.append("; ");
+            appendStyled(text, "italic", new StyleSpan(Typeface.ITALIC));
+            text.append("; ");
+            appendStyled(text, "sans-serif-thin", new TypefaceSpan("sans-serif-thin"));
+            text.append("; ");
+            appendStyled(text, "monospace", new TypefaceSpan("monospace"));
+            text.append("; ");
+            appendStyled(text, "sub", new SubscriptSpan());
+            text.append("script");
+            appendStyled(text, "super", new SuperscriptSpan());
+
+            style.setBigContentTitle(title);
+            style.bigText(text);
+
+            NotificationCompat.Builder builder = new NotificationCompat.Builder(context)
+                    .setStyle(style);
+            NotificationCompat.WearableExtender wearableOptions =
+                    new NotificationCompat.WearableExtender();
+            applyBasicOptions(context, builder, wearableOptions, options);
+            builder.extend(wearableOptions);
+            return new Notification[] { builder.build() };
+        }
+
+        private void appendStyled(SpannableStringBuilder builder, String str, Object... spans) {
+            builder.append(str);
+            for (Object span : spans) {
+                builder.setSpan(span, builder.length() - str.length(), builder.length(), 0);
+            }
+        }
+    }
+
+    private static class InboxNotificationPreset extends NotificationPreset {
+        public InboxNotificationPreset() {
+            super(R.string.inbox_example, R.string.example_content_title,
+                R.string.example_content_text);
+        }
+
+        @Override
+        public Notification[] buildNotifications(Context context, BuildOptions options) {
+            NotificationCompat.InboxStyle style = new NotificationCompat.InboxStyle();
+            style.addLine(context.getString(R.string.inbox_style_example_line1));
+            style.addLine(context.getString(R.string.inbox_style_example_line2));
+            style.addLine(context.getString(R.string.inbox_style_example_line3));
+            style.setBigContentTitle(context.getString(R.string.inbox_style_example_title));
+            style.setSummaryText(context.getString(R.string.inbox_style_example_summary_text));
+
+            NotificationCompat.Builder builder = new NotificationCompat.Builder(context)
+                    .setStyle(style);
+            NotificationCompat.WearableExtender wearableOptions =
+                    new NotificationCompat.WearableExtender();
+            applyBasicOptions(context, builder, wearableOptions, options);
+            builder.extend(wearableOptions);
+            return new Notification[] { builder.build() };
+        }
+    }
+
+    private static class BigPictureNotificationPreset extends NotificationPreset {
+        public BigPictureNotificationPreset() {
+            super(R.string.big_picture_example, R.string.example_content_title,
+                R.string.example_content_text);
+        }
+
+        @Override
+        public Notification[] buildNotifications(Context context, BuildOptions options) {
+            NotificationCompat.BigPictureStyle style = new NotificationCompat.BigPictureStyle();
+            style.bigPicture(BitmapFactory.decodeResource(context.getResources(),
+                    R.drawable.example_big_picture));
+            style.setBigContentTitle(context.getString(R.string.big_picture_style_example_title));
+            style.setSummaryText(context.getString(
+                    R.string.big_picture_style_example_summary_text));
+
+            NotificationCompat.Builder builder = new NotificationCompat.Builder(context)
+                    .setStyle(style);
+            NotificationCompat.WearableExtender wearableOptions =
+                    new NotificationCompat.WearableExtender();
+            applyBasicOptions(context, builder, wearableOptions, options);
+            builder.extend(wearableOptions);
+            return new Notification[] { builder.build() };
+        }
+    }
+
+    private static class BigTextNotificationPreset extends NotificationPreset {
+        public BigTextNotificationPreset() {
+            super(R.string.big_text_example, R.string.example_content_title,
+                R.string.example_content_text);
+        }
+
+        @Override
+        public Notification[] buildNotifications(Context context, BuildOptions options) {
+            NotificationCompat.BigTextStyle style = new NotificationCompat.BigTextStyle();
+            style.bigText(context.getString(R.string.big_text_example_big_text));
+            style.setBigContentTitle(context.getString(R.string.big_text_example_title));
+            style.setSummaryText(context.getString(R.string.big_text_example_summary_text));
+
+            NotificationCompat.Builder builder = new NotificationCompat.Builder(context)
+                    .setStyle(style);
+            NotificationCompat.WearableExtender wearableOptions =
+                    new NotificationCompat.WearableExtender();
+            applyBasicOptions(context, builder, wearableOptions, options);
+            builder.extend(wearableOptions);
+            return new Notification[] { builder.build() };
+        }
+    }
+
+    private static class BottomAlignedNotificationPreset extends NotificationPreset {
+        public BottomAlignedNotificationPreset() {
+            super(R.string.bottom_aligned_example, R.string.example_content_title,
+                R.string.example_content_text);
+        }
+
+        @Override
+        public Notification[] buildNotifications(Context context, BuildOptions options) {
+            NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
+            NotificationCompat.WearableExtender wearableOptions =
+                    new NotificationCompat.WearableExtender();
+            applyBasicOptions(context, builder, wearableOptions, options);
+
+            NotificationCompat.Builder secondPageBuilder = new NotificationCompat.Builder(context);
+            secondPageBuilder.setContentTitle(
+                    context.getString(R.string.second_page_content_title));
+            secondPageBuilder.setContentText(context.getString(R.string.big_text_example_big_text));
+            secondPageBuilder.extend(new NotificationCompat.WearableExtender()
+                            .setStartScrollBottom(true));
+
+            wearableOptions.addPage(secondPageBuilder.build());
+            builder.extend(wearableOptions);
+            return new Notification[] { builder.build() };
+        }
+    }
+
+    private static class GravityNotificationPreset extends NotificationPreset {
+        public GravityNotificationPreset() {
+            super(R.string.gravity_example, R.string.example_content_title,
+                R.string.example_content_text);
+        }
+
+        @Override
+        public Notification[] buildNotifications(Context context, BuildOptions options) {
+            NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
+            NotificationCompat.WearableExtender wearableOptions =
+                    new NotificationCompat.WearableExtender();
+            applyBasicOptions(context, builder, wearableOptions, options);
+
+            NotificationCompat.Builder secondPageBuilder = new NotificationCompat.Builder(context)
+                    .setContentTitle(options.titlePreset)
+                    .setContentText(options.textPreset)
+                    .extend(new NotificationCompat.WearableExtender()
+                            .setGravity(Gravity.CENTER_VERTICAL));
+            wearableOptions.addPage(secondPageBuilder.build());
+
+            NotificationCompat.Builder thirdPageBuilder = new NotificationCompat.Builder(context)
+                    .setContentTitle(options.titlePreset)
+                    .setContentText(options.textPreset)
+                    .extend(new NotificationCompat.WearableExtender()
+                            .setGravity(Gravity.TOP));
+            wearableOptions.addPage(thirdPageBuilder.build());
+
+            wearableOptions.setGravity(Gravity.BOTTOM);
+            builder.extend(wearableOptions);
+            return new Notification[] { builder.build() };
+        }
+    }
+
+    private static class ContentActionNotificationPreset extends NotificationPreset {
+        public ContentActionNotificationPreset() {
+            super(R.string.content_action_example, R.string.example_content_title,
+                R.string.example_content_text);
+        }
+
+        @Override
+        public Notification[] buildNotifications(Context context, BuildOptions options) {
+            Notification secondPage = new NotificationCompat.Builder(context)
+                    .setContentTitle(context.getString(R.string.second_page_content_title))
+                    .setContentText(context.getString(R.string.second_page_content_text))
+                    .extend(new NotificationCompat.WearableExtender()
+                            .setContentAction(1))
+                    .build();
+
+            NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
+            NotificationCompat.Action action = new NotificationCompat.Action.Builder(
+                    R.drawable.ic_result_open, null, NotificationUtil.getExamplePendingIntent(
+                            context, R.string.example_content_action_clicked)).build();
+            NotificationCompat.Action action2 = new NotificationCompat.Action.Builder(
+                    R.drawable.ic_result_open, null, NotificationUtil.getExamplePendingIntent(
+                            context, R.string.example_content_action2_clicked)).build();
+            NotificationCompat.WearableExtender wearableOptions =
+                    new NotificationCompat.WearableExtender()
+                            .addAction(action)
+                            .addAction(action2)
+                            .addPage(secondPage)
+                            .setContentAction(0)
+                            .setHintHideIcon(true);
+            applyBasicOptions(context, builder, wearableOptions, options);
+            builder.extend(wearableOptions);
+            return new Notification[] { builder.build() };
+        }
+
+        @Override
+        public boolean actionsRequired() {
+            return true;
+        }
+    }
+
+    private static class ContentIconNotificationPreset extends NotificationPreset {
+        public ContentIconNotificationPreset() {
+            super(R.string.content_icon_example, R.string.example_content_title,
+                    R.string.example_content_text);
+        }
+
+        @Override
+        public Notification[] buildNotifications(Context context, BuildOptions options) {
+            Notification secondPage = new NotificationCompat.Builder(context)
+                    .setContentTitle(context.getString(R.string.second_page_content_title))
+                    .setContentText(context.getString(R.string.second_page_content_text))
+                    .extend(new NotificationCompat.WearableExtender()
+                            .setContentIcon(R.drawable.content_icon_small)
+                            .setContentIconGravity(Gravity.START))
+                    .build();
+
+            Notification thirdPage = new NotificationCompat.Builder(context)
+                    .setContentTitle(context.getString(R.string.third_page_content_title))
+                    .setContentText(context.getString(R.string.third_page_content_text))
+                    .extend(new NotificationCompat.WearableExtender()
+                            .setContentIcon(R.drawable.content_icon_large))
+                    .build();
+
+            Notification fourthPage = new NotificationCompat.Builder(context)
+                    .setContentTitle(context.getString(R.string.fourth_page_content_title))
+                    .setContentText(context.getString(R.string.fourth_page_content_text))
+                    .extend(new NotificationCompat.WearableExtender()
+                            .setContentIcon(R.drawable.content_icon_large)
+                            .setContentIconGravity(Gravity.START))
+                    .build();
+
+            NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
+            NotificationCompat.WearableExtender wearableOptions =
+                    new NotificationCompat.WearableExtender()
+                            .setHintHideIcon(true)
+                            .setContentIcon(R.drawable.content_icon_small)
+                            .addPage(secondPage)
+                            .addPage(thirdPage)
+                            .addPage(fourthPage);
+            applyBasicOptions(context, builder, wearableOptions, options);
+            builder.extend(wearableOptions);
+            return new Notification[] { builder.build() };
+        }
+    }
+
+    private static class MultiplePageNotificationPreset extends NotificationPreset {
+        public MultiplePageNotificationPreset() {
+            super(R.string.multiple_page_example, R.string.example_content_title,
+                R.string.example_content_text);
+        }
+
+        @Override
+        public Notification[] buildNotifications(Context context, BuildOptions options) {
+            NotificationCompat.Builder secondPageBuilder = new NotificationCompat.Builder(context)
+                    .setContentTitle(context.getString(R.string.second_page_content_title))
+                    .setContentText(context.getString(R.string.second_page_content_text));
+
+            NotificationCompat.Builder firstPageBuilder = new NotificationCompat.Builder(context);
+            NotificationCompat.WearableExtender firstPageWearableOptions =
+                    new NotificationCompat.WearableExtender();
+            applyBasicOptions(context, firstPageBuilder, firstPageWearableOptions, options);
+
+            Integer firstBackground = options.backgroundIds == null
+                    ? null : options.backgroundIds[0];
+            if (firstBackground != null) {
+                NotificationCompat.BigPictureStyle style =
+                        new NotificationCompat.BigPictureStyle();
+                style.bigPicture(BitmapFactory.decodeResource(context.getResources(),
+                        firstBackground));
+                firstPageBuilder.setStyle(style);
+            }
+
+            Integer secondBackground = options.backgroundIds == null
+                    ? null : options.backgroundIds[1];
+            if (secondBackground != null) {
+                NotificationCompat.BigPictureStyle style = new NotificationCompat.BigPictureStyle();
+                style.bigPicture(BitmapFactory.decodeResource(context.getResources(),
+                        secondBackground));
+                secondPageBuilder.setStyle(style);
+            }
+
+            firstPageBuilder.extend(
+                    firstPageWearableOptions.addPage(secondPageBuilder.build()));
+
+            return new Notification[]{ firstPageBuilder.build() };
+        }
+
+        @Override
+        public int countBackgroundPickersRequired() {
+            return 2; // This sample does 2 pages notifications.
+        }
+    }
+
+    private static class NotificationBundlePreset extends NotificationPreset {
+        public NotificationBundlePreset() {
+            super(R.string.bundle_example, R.string.example_content_title,
+                R.string.example_content_text);
+        }
+
+        @Override
+        public Notification[] buildNotifications(Context context, BuildOptions options) {
+            NotificationCompat.Builder childBuilder1 = new NotificationCompat.Builder(context)
+                    .setContentTitle(context.getString(R.string.first_child_content_title))
+                    .setContentText(context.getString(R.string.first_child_content_text))
+                    .setSmallIcon(R.mipmap.ic_launcher)
+                    .setLocalOnly(options.isLocalOnly)
+                    .setGroup(EXAMPLE_GROUP_KEY)
+                    .setSortKey("0");
+
+            NotificationCompat.Builder childBuilder2 = new NotificationCompat.Builder(context)
+                    .setContentTitle(context.getString(R.string.second_child_content_title))
+                    .setContentText(context.getString(R.string.second_child_content_text))
+                    .setSmallIcon(R.mipmap.ic_launcher)
+                    .addAction(R.mipmap.ic_launcher,
+                            context.getString(R.string.second_child_action),
+                            NotificationUtil.getExamplePendingIntent(
+                                    context, R.string.second_child_action_clicked))
+                    .setLocalOnly(options.isLocalOnly)
+                    .setGroup(EXAMPLE_GROUP_KEY)
+                    .setSortKey("1");
+
+            NotificationCompat.Builder summaryBuilder = new NotificationCompat.Builder(context)
+                    .setGroup(EXAMPLE_GROUP_KEY)
+                    .setGroupSummary(true);
+
+            NotificationCompat.WearableExtender summaryWearableOptions =
+                    new NotificationCompat.WearableExtender();
+            applyBasicOptions(context, summaryBuilder, summaryWearableOptions, options);
+            summaryBuilder.extend(summaryWearableOptions);
+
+            return new Notification[] { summaryBuilder.build(), childBuilder1.build(),
+                    childBuilder2.build() };
+        }
+    }
+}
diff --git a/samples/wearable/Notifications/Application/src/main/java/com/example/android/support/wearable/notifications/NotificationUtil.java b/samples/wearable/Notifications/Application/src/main/java/com/example/android/support/wearable/notifications/NotificationUtil.java
new file mode 100644
index 0000000..cd4b72c
--- /dev/null
+++ b/samples/wearable/Notifications/Application/src/main/java/com/example/android/support/wearable/notifications/NotificationUtil.java
@@ -0,0 +1,20 @@
+package com.example.android.support.wearable.notifications;
+
+import android.app.PendingIntent;
+import android.content.Context;
+import android.content.Intent;
+
+public class NotificationUtil {
+    public static final String EXTRA_MESSAGE =
+            "com.example.android.support.wearable.notifications.MESSAGE";
+    public static final String EXTRA_REPLY =
+            "com.example.android.support.wearable.notifications.REPLY";
+
+    public static PendingIntent getExamplePendingIntent(Context context, int messageResId) {
+        Intent intent = new Intent(NotificationIntentReceiver.ACTION_EXAMPLE)
+                .setClass(context, NotificationIntentReceiver.class);
+        intent.putExtra(EXTRA_MESSAGE, context.getString(messageResId));
+        return PendingIntent.getBroadcast(context, messageResId /* requestCode */, intent,
+                PendingIntent.FLAG_UPDATE_CURRENT);
+    }
+}
diff --git a/samples/wearable/Notifications/Application/src/main/java/com/example/android/support/wearable/notifications/PriorityPreset.java b/samples/wearable/Notifications/Application/src/main/java/com/example/android/support/wearable/notifications/PriorityPreset.java
new file mode 100644
index 0000000..7a1682e
--- /dev/null
+++ b/samples/wearable/Notifications/Application/src/main/java/com/example/android/support/wearable/notifications/PriorityPreset.java
@@ -0,0 +1,16 @@
+package com.example.android.support.wearable.notifications;
+
+import android.support.v4.app.NotificationCompat;
+
+/**
+ * Base class for notification priority presets.
+ */
+public abstract class PriorityPreset extends NamedPreset {
+    public PriorityPreset(int nameResId) {
+        super(nameResId);
+    }
+
+    /** Apply the priority to a notification builder */
+    public abstract void apply(NotificationCompat.Builder builder,
+            NotificationCompat.WearableExtender wearableOptions);
+}
diff --git a/samples/wearable/Notifications/Application/src/main/java/com/example/android/support/wearable/notifications/PriorityPresets.java b/samples/wearable/Notifications/Application/src/main/java/com/example/android/support/wearable/notifications/PriorityPresets.java
new file mode 100644
index 0000000..026f1aa
--- /dev/null
+++ b/samples/wearable/Notifications/Application/src/main/java/com/example/android/support/wearable/notifications/PriorityPresets.java
@@ -0,0 +1,39 @@
+package com.example.android.support.wearable.notifications;
+
+import android.app.Notification;
+import android.support.v4.app.NotificationCompat;
+
+/**
+ * Collection of notification priority presets.
+ */
+public class PriorityPresets {
+    public static final PriorityPreset DEFAULT = new SimplePriorityPreset(
+            R.string.default_priority, Notification.PRIORITY_DEFAULT);
+
+    public static final PriorityPreset[] PRESETS = new PriorityPreset[] {
+            new SimplePriorityPreset(R.string.min_priority, Notification.PRIORITY_MIN),
+            new SimplePriorityPreset(R.string.low_priority, Notification.PRIORITY_LOW),
+            DEFAULT,
+            new SimplePriorityPreset(R.string.high_priority, Notification.PRIORITY_HIGH),
+            new SimplePriorityPreset(R.string.max_priority, Notification.PRIORITY_MAX)
+    };
+
+    /**
+     * Simple notification priority preset that sets a priority using
+     * {@link android.support.v4.app.NotificationCompat.Builder#setPriority}
+     */
+    private static class SimplePriorityPreset extends PriorityPreset {
+        private final int mPriority;
+
+        public SimplePriorityPreset(int nameResId, int priority) {
+            super(nameResId);
+            mPriority = priority;
+        }
+
+        @Override
+        public void apply(NotificationCompat.Builder builder,
+                NotificationCompat.WearableExtender wearableOptions) {
+            builder.setPriority(mPriority);
+        }
+    }
+}
diff --git a/samples/wearable/Notifications/Application/src/main/res/drawable-hdpi/example_large_icon.png b/samples/wearable/Notifications/Application/src/main/res/drawable-hdpi/example_large_icon.png
new file mode 100644
index 0000000..545f8ce
--- /dev/null
+++ b/samples/wearable/Notifications/Application/src/main/res/drawable-hdpi/example_large_icon.png
Binary files differ
diff --git a/samples/wearable/Notifications/Application/src/main/res/drawable-hdpi/ic_full_action.png b/samples/wearable/Notifications/Application/src/main/res/drawable-hdpi/ic_full_action.png
new file mode 100644
index 0000000..1f27499
--- /dev/null
+++ b/samples/wearable/Notifications/Application/src/main/res/drawable-hdpi/ic_full_action.png
Binary files differ
diff --git a/samples/wearable/Notifications/Application/src/main/res/drawable-hdpi/ic_full_reply.png b/samples/wearable/Notifications/Application/src/main/res/drawable-hdpi/ic_full_reply.png
new file mode 100644
index 0000000..66388d5
--- /dev/null
+++ b/samples/wearable/Notifications/Application/src/main/res/drawable-hdpi/ic_full_reply.png
Binary files differ
diff --git a/samples/wearable/Notifications/Application/src/main/res/drawable-hdpi/ic_result_open.png b/samples/wearable/Notifications/Application/src/main/res/drawable-hdpi/ic_result_open.png
new file mode 100644
index 0000000..db8af57
--- /dev/null
+++ b/samples/wearable/Notifications/Application/src/main/res/drawable-hdpi/ic_result_open.png
Binary files differ
diff --git a/samples/wearable/Notifications/Application/src/main/res/drawable-mdpi/ic_full_action.png b/samples/wearable/Notifications/Application/src/main/res/drawable-mdpi/ic_full_action.png
new file mode 100644
index 0000000..b70b74f
--- /dev/null
+++ b/samples/wearable/Notifications/Application/src/main/res/drawable-mdpi/ic_full_action.png
Binary files differ
diff --git a/samples/wearable/Notifications/Application/src/main/res/drawable-mdpi/ic_full_reply.png b/samples/wearable/Notifications/Application/src/main/res/drawable-mdpi/ic_full_reply.png
new file mode 100644
index 0000000..60ce9f9
--- /dev/null
+++ b/samples/wearable/Notifications/Application/src/main/res/drawable-mdpi/ic_full_reply.png
Binary files differ
diff --git a/samples/wearable/Notifications/Application/src/main/res/drawable-mdpi/ic_result_open.png b/samples/wearable/Notifications/Application/src/main/res/drawable-mdpi/ic_result_open.png
new file mode 100644
index 0000000..860d7de
--- /dev/null
+++ b/samples/wearable/Notifications/Application/src/main/res/drawable-mdpi/ic_result_open.png
Binary files differ
diff --git a/samples/wearable/Notifications/Application/src/main/res/drawable-nodpi/bg_1.png b/samples/wearable/Notifications/Application/src/main/res/drawable-nodpi/bg_1.png
new file mode 100644
index 0000000..9c80794
--- /dev/null
+++ b/samples/wearable/Notifications/Application/src/main/res/drawable-nodpi/bg_1.png
Binary files differ
diff --git a/samples/wearable/Notifications/Application/src/main/res/drawable-nodpi/bg_2.png b/samples/wearable/Notifications/Application/src/main/res/drawable-nodpi/bg_2.png
new file mode 100644
index 0000000..23d7062
--- /dev/null
+++ b/samples/wearable/Notifications/Application/src/main/res/drawable-nodpi/bg_2.png
Binary files differ
diff --git a/samples/wearable/Notifications/Application/src/main/res/drawable-nodpi/bg_3.png b/samples/wearable/Notifications/Application/src/main/res/drawable-nodpi/bg_3.png
new file mode 100644
index 0000000..588318d
--- /dev/null
+++ b/samples/wearable/Notifications/Application/src/main/res/drawable-nodpi/bg_3.png
Binary files differ
diff --git a/samples/wearable/Notifications/Application/src/main/res/drawable-nodpi/bg_4.png b/samples/wearable/Notifications/Application/src/main/res/drawable-nodpi/bg_4.png
new file mode 100644
index 0000000..bd1dfee
--- /dev/null
+++ b/samples/wearable/Notifications/Application/src/main/res/drawable-nodpi/bg_4.png
Binary files differ
diff --git a/samples/wearable/Notifications/Application/src/main/res/drawable-nodpi/bg_5.png b/samples/wearable/Notifications/Application/src/main/res/drawable-nodpi/bg_5.png
new file mode 100644
index 0000000..aa1ad23
--- /dev/null
+++ b/samples/wearable/Notifications/Application/src/main/res/drawable-nodpi/bg_5.png
Binary files differ
diff --git a/samples/wearable/Notifications/Application/src/main/res/drawable-nodpi/content_icon_large.png b/samples/wearable/Notifications/Application/src/main/res/drawable-nodpi/content_icon_large.png
new file mode 100644
index 0000000..0eab3b1
--- /dev/null
+++ b/samples/wearable/Notifications/Application/src/main/res/drawable-nodpi/content_icon_large.png
Binary files differ
diff --git a/samples/wearable/Notifications/Application/src/main/res/drawable-nodpi/content_icon_small.png b/samples/wearable/Notifications/Application/src/main/res/drawable-nodpi/content_icon_small.png
new file mode 100644
index 0000000..9a9f4b4
--- /dev/null
+++ b/samples/wearable/Notifications/Application/src/main/res/drawable-nodpi/content_icon_small.png
Binary files differ
diff --git a/samples/wearable/Notifications/Application/src/main/res/drawable-nodpi/example_big_picture.jpg b/samples/wearable/Notifications/Application/src/main/res/drawable-nodpi/example_big_picture.jpg
new file mode 100644
index 0000000..68473ba
--- /dev/null
+++ b/samples/wearable/Notifications/Application/src/main/res/drawable-nodpi/example_big_picture.jpg
Binary files differ
diff --git a/samples/wearable/Notifications/Application/src/main/res/drawable-xhdpi/ic_full_action.png b/samples/wearable/Notifications/Application/src/main/res/drawable-xhdpi/ic_full_action.png
new file mode 100644
index 0000000..6a76952
--- /dev/null
+++ b/samples/wearable/Notifications/Application/src/main/res/drawable-xhdpi/ic_full_action.png
Binary files differ
diff --git a/samples/wearable/Notifications/Application/src/main/res/drawable-xhdpi/ic_full_reply.png b/samples/wearable/Notifications/Application/src/main/res/drawable-xhdpi/ic_full_reply.png
new file mode 100644
index 0000000..dba6fa7
--- /dev/null
+++ b/samples/wearable/Notifications/Application/src/main/res/drawable-xhdpi/ic_full_reply.png
Binary files differ
diff --git a/samples/wearable/Notifications/Application/src/main/res/drawable-xhdpi/ic_result_open.png b/samples/wearable/Notifications/Application/src/main/res/drawable-xhdpi/ic_result_open.png
new file mode 100644
index 0000000..7d3c785
--- /dev/null
+++ b/samples/wearable/Notifications/Application/src/main/res/drawable-xhdpi/ic_result_open.png
Binary files differ
diff --git a/samples/wearable/Notifications/Application/src/main/res/drawable/selected_background.xml b/samples/wearable/Notifications/Application/src/main/res/drawable/selected_background.xml
new file mode 100644
index 0000000..351774a
--- /dev/null
+++ b/samples/wearable/Notifications/Application/src/main/res/drawable/selected_background.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <padding
+        android:top="4dp"
+        android:bottom="4dp"
+        android:left="4dp"
+        android:right="4dp"/>
+    <stroke
+        android:width="4dp"
+        android:color="@android:color/holo_blue_bright" />
+</shape>
\ No newline at end of file
diff --git a/samples/wearable/Notifications/Application/src/main/res/drawable/unselected_background.xml b/samples/wearable/Notifications/Application/src/main/res/drawable/unselected_background.xml
new file mode 100644
index 0000000..b9a43d1
--- /dev/null
+++ b/samples/wearable/Notifications/Application/src/main/res/drawable/unselected_background.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <padding
+        android:top="4dp"
+        android:bottom="4dp"
+        android:left="4dp"
+        android:right="4dp"/>
+    <stroke
+        android:width="4dp"
+        android:color="#ff000000" />
+</shape>
\ No newline at end of file
diff --git a/samples/wearable/Notifications/Application/src/main/res/layout/activity_main.xml b/samples/wearable/Notifications/Application/src/main/res/layout/activity_main.xml
new file mode 100644
index 0000000..1f57949
--- /dev/null
+++ b/samples/wearable/Notifications/Application/src/main/res/layout/activity_main.xml
@@ -0,0 +1,157 @@
+<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+        xmlns:tools="http://schemas.android.com/tools"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:paddingBottom="@dimen/activity_vertical_margin"
+        android:paddingLeft="@dimen/activity_horizontal_margin"
+        android:paddingRight="@dimen/activity_horizontal_margin"
+        android:paddingTop="@dimen/activity_vertical_margin"
+        tools:context="com.example.android.support.wearable.notifications.MainActivity"
+        tools:ignore="MergeRootFrame">
+
+    <LinearLayout android:id="@+id/container"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="vertical">
+
+        <include layout="@layout/layout_divider" />
+
+        <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:orientation="horizontal">
+
+            <TextView
+                    android:layout_height="wrap_content"
+                    android:layout_width="wrap_content"
+                    android:minWidth="@dimen/editor_spinner_caption_min_width"
+                    android:minHeight="?android:attr/listPreferredItemHeightSmall"
+                    android:gravity="center_vertical"
+                    android:text="@string/preset" />
+
+            <Spinner android:id="@+id/preset_spinner"
+                    android:layout_marginLeft="10dp"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content" />
+
+        </LinearLayout>
+
+        <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:orientation="horizontal">
+
+            <TextView
+                    android:layout_height="wrap_content"
+                    android:layout_width="wrap_content"
+                    android:minWidth="@dimen/editor_spinner_caption_min_width"
+                    android:minHeight="?android:attr/listPreferredItemHeightSmall"
+                    android:gravity="center_vertical"
+                    android:text="@string/priority" />
+
+            <Spinner android:id="@+id/priority_spinner"
+                    android:layout_marginLeft="10dp"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content" />
+
+        </LinearLayout>
+
+        <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:orientation="horizontal">
+
+            <TextView
+                    android:layout_height="wrap_content"
+                    android:layout_width="wrap_content"
+                    android:minWidth="@dimen/editor_spinner_caption_min_width"
+                    android:minHeight="?android:attr/listPreferredItemHeightSmall"
+                    android:gravity="center_vertical"
+                    android:text="@string/actions" />
+
+            <Spinner android:id="@+id/actions_spinner"
+                    android:layout_marginLeft="10dp"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content" />
+
+        </LinearLayout>
+
+        <LinearLayout
+                android:id="@+id/title_edit_field"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:orientation="horizontal">
+
+            <TextView
+                    android:layout_height="wrap_content"
+                    android:layout_width="wrap_content"
+                    android:minWidth="@dimen/editor_spinner_caption_min_width"
+                    android:minHeight="?android:attr/listPreferredItemHeightSmall"
+                    android:gravity="center_vertical"
+                    android:text="@string/title" />
+
+            <EditText android:id="@+id/title_editor"
+                    android:layout_marginLeft="10dp"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content" />
+
+        </LinearLayout>
+
+        <LinearLayout
+                android:id="@+id/text_edit_field"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:orientation="horizontal">
+
+            <TextView
+                    android:layout_height="wrap_content"
+                    android:layout_width="wrap_content"
+                    android:minWidth="@dimen/editor_spinner_caption_min_width"
+                    android:minHeight="?android:attr/listPreferredItemHeightSmall"
+                    android:gravity="center_vertical"
+                    android:text="@string/text" />
+
+            <EditText android:id="@+id/text_editor"
+                    android:layout_marginLeft="10dp"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content" />
+
+        </LinearLayout>
+
+        <CheckBox android:id="@+id/include_large_icon_checkbox"
+                android:layout_height="wrap_content"
+                android:layout_width="wrap_content"
+                android:paddingTop="@dimen/editor_item_padding_top"
+                android:paddingBottom="@dimen/editor_item_padding_bottom"
+                android:text="@string/include_large_icon" />
+
+        <CheckBox android:id="@+id/local_only_checkbox"
+                android:layout_height="wrap_content"
+                android:layout_width="wrap_content"
+                android:paddingTop="@dimen/editor_item_padding_top"
+                android:paddingBottom="@dimen/editor_item_padding_bottom"
+                android:text="@string/local_only" />
+
+        <CheckBox android:id="@+id/include_content_intent_checkbox"
+                android:layout_height="wrap_content"
+                android:layout_width="wrap_content"
+                android:paddingTop="@dimen/editor_item_padding_top"
+                android:paddingBottom="@dimen/editor_item_padding_bottom"
+                android:text="@string/include_content_intent" />
+
+        <CheckBox android:id="@+id/vibrate_checkbox"
+                  android:layout_height="wrap_content"
+                  android:layout_width="wrap_content"
+                  android:paddingTop="@dimen/editor_item_padding_top"
+                  android:paddingBottom="@dimen/editor_item_padding_bottom"
+                  android:text="@string/vibrate" />
+
+        <LinearLayout android:id="@+id/background_pickers"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:orientation="vertical">
+        </LinearLayout>
+
+    </LinearLayout>
+
+</ScrollView>
diff --git a/samples/wearable/Notifications/Application/src/main/res/layout/background_picker.xml b/samples/wearable/Notifications/Application/src/main/res/layout/background_picker.xml
new file mode 100644
index 0000000..e4e2952
--- /dev/null
+++ b/samples/wearable/Notifications/Application/src/main/res/layout/background_picker.xml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="vertical"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <TextView
+        android:id="@+id/bg_picker_label"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginLeft="@dimen/editor_item_padding_top"
+        android:paddingTop="@dimen/editor_item_padding_top"
+        android:paddingBottom="@dimen/editor_item_padding_top"
+        android:text="@string/bg_picker_label"/>
+
+    <HorizontalScrollView
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content">
+        <LinearLayout
+            android:id="@+id/bg_picker_container"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content">
+            <ImageView
+                android:id="@+id/bg_none"
+                android:background="@drawable/selected_background"
+                style="@style/bg_picker"
+                android:layout_width="@dimen/image_picker_item_side"
+                android:layout_height="@dimen/image_picker_item_side"
+                android:src="@android:color/background_light"/>
+            <ImageView
+                android:id="@+id/bg1"
+                style="@style/bg_picker"
+                android:layout_width="@dimen/image_picker_item_side"
+                android:layout_height="@dimen/image_picker_item_side"
+                android:tag="bg_1"
+                android:src="@drawable/bg_1"/>
+            <ImageView
+                android:id="@+id/bg2"
+                style="@style/bg_picker"
+                android:layout_width="@dimen/image_picker_item_side"
+                android:layout_height="@dimen/image_picker_item_side"
+                android:tag="bg_2"
+                android:src="@drawable/bg_2"/>
+            <ImageView
+                android:id="@+id/bg3"
+                style="@style/bg_picker"
+                android:layout_width="@dimen/image_picker_item_side"
+                android:layout_height="@dimen/image_picker_item_side"
+                android:tag="bg_3"
+                android:src="@drawable/bg_3"/>
+            <ImageView
+                android:id="@+id/bg4"
+                style="@style/bg_picker"
+                android:layout_width="@dimen/image_picker_item_side"
+                android:layout_height="@dimen/image_picker_item_side"
+                android:tag="bg_4"
+                android:src="@drawable/bg_4"/>
+            <ImageView
+                android:id="@+id/bg5"
+                style="@style/bg_picker"
+                android:layout_width="@dimen/image_picker_item_side"
+                android:layout_height="@dimen/image_picker_item_side"
+                android:tag="bg_5"
+                android:src="@drawable/bg_5"/>
+        </LinearLayout>
+
+    </HorizontalScrollView>
+
+</LinearLayout>
\ No newline at end of file
diff --git a/samples/wearable/Notifications/Application/src/main/res/layout/layout_divider.xml b/samples/wearable/Notifications/Application/src/main/res/layout/layout_divider.xml
new file mode 100644
index 0000000..606c42b
--- /dev/null
+++ b/samples/wearable/Notifications/Application/src/main/res/layout/layout_divider.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright 2014 The Android Open Source Project
+
+  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.
+  -->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="vertical" >
+
+    <TextView
+            android:id="@+id/divider_text"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="3dp"
+            android:textAllCaps="true"
+            android:textColor="@color/divider_text"
+            android:textSize="@dimen/editor_text_size"
+            android:text="@string/properties"/>
+
+    <View
+            android:layout_width="match_parent"
+            android:layout_height="1dp"
+            android:layout_marginTop="3dp"
+            android:background="@color/divider_text" />
+
+</LinearLayout>
diff --git a/samples/wearable/Notifications/Application/src/main/res/layout/simple_spinner_item.xml b/samples/wearable/Notifications/Application/src/main/res/layout/simple_spinner_item.xml
new file mode 100644
index 0000000..4eed3fa
--- /dev/null
+++ b/samples/wearable/Notifications/Application/src/main/res/layout/simple_spinner_item.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<TextView xmlns:android="http://schemas.android.com/apk/res/android"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:textAppearance="?android:attr/textAppearanceListItemSmall"
+        android:gravity="center_vertical"
+        android:paddingStart="?android:attr/listPreferredItemPaddingStart"
+        android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
+        android:background="?android:attr/activatedBackgroundIndicator"
+        android:minHeight="?android:attr/listPreferredItemHeightSmall" />
diff --git a/samples/wearable/Notifications/Application/src/main/res/mipmap-hdpi/ic_launcher.png b/samples/wearable/Notifications/Application/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 0000000..41479de
--- /dev/null
+++ b/samples/wearable/Notifications/Application/src/main/res/mipmap-hdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/Notifications/Application/src/main/res/mipmap-mdpi/ic_launcher.png b/samples/wearable/Notifications/Application/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 0000000..380b02f
--- /dev/null
+++ b/samples/wearable/Notifications/Application/src/main/res/mipmap-mdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/Notifications/Application/src/main/res/mipmap-xhdpi/ic_launcher.png b/samples/wearable/Notifications/Application/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 0000000..b3e251e
--- /dev/null
+++ b/samples/wearable/Notifications/Application/src/main/res/mipmap-xhdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/Notifications/Application/src/main/res/mipmap-xxhdpi/ic_launcher.png b/samples/wearable/Notifications/Application/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 0000000..1962289
--- /dev/null
+++ b/samples/wearable/Notifications/Application/src/main/res/mipmap-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/Notifications/Application/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/samples/wearable/Notifications/Application/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 0000000..163f1f0
--- /dev/null
+++ b/samples/wearable/Notifications/Application/src/main/res/mipmap-xxxhdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/Notifications/Application/src/main/res/values/colors.xml b/samples/wearable/Notifications/Application/src/main/res/values/colors.xml
new file mode 100644
index 0000000..840978e
--- /dev/null
+++ b/samples/wearable/Notifications/Application/src/main/res/values/colors.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <color name="divider_text">@android:color/holo_blue_bright</color>
+</resources>
diff --git a/samples/wearable/Notifications/Application/src/main/res/values/dimens.xml b/samples/wearable/Notifications/Application/src/main/res/values/dimens.xml
new file mode 100644
index 0000000..8f4947f
--- /dev/null
+++ b/samples/wearable/Notifications/Application/src/main/res/values/dimens.xml
@@ -0,0 +1,13 @@
+<resources>
+    <!-- Default screen margins, per the Android Design guidelines. -->
+    <dimen name="activity_horizontal_margin">16dp</dimen>
+    <dimen name="activity_vertical_margin">16dp</dimen>
+
+    <dimen name="editor_text_size">12dp</dimen>
+    <dimen name="editor_item_padding_top">8dp</dimen>
+    <dimen name="editor_item_padding_bottom">8dp</dimen>
+    <dimen name="editor_spinner_caption_min_width">50dp</dimen>
+
+    <dimen name="image_picker_item_side">48dp</dimen>
+
+</resources>
diff --git a/samples/wearable/Notifications/Application/src/main/res/values/strings.xml b/samples/wearable/Notifications/Application/src/main/res/values/strings.xml
new file mode 100644
index 0000000..84535e7
--- /dev/null
+++ b/samples/wearable/Notifications/Application/src/main/res/values/strings.xml
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+
+    <string name="app_name">Wearable Notifications</string>
+    <string name="properties">Properties</string>
+    <string name="preset">Preset</string>
+    <string name="text">Text</string>
+    <string name="title">Title</string>
+    <string name="priority">Priority</string>
+    <string name="actions">Actions</string>
+    <string name="include_large_icon">Include large icon</string>
+    <string name="local_only">Local only</string>
+    <string name="include_content_intent">Include content intent</string>
+    <string name="vibrate">Vibrate</string>
+
+    <string name="basic_example">Basic example</string>
+    <string name="stylized_text_example">Stylized text example</string>
+    <string name="inbox_example">Inbox example</string>
+    <string name="big_picture_example">Big picture example</string>
+    <string name="big_text_example">Big text example</string>
+    <string name="bottom_aligned_example">Bottom-aligned example</string>
+    <string name="gravity_example">Gravity example</string>
+    <string name="content_action_example">Content action example</string>
+    <string name="content_icon_example">Content icon example</string>
+    <string name="multiple_page_example">Multiple page example</string>
+    <string name="bundle_example">Bundle example</string>
+
+    <string name="min_priority">Min priority</string>
+    <string name="low_priority">Low priority</string>
+    <string name="default_priority">Default priority</string>
+    <string name="high_priority">High priority</string>
+    <string name="max_priority">Max priority</string>
+
+    <string name="no_actions">No actions</string>
+    <string name="single_action">Single action</string>
+    <string name="long_title_action">Single action with a long title</string>
+    <string name="reply_action">Reply action</string>
+    <string name="reply_action_with_choices">Reply action with choices</string>
+    <string name="different_actions_on_phone_and_wearable">Different on phone and wearable</string>
+
+    <string name="example_action">Example action</string>
+    <string name="example_action_long_title">Example action with a long title which wraps</string>
+    <string name="example_reply_action">Example reply action</string>
+    <string name="phone_action">Phone action</string>
+    <string name="wearable_action">Wearable action</string>
+
+    <string name="example_action_clicked">Example action clicked</string>
+    <string name="example_reply_action_clicked">Example reply action clicked</string>
+    <string name="phone_action_clicked">Phone action clicked</string>
+    <string name="wearable_action_clicked">Wearable action clicked</string>
+    <string name="second_child_action_clicked">Second child action clicked</string>
+    <string name="content_intent_clicked">Content intent clicked</string>
+    <string name="example_content_action_clicked">Example content action clicked</string>
+    <string name="example_content_action2_clicked">Example content action 2 clicked</string>
+    <string name="example_notification_deleted">Example notification deleted</string>
+
+    <string name="example_content_title">Basic example title</string>
+    <string name="example_content_text">Basic example text</string>
+
+    <string name="big_text_example_title">Big text example title</string>
+    <string name="big_text_example_summary_text">Big text example summary</string>
+    <string name="big_text_example_big_text">
+        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor
+        incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud
+        exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure
+        dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
+        Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit
+        anim id est laborum.
+
+        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor
+        incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud
+        exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure
+        dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
+        Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit
+        anim id est laborum.
+
+        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor
+        incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud
+        exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure
+        dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
+        Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit
+        anim id est laborum.
+
+        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor
+        incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud
+        exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure
+        dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
+        Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit
+        anim id est laborum.
+
+        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor
+        incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud
+        exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure
+        dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
+        Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit
+        anim id est laborum.
+
+        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor
+        incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud
+        exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure
+        dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
+        Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit
+        anim id est laborum.
+
+        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor
+        incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud
+        exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure
+        dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
+        Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit
+        anim id est laborum.
+
+        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor
+        incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud
+        exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure
+        dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
+        Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit
+        anim id est laborum.
+
+        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor
+        incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud
+        exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure
+        dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
+        Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit
+        anim id est laborum.
+
+        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor
+        incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud
+        exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure
+        dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
+        Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit
+        anim id est laborum.
+
+        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor
+        incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud
+        exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure
+        dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
+        Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit
+        anim id est laborum.
+    </string>
+
+    <string name="inbox_style_example_title">Inbox style example title</string>
+    <string name="inbox_style_example_summary_text">Inbox style example summary</string>
+    <string name="inbox_style_example_line1">Inbox style example line 1</string>
+    <string name="inbox_style_example_line2">Inbox style example line 2</string>
+    <string name="inbox_style_example_line3">Inbox style example line 3</string>
+
+    <string name="big_picture_style_example_title">Big picture style example title</string>
+    <string name="big_picture_style_example_summary_text">Big picture style example summary</string>
+
+    <string name="second_page_content_title">Second page title</string>
+    <string name="second_page_content_text">Second page text</string>
+
+    <string name="third_page_content_title">Third page title</string>
+    <string name="third_page_content_text">Third page text</string>
+
+    <string name="fourth_page_content_title">Fourth page title</string>
+    <string name="fourth_page_content_text">Fourth page text</string>
+
+    <string name="first_child_content_title">First child title</string>
+    <string name="first_child_content_text">
+        First child text. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
+        tempor incididunt ut labore et dolore magna aliqua.</string>
+    <string name="second_child_content_title">Second child title</string>
+    <string name="second_child_content_text">
+        Second child text. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
+        tempor incididunt ut labore et dolore magna aliqua.</string>
+    <string name="second_child_action">Second child action</string>
+
+    <string name="example_reply_label">Message?</string>
+
+    <string name="example_reply_answer_label">Answer?</string>
+    <string name="yes">Yes</string>
+    <string name="no">No</string>
+    <string name="maybe">Maybe</string>
+
+    <string name="bg_picker_label">Page %s background: </string>
+
+</resources>
diff --git a/samples/wearable/Notifications/Application/src/main/res/values/styles.xml b/samples/wearable/Notifications/Application/src/main/res/values/styles.xml
new file mode 100644
index 0000000..7247b39
--- /dev/null
+++ b/samples/wearable/Notifications/Application/src/main/res/values/styles.xml
@@ -0,0 +1,13 @@
+<resources>
+
+    <!-- Base application theme. -->
+    <style name="AppTheme" parent="android:Theme.Holo">
+        <!-- Customize your theme here. -->
+    </style>
+
+    <style name="bg_picker">
+        <item name="android:layout_marginLeft">16dp</item>
+        <item name="android:background">@drawable/unselected_background</item>
+    </style>
+
+</resources>
diff --git a/samples/wearable/Notifications/Wearable/build.gradle b/samples/wearable/Notifications/Wearable/build.gradle
new file mode 100644
index 0000000..2a52030
--- /dev/null
+++ b/samples/wearable/Notifications/Wearable/build.gradle
@@ -0,0 +1,25 @@
+apply plugin: 'android'
+
+android {
+    compileSdkVersion 20
+    buildToolsVersion '20'
+
+    defaultConfig {
+        minSdkVersion 20
+        targetSdkVersion 20
+        versionCode 1
+        versionName "1.0"
+    }
+
+    buildTypes {
+        release {
+            runProguard false
+            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
+        }
+    }
+}
+
+dependencies {
+    compile "com.android.support:support-v13:20.0.+"
+    compile "com.google.android.support:wearable:1.0.+"
+}
diff --git a/samples/wearable/Notifications/Wearable/proguard-rules.txt b/samples/wearable/Notifications/Wearable/proguard-rules.txt
new file mode 100644
index 0000000..08e5bdc
--- /dev/null
+++ b/samples/wearable/Notifications/Wearable/proguard-rules.txt
@@ -0,0 +1,22 @@
+# To enable ProGuard in your project, edit project.properties
+# to define the proguard.config property as described in that file.
+#
+# Add project specific ProGuard rules here.
+# By default, the flags in this file are appended to flags specified
+# in ${sdk.dir}/tools/proguard/proguard-android.txt
+# You can edit the include path and order by changing the ProGuard
+# include property in project.properties.
+#
+# For more details, see
+#   http://developer.android.com/guide/developing/tools/proguard.html
+
+# Add any project specific keep options here:
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+#   public *;
+#}
+-dontwarn android.support.wearable.view.DelayedConfirmationView
+-dontwarn android.support.wearable.view.CircledImageView
diff --git a/samples/wearable/Notifications/Wearable/src/main/AndroidManifest.xml b/samples/wearable/Notifications/Wearable/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..32b5039
--- /dev/null
+++ b/samples/wearable/Notifications/Wearable/src/main/AndroidManifest.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+        package="com.example.android.support.wearable.notifications" >
+
+    <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="19"/>
+
+    <application
+            android:allowBackup="true"
+            android:icon="@mipmap/ic_launcher"
+            android:label="@string/app_name"
+            android:theme="@android:style/Theme.DeviceDefault.Light" >
+
+        <activity
+                android:name=".MainActivity"
+                android:label="@string/app_name" >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
+        <activity
+                android:name=".BasicNotificationDisplayActivity"
+                android:exported="true"
+                android:allowEmbedded="true"
+                android:label="@string/app_name"
+                android:taskAffinity="" />
+        <activity
+                android:name=".AnimatedNotificationDisplayActivity"
+                android:exported="true"
+                android:allowEmbedded="true"
+                android:label="@string/app_name"
+                android:taskAffinity="" />
+    </application>
+
+</manifest>
diff --git a/samples/wearable/Notifications/Wearable/src/main/java/com/example/android/support/wearable/notifications/AnimatedNotificationDisplayActivity.java b/samples/wearable/Notifications/Wearable/src/main/java/com/example/android/support/wearable/notifications/AnimatedNotificationDisplayActivity.java
new file mode 100644
index 0000000..678d6e2
--- /dev/null
+++ b/samples/wearable/Notifications/Wearable/src/main/java/com/example/android/support/wearable/notifications/AnimatedNotificationDisplayActivity.java
@@ -0,0 +1,122 @@
+package com.example.android.support.wearable.notifications;
+
+import android.animation.Animator;
+import android.animation.AnimatorListenerAdapter;
+import android.animation.ObjectAnimator;
+import android.animation.PropertyValuesHolder;
+import android.app.Activity;
+import android.content.Context;
+import android.os.Bundle;
+import android.view.ViewGroup;
+import android.view.animation.AccelerateDecelerateInterpolator;
+import android.widget.FrameLayout;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import java.util.Random;
+
+/**
+ * Custom display activity for an animated sample notification.
+ */
+public class AnimatedNotificationDisplayActivity extends Activity {
+    public static final String EXTRA_TITLE = "title";
+
+    private static final int BASE_ANIMATION_DURATION_MS = 2000;
+
+    private Random mRandom;
+    private int mAnimationRange;
+    private ImageView mImageView;
+    private Animator mAnimation;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_animated_notification_display);
+
+        mRandom = new Random(System.currentTimeMillis());
+        mAnimationRange = getResources().getDimensionPixelSize(R.dimen.animation_range);
+
+        String title = getIntent().getStringExtra(EXTRA_TITLE);
+        ((TextView) findViewById(R.id.title)).setText(title);
+
+        mImageView = new ImageView(this);
+        mImageView.setImageResource(R.drawable.example_big_picture);
+
+        ImageZoomView zoomView = new ImageZoomView(this, mImageView, mAnimationRange);
+        zoomView.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
+                ViewGroup.LayoutParams.MATCH_PARENT));
+
+        ((FrameLayout) findViewById(R.id.container)).addView(zoomView, 0);
+
+        createNextAnimation(false);
+    }
+
+    private void createNextAnimation(boolean start) {
+        float startX = mImageView.getTranslationX();
+        float startY = mImageView.getTranslationY();
+        float endX = -mRandom.nextInt(mAnimationRange);
+        float endY = -mRandom.nextInt(mAnimationRange);
+        float distance = (float) Math.sqrt(Math.pow(endX - startX, 2) + Math.pow(endY - startY, 2));
+
+        mAnimation = ObjectAnimator.ofPropertyValuesHolder(mImageView,
+                PropertyValuesHolder.ofFloat("translationX", startX, endX),
+                PropertyValuesHolder.ofFloat("translationY", startY, endY));
+        mAnimation.setInterpolator(new AccelerateDecelerateInterpolator());
+
+        mAnimation.setDuration(Math.max(BASE_ANIMATION_DURATION_MS / 10,
+                (int) (distance * BASE_ANIMATION_DURATION_MS / mAnimationRange)));
+
+        mAnimation.addListener(new AnimatorListenerAdapter() {
+            @Override
+            public void onAnimationEnd(Animator animation) {
+                super.onAnimationEnd(animation);
+                createNextAnimation(true);
+            }
+        });
+        if (start) {
+            mAnimation.start();
+        }
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        mAnimation.start();
+    }
+
+    @Override
+    protected void onPause() {
+        mAnimation.pause();
+        super.onPause();
+    }
+
+    /** Helper view that zooms in on a child image view */
+    private static class ImageZoomView extends ViewGroup {
+        private final int mZoomLength;
+
+        public ImageZoomView(Context context, ImageView imageView, int zoomLength) {
+            super(context);
+            addView(imageView);
+            mZoomLength = zoomLength;
+        }
+
+        @Override
+        protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
+            ImageView imageView = (ImageView) getChildAt(0);
+
+            // Resize the image view to be at least mZoomLength pixels larger in both
+            // dimensions than the containing view.
+            int imageWidth = imageView.getDrawable().getIntrinsicWidth();
+            int imageHeight = imageView.getDrawable().getIntrinsicHeight();
+            int minSize = Math.max(right - left, bottom - top) + mZoomLength;
+            if (imageWidth > imageHeight) {
+                imageWidth = minSize * imageWidth / imageHeight;
+                imageHeight = minSize;
+            } else {
+                imageHeight = minSize * imageHeight / imageWidth;
+                imageWidth = minSize;
+            }
+            imageView.layout(left, top, left + imageWidth, top + imageHeight);
+        }
+    }
+}
diff --git a/samples/wearable/Notifications/Wearable/src/main/java/com/example/android/support/wearable/notifications/BasicNotificationDisplayActivity.java b/samples/wearable/Notifications/Wearable/src/main/java/com/example/android/support/wearable/notifications/BasicNotificationDisplayActivity.java
new file mode 100644
index 0000000..d394fb3
--- /dev/null
+++ b/samples/wearable/Notifications/Wearable/src/main/java/com/example/android/support/wearable/notifications/BasicNotificationDisplayActivity.java
@@ -0,0 +1,22 @@
+package com.example.android.support.wearable.notifications;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.widget.TextView;
+
+/**
+ * Custom display activity for a sample notification.
+ */
+public class BasicNotificationDisplayActivity extends Activity {
+    public static final String EXTRA_TITLE = "title";
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_notification_display);
+
+        String title = getIntent().getStringExtra(EXTRA_TITLE);
+
+        ((TextView) findViewById(R.id.title)).setText(title);
+    }
+}
diff --git a/samples/wearable/Notifications/Wearable/src/main/java/com/example/android/support/wearable/notifications/MainActivity.java b/samples/wearable/Notifications/Wearable/src/main/java/com/example/android/support/wearable/notifications/MainActivity.java
new file mode 100644
index 0000000..74e5920
--- /dev/null
+++ b/samples/wearable/Notifications/Wearable/src/main/java/com/example/android/support/wearable/notifications/MainActivity.java
@@ -0,0 +1,89 @@
+package com.example.android.support.wearable.notifications;
+
+import android.app.Activity;
+import android.app.Notification;
+import android.app.RemoteInput;
+import android.content.Context;
+import android.os.Bundle;
+import android.support.v4.app.NotificationManagerCompat;
+import android.support.wearable.view.WearableListView;
+import android.text.TextUtils;
+import android.view.LayoutInflater;
+import android.view.ViewGroup;
+import android.widget.TextView;
+import android.widget.Toast;
+
+public class MainActivity extends Activity implements WearableListView.ClickListener {
+    private static final int SAMPLE_NOTIFICATION_ID = 0;
+    public static final String KEY_REPLY = "reply";
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_main);
+
+        WearableListView listView = (WearableListView) findViewById(R.id.list);
+        listView.setAdapter(new Adapter(this));
+        listView.setClickListener(this);
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        if (getIntent() != null) {
+            Bundle inputResults = RemoteInput.getResultsFromIntent(getIntent());
+            if (inputResults != null) {
+                CharSequence replyText = inputResults.getCharSequence(KEY_REPLY);
+                if (replyText != null) {
+                    Toast.makeText(this, TextUtils.concat(getString(R.string.reply_was), replyText),
+                            Toast.LENGTH_LONG).show();
+                }
+            }
+        }
+    }
+
+    /** Post a new or updated notification using the selected notification options. */
+    private void updateNotification(int presetIndex) {
+        NotificationPreset preset = NotificationPresets.PRESETS[presetIndex];
+        Notification notif = preset.buildNotification(this);
+        NotificationManagerCompat.from(this).notify(SAMPLE_NOTIFICATION_ID, notif);
+        finish();
+    }
+
+    @Override
+    public void onClick(WearableListView.ViewHolder v) {
+        updateNotification((Integer) v.itemView.getTag());
+    }
+
+    @Override
+    public void onTopEmptyRegionClick() {
+    }
+
+    private static final class Adapter extends WearableListView.Adapter {
+        private final Context mContext;
+        private final LayoutInflater mInflater;
+
+        private Adapter(Context context) {
+            mContext = context;
+            mInflater = LayoutInflater.from(context);
+        }
+
+        @Override
+        public WearableListView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
+            return new WearableListView.ViewHolder(
+                    mInflater.inflate(R.layout.notif_preset_list_item, null));
+        }
+
+        @Override
+        public void onBindViewHolder(WearableListView.ViewHolder holder, int position) {
+            TextView view = (TextView) holder.itemView.findViewById(R.id.name);
+            view.setText(mContext.getString(NotificationPresets.PRESETS[position].nameResId));
+            holder.itemView.setTag(position);
+        }
+
+        @Override
+        public int getItemCount() {
+            return NotificationPresets.PRESETS.length;
+        }
+    }
+}
diff --git a/samples/wearable/Notifications/Wearable/src/main/java/com/example/android/support/wearable/notifications/NotificationPreset.java b/samples/wearable/Notifications/Wearable/src/main/java/com/example/android/support/wearable/notifications/NotificationPreset.java
new file mode 100644
index 0000000..7cfa1e8
--- /dev/null
+++ b/samples/wearable/Notifications/Wearable/src/main/java/com/example/android/support/wearable/notifications/NotificationPreset.java
@@ -0,0 +1,18 @@
+package com.example.android.support.wearable.notifications;
+
+import android.app.Notification;
+import android.content.Context;
+
+/**
+ * Base class for notification preset generators.
+ */
+public abstract class NotificationPreset {
+    public final int nameResId;
+
+    public NotificationPreset(int nameResId) {
+        this.nameResId = nameResId;
+    }
+
+    /** Start building a notification with this preset */
+    public abstract Notification buildNotification(Context context);
+}
diff --git a/samples/wearable/Notifications/Wearable/src/main/java/com/example/android/support/wearable/notifications/NotificationPresets.java b/samples/wearable/Notifications/Wearable/src/main/java/com/example/android/support/wearable/notifications/NotificationPresets.java
new file mode 100644
index 0000000..451b270
--- /dev/null
+++ b/samples/wearable/Notifications/Wearable/src/main/java/com/example/android/support/wearable/notifications/NotificationPresets.java
@@ -0,0 +1,298 @@
+package com.example.android.support.wearable.notifications;
+
+import android.app.Notification;
+import android.app.PendingIntent;
+import android.app.RemoteInput;
+import android.content.Context;
+import android.content.Intent;
+import android.graphics.BitmapFactory;
+import android.graphics.Color;
+import android.graphics.Typeface;
+import android.net.Uri;
+import android.text.SpannableStringBuilder;
+import android.text.style.ForegroundColorSpan;
+import android.text.style.RelativeSizeSpan;
+import android.text.style.StrikethroughSpan;
+import android.text.style.StyleSpan;
+import android.text.style.SubscriptSpan;
+import android.text.style.SuperscriptSpan;
+import android.text.style.TypefaceSpan;
+import android.text.style.UnderlineSpan;
+import android.util.TypedValue;
+import android.view.Gravity;
+
+/**
+ * Collection of notification builder presets.
+ */
+public class NotificationPresets {
+    public static final NotificationPreset[] PRESETS = new NotificationPreset[] {
+            new BasicPreset(),
+            new StylizedTextPreset(),
+            new DisplayIntentPreset(),
+            new MultiSizeDisplayIntentPreset(),
+            new AnimatedDisplayIntentPreset(),
+            new ContentIconPreset()
+    };
+
+    private static Notification.Builder buildBasicNotification(Context context) {
+        return new Notification.Builder(context)
+                .setContentTitle(context.getString(R.string.example_content_title))
+                .setContentText(context.getString(R.string.example_content_text))
+                // Set a content intent to return to this sample
+                .setContentIntent(PendingIntent.getActivity(context, 0,
+                        new Intent(context, MainActivity.class), 0))
+                .setSmallIcon(R.mipmap.ic_launcher);
+    }
+
+    private static class BasicPreset extends NotificationPreset {
+        public BasicPreset() {
+            super(R.string.basic_example);
+        }
+
+        @Override
+        public Notification buildNotification(Context context) {
+            PendingIntent pendingIntent = PendingIntent.getActivity(context, 0,
+                    new Intent(context, MainActivity.class), 0);
+
+            Notification page2 = buildBasicNotification(context)
+                    .extend(new Notification.WearableExtender()
+                            .setHintShowBackgroundOnly(true)
+                            .setBackground(BitmapFactory.decodeResource(context.getResources(),
+                                    R.drawable.example_big_picture)))
+                    .build();
+
+            Notification page3 = buildBasicNotification(context)
+                    .setContentTitle(context.getString(R.string.third_page))
+                    .setContentText(null)
+                    .extend(new Notification.WearableExtender()
+                            .setContentAction(0 /* action A */))
+                    .build();
+
+            SpannableStringBuilder choice2 = new SpannableStringBuilder(
+                    "This choice is best");
+            choice2.setSpan(new StyleSpan(Typeface.BOLD_ITALIC), 5, 11, 0);
+
+            return buildBasicNotification(context)
+                    .extend(new Notification.WearableExtender()
+                            .addAction(new Notification.Action(R.mipmap.ic_launcher,
+                                    context.getString(R.string.action_a), pendingIntent))
+                            .addAction(new Notification.Action.Builder(R.mipmap.ic_launcher,
+                                    context.getString(R.string.reply), pendingIntent)
+                                    .addRemoteInput(new RemoteInput.Builder(MainActivity.KEY_REPLY)
+                                            .setChoices(new CharSequence[] {
+                                                    context.getString(R.string.choice_1),
+                                                    choice2 })
+                                            .build())
+                                    .build())
+                            .addPage(page2)
+                            .addPage(page3))
+                    .build();
+        }
+    }
+
+    private static class StylizedTextPreset extends NotificationPreset {
+        public StylizedTextPreset() {
+            super(R.string.stylized_text_example);
+        }
+
+        @Override
+        public Notification buildNotification(Context context) {
+            Notification.Builder builder = buildBasicNotification(context);
+
+            Notification.BigTextStyle style = new Notification.BigTextStyle();
+
+            SpannableStringBuilder title = new SpannableStringBuilder();
+            appendStyled(title, "Stylized", new StyleSpan(Typeface.BOLD_ITALIC));
+            title.append(" title");
+            SpannableStringBuilder text = new SpannableStringBuilder("Stylized text: ");
+            appendStyled(text, "C", new ForegroundColorSpan(Color.RED));
+            appendStyled(text, "O", new ForegroundColorSpan(Color.GREEN));
+            appendStyled(text, "L", new ForegroundColorSpan(Color.BLUE));
+            appendStyled(text, "O", new ForegroundColorSpan(Color.YELLOW));
+            appendStyled(text, "R", new ForegroundColorSpan(Color.MAGENTA));
+            appendStyled(text, "S", new ForegroundColorSpan(Color.CYAN));
+            text.append("; ");
+            appendStyled(text, "1.25x size", new RelativeSizeSpan(1.25f));
+            text.append("; ");
+            appendStyled(text, "0.75x size", new RelativeSizeSpan(0.75f));
+            text.append("; ");
+            appendStyled(text, "underline", new UnderlineSpan());
+            text.append("; ");
+            appendStyled(text, "strikethrough", new StrikethroughSpan());
+            text.append("; ");
+            appendStyled(text, "bold", new StyleSpan(Typeface.BOLD));
+            text.append("; ");
+            appendStyled(text, "italic", new StyleSpan(Typeface.ITALIC));
+            text.append("; ");
+            appendStyled(text, "sans-serif-thin", new TypefaceSpan("sans-serif-thin"));
+            text.append("; ");
+            appendStyled(text, "monospace", new TypefaceSpan("monospace"));
+            text.append("; ");
+            appendStyled(text, "sub", new SubscriptSpan());
+            text.append("script");
+            appendStyled(text, "super", new SuperscriptSpan());
+
+            style.setBigContentTitle(title);
+            style.bigText(text);
+
+            builder.setStyle(style);
+            return builder.build();
+        }
+
+        private void appendStyled(SpannableStringBuilder builder, String str, Object... spans) {
+            builder.append(str);
+            for (Object span : spans) {
+                builder.setSpan(span, builder.length() - str.length(), builder.length(), 0);
+            }
+        }
+    }
+
+    private static class DisplayIntentPreset extends NotificationPreset {
+        public DisplayIntentPreset() {
+            super(R.string.display_intent_example);
+        }
+
+        @Override
+        public Notification buildNotification(Context context) {
+            Intent displayIntent = new Intent(context, BasicNotificationDisplayActivity.class);
+            displayIntent.putExtra(BasicNotificationDisplayActivity.EXTRA_TITLE,
+                    context.getString(nameResId));
+            PendingIntent displayPendingIntent = PendingIntent.getActivity(context,
+                    0, displayIntent, PendingIntent.FLAG_UPDATE_CURRENT);
+            return buildBasicNotification(context)
+                    .extend(new Notification.WearableExtender()
+                            .setDisplayIntent(displayPendingIntent))
+                    .build();
+        }
+    }
+
+    private static class MultiSizeDisplayIntentPreset extends NotificationPreset {
+        public MultiSizeDisplayIntentPreset() {
+            super(R.string.multisize_display_intent_example);
+        }
+
+        @Override
+        public Notification buildNotification(Context context) {
+           PendingIntent pendingIntent = PendingIntent.getActivity(context, 0,
+                                   new Intent(context, MainActivity.class), 0);
+             Intent displayIntent = new Intent(context, BasicNotificationDisplayActivity.class)
+                    .putExtra(BasicNotificationDisplayActivity.EXTRA_TITLE,
+                            context.getString(R.string.xsmall_sized_display));
+            return buildBasicNotification(context)
+                    .extend(new Notification.WearableExtender()
+                            .setDisplayIntent(PendingIntent.getActivity(context, 0, displayIntent,
+                                    PendingIntent.FLAG_UPDATE_CURRENT))
+                            .addPage(createPageForSizePreset(context,
+                                    Notification.WearableExtender.SIZE_SMALL,
+                                    R.string.small_sized_display, 0))
+                            .addPage(createPageForSizePreset(context,
+                                    Notification.WearableExtender.SIZE_MEDIUM,
+                                    R.string.medium_sized_display, 1))
+                            .addPage(createPageForSizePreset(context,
+                                    Notification.WearableExtender.SIZE_LARGE,
+                                    R.string.large_sized_display, 2))
+                            .addPage(createPageForSizePreset(context,
+                                    Notification.WearableExtender.SIZE_FULL_SCREEN,
+                                    R.string.full_screen_display, 3))
+                             .addPage(createPageForCustomHeight(context, 256,
+                                    R.string.dp256_height_display))
+                            .addPage(createPageForCustomHeight(context, 512,
+                                    R.string.dp512_height_display))
+                            .addAction(new Notification.Action(R.mipmap.ic_launcher,
+                                    context.getString(R.string.action_a), pendingIntent))
+                            .addAction(new Notification.Action(R.mipmap.ic_launcher,
+                                    context.getString(R.string.action_b), pendingIntent))
+                            .addAction(new Notification.Action(R.mipmap.ic_launcher,
+                                    context.getString(R.string.action_c), pendingIntent))
+                            .addAction(new Notification.Action(R.mipmap.ic_launcher,
+                                    context.getString(R.string.action_d), pendingIntent))
+                            .setCustomSizePreset(Notification.WearableExtender.SIZE_XSMALL))
+                    .build();
+        }
+
+        private Notification createPageForCustomHeight(Context context, int heightDisplayDp,
+                int pageNameResId) {
+            int contentHeight = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,
+                    heightDisplayDp, context.getResources().getDisplayMetrics());
+            Intent displayIntent = new Intent(context, BasicNotificationDisplayActivity.class)
+                    .setData(Uri.fromParts("example", "height/" + heightDisplayDp, null))
+                    .putExtra(BasicNotificationDisplayActivity.EXTRA_TITLE,
+                            context.getString(pageNameResId));
+            return buildBasicNotification(context)
+                    .extend(new Notification.WearableExtender()
+                            .setDisplayIntent(PendingIntent.getActivity(context, 0, displayIntent,
+                                    PendingIntent.FLAG_UPDATE_CURRENT))
+                            .setCustomContentHeight(contentHeight))
+                    .build();
+        }
+
+        private Notification createPageForSizePreset(Context context, int sizePreset,
+                int pageNameResId, int contentAction) {
+           Intent displayIntent = new Intent(context, BasicNotificationDisplayActivity.class)
+                    .setData(Uri.fromParts("example", "size/" + sizePreset, null))
+                    .putExtra(BasicNotificationDisplayActivity.EXTRA_TITLE,
+                            context.getString(pageNameResId));
+            return buildBasicNotification(context)
+                    .extend(new Notification.WearableExtender()
+                            .setDisplayIntent(PendingIntent.getActivity(context, 0, displayIntent,
+                                    PendingIntent.FLAG_UPDATE_CURRENT))
+                            .setCustomSizePreset(sizePreset)
+                            .setContentAction(contentAction))
+                    .build();
+        }
+    }
+
+    private static class AnimatedDisplayIntentPreset extends NotificationPreset {
+        public AnimatedDisplayIntentPreset() {
+            super(R.string.animated_display_intent_example);
+        }
+
+        @Override
+        public Notification buildNotification(Context context) {
+            Intent displayIntent = new Intent(context, AnimatedNotificationDisplayActivity.class);
+            displayIntent.putExtra(BasicNotificationDisplayActivity.EXTRA_TITLE,
+                    context.getString(nameResId));
+            PendingIntent displayPendingIntent = PendingIntent.getActivity(context,
+                    0, displayIntent, 0);
+            return buildBasicNotification(context)
+                    .extend(new Notification.WearableExtender()
+                            .setDisplayIntent(displayPendingIntent))
+                    .build();
+        }
+    }
+
+    private static class ContentIconPreset extends NotificationPreset {
+        public ContentIconPreset() {
+            super(R.string.content_icon_example);
+        }
+
+        @Override
+        public Notification buildNotification(Context context) {
+            Notification page2 = buildBasicNotification(context)
+                    .extend(new Notification.WearableExtender()
+                            .setContentIcon(R.drawable.content_icon_small)
+                            .setContentIconGravity(Gravity.START))
+                    .build();
+
+            Notification page3 = buildBasicNotification(context)
+                    .extend(new Notification.WearableExtender()
+                            .setContentIcon(R.drawable.content_icon_large))
+                    .build();
+
+            Notification page4 = buildBasicNotification(context)
+                    .extend(new Notification.WearableExtender()
+                            .setContentIcon(R.drawable.content_icon_large)
+                            .setContentIconGravity(Gravity.START))
+                    .build();
+
+            return buildBasicNotification(context)
+                    .extend(new Notification.WearableExtender()
+                            .setHintHideIcon(true)
+                            .setContentIcon(R.drawable.content_icon_small)
+                            .addPage(page2)
+                            .addPage(page3)
+                            .addPage(page4))
+                    .build();
+        }
+    }
+}
diff --git a/samples/wearable/Notifications/Wearable/src/main/java/com/example/android/support/wearable/notifications/WearableListItemLayout.java b/samples/wearable/Notifications/Wearable/src/main/java/com/example/android/support/wearable/notifications/WearableListItemLayout.java
new file mode 100644
index 0000000..4b2c1db
--- /dev/null
+++ b/samples/wearable/Notifications/Wearable/src/main/java/com/example/android/support/wearable/notifications/WearableListItemLayout.java
@@ -0,0 +1,75 @@
+package com.example.android.support.wearable.notifications;
+
+import android.content.Context;
+import android.graphics.drawable.GradientDrawable;
+import android.support.wearable.view.WearableListView;
+import android.util.AttributeSet;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+public class WearableListItemLayout extends LinearLayout implements WearableListView.Item {
+
+    private final float mFadedTextAlpha;
+    private final int mFadedCircleColor;
+    private final int mChosenCircleColor;
+    private ImageView mCircle;
+    private float mScale;
+    private TextView mName;
+
+    public WearableListItemLayout(Context context) {
+        this(context, null);
+    }
+
+    public WearableListItemLayout(Context context, AttributeSet attrs) {
+        this(context, attrs, 0);
+    }
+
+    public WearableListItemLayout(Context context, AttributeSet attrs, int defStyle) {
+        super(context, attrs, defStyle);
+        mFadedTextAlpha = getResources().getInteger(R.integer.action_text_faded_alpha) / 100f;
+        mFadedCircleColor = getResources().getColor(R.color.wl_gray);
+        mChosenCircleColor = getResources().getColor(R.color.wl_blue);
+    }
+
+    @Override
+    protected void onFinishInflate() {
+        super.onFinishInflate();
+        mCircle = (ImageView) findViewById(R.id.circle);
+        mName = (TextView) findViewById(R.id.name);
+    }
+
+    @Override
+    public float getProximityMinValue() {
+        return 1f;
+    }
+
+    @Override
+    public float getProximityMaxValue() {
+        return 1.6f;
+    }
+
+    @Override
+    public float getCurrentProximityValue() {
+        return mScale;
+    }
+
+    @Override
+    public void setScalingAnimatorValue(float scale) {
+        mScale = scale;
+        mCircle.setScaleX(scale);
+        mCircle.setScaleY(scale);
+    }
+
+    @Override
+    public void onScaleUpStart() {
+        mName.setAlpha(1f);
+        ((GradientDrawable) mCircle.getDrawable()).setColor(mChosenCircleColor);
+    }
+
+    @Override
+    public void onScaleDownStart() {
+        ((GradientDrawable) mCircle.getDrawable()).setColor(mFadedCircleColor);
+        mName.setAlpha(mFadedTextAlpha);
+    }
+}
diff --git a/samples/wearable/Notifications/Wearable/src/main/res/drawable-nodpi/content_icon_large.png b/samples/wearable/Notifications/Wearable/src/main/res/drawable-nodpi/content_icon_large.png
new file mode 100644
index 0000000..0eab3b1
--- /dev/null
+++ b/samples/wearable/Notifications/Wearable/src/main/res/drawable-nodpi/content_icon_large.png
Binary files differ
diff --git a/samples/wearable/Notifications/Wearable/src/main/res/drawable-nodpi/content_icon_small.png b/samples/wearable/Notifications/Wearable/src/main/res/drawable-nodpi/content_icon_small.png
new file mode 100644
index 0000000..9a9f4b4
--- /dev/null
+++ b/samples/wearable/Notifications/Wearable/src/main/res/drawable-nodpi/content_icon_small.png
Binary files differ
diff --git a/samples/wearable/Notifications/Wearable/src/main/res/drawable-nodpi/example_big_picture.jpg b/samples/wearable/Notifications/Wearable/src/main/res/drawable-nodpi/example_big_picture.jpg
new file mode 100644
index 0000000..68473ba
--- /dev/null
+++ b/samples/wearable/Notifications/Wearable/src/main/res/drawable-nodpi/example_big_picture.jpg
Binary files differ
diff --git a/samples/wearable/Notifications/Wearable/src/main/res/drawable/wl_circle.xml b/samples/wearable/Notifications/Wearable/src/main/res/drawable/wl_circle.xml
new file mode 100644
index 0000000..a06c53a
--- /dev/null
+++ b/samples/wearable/Notifications/Wearable/src/main/res/drawable/wl_circle.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="oval">
+    <solid android:color="@color/wl_gray"/>
+</shape>
diff --git a/samples/wearable/Notifications/Wearable/src/main/res/layout/activity_animated_notification_display.xml b/samples/wearable/Notifications/Wearable/src/main/res/layout/activity_animated_notification_display.xml
new file mode 100644
index 0000000..285b117
--- /dev/null
+++ b/samples/wearable/Notifications/Wearable/src/main/res/layout/activity_animated_notification_display.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+        android:id="@+id/container"
+        android:orientation="vertical"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent" >
+
+    <TextView android:id="@+id/title"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:textSize="16sp"
+            android:padding="8dp"
+            android:gravity="center_vertical|center_horizontal"
+            android:textColor="#FF3333"
+            android:shadowColor="#992222"
+            android:shadowRadius="2"
+            android:shadowDx="1"
+            android:shadowDy="1" />
+
+</FrameLayout>
diff --git a/samples/wearable/Notifications/Wearable/src/main/res/layout/activity_main.xml b/samples/wearable/Notifications/Wearable/src/main/res/layout/activity_main.xml
new file mode 100644
index 0000000..0a3eb76
--- /dev/null
+++ b/samples/wearable/Notifications/Wearable/src/main/res/layout/activity_main.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<android.support.wearable.view.WearableListView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/list"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:scrollbars="none"
+    android:dividerHeight="0dp"/>
diff --git a/samples/wearable/Notifications/Wearable/src/main/res/layout/activity_notification_display.xml b/samples/wearable/Notifications/Wearable/src/main/res/layout/activity_notification_display.xml
new file mode 100644
index 0000000..02b61db
--- /dev/null
+++ b/samples/wearable/Notifications/Wearable/src/main/res/layout/activity_notification_display.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+        android:orientation="vertical"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent" >
+
+    <TextView android:id="@+id/title"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:textSize="16sp"
+            android:padding="8dp"
+            android:gravity="center_vertical|center_horizontal"
+            android:textColor="#7777FF"
+            android:shadowColor="#222299"
+            android:shadowRadius="2"
+            android:shadowDx="1"
+            android:shadowDy="1"
+            />
+
+</LinearLayout>
diff --git a/samples/wearable/Notifications/Wearable/src/main/res/layout/notif_preset_list_item.xml b/samples/wearable/Notifications/Wearable/src/main/res/layout/notif_preset_list_item.xml
new file mode 100644
index 0000000..68670f4
--- /dev/null
+++ b/samples/wearable/Notifications/Wearable/src/main/res/layout/notif_preset_list_item.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<com.example.android.support.wearable.notifications.WearableListItemLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:gravity="center_vertical"
+    android:layout_width="match_parent"
+    android:layout_height="80dp">
+    <ImageView
+        android:id="@+id/circle"
+        android:layout_height="20dp"
+        android:layout_margin="16dp"
+        android:layout_width="20dp"
+        android:src="@drawable/wl_circle"/>
+    <TextView
+        android:id="@+id/name"
+        android:gravity="center_vertical|left"
+        android:layout_width="wrap_content"
+        android:layout_marginRight="16dp"
+        android:layout_height="match_parent"
+        android:fontFamily="sans-serif-condensed-light"
+        android:lineSpacingExtra="-4sp"
+        android:textColor="@color/text_color"
+        android:textSize="16sp"/>
+</com.example.android.support.wearable.notifications.WearableListItemLayout>
diff --git a/samples/wearable/Notifications/Wearable/src/main/res/mipmap-hdpi/ic_launcher.png b/samples/wearable/Notifications/Wearable/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 0000000..41479de
--- /dev/null
+++ b/samples/wearable/Notifications/Wearable/src/main/res/mipmap-hdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/Notifications/Wearable/src/main/res/mipmap-mdpi/ic_launcher.png b/samples/wearable/Notifications/Wearable/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 0000000..380b02f
--- /dev/null
+++ b/samples/wearable/Notifications/Wearable/src/main/res/mipmap-mdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/Notifications/Wearable/src/main/res/mipmap-xhdpi/ic_launcher.png b/samples/wearable/Notifications/Wearable/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 0000000..b3e251e
--- /dev/null
+++ b/samples/wearable/Notifications/Wearable/src/main/res/mipmap-xhdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/Notifications/Wearable/src/main/res/mipmap-xxhdpi/ic_launcher.png b/samples/wearable/Notifications/Wearable/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 0000000..1962289
--- /dev/null
+++ b/samples/wearable/Notifications/Wearable/src/main/res/mipmap-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/Notifications/Wearable/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/samples/wearable/Notifications/Wearable/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 0000000..163f1f0
--- /dev/null
+++ b/samples/wearable/Notifications/Wearable/src/main/res/mipmap-xxxhdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/Notifications/Wearable/src/main/res/values/colors.xml b/samples/wearable/Notifications/Wearable/src/main/res/values/colors.xml
new file mode 100644
index 0000000..a8bb87b
--- /dev/null
+++ b/samples/wearable/Notifications/Wearable/src/main/res/values/colors.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <color name="wl_blue">#2878ff</color>
+    <color name="wl_gray">#c1c1c1</color>
+    <color name="text_color">#434343</color>
+</resources>
diff --git a/samples/wearable/Notifications/Wearable/src/main/res/values/dimens.xml b/samples/wearable/Notifications/Wearable/src/main/res/values/dimens.xml
new file mode 100644
index 0000000..9eaca988
--- /dev/null
+++ b/samples/wearable/Notifications/Wearable/src/main/res/values/dimens.xml
@@ -0,0 +1,7 @@
+<resources>
+    <!-- Default screen margins, per the Android Design guidelines. -->
+    <dimen name="activity_horizontal_margin">16dp</dimen>
+    <dimen name="activity_vertical_margin">16dp</dimen>
+    <dimen name="animation_range">60dp</dimen>
+
+</resources>
diff --git a/samples/wearable/Notifications/Wearable/src/main/res/values/integers.xml b/samples/wearable/Notifications/Wearable/src/main/res/values/integers.xml
new file mode 100644
index 0000000..c3bc252
--- /dev/null
+++ b/samples/wearable/Notifications/Wearable/src/main/res/values/integers.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <integer name="action_text_faded_alpha">40</integer>
+</resources>
diff --git a/samples/wearable/Notifications/Wearable/src/main/res/values/strings.xml b/samples/wearable/Notifications/Wearable/src/main/res/values/strings.xml
new file mode 100644
index 0000000..7c12e31
--- /dev/null
+++ b/samples/wearable/Notifications/Wearable/src/main/res/values/strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+
+    <string name="app_name">Wearable Notifications</string>
+    <string name="basic_example">Basic example</string>
+    <string name="stylized_text_example">Stylized text example</string>
+    <string name="display_intent_example">Display intent example</string>
+    <string name="multisize_display_intent_example">Multiple-sized display intent example</string>
+    <string name="animated_display_intent_example">Animated display intent example</string>
+    <string name="content_icon_example">Content icon example</string>
+
+    <string name="example_content_title">Example content title</string>
+    <string name="example_content_text">Example content text</string>
+
+    <string name="xsmall_sized_display">X-Small sized display</string>
+    <string name="small_sized_display">Small sized display</string>
+    <string name="medium_sized_display">Medium sized display</string>
+    <string name="large_sized_display">Large sized display</string>
+    <string name="full_screen_display">Full-Screen display</string>
+    <string name="dp256_height_display">256dp height display</string>
+    <string name="dp512_height_display">512dp height display</string>
+
+    <string name="action_a">Action A</string>
+    <string name="action_b">Action B</string>
+    <string name="action_c">Action C</string>
+    <string name="action_d">Action D</string>
+    <string name="reply">Reply</string>
+    <string name="reply_was">Reply was: </string>
+    <string name="third_page">Third page</string>
+    <string name="choice_1">Choice #1</string>
+</resources>
diff --git a/samples/wearable/Notifications/build.gradle b/samples/wearable/Notifications/build.gradle
new file mode 100644
index 0000000..8bafed4
--- /dev/null
+++ b/samples/wearable/Notifications/build.gradle
@@ -0,0 +1,14 @@
+buildscript {
+    repositories {
+        mavenCentral()
+    }
+    dependencies {
+        classpath 'com.android.tools.build:gradle:0.11.+'
+    }
+}
+
+allprojects {
+    repositories {
+        mavenCentral()
+    }
+}
diff --git a/samples/wearable/Notifications/gradle.properties b/samples/wearable/Notifications/gradle.properties
new file mode 100644
index 0000000..5d08ba7
--- /dev/null
+++ b/samples/wearable/Notifications/gradle.properties
@@ -0,0 +1,18 @@
+# Project-wide Gradle settings.
+
+# IDE (e.g. Android Studio) users:
+# Settings specified in this file will override any Gradle settings
+# configured through the IDE.
+
+# For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+# Default value: -Xmx10248m -XX:MaxPermSize=256m
+# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
+
+# When configured, Gradle will run in incubating parallel mode.
+# This option should only be used with decoupled projects. More details, visit
+# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
+# org.gradle.parallel=true
\ No newline at end of file
diff --git a/samples/wearable/Notifications/gradle/wrapper/gradle-wrapper.jar b/samples/wearable/Notifications/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 0000000..5838598
--- /dev/null
+++ b/samples/wearable/Notifications/gradle/wrapper/gradle-wrapper.jar
Binary files differ
diff --git a/samples/wearable/Notifications/gradle/wrapper/gradle-wrapper.properties b/samples/wearable/Notifications/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..e83e460
--- /dev/null
+++ b/samples/wearable/Notifications/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Fri Mar 14 14:02:22 PDT 2014
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=http\://services.gradle.org/distributions/gradle-1.11-all.zip
diff --git a/samples/wearable/Notifications/gradlew b/samples/wearable/Notifications/gradlew
new file mode 100755
index 0000000..91a7e26
--- /dev/null
+++ b/samples/wearable/Notifications/gradlew
@@ -0,0 +1,164 @@
+#!/usr/bin/env bash
+
+##############################################################################
+##
+##  Gradle start up script for UN*X
+##
+##############################################################################
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn ( ) {
+    echo "$*"
+}
+
+die ( ) {
+    echo
+    echo "$*"
+    echo
+    exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+case "`uname`" in
+  CYGWIN* )
+    cygwin=true
+    ;;
+  Darwin* )
+    darwin=true
+    ;;
+  MINGW* )
+    msys=true
+    ;;
+esac
+
+# For Cygwin, ensure paths are in UNIX format before anything is touched.
+if $cygwin ; then
+    [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
+fi
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+    ls=`ls -ld "$PRG"`
+    link=`expr "$ls" : '.*-> \(.*\)$'`
+    if expr "$link" : '/.*' > /dev/null; then
+        PRG="$link"
+    else
+        PRG=`dirname "$PRG"`"/$link"
+    fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >&-
+APP_HOME="`pwd -P`"
+cd "$SAVED" >&-
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+        # IBM's JDK on AIX uses strange locations for the executables
+        JAVACMD="$JAVA_HOME/jre/sh/java"
+    else
+        JAVACMD="$JAVA_HOME/bin/java"
+    fi
+    if [ ! -x "$JAVACMD" ] ; then
+        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+    fi
+else
+    JAVACMD="java"
+    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
+    MAX_FD_LIMIT=`ulimit -H -n`
+    if [ $? -eq 0 ] ; then
+        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+            MAX_FD="$MAX_FD_LIMIT"
+        fi
+        ulimit -n $MAX_FD
+        if [ $? -ne 0 ] ; then
+            warn "Could not set maximum file descriptor limit: $MAX_FD"
+        fi
+    else
+        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+    fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+
+    # We build the pattern for arguments to be converted via cygpath
+    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+    SEP=""
+    for dir in $ROOTDIRSRAW ; do
+        ROOTDIRS="$ROOTDIRS$SEP$dir"
+        SEP="|"
+    done
+    OURCYGPATTERN="(^($ROOTDIRS))"
+    # Add a user-defined pattern to the cygpath arguments
+    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+    fi
+    # Now convert the arguments - kludge to limit ourselves to /bin/sh
+    i=0
+    for arg in "$@" ; do
+        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
+
+        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
+            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+        else
+            eval `echo args$i`="\"$arg\""
+        fi
+        i=$((i+1))
+    done
+    case $i in
+        (0) set -- ;;
+        (1) set -- "$args0" ;;
+        (2) set -- "$args0" "$args1" ;;
+        (3) set -- "$args0" "$args1" "$args2" ;;
+        (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+        (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+        (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+        (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+        (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+        (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+    esac
+fi
+
+# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
+function splitJvmOpts() {
+    JVM_OPTS=("$@")
+}
+eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
+JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
+
+exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
diff --git a/samples/wearable/Notifications/gradlew.bat b/samples/wearable/Notifications/gradlew.bat
new file mode 100755
index 0000000..aec9973
--- /dev/null
+++ b/samples/wearable/Notifications/gradlew.bat
@@ -0,0 +1,90 @@
+@if "%DEBUG%" == "" @echo off

+@rem ##########################################################################

+@rem

+@rem  Gradle startup script for Windows

+@rem

+@rem ##########################################################################

+

+@rem Set local scope for the variables with windows NT shell

+if "%OS%"=="Windows_NT" setlocal

+

+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.

+set DEFAULT_JVM_OPTS=

+

+set DIRNAME=%~dp0

+if "%DIRNAME%" == "" set DIRNAME=.

+set APP_BASE_NAME=%~n0

+set APP_HOME=%DIRNAME%

+

+@rem Find java.exe

+if defined JAVA_HOME goto findJavaFromJavaHome

+

+set JAVA_EXE=java.exe

+%JAVA_EXE% -version >NUL 2>&1

+if "%ERRORLEVEL%" == "0" goto init

+

+echo.

+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.

+echo.

+echo Please set the JAVA_HOME variable in your environment to match the

+echo location of your Java installation.

+

+goto fail

+

+:findJavaFromJavaHome

+set JAVA_HOME=%JAVA_HOME:"=%

+set JAVA_EXE=%JAVA_HOME%/bin/java.exe

+

+if exist "%JAVA_EXE%" goto init

+

+echo.

+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%

+echo.

+echo Please set the JAVA_HOME variable in your environment to match the

+echo location of your Java installation.

+

+goto fail

+

+:init

+@rem Get command-line arguments, handling Windowz variants

+

+if not "%OS%" == "Windows_NT" goto win9xME_args

+if "%@eval[2+2]" == "4" goto 4NT_args

+

+:win9xME_args

+@rem Slurp the command line arguments.

+set CMD_LINE_ARGS=

+set _SKIP=2

+

+:win9xME_args_slurp

+if "x%~1" == "x" goto execute

+

+set CMD_LINE_ARGS=%*

+goto execute

+

+:4NT_args

+@rem Get arguments from the 4NT Shell from JP Software

+set CMD_LINE_ARGS=%$

+

+:execute

+@rem Setup the command line

+

+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar

+

+@rem Execute Gradle

+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%

+

+:end

+@rem End local scope for the variables with windows NT shell

+if "%ERRORLEVEL%"=="0" goto mainEnd

+

+:fail

+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of

+rem the _cmd.exe /c_ return code!

+if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1

+exit /b 1

+

+:mainEnd

+if "%OS%"=="Windows_NT" endlocal

+

+:omega

diff --git a/samples/wearable/Notifications/settings.gradle b/samples/wearable/Notifications/settings.gradle
new file mode 100644
index 0000000..f3f25a5
--- /dev/null
+++ b/samples/wearable/Notifications/settings.gradle
@@ -0,0 +1 @@
+include 'Wearable', 'Application'
diff --git a/samples/wearable/Quiz/Application/_index.html b/samples/wearable/Quiz/Application/_index.html
new file mode 100644
index 0000000..39e7075
--- /dev/null
+++ b/samples/wearable/Quiz/Application/_index.html
@@ -0,0 +1,12 @@
+<p>This sample provides an example of an app that uses Google Play Services Wearable Data APIs to
+communicate between applications on a phone and a paired wearable device. Users can create quiz
+questions on the phone, each of which has a DataItem associated with it. These DataItems are then
+received on the wearable, which then displays them as notifications. Each notification contains the
+question as the first page, followed by answers as actions. When an answer is selected, the
+corresponding question's DataItem is updated, which allows the phone application to update the
+status of the question (i.e. did the user answer it correctly or not) and prompt the next question.
+</p>
+<p>At the end of the quiz, the sample uses the Google Play Services Wearable Message APIs to create
+an end-of-quiz report notification on the wearable, with an option to reset the quiz (by sending a
+message back to the phone).
+</p>
\ No newline at end of file
diff --git a/samples/wearable/Quiz/Application/build.gradle b/samples/wearable/Quiz/Application/build.gradle
new file mode 100644
index 0000000..8482f34
--- /dev/null
+++ b/samples/wearable/Quiz/Application/build.gradle
@@ -0,0 +1,30 @@
+apply plugin: 'android'
+
+android {
+    compileSdkVersion 20
+    buildToolsVersion '20'
+
+    defaultConfig {
+        minSdkVersion 18
+        targetSdkVersion 20
+        versionCode 1
+        versionName "1.0"
+    }
+
+    buildTypes {
+        release {
+            runProguard false
+            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
+        }
+    }
+
+    aaptOptions {
+        noCompress 'apk'
+    }
+}
+
+dependencies {
+    compile 'com.google.android.gms:play-services:5.0.+@aar'
+    compile "com.android.support:support-v13:20.0.+"
+    wearApp project(':Wearable')
+}
diff --git a/samples/wearable/Quiz/Application/proguard-rules.txt b/samples/wearable/Quiz/Application/proguard-rules.txt
new file mode 100644
index 0000000..08e5bdc
--- /dev/null
+++ b/samples/wearable/Quiz/Application/proguard-rules.txt
@@ -0,0 +1,22 @@
+# To enable ProGuard in your project, edit project.properties
+# to define the proguard.config property as described in that file.
+#
+# Add project specific ProGuard rules here.
+# By default, the flags in this file are appended to flags specified
+# in ${sdk.dir}/tools/proguard/proguard-android.txt
+# You can edit the include path and order by changing the ProGuard
+# include property in project.properties.
+#
+# For more details, see
+#   http://developer.android.com/guide/developing/tools/proguard.html
+
+# Add any project specific keep options here:
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+#   public *;
+#}
+-dontwarn android.support.wearable.view.DelayedConfirmationView
+-dontwarn android.support.wearable.view.CircledImageView
diff --git a/samples/wearable/Quiz/Application/src/main/AndroidManifest.xml b/samples/wearable/Quiz/Application/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..fff21d0
--- /dev/null
+++ b/samples/wearable/Quiz/Application/src/main/AndroidManifest.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+        package="com.example.android.wearable.quiz" >
+
+    <uses-sdk android:minSdkVersion="18" android:targetSdkVersion="19"/>
+
+    <application
+            android:allowBackup="true"
+            android:icon="@drawable/ic_launcher"
+            android:label="@string/app_name"
+            android:theme="@style/AppTheme">
+        <meta-data android:name="com.google.android.gms.version"
+                   android:value="@integer/google_play_services_version" />
+
+        <activity
+                android:name="com.example.android.wearable.quiz.MainActivity"
+                android:label="@string/app_name"
+                android:windowSoftInputMode="stateHidden"
+                android:configChanges="keyboardHidden|orientation|screenSize"  >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
+
+    </application>
+
+</manifest>
diff --git a/samples/wearable/Quiz/Application/src/main/assets/Quiz.json b/samples/wearable/Quiz/Application/src/main/assets/Quiz.json
new file mode 100644
index 0000000..db2448d
--- /dev/null
+++ b/samples/wearable/Quiz/Application/src/main/assets/Quiz.json
@@ -0,0 +1,124 @@
+{
+"questions": [
+{
+"question": "What is the scientific name of a butterfly?",
+"answers": [
+"Apis",
+"Coleoptera",
+"Formicidae",
+"Rhopalocera"
+],
+"correctIndex": 3
+},
+{
+"question": "How hot is the surface of the sun?",
+"answers": [
+"1,233 K",
+"5,778 K",
+"12,130 K",
+"101,300 K"
+],
+"correctIndex": 1
+},
+{
+"question": "Who are the actors in The Internship?",
+"answers": [
+"Ben Stiller, Jonah Hill",
+"Courteney Cox, Matt LeBlanc",
+"Kaley Cuoco, Jim Parsons",
+"Vince Vaughn, Owen Wilson"
+],
+"correctIndex": 3
+},
+{
+"question": "What is the capital of Spain?",
+"answers": [
+"Berlin",
+"Buenos Aires",
+"Madrid",
+"San Juan"
+],
+"correctIndex": 2
+},
+{
+"question": "What are the school colors of the University of Texas at Austin?",
+"answers": [
+"Black, Red",
+"Blue, Orange",
+"White, Burnt Orange",
+"White, Old gold, Gold"
+],
+"correctIndex": 2
+},
+{
+"question": "What is 70 degrees Fahrenheit in Celsius?",
+"answers": [
+"18.8889",
+"20",
+"21.1111",
+"158"
+],
+"correctIndex": 2
+},
+{
+"question": "When was Mahatma Gandhi born?",
+"answers": [
+"October 2, 1869",
+"December 15, 1872",
+"July 18, 1918",
+"January 15, 1929"
+],
+"correctIndex": 0
+},
+{
+"question": "How far is the moon from Earth?",
+"answers": [
+"7,918 miles (12,742 km)",
+"86,881 miles (139,822 km)",
+"238,400 miles (384,400 km)",
+"35,980,000 miles (57,910,000 km)"
+],
+"correctIndex": 2
+},
+{
+"question": "What is 65 times 52?",
+"answers": [
+"117",
+"3120",
+"3380",
+"3520"
+],
+"correctIndex": 2
+},
+{
+"question": "How tall is Mount Everest?",
+"answers": [
+"6,683 ft (2,037 m)",
+"7,918 ft (2,413 m)",
+"19,341 ft (5,895 m)",
+"29,029 ft (8,847 m)"
+],
+"correctIndex": 3
+},
+{
+"question": "When did The Avengers come out?",
+"answers": [
+"May 2, 2008",
+"May 4, 2012",
+"May 3, 2013",
+"April 4, 2014"
+],
+"correctIndex": 1
+},
+{
+"question": "What is 48,879 in hexidecimal?",
+"answers": [
+"0x18C1",
+"0xBEEF",
+"0xDEAD",
+"0x12D591"
+],
+"correctIndex": 1
+}
+]
+}
\ No newline at end of file
diff --git a/samples/wearable/Quiz/Application/src/main/java/com/example/android/wearable/quiz/Constants.java b/samples/wearable/Quiz/Application/src/main/java/com/example/android/wearable/quiz/Constants.java
new file mode 100644
index 0000000..832ddac
--- /dev/null
+++ b/samples/wearable/Quiz/Application/src/main/java/com/example/android/wearable/quiz/Constants.java
@@ -0,0 +1,23 @@
+package com.example.android.wearable.quiz;
+
+/** Constants used in the companion app. */
+public final class Constants {
+    private Constants() {
+    }
+
+    public static final String ANSWERS = "answers";
+    public static final String CHOSEN_ANSWER_CORRECT = "chosen_answer_correct";
+    public static final String CORRECT_ANSWER_INDEX = "correct_answer_index";
+    public static final String QUESTION = "question";
+    public static final String QUESTION_INDEX = "question_index";
+    public static final String QUESTION_WAS_ANSWERED = "question_was_answered";
+    public static final String QUESTION_WAS_DELETED = "question_was_deleted";
+
+    public static final String NUM_CORRECT = "num_correct";
+    public static final String NUM_INCORRECT = "num_incorrect";
+    public static final String NUM_SKIPPED = "num_skipped";
+
+    public static final String QUIZ_ENDED_PATH = "/quiz_ended";
+    public static final String QUIZ_EXITED_PATH = "/quiz_exited";
+    public static final String RESET_QUIZ_PATH = "/reset_quiz";
+}
diff --git a/samples/wearable/Quiz/Application/src/main/java/com/example/android/wearable/quiz/JsonUtils.java b/samples/wearable/Quiz/Application/src/main/java/com/example/android/wearable/quiz/JsonUtils.java
new file mode 100644
index 0000000..21ac24a
--- /dev/null
+++ b/samples/wearable/Quiz/Application/src/main/java/com/example/android/wearable/quiz/JsonUtils.java
@@ -0,0 +1,31 @@
+package com.example.android.wearable.quiz;
+
+import android.content.Context;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+final class JsonUtils {
+    public static final String JSON_FIELD_QUESTIONS = "questions";
+    public static final String JSON_FIELD_QUESTION = "question";
+    public static final String JSON_FIELD_ANSWERS = "answers";
+    public static final String JSON_FIELD_CORRECT_INDEX = "correctIndex";
+    public static final int NUM_ANSWER_CHOICES = 4;
+
+    private JsonUtils() {
+    }
+
+    public static JSONObject loadJsonFile(Context context, String fileName) throws IOException,
+            JSONException {
+        InputStream is = context.getAssets().open(fileName);
+        int size = is.available();
+        byte[] buffer = new byte[size];
+        is.read(buffer);
+        is.close();
+        String jsonString = new String(buffer);
+        return new JSONObject(jsonString);
+    }
+}
diff --git a/samples/wearable/Quiz/Application/src/main/java/com/example/android/wearable/quiz/MainActivity.java b/samples/wearable/Quiz/Application/src/main/java/com/example/android/wearable/quiz/MainActivity.java
new file mode 100644
index 0000000..94b66e9
--- /dev/null
+++ b/samples/wearable/Quiz/Application/src/main/java/com/example/android/wearable/quiz/MainActivity.java
@@ -0,0 +1,569 @@
+package com.example.android.wearable.quiz;
+
+import static com.example.android.wearable.quiz.Constants.ANSWERS;
+import static com.example.android.wearable.quiz.Constants.CHOSEN_ANSWER_CORRECT;
+import static com.example.android.wearable.quiz.Constants.CORRECT_ANSWER_INDEX;
+import static com.example.android.wearable.quiz.Constants.NUM_CORRECT;
+import static com.example.android.wearable.quiz.Constants.NUM_INCORRECT;
+import static com.example.android.wearable.quiz.Constants.NUM_SKIPPED;
+import static com.example.android.wearable.quiz.Constants.QUESTION;
+import static com.example.android.wearable.quiz.Constants.QUESTION_INDEX;
+import static com.example.android.wearable.quiz.Constants.QUESTION_WAS_ANSWERED;
+import static com.example.android.wearable.quiz.Constants.QUESTION_WAS_DELETED;
+import static com.example.android.wearable.quiz.Constants.QUIZ_ENDED_PATH;
+import static com.example.android.wearable.quiz.Constants.QUIZ_EXITED_PATH;
+import static com.example.android.wearable.quiz.Constants.RESET_QUIZ_PATH;
+
+import android.app.Activity;
+import android.graphics.Color;
+import android.net.Uri;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.LinearLayout;
+import android.widget.RadioGroup;
+import android.widget.TextView;
+
+import com.google.android.gms.common.ConnectionResult;
+import com.google.android.gms.common.api.GoogleApiClient;
+import com.google.android.gms.common.api.GoogleApiClient.ConnectionCallbacks;
+import com.google.android.gms.common.api.ResultCallback;
+import com.google.android.gms.common.data.FreezableUtils;
+import com.google.android.gms.wearable.DataApi;
+import com.google.android.gms.wearable.DataEvent;
+import com.google.android.gms.wearable.DataEventBuffer;
+import com.google.android.gms.wearable.DataItem;
+import com.google.android.gms.wearable.DataItemBuffer;
+import com.google.android.gms.wearable.DataMap;
+import com.google.android.gms.wearable.DataMapItem;
+import com.google.android.gms.wearable.MessageApi;
+import com.google.android.gms.wearable.MessageEvent;
+import com.google.android.gms.wearable.Node;
+import com.google.android.gms.wearable.NodeApi;
+import com.google.android.gms.wearable.PutDataMapRequest;
+import com.google.android.gms.wearable.PutDataRequest;
+import com.google.android.gms.wearable.Wearable;
+
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.PriorityQueue;
+
+/**
+ * Allows the user to create questions, which will be put as notifications on the watch's stream.
+ * The status of questions will be updated on the phone when the user answers them.
+ */
+public class MainActivity extends Activity implements DataApi.DataListener,
+        MessageApi.MessageListener, ConnectionCallbacks,
+        GoogleApiClient.OnConnectionFailedListener {
+
+    private static final String TAG = "ExampleQuizApp";
+    private static final String QUIZ_JSON_FILE = "Quiz.json";
+
+    // Various UI components.
+    private EditText questionEditText;
+    private EditText choiceAEditText;
+    private EditText choiceBEditText;
+    private EditText choiceCEditText;
+    private EditText choiceDEditText;
+    private RadioGroup choicesRadioGroup;
+    private TextView quizStatus;
+    private LinearLayout quizButtons;
+    private LinearLayout questionsContainer;
+    private Button readQuizFromFileButton;
+    private Button resetQuizButton;
+
+    private GoogleApiClient mGoogleApiClient;
+    private PriorityQueue<Question> mFutureQuestions;
+    private int mQuestionIndex = 0;
+    private boolean mHasQuestionBeenAsked = false;
+
+    // Data to display in end report.
+    private int mNumCorrect = 0;
+    private int mNumIncorrect = 0;
+    private int mNumSkipped = 0;
+
+    private static final Map<Integer, Integer> radioIdToIndex;
+
+    static {
+        Map<Integer, Integer> temp = new HashMap<Integer, Integer>(4);
+        temp.put(R.id.choice_a_radio, 0);
+        temp.put(R.id.choice_b_radio, 1);
+        temp.put(R.id.choice_c_radio, 2);
+        temp.put(R.id.choice_d_radio, 3);
+        radioIdToIndex = Collections.unmodifiableMap(temp);
+    }
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_main);
+
+        mGoogleApiClient = new GoogleApiClient.Builder(this)
+                .addApi(Wearable.API)
+                .addConnectionCallbacks(this)
+                .addOnConnectionFailedListener(this)
+                .build();
+        mFutureQuestions = new PriorityQueue<Question>(10);
+
+        // Find UI components to be used later.
+        questionEditText = (EditText) findViewById(R.id.question_text);
+        choiceAEditText = (EditText) findViewById(R.id.choice_a_text);
+        choiceBEditText = (EditText) findViewById(R.id.choice_b_text);
+        choiceCEditText = (EditText) findViewById(R.id.choice_c_text);
+        choiceDEditText = (EditText) findViewById(R.id.choice_d_text);
+        choicesRadioGroup = (RadioGroup) findViewById(R.id.choices_radio_group);
+        quizStatus = (TextView) findViewById(R.id.quiz_status);
+        quizButtons = (LinearLayout) findViewById(R.id.quiz_buttons);
+        questionsContainer = (LinearLayout) findViewById(R.id.questions_container);
+        readQuizFromFileButton = (Button) findViewById(R.id.read_quiz_from_file_button);
+        resetQuizButton = (Button) findViewById(R.id.reset_quiz_button);
+    }
+
+    @Override
+    protected void onStart() {
+        super.onStart();
+        if (!mGoogleApiClient.isConnected()) {
+            mGoogleApiClient.connect();
+        }
+    }
+
+    @Override
+    protected void onStop() {
+        Wearable.DataApi.removeListener(mGoogleApiClient, this);
+        Wearable.MessageApi.removeListener(mGoogleApiClient, this);
+
+        // Tell the wearable to end the quiz (counting unanswered questions as skipped), and then
+        // disconnect mGoogleApiClient.
+        DataMap dataMap = new DataMap();
+        dataMap.putInt(NUM_CORRECT, mNumCorrect);
+        dataMap.putInt(NUM_INCORRECT, mNumIncorrect);
+        if (mHasQuestionBeenAsked) {
+            mNumSkipped += 1;
+        }
+        mNumSkipped += mFutureQuestions.size();
+        dataMap.putInt(NUM_SKIPPED, mNumSkipped);
+        if (mNumCorrect + mNumIncorrect + mNumSkipped > 0) {
+            sendMessageToWearable(QUIZ_EXITED_PATH, dataMap.toByteArray());
+        }
+
+        clearQuizStatus();
+        super.onStop();
+    }
+
+    @Override
+    public void onConnected(Bundle connectionHint) {
+        Wearable.DataApi.addListener(mGoogleApiClient, this);
+        Wearable.MessageApi.addListener(mGoogleApiClient, this);
+    }
+
+    @Override
+    public void onConnectionSuspended(int cause) {
+        // Ignore
+    }
+
+    @Override
+    public void onConnectionFailed(ConnectionResult result) {
+        Log.e(TAG, "Failed to connect to Google Play Services");
+    }
+
+    @Override
+    public void onMessageReceived(MessageEvent messageEvent) {
+        if (messageEvent.getPath().equals(RESET_QUIZ_PATH)) {
+            runOnUiThread(new Runnable() {
+                @Override
+                public void run() {
+                    resetQuiz(null);
+                }
+            });
+        }
+    }
+
+    /**
+     * Used to ensure questions with smaller indexes come before questions with larger
+     * indexes. For example, question0 should come before question1.
+     */
+    private static class Question implements Comparable<Question> {
+        private String question;
+        private int questionIndex;
+        private String[] answers;
+        private int correctAnswerIndex;
+
+        public Question(String question, int questionIndex, String[] answers,
+                int correctAnswerIndex) {
+            this.question = question;
+            this.questionIndex = questionIndex;
+            this.answers = answers;
+            this.correctAnswerIndex = correctAnswerIndex;
+        }
+
+        public static Question fromJson(JSONObject questionObject, int questionIndex)
+                throws JSONException {
+            String question = questionObject.getString(JsonUtils.JSON_FIELD_QUESTION);
+            JSONArray answersJsonArray = questionObject.getJSONArray(JsonUtils.JSON_FIELD_ANSWERS);
+            String[] answers = new String[JsonUtils.NUM_ANSWER_CHOICES];
+            for (int j = 0; j < answersJsonArray.length(); j++) {
+                answers[j] = answersJsonArray.getString(j);
+            }
+            int correctIndex = questionObject.getInt(JsonUtils.JSON_FIELD_CORRECT_INDEX);
+            return new Question(question, questionIndex, answers, correctIndex);
+        }
+
+        @Override
+        public int compareTo(Question that) {
+            return this.questionIndex - that.questionIndex;
+        }
+
+        public PutDataRequest toPutDataRequest() {
+            PutDataMapRequest request = PutDataMapRequest.create("/question/" + questionIndex);
+            DataMap dataMap = request.getDataMap();
+            dataMap.putString(QUESTION, question);
+            dataMap.putInt(QUESTION_INDEX, questionIndex);
+            dataMap.putStringArray(ANSWERS, answers);
+            dataMap.putInt(CORRECT_ANSWER_INDEX, correctAnswerIndex);
+            return request.asPutDataRequest();
+        }
+    }
+
+    /**
+     * Create a quiz, as defined in Quiz.json, when the user clicks on "Read quiz from file."
+     * @throws IOException
+     */
+    public void readQuizFromFile(View view) throws IOException, JSONException {
+        clearQuizStatus();
+        JSONObject jsonObject = JsonUtils.loadJsonFile(this, QUIZ_JSON_FILE);
+        JSONArray jsonArray = jsonObject.getJSONArray(JsonUtils.JSON_FIELD_QUESTIONS);
+        for (int i = 0; i < jsonArray.length(); i++) {
+            JSONObject questionObject = jsonArray.getJSONObject(i);
+            Question question = Question.fromJson(questionObject, mQuestionIndex++);
+            addQuestionDataItem(question);
+            setNewQuestionStatus(question.question);
+        }
+    }
+
+    /**
+     * Adds a question (with answer choices) when user clicks on "Add Question."
+     */
+    public void addQuestion(View view) {
+        // Retrieve the question and answers supplied by the user.
+        String question = questionEditText.getText().toString();
+        String[] answers = new String[4];
+        answers[0] = choiceAEditText.getText().toString();
+        answers[1] = choiceBEditText.getText().toString();
+        answers[2] = choiceCEditText.getText().toString();
+        answers[3] = choiceDEditText.getText().toString();
+        int correctAnswerIndex = radioIdToIndex.get(choicesRadioGroup.getCheckedRadioButtonId());
+
+        addQuestionDataItem(new Question(question, mQuestionIndex++, answers, correctAnswerIndex));
+        setNewQuestionStatus(question);
+
+        // Clear the edit boxes to let the user input a new question.
+        questionEditText.setText("");
+        choiceAEditText.setText("");
+        choiceBEditText.setText("");
+        choiceCEditText.setText("");
+        choiceDEditText.setText("");
+    }
+
+    /**
+     * Adds the questions (and answers) to the wearable's stream by creating a Data Item
+     * that will be received on the wearable, which will create corresponding notifications.
+     */
+    private void addQuestionDataItem(Question question) {
+        if (!mHasQuestionBeenAsked) {
+            // Ask the question now.
+            Wearable.DataApi.putDataItem(mGoogleApiClient, question.toPutDataRequest());
+            setHasQuestionBeenAsked(true);
+        } else {
+            // Enqueue the question to be asked in the future.
+            mFutureQuestions.add(question);
+        }
+    }
+
+    /**
+     * Sets the question's status to be the default "unanswered." This will be updated when the
+     * user chooses an answer for the question on the wearable.
+     */
+    private void setNewQuestionStatus(String question) {
+        quizStatus.setVisibility(View.VISIBLE);
+        quizButtons.setVisibility(View.VISIBLE);
+        LayoutInflater inflater = LayoutInflater.from(this);
+        View questionStatusElem = inflater.inflate(R.layout.question_status_element, null, false);
+        ((TextView) questionStatusElem.findViewById(R.id.question)).setText(question);
+        ((TextView) questionStatusElem.findViewById(R.id.status))
+                .setText(R.string.question_unanswered);
+        questionsContainer.addView(questionStatusElem);
+    }
+
+    @Override
+    public void onDataChanged(DataEventBuffer dataEvents) {
+        final List<DataEvent> events = FreezableUtils.freezeIterable(dataEvents);
+        dataEvents.close();
+        runOnUiThread(new Runnable() {
+            @Override
+            public void run() {
+                for (DataEvent event : events) {
+                    if (event.getType() == DataEvent.TYPE_CHANGED) {
+                        DataMap dataMap = DataMapItem.fromDataItem(event.getDataItem())
+                                .getDataMap();
+                        boolean questionWasAnswered = dataMap.getBoolean(QUESTION_WAS_ANSWERED);
+                        boolean questionWasDeleted = dataMap.getBoolean(QUESTION_WAS_DELETED);
+                        if (questionWasAnswered) {
+                            // Update the answered question's status.
+                            int questionIndex = dataMap.getInt(QUESTION_INDEX);
+                            boolean questionCorrect = dataMap.getBoolean(CHOSEN_ANSWER_CORRECT);
+                            updateQuestionStatus(questionIndex, questionCorrect);
+                            askNextQuestionIfExists();
+                        } else if (questionWasDeleted) {
+                            // Update the deleted question's status by marking it as left blank.
+                            int questionIndex = dataMap.getInt(QUESTION_INDEX);
+                            markQuestionLeftBlank(questionIndex);
+                            askNextQuestionIfExists();
+                        }
+                    }
+                }
+            }
+        });
+    }
+
+    /**
+     * Updates the given question based on whether it was answered correctly or not.
+     * This involves changing the question's text color and changing the status text for it.
+     */
+    public void updateQuestionStatus(int questionIndex, boolean questionCorrect) {
+        LinearLayout questionStatusElement = (LinearLayout)
+                questionsContainer.getChildAt(questionIndex);
+        TextView questionText = (TextView) questionStatusElement.findViewById(R.id.question);
+        TextView questionStatus = (TextView) questionStatusElement.findViewById(R.id.status);
+        if (questionCorrect) {
+            questionText.setTextColor(Color.GREEN);
+            questionStatus.setText(R.string.question_correct);
+            mNumCorrect++;
+        } else {
+            questionText.setTextColor(Color.RED);
+            questionStatus.setText(R.string.question_incorrect);
+            mNumIncorrect++;
+        }
+    }
+
+    /**
+     * Marks a question as "left blank" when its corresponding question notification is deleted.
+     */
+    private void markQuestionLeftBlank(int index) {
+        LinearLayout questionStatusElement = (LinearLayout) questionsContainer.getChildAt(index);
+        if (questionStatusElement != null) {
+            TextView questionText = (TextView) questionStatusElement.findViewById(R.id.question);
+            TextView questionStatus = (TextView) questionStatusElement.findViewById(R.id.status);
+            if (questionStatus.getText().equals(getString(R.string.question_unanswered))) {
+                questionText.setTextColor(Color.YELLOW);
+                questionStatus.setText(R.string.question_left_blank);
+                mNumSkipped++;
+            }
+        }
+    }
+
+    /**
+     * Asks the next enqueued question if it exists, otherwise ends the quiz.
+     */
+    private void askNextQuestionIfExists() {
+        if (mFutureQuestions.isEmpty()) {
+            // Quiz has been completed - send message to wearable to display end report.
+            DataMap dataMap = new DataMap();
+            dataMap.putInt(NUM_CORRECT, mNumCorrect);
+            dataMap.putInt(NUM_INCORRECT, mNumIncorrect);
+            dataMap.putInt(NUM_SKIPPED, mNumSkipped);
+            sendMessageToWearable(QUIZ_ENDED_PATH, dataMap.toByteArray());
+            setHasQuestionBeenAsked(false);
+        } else {
+            // Ask next question by putting a DataItem that will be received on the wearable.
+            Wearable.DataApi.putDataItem(mGoogleApiClient,
+                    mFutureQuestions.remove().toPutDataRequest());
+            setHasQuestionBeenAsked(true);
+        }
+    }
+
+    private void sendMessageToWearable(final String path, final byte[] data) {
+        Wearable.NodeApi.getConnectedNodes(mGoogleApiClient).setResultCallback(
+                new ResultCallback<NodeApi.GetConnectedNodesResult>() {
+            @Override
+            public void onResult(NodeApi.GetConnectedNodesResult nodes) {
+                for (Node node : nodes.getNodes()) {
+                    Wearable.MessageApi.sendMessage(mGoogleApiClient, node.getId(), path, data);
+                }
+
+                if (path.equals(QUIZ_EXITED_PATH) && mGoogleApiClient.isConnected()) {
+                    mGoogleApiClient.disconnect();
+                }
+            }
+        });
+    }
+
+    /**
+     * Resets the current quiz when Reset Quiz is pressed.
+     */
+    public void resetQuiz(View view) {
+        // Reset quiz status in phone layout.
+        for(int i = 0; i < questionsContainer.getChildCount(); i++) {
+            LinearLayout questionStatusElement = (LinearLayout) questionsContainer.getChildAt(i);
+            TextView questionText = (TextView) questionStatusElement.findViewById(R.id.question);
+            TextView questionStatus = (TextView) questionStatusElement.findViewById(R.id.status);
+            questionText.setTextColor(Color.WHITE);
+            questionStatus.setText(R.string.question_unanswered);
+        }
+        // Reset data items and notifications on wearable.
+        if (mGoogleApiClient.isConnected()) {
+            Wearable.DataApi.getDataItems(mGoogleApiClient)
+                    .setResultCallback(new ResultCallback<DataItemBuffer>() {
+                        @Override
+                        public void onResult(DataItemBuffer result) {
+                            if (result.getStatus().isSuccess()) {
+                                List<DataItem> dataItemList = FreezableUtils.freezeIterable(result);
+                                result.close();
+                                resetDataItems(dataItemList);
+                            } else {
+                                if (Log.isLoggable(TAG, Log.DEBUG)) {
+                                    Log.d(TAG, "Reset quiz: failed to get Data Items to reset");
+                                }
+                            }
+                            result.close();
+                        }
+                    });
+        } else {
+            Log.e(TAG, "Failed to reset data items because client is disconnected from "
+                    + "Google Play Services");
+        }
+        setHasQuestionBeenAsked(false);
+        mNumCorrect = 0;
+        mNumIncorrect = 0;
+        mNumSkipped = 0;
+    }
+
+    private void resetDataItems(List<DataItem> dataItemList) {
+        if (mGoogleApiClient.isConnected()) {
+            for (final DataItem dataItem : dataItemList) {
+                final Uri dataItemUri = dataItem.getUri();
+                Wearable.DataApi.getDataItem(mGoogleApiClient, dataItemUri)
+                        .setResultCallback(new ResetDataItemCallback());
+            }
+        } else {
+            Log.e(TAG, "Failed to reset data items because client is disconnected from "
+                    + "Google Play Services");
+        }
+    }
+
+    /**
+     * Callback that marks a DataItem, which represents a question, as unanswered and not deleted.
+     */
+    private class ResetDataItemCallback implements ResultCallback<DataApi.DataItemResult> {
+        @Override
+        public void onResult(DataApi.DataItemResult dataItemResult) {
+            if (dataItemResult.getStatus().isSuccess()) {
+                PutDataMapRequest request = PutDataMapRequest.createFromDataMapItem(
+                                DataMapItem.fromDataItem(dataItemResult.getDataItem()));
+                DataMap dataMap = request.getDataMap();
+                dataMap.putBoolean(QUESTION_WAS_ANSWERED, false);
+                dataMap.putBoolean(QUESTION_WAS_DELETED, false);
+                if (!mHasQuestionBeenAsked && dataMap.getInt(QUESTION_INDEX) == 0) {
+                    // Ask the first question now.
+                    Wearable.DataApi.putDataItem(mGoogleApiClient, request.asPutDataRequest());
+                    setHasQuestionBeenAsked(true);
+                } else {
+                    // Enqueue future questions.
+                    mFutureQuestions.add(new Question(dataMap.getString(QUESTION),
+                            dataMap.getInt(QUESTION_INDEX), dataMap.getStringArray(ANSWERS),
+                            dataMap.getInt(CORRECT_ANSWER_INDEX)));
+                }
+            } else {
+                Log.e(TAG, "Failed to reset data item " + dataItemResult.getDataItem().getUri());
+            }
+        }
+    }
+
+    /**
+     * Clears the current quiz when user clicks on "New Quiz."
+     * On this end, this involves clearing the quiz status layout and deleting all DataItems. The
+     * wearable will then remove any outstanding question notifications upon receiving this change.
+     */
+    public void newQuiz(View view) {
+        clearQuizStatus();
+        if (mGoogleApiClient.isConnected()) {
+            Wearable.DataApi.getDataItems(mGoogleApiClient)
+                    .setResultCallback(new ResultCallback<DataItemBuffer>() {
+                        @Override
+                        public void onResult(DataItemBuffer result) {
+                            if (result.getStatus().isSuccess()) {
+                                List<Uri> dataItemUriList = new ArrayList<Uri>();
+                                for (final DataItem dataItem : result) {
+                                    dataItemUriList.add(dataItem.getUri());
+                                }
+                                result.close();
+                                deleteDataItems(dataItemUriList);
+                            } else {
+                                if (Log.isLoggable(TAG, Log.DEBUG)) {
+                                    Log.d(TAG, "Clear quiz: failed to get Data Items for deletion");
+                                }
+                            }
+                            result.close();
+                        }
+                    });
+        } else {
+            Log.e(TAG, "Failed to delete data items because client is disconnected from "
+                    + "Google Play Services");
+        }
+    }
+
+    /**
+     * Removes quiz status views (i.e. the views describing the status of each question).
+     */
+    private void clearQuizStatus() {
+        questionsContainer.removeAllViews();
+        quizStatus.setVisibility(View.INVISIBLE);
+        quizButtons.setVisibility(View.INVISIBLE);
+        setHasQuestionBeenAsked(false);
+        mFutureQuestions.clear();
+        mQuestionIndex = 0;
+        mNumCorrect = 0;
+        mNumIncorrect = 0;
+        mNumSkipped = 0;
+    }
+
+    private void deleteDataItems(List<Uri> dataItemUriList) {
+        if (mGoogleApiClient.isConnected()) {
+            for (final Uri dataItemUri : dataItemUriList) {
+                Wearable.DataApi.deleteDataItems(mGoogleApiClient, dataItemUri)
+                        .setResultCallback(new ResultCallback<DataApi.DeleteDataItemsResult>() {
+                            @Override
+                            public void onResult(DataApi.DeleteDataItemsResult deleteResult) {
+                                if (Log.isLoggable(TAG, Log.DEBUG)) {
+                                    if (deleteResult.getStatus().isSuccess()) {
+                                        Log.d(TAG, "Successfully deleted data item " + dataItemUri);
+                                    } else {
+                                        Log.d(TAG, "Failed to delete data item " + dataItemUri);
+                                    }
+                                }
+                            }
+                        });
+            }
+        } else {
+            Log.e(TAG, "Failed to delete data items because client is disconnected from "
+                    + "Google Play Services");
+        }
+    }
+
+    private void setHasQuestionBeenAsked(boolean b) {
+        mHasQuestionBeenAsked = b;
+        // Only let user click on Reset or Read from file if they have answered all the questions.
+        readQuizFromFileButton.setEnabled(!mHasQuestionBeenAsked);
+        resetQuizButton.setEnabled(!mHasQuestionBeenAsked);
+    }
+}
diff --git a/samples/wearable/Quiz/Application/src/main/res/drawable-hdpi/ic_choice_a.png b/samples/wearable/Quiz/Application/src/main/res/drawable-hdpi/ic_choice_a.png
new file mode 100644
index 0000000..de18ce1
--- /dev/null
+++ b/samples/wearable/Quiz/Application/src/main/res/drawable-hdpi/ic_choice_a.png
Binary files differ
diff --git a/samples/wearable/Quiz/Application/src/main/res/drawable-hdpi/ic_choice_b.png b/samples/wearable/Quiz/Application/src/main/res/drawable-hdpi/ic_choice_b.png
new file mode 100644
index 0000000..3cdfe97
--- /dev/null
+++ b/samples/wearable/Quiz/Application/src/main/res/drawable-hdpi/ic_choice_b.png
Binary files differ
diff --git a/samples/wearable/Quiz/Application/src/main/res/drawable-hdpi/ic_choice_c.png b/samples/wearable/Quiz/Application/src/main/res/drawable-hdpi/ic_choice_c.png
new file mode 100644
index 0000000..f0ed2ef
--- /dev/null
+++ b/samples/wearable/Quiz/Application/src/main/res/drawable-hdpi/ic_choice_c.png
Binary files differ
diff --git a/samples/wearable/Quiz/Application/src/main/res/drawable-hdpi/ic_choice_d.png b/samples/wearable/Quiz/Application/src/main/res/drawable-hdpi/ic_choice_d.png
new file mode 100644
index 0000000..c158d29
--- /dev/null
+++ b/samples/wearable/Quiz/Application/src/main/res/drawable-hdpi/ic_choice_d.png
Binary files differ
diff --git a/samples/wearable/Quiz/Application/src/main/res/drawable-hdpi/ic_launcher.png b/samples/wearable/Quiz/Application/src/main/res/drawable-hdpi/ic_launcher.png
new file mode 100755
index 0000000..91a8cff
--- /dev/null
+++ b/samples/wearable/Quiz/Application/src/main/res/drawable-hdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/Quiz/Application/src/main/res/drawable-hdpi/ic_unknown_choice.png b/samples/wearable/Quiz/Application/src/main/res/drawable-hdpi/ic_unknown_choice.png
new file mode 100644
index 0000000..9aed517
--- /dev/null
+++ b/samples/wearable/Quiz/Application/src/main/res/drawable-hdpi/ic_unknown_choice.png
Binary files differ
diff --git a/samples/wearable/Quiz/Application/src/main/res/drawable-mdpi/ic_choice_a.png b/samples/wearable/Quiz/Application/src/main/res/drawable-mdpi/ic_choice_a.png
new file mode 100644
index 0000000..5745936
--- /dev/null
+++ b/samples/wearable/Quiz/Application/src/main/res/drawable-mdpi/ic_choice_a.png
Binary files differ
diff --git a/samples/wearable/Quiz/Application/src/main/res/drawable-mdpi/ic_choice_b.png b/samples/wearable/Quiz/Application/src/main/res/drawable-mdpi/ic_choice_b.png
new file mode 100644
index 0000000..958b92e
--- /dev/null
+++ b/samples/wearable/Quiz/Application/src/main/res/drawable-mdpi/ic_choice_b.png
Binary files differ
diff --git a/samples/wearable/Quiz/Application/src/main/res/drawable-mdpi/ic_choice_c.png b/samples/wearable/Quiz/Application/src/main/res/drawable-mdpi/ic_choice_c.png
new file mode 100644
index 0000000..9fcfab7
--- /dev/null
+++ b/samples/wearable/Quiz/Application/src/main/res/drawable-mdpi/ic_choice_c.png
Binary files differ
diff --git a/samples/wearable/Quiz/Application/src/main/res/drawable-mdpi/ic_choice_d.png b/samples/wearable/Quiz/Application/src/main/res/drawable-mdpi/ic_choice_d.png
new file mode 100644
index 0000000..821cadb
--- /dev/null
+++ b/samples/wearable/Quiz/Application/src/main/res/drawable-mdpi/ic_choice_d.png
Binary files differ
diff --git a/samples/wearable/Quiz/Application/src/main/res/drawable-mdpi/ic_launcher.png b/samples/wearable/Quiz/Application/src/main/res/drawable-mdpi/ic_launcher.png
new file mode 100755
index 0000000..728ee6d
--- /dev/null
+++ b/samples/wearable/Quiz/Application/src/main/res/drawable-mdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/Quiz/Application/src/main/res/drawable-mdpi/ic_unknown_choice.png b/samples/wearable/Quiz/Application/src/main/res/drawable-mdpi/ic_unknown_choice.png
new file mode 100644
index 0000000..b8030ef
--- /dev/null
+++ b/samples/wearable/Quiz/Application/src/main/res/drawable-mdpi/ic_unknown_choice.png
Binary files differ
diff --git a/samples/wearable/Quiz/Application/src/main/res/drawable-xhdpi/ic_choice_a.png b/samples/wearable/Quiz/Application/src/main/res/drawable-xhdpi/ic_choice_a.png
new file mode 100644
index 0000000..3dba96f
--- /dev/null
+++ b/samples/wearable/Quiz/Application/src/main/res/drawable-xhdpi/ic_choice_a.png
Binary files differ
diff --git a/samples/wearable/Quiz/Application/src/main/res/drawable-xhdpi/ic_choice_b.png b/samples/wearable/Quiz/Application/src/main/res/drawable-xhdpi/ic_choice_b.png
new file mode 100644
index 0000000..9ca3c85
--- /dev/null
+++ b/samples/wearable/Quiz/Application/src/main/res/drawable-xhdpi/ic_choice_b.png
Binary files differ
diff --git a/samples/wearable/Quiz/Application/src/main/res/drawable-xhdpi/ic_choice_c.png b/samples/wearable/Quiz/Application/src/main/res/drawable-xhdpi/ic_choice_c.png
new file mode 100644
index 0000000..b84b3b7
--- /dev/null
+++ b/samples/wearable/Quiz/Application/src/main/res/drawable-xhdpi/ic_choice_c.png
Binary files differ
diff --git a/samples/wearable/Quiz/Application/src/main/res/drawable-xhdpi/ic_choice_d.png b/samples/wearable/Quiz/Application/src/main/res/drawable-xhdpi/ic_choice_d.png
new file mode 100644
index 0000000..185e91e
--- /dev/null
+++ b/samples/wearable/Quiz/Application/src/main/res/drawable-xhdpi/ic_choice_d.png
Binary files differ
diff --git a/samples/wearable/Quiz/Application/src/main/res/drawable-xhdpi/ic_launcher.png b/samples/wearable/Quiz/Application/src/main/res/drawable-xhdpi/ic_launcher.png
new file mode 100755
index 0000000..64a5854
--- /dev/null
+++ b/samples/wearable/Quiz/Application/src/main/res/drawable-xhdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/Quiz/Application/src/main/res/drawable-xxhdpi/ic_launcher.png b/samples/wearable/Quiz/Application/src/main/res/drawable-xxhdpi/ic_launcher.png
new file mode 100755
index 0000000..86a395b
--- /dev/null
+++ b/samples/wearable/Quiz/Application/src/main/res/drawable-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/Quiz/Application/src/main/res/drawable/selected_background.xml b/samples/wearable/Quiz/Application/src/main/res/drawable/selected_background.xml
new file mode 100644
index 0000000..351774a
--- /dev/null
+++ b/samples/wearable/Quiz/Application/src/main/res/drawable/selected_background.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <padding
+        android:top="4dp"
+        android:bottom="4dp"
+        android:left="4dp"
+        android:right="4dp"/>
+    <stroke
+        android:width="4dp"
+        android:color="@android:color/holo_blue_bright" />
+</shape>
\ No newline at end of file
diff --git a/samples/wearable/Quiz/Application/src/main/res/drawable/unselected_background.xml b/samples/wearable/Quiz/Application/src/main/res/drawable/unselected_background.xml
new file mode 100644
index 0000000..b9a43d1
--- /dev/null
+++ b/samples/wearable/Quiz/Application/src/main/res/drawable/unselected_background.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <padding
+        android:top="4dp"
+        android:bottom="4dp"
+        android:left="4dp"
+        android:right="4dp"/>
+    <stroke
+        android:width="4dp"
+        android:color="#ff000000" />
+</shape>
\ No newline at end of file
diff --git a/samples/wearable/Quiz/Application/src/main/res/layout/activity_main.xml b/samples/wearable/Quiz/Application/src/main/res/layout/activity_main.xml
new file mode 100644
index 0000000..ed684f1
--- /dev/null
+++ b/samples/wearable/Quiz/Application/src/main/res/layout/activity_main.xml
@@ -0,0 +1,152 @@
+<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+        xmlns:tools="http://schemas.android.com/tools"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:paddingBottom="@dimen/activity_vertical_margin"
+        android:paddingLeft="@dimen/activity_horizontal_margin"
+        android:paddingRight="@dimen/activity_horizontal_margin"
+        android:paddingTop="@dimen/activity_vertical_margin"
+        tools:context="com.example.android.support.wearable.quiz.MainActivity"
+        tools:ignore="MergeRootFrame">
+
+    <LinearLayout android:id="@+id/container"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="vertical">
+
+        <Button
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:id="@+id/read_quiz_from_file_button"
+            android:text="@string/read_from_file_button"
+            android:onClick="readQuizFromFile"
+            android:layout_gravity="center"/>
+
+        <LinearLayout
+            android:orientation="horizontal"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content">
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:textAppearance="?android:attr/textAppearanceLarge"
+                android:text="@string/edit_question"
+                android:id="@+id/textView2" />
+
+            <EditText
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:id="@+id/question_text" />
+        </LinearLayout>
+
+        <LinearLayout
+            android:orientation="horizontal"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content">
+
+            <RadioGroup
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:orientation="vertical"
+                android:id="@+id/choices_radio_group">
+                <RadioButton
+                    android:layout_width="wrap_content"
+                    android:layout_height="50dp"
+                    android:text="@string/edit_choice_a"
+                    android:id="@+id/choice_a_radio"
+                    android:checked="true" />
+                <RadioButton
+                    android:layout_width="wrap_content"
+                    android:layout_height="50dp"
+                    android:text="@string/edit_choice_b"
+                    android:id="@+id/choice_b_radio"
+                    android:checked="false" />
+                <RadioButton
+                        android:layout_width="wrap_content"
+                    android:layout_height="50dp"
+                        android:text="@string/edit_choice_c"
+                        android:id="@+id/choice_c_radio" />
+                <RadioButton
+                        android:layout_width="wrap_content"
+                    android:layout_height="50dp"
+                        android:text="@string/edit_choice_d"
+                        android:id="@+id/choice_d_radio" />
+            </RadioGroup>
+
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:orientation="vertical">
+                <EditText
+                    android:layout_width="match_parent"
+                    android:layout_height="50dp"
+                    android:id="@+id/choice_a_text" />
+                <EditText
+                    android:layout_width="match_parent"
+                    android:layout_height="50dp"
+                    android:id="@+id/choice_b_text" />
+                <EditText
+                    android:layout_width="match_parent"
+                    android:layout_height="50dp"
+                    android:id="@+id/choice_c_text" />
+                <EditText
+                    android:layout_width="match_parent"
+                    android:layout_height="50dp"
+                    android:id="@+id/choice_d_text" />
+              </LinearLayout>
+
+
+        </LinearLayout>
+
+        <Button android:id="@+id/add_question"
+            android:layout_height="wrap_content"
+            android:layout_width="wrap_content"
+            android:text="@string/add_question"
+            android:onClick="addQuestion"
+            android:layout_gravity="center">
+        </Button>
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:textAppearance="?android:attr/textAppearanceLarge"
+            android:text="@string/quiz_status"
+            android:id="@+id/quiz_status"
+            android:paddingTop="30dp"
+            android:paddingBottom="10dp"
+            android:visibility="invisible"/>
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:id="@+id/questions_container"
+            android:orientation="vertical"
+            android:paddingBottom="10dp">
+         </LinearLayout>
+
+        <LinearLayout
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:id="@+id/quiz_buttons"
+            android:layout_gravity="center"
+            android:visibility="invisible">
+            <Button android:id="@+id/reset_quiz_button"
+                android:layout_height="wrap_content"
+                android:layout_width="wrap_content"
+                android:text="@string/reset_quiz"
+                android:onClick="resetQuiz">
+            </Button>
+            <Button android:id="@+id/new_quiz_button"
+                android:layout_height="wrap_content"
+                android:layout_width="wrap_content"
+                android:text="@string/new_quiz"
+                android:onClick="newQuiz">
+            </Button>
+        </LinearLayout>
+
+
+    </LinearLayout>
+
+</ScrollView>
diff --git a/samples/wearable/Quiz/Application/src/main/res/layout/question_status_element.xml b/samples/wearable/Quiz/Application/src/main/res/layout/question_status_element.xml
new file mode 100644
index 0000000..3cf9ec2
--- /dev/null
+++ b/samples/wearable/Quiz/Application/src/main/res/layout/question_status_element.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="vertical" android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <TextView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:textAppearance="?android:attr/textAppearanceMedium"
+        android:text="@string/question_placeholder"
+        android:id="@+id/question" />
+
+    <TextView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:textAppearance="?android:attr/textAppearanceSmall"
+        android:text="@string/question_unanswered"
+        android:id="@+id/status" />
+</LinearLayout>
\ No newline at end of file
diff --git a/samples/wearable/Quiz/Application/src/main/res/values/dimens.xml b/samples/wearable/Quiz/Application/src/main/res/values/dimens.xml
new file mode 100644
index 0000000..8f4947f
--- /dev/null
+++ b/samples/wearable/Quiz/Application/src/main/res/values/dimens.xml
@@ -0,0 +1,13 @@
+<resources>
+    <!-- Default screen margins, per the Android Design guidelines. -->
+    <dimen name="activity_horizontal_margin">16dp</dimen>
+    <dimen name="activity_vertical_margin">16dp</dimen>
+
+    <dimen name="editor_text_size">12dp</dimen>
+    <dimen name="editor_item_padding_top">8dp</dimen>
+    <dimen name="editor_item_padding_bottom">8dp</dimen>
+    <dimen name="editor_spinner_caption_min_width">50dp</dimen>
+
+    <dimen name="image_picker_item_side">48dp</dimen>
+
+</resources>
diff --git a/samples/wearable/Quiz/Application/src/main/res/values/strings.xml b/samples/wearable/Quiz/Application/src/main/res/values/strings.xml
new file mode 100644
index 0000000..5d3a448
--- /dev/null
+++ b/samples/wearable/Quiz/Application/src/main/res/values/strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+
+    <string name="app_name">Quiz</string>
+
+    <string name="read_from_file_button">Read quiz from file</string>
+
+    <string name="edit_question">Question</string>
+    <string name="edit_choice_a">Choice A</string>
+    <string name="edit_choice_b">Choice B</string>
+    <string name="edit_choice_c">Choice C</string>
+    <string name="edit_choice_d">Choice D</string>
+    <string name="add_question">Add Question</string>
+
+    <string name="quiz_status">Quiz Status</string>
+    <string name="question_placeholder">Question</string>
+    <string name="question_unanswered">This question has not yet been answered.</string>
+    <string name="question_incorrect">This question has been answered incorrectly.</string>
+    <string name="question_correct">This question has been answered correctly!</string>
+    <string name="question_left_blank">This question was left blank.</string>
+
+    <string name="reset_quiz">Reset Quiz</string>
+    <string name="new_quiz">New Quiz</string>
+
+</resources>
diff --git a/samples/wearable/Quiz/Application/src/main/res/values/styles.xml b/samples/wearable/Quiz/Application/src/main/res/values/styles.xml
new file mode 100644
index 0000000..7247b39
--- /dev/null
+++ b/samples/wearable/Quiz/Application/src/main/res/values/styles.xml
@@ -0,0 +1,13 @@
+<resources>
+
+    <!-- Base application theme. -->
+    <style name="AppTheme" parent="android:Theme.Holo">
+        <!-- Customize your theme here. -->
+    </style>
+
+    <style name="bg_picker">
+        <item name="android:layout_marginLeft">16dp</item>
+        <item name="android:background">@drawable/unselected_background</item>
+    </style>
+
+</resources>
diff --git a/samples/wearable/Quiz/Wearable/build.gradle b/samples/wearable/Quiz/Wearable/build.gradle
new file mode 100644
index 0000000..35b2f1f
--- /dev/null
+++ b/samples/wearable/Quiz/Wearable/build.gradle
@@ -0,0 +1,26 @@
+apply plugin: 'android'
+
+android {
+    compileSdkVersion 20
+    buildToolsVersion '20'
+
+    defaultConfig {
+        minSdkVersion 20
+        targetSdkVersion 20
+        versionCode 1
+        versionName "1.0"
+    }
+
+    buildTypes {
+        release {
+            runProguard false
+            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
+        }
+    }
+}
+
+dependencies {
+    compile 'com.google.android.gms:play-services:5.0.+@aar'
+    compile "com.android.support:support-v13:20.0.+"
+    compile "com.google.android.support:wearable:1.0.+"
+}
diff --git a/samples/wearable/Quiz/Wearable/proguard-rules.txt b/samples/wearable/Quiz/Wearable/proguard-rules.txt
new file mode 100644
index 0000000..f2fe155
--- /dev/null
+++ b/samples/wearable/Quiz/Wearable/proguard-rules.txt
@@ -0,0 +1,20 @@
+# To enable ProGuard in your project, edit project.properties
+# to define the proguard.config property as described in that file.
+#
+# Add project specific ProGuard rules here.
+# By default, the flags in this file are appended to flags specified
+# in ${sdk.dir}/tools/proguard/proguard-android.txt
+# You can edit the include path and order by changing the ProGuard
+# include property in project.properties.
+#
+# For more details, see
+#   http://developer.android.com/guide/developing/tools/proguard.html
+
+# Add any project specific keep options here:
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+#   public *;
+#}
diff --git a/samples/wearable/Quiz/Wearable/src/main/AndroidManifest.xml b/samples/wearable/Quiz/Wearable/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..3427de5
--- /dev/null
+++ b/samples/wearable/Quiz/Wearable/src/main/AndroidManifest.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.example.android.wearable.quiz" >
+
+    <uses-sdk
+        android:minSdkVersion="20"
+        android:targetSdkVersion="20" />
+
+    <application
+        android:allowBackup="true"
+        android:icon="@drawable/ic_launcher"
+        android:label="@string/app_name"
+        android:theme="@android:style/Theme.DeviceDefault" >
+        <meta-data
+            android:name="com.google.android.gms.version"
+            android:value="@integer/google_play_services_version" />
+
+        <service android:name=".QuizListenerService" >
+            <intent-filter>
+                <action android:name="com.google.android.gms.wearable.BIND_LISTENER" />
+            </intent-filter>
+        </service>
+        <service android:name=".UpdateQuestionService" />
+        <service android:name=".DeleteQuestionService" />
+        <service android:name=".QuizReportActionService" />
+
+    </application>
+
+</manifest>
diff --git a/samples/wearable/Quiz/Wearable/src/main/java/com/example/android/wearable/quiz/Constants.java b/samples/wearable/Quiz/Wearable/src/main/java/com/example/android/wearable/quiz/Constants.java
new file mode 100644
index 0000000..2038817
--- /dev/null
+++ b/samples/wearable/Quiz/Wearable/src/main/java/com/example/android/wearable/quiz/Constants.java
@@ -0,0 +1,25 @@
+package com.example.android.wearable.quiz;
+
+/** Constants used in the wearable app. */
+public final class Constants {
+    private Constants() {
+    }
+
+    public static final String ANSWERS = "answers";
+    public static final String CHOSEN_ANSWER_CORRECT = "chosen_answer_correct";
+    public static final String CORRECT_ANSWER_INDEX = "correct_answer_index";
+    public static final String QUESTION = "question";
+    public static final String QUESTION_INDEX = "question_index";
+    public static final String QUESTION_WAS_ANSWERED = "question_was_answered";
+    public static final String QUESTION_WAS_DELETED = "question_was_deleted";
+
+    public static final String NUM_CORRECT = "num_correct";
+    public static final String NUM_INCORRECT = "num_incorrect";
+    public static final String NUM_SKIPPED = "num_skipped";
+
+    public static final String QUIZ_ENDED_PATH = "/quiz_ended";
+    public static final String QUIZ_EXITED_PATH = "/quiz_exited";
+    public static final String RESET_QUIZ_PATH = "/reset_quiz";
+
+    public static final int CONNECT_TIMEOUT_MS = 100;
+}
diff --git a/samples/wearable/Quiz/Wearable/src/main/java/com/example/android/wearable/quiz/DeleteQuestionService.java b/samples/wearable/Quiz/Wearable/src/main/java/com/example/android/wearable/quiz/DeleteQuestionService.java
new file mode 100644
index 0000000..6c5e09f
--- /dev/null
+++ b/samples/wearable/Quiz/Wearable/src/main/java/com/example/android/wearable/quiz/DeleteQuestionService.java
@@ -0,0 +1,78 @@
+package com.example.android.wearable.quiz;
+
+import android.app.IntentService;
+import android.content.Intent;
+import android.net.Uri;
+import android.os.Bundle;
+import android.util.Log;
+
+import com.google.android.gms.common.ConnectionResult;
+import com.google.android.gms.common.api.GoogleApiClient;
+import com.google.android.gms.wearable.DataApi;
+import com.google.android.gms.wearable.DataMap;
+import com.google.android.gms.wearable.DataMapItem;
+import com.google.android.gms.wearable.PutDataMapRequest;
+import com.google.android.gms.wearable.PutDataRequest;
+import com.google.android.gms.wearable.Wearable;
+
+import java.util.concurrent.TimeUnit;
+
+import static com.example.android.wearable.quiz.Constants.CONNECT_TIMEOUT_MS;
+import static com.example.android.wearable.quiz.Constants.QUESTION_WAS_DELETED;
+
+/**
+ * Used to update quiz status on the phone when user dismisses a question on the watch.
+ */
+public class DeleteQuestionService extends IntentService
+        implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener {
+
+    private static final String TAG = "DeleteQuestionReceiver";
+
+    private GoogleApiClient mGoogleApiClient;
+
+    public DeleteQuestionService() {
+        super(DeleteQuestionService.class.getSimpleName());
+    }
+
+    @Override
+    public void onCreate() {
+        super.onCreate();
+        mGoogleApiClient = new GoogleApiClient.Builder(this)
+                .addApi(Wearable.API)
+                .addConnectionCallbacks(this)
+                .addOnConnectionFailedListener(this)
+                .build();
+    }
+
+    @Override
+    public void onHandleIntent(Intent intent) {
+        mGoogleApiClient.blockingConnect(CONNECT_TIMEOUT_MS, TimeUnit.MILLISECONDS);
+        Uri dataItemUri = intent.getData();
+        if (!mGoogleApiClient.isConnected()) {
+            Log.e(TAG, "Failed to update data item " + dataItemUri
+                    + " because client is disconnected from Google Play Services");
+            return;
+        }
+        DataApi.DataItemResult dataItemResult = Wearable.DataApi.getDataItem(
+                mGoogleApiClient, dataItemUri).await();
+        PutDataMapRequest putDataMapRequest = PutDataMapRequest
+                .createFromDataMapItem(DataMapItem.fromDataItem(dataItemResult.getDataItem()));
+        DataMap dataMap = putDataMapRequest.getDataMap();
+        dataMap.putBoolean(QUESTION_WAS_DELETED, true);
+        PutDataRequest request = putDataMapRequest.asPutDataRequest();
+        Wearable.DataApi.putDataItem(mGoogleApiClient, request).await();
+        mGoogleApiClient.disconnect();
+    }
+
+    @Override
+    public void onConnected(Bundle bundle) {
+    }
+
+    @Override
+    public void onConnectionSuspended(int i) {
+    }
+
+    @Override
+    public void onConnectionFailed(ConnectionResult connectionResult) {
+    }
+}
diff --git a/samples/wearable/Quiz/Wearable/src/main/java/com/example/android/wearable/quiz/QuizListenerService.java b/samples/wearable/Quiz/Wearable/src/main/java/com/example/android/wearable/quiz/QuizListenerService.java
new file mode 100644
index 0000000..f8c5322
--- /dev/null
+++ b/samples/wearable/Quiz/Wearable/src/main/java/com/example/android/wearable/quiz/QuizListenerService.java
@@ -0,0 +1,203 @@
+package com.example.android.wearable.quiz;
+
+import static com.example.android.wearable.quiz.Constants.ANSWERS;
+import static com.example.android.wearable.quiz.Constants.CONNECT_TIMEOUT_MS;
+import static com.example.android.wearable.quiz.Constants.CORRECT_ANSWER_INDEX;
+import static com.example.android.wearable.quiz.Constants.NUM_CORRECT;
+import static com.example.android.wearable.quiz.Constants.NUM_INCORRECT;
+import static com.example.android.wearable.quiz.Constants.NUM_SKIPPED;
+import static com.example.android.wearable.quiz.Constants.QUESTION;
+import static com.example.android.wearable.quiz.Constants.QUESTION_INDEX;
+import static com.example.android.wearable.quiz.Constants.QUESTION_WAS_ANSWERED;
+import static com.example.android.wearable.quiz.Constants.QUESTION_WAS_DELETED;
+import static com.example.android.wearable.quiz.Constants.QUIZ_ENDED_PATH;
+import static com.example.android.wearable.quiz.Constants.QUIZ_EXITED_PATH;
+
+import android.app.Notification;
+import android.app.NotificationManager;
+import android.app.PendingIntent;
+import android.content.Intent;
+import android.net.Uri;
+import android.text.SpannableStringBuilder;
+import android.text.style.ForegroundColorSpan;
+import android.util.Log;
+
+import com.google.android.gms.common.ConnectionResult;
+import com.google.android.gms.common.api.GoogleApiClient;
+import com.google.android.gms.common.data.FreezableUtils;
+import com.google.android.gms.wearable.DataEvent;
+import com.google.android.gms.wearable.DataEventBuffer;
+import com.google.android.gms.wearable.DataItem;
+import com.google.android.gms.wearable.DataMap;
+import com.google.android.gms.wearable.DataMapItem;
+import com.google.android.gms.wearable.MessageEvent;
+import com.google.android.gms.wearable.Wearable;
+import com.google.android.gms.wearable.WearableListenerService;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Listens to changes in DataItems, which represent quiz questions.
+ * If a new question is created, this builds a new notification for it.
+ * Otherwise, if a question is deleted, this cancels the corresponding notification.
+ *
+ * When the quiz ends, this listener receives a message telling it to create an end-of-quiz report.
+ */
+public class QuizListenerService extends WearableListenerService {
+    private static final String TAG = "QuizSample";
+    private static final int QUIZ_REPORT_NOTIF_ID = -1; // Never used by question notifications.
+    private static final Map<Integer, Integer> questionNumToDrawableId;
+
+    static {
+        Map<Integer, Integer> temp = new HashMap<Integer, Integer>(4);
+        temp.put(0, R.drawable.ic_choice_a);
+        temp.put(1, R.drawable.ic_choice_b);
+        temp.put(2, R.drawable.ic_choice_c);
+        temp.put(3, R.drawable.ic_choice_d);
+        questionNumToDrawableId = Collections.unmodifiableMap(temp);
+    }
+
+    @Override
+    public void onDataChanged(DataEventBuffer dataEvents) {
+        final List<DataEvent> events = FreezableUtils.freezeIterable(dataEvents);
+        dataEvents.close();
+
+        GoogleApiClient googleApiClient = new GoogleApiClient.Builder(this)
+                .addApi(Wearable.API)
+                .build();
+
+        ConnectionResult connectionResult = googleApiClient.blockingConnect(CONNECT_TIMEOUT_MS,
+                TimeUnit.MILLISECONDS);
+        if (!connectionResult.isSuccess()) {
+            Log.e(TAG, "QuizListenerService failed to connect to GoogleApiClient.");
+            return;
+        }
+
+        for (DataEvent event : events) {
+            if (event.getType() == DataEvent.TYPE_CHANGED) {
+                DataItem dataItem = event.getDataItem();
+                DataMap dataMap = DataMapItem.fromDataItem(dataItem).getDataMap();
+                if (dataMap.getBoolean(QUESTION_WAS_ANSWERED)
+                        || dataMap.getBoolean(QUESTION_WAS_DELETED)) {
+                    // Ignore the change in data; it is used in MainActivity to update
+                    // the question's status (i.e. was the answer right or wrong or left blank).
+                    continue;
+                }
+                String question = dataMap.getString(QUESTION);
+                int questionIndex = dataMap.getInt(QUESTION_INDEX);
+                int questionNum = questionIndex + 1;
+                String[] answers = dataMap.getStringArray(ANSWERS);
+                int correctAnswerIndex = dataMap.getInt(CORRECT_ANSWER_INDEX);
+                Intent deleteOperation = new Intent(this, DeleteQuestionService.class);
+                deleteOperation.setData(dataItem.getUri());
+                PendingIntent deleteIntent = PendingIntent.getService(this, 0,
+                        deleteOperation, PendingIntent.FLAG_UPDATE_CURRENT);
+                // First page of notification contains question as Big Text.
+                Notification.BigTextStyle bigTextStyle = new Notification.BigTextStyle()
+                        .setBigContentTitle(getString(R.string.question, questionNum))
+                        .bigText(question);
+                Notification.Builder builder = new Notification.Builder(this)
+                        .setStyle(bigTextStyle)
+                        .setSmallIcon(R.drawable.ic_launcher)
+                        .setLocalOnly(true)
+                        .setDeleteIntent(deleteIntent);
+
+                // Add answers as actions.
+                Notification.WearableExtender wearableOptions = new Notification.WearableExtender();
+                for (int i = 0; i < answers.length; i++) {
+                    Notification answerPage = new Notification.Builder(this)
+                            .setContentTitle(question)
+                            .setContentText(answers[i])
+                            .extend(new Notification.WearableExtender()
+                                    .setContentAction(i))
+                            .build();
+
+                    boolean correct = (i == correctAnswerIndex);
+                    Intent updateOperation = new Intent(this, UpdateQuestionService.class);
+                    // Give each intent a unique action.
+                    updateOperation.setAction("question_" + questionIndex + "_answer_" + i);
+                    updateOperation.setData(dataItem.getUri());
+                    updateOperation.putExtra(UpdateQuestionService.EXTRA_QUESTION_INDEX,
+                            questionIndex);
+                    updateOperation.putExtra(UpdateQuestionService.EXTRA_QUESTION_CORRECT, correct);
+                    PendingIntent updateIntent = PendingIntent.getService(this, 0, updateOperation,
+                            PendingIntent.FLAG_UPDATE_CURRENT);
+                    Notification.Action action = new Notification.Action.Builder(
+                            questionNumToDrawableId.get(i), null, updateIntent)
+                            .build();
+                    wearableOptions.addAction(action).addPage(answerPage);
+                }
+                builder.extend(wearableOptions);
+                Notification notification = builder.build();
+                ((NotificationManager) getSystemService(NOTIFICATION_SERVICE))
+                        .notify(questionIndex, notification);
+            } else if (event.getType() == DataEvent.TYPE_DELETED) {
+                Uri uri = event.getDataItem().getUri();
+                // URI's are of the form "/question/0", "/question/1" etc.
+                // We use the question index as the notification id.
+                int notificationId = Integer.parseInt(uri.getLastPathSegment());
+                ((NotificationManager) getSystemService(NOTIFICATION_SERVICE))
+                        .cancel(notificationId);
+            }
+            // Delete the quiz report, if it exists.
+            ((NotificationManager) getSystemService(NOTIFICATION_SERVICE))
+                    .cancel(QUIZ_REPORT_NOTIF_ID);
+        }
+        googleApiClient.disconnect();
+    }
+
+    @Override
+    public void onMessageReceived(MessageEvent messageEvent) {
+        String path = messageEvent.getPath();
+        if (path.equals(QUIZ_EXITED_PATH)) {
+            // Remove any lingering question notifications.
+            ((NotificationManager) getSystemService(NOTIFICATION_SERVICE)).cancelAll();
+        }
+        if (path.equals(QUIZ_ENDED_PATH) || path.equals(QUIZ_EXITED_PATH)) {
+            // Quiz ended - display overall results.
+            DataMap dataMap = DataMap.fromByteArray(messageEvent.getData());
+            int numCorrect = dataMap.getInt(NUM_CORRECT);
+            int numIncorrect = dataMap.getInt(NUM_INCORRECT);
+            int numSkipped = dataMap.getInt(NUM_SKIPPED);
+
+            Notification.Builder builder = new Notification.Builder(this)
+                    .setContentTitle(getString(R.string.quiz_report))
+                    .setSmallIcon(R.drawable.ic_launcher)
+                    .setLocalOnly(true);
+            SpannableStringBuilder quizReportText = new SpannableStringBuilder();
+            appendColored(quizReportText, String.valueOf(numCorrect), R.color.dark_green);
+            quizReportText.append(" " + getString(R.string.correct) + "\n");
+            appendColored(quizReportText, String.valueOf(numIncorrect), R.color.dark_red);
+            quizReportText.append(" " + getString(R.string.incorrect) + "\n");
+            appendColored(quizReportText, String.valueOf(numSkipped), R.color.dark_yellow);
+            quizReportText.append(" " + getString(R.string.skipped) + "\n");
+
+            builder.setContentText(quizReportText);
+            if (!path.equals(QUIZ_EXITED_PATH)) {
+                // Don't add reset option if user exited quiz (there might not be a quiz to reset!).
+                builder.addAction(R.drawable.ic_launcher,
+                        getString(R.string.reset_quiz), getResetQuizPendingIntent());
+            }
+            ((NotificationManager) getSystemService(NOTIFICATION_SERVICE))
+                    .notify(QUIZ_REPORT_NOTIF_ID, builder.build());
+        }
+    }
+
+    private void appendColored(SpannableStringBuilder builder, String text, int colorResId) {
+        builder.append(text).setSpan(new ForegroundColorSpan(getResources().getColor(colorResId)),
+                builder.length() - text.length(), builder.length(), 0);
+    }
+
+    /**
+     * Returns a PendingIntent that will send a message to the phone to reset the quiz when fired.
+     */
+    private PendingIntent getResetQuizPendingIntent() {
+        Intent intent = new Intent(QuizReportActionService.ACTION_RESET_QUIZ)
+                .setClass(this, QuizReportActionService.class);
+        return PendingIntent.getService(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
+    }
+}
diff --git a/samples/wearable/Quiz/Wearable/src/main/java/com/example/android/wearable/quiz/QuizReportActionService.java b/samples/wearable/Quiz/Wearable/src/main/java/com/example/android/wearable/quiz/QuizReportActionService.java
new file mode 100644
index 0000000..4bb5398
--- /dev/null
+++ b/samples/wearable/Quiz/Wearable/src/main/java/com/example/android/wearable/quiz/QuizReportActionService.java
@@ -0,0 +1,51 @@
+package com.example.android.wearable.quiz;
+
+import android.app.IntentService;
+import android.content.Intent;
+import android.util.Log;
+
+import com.google.android.gms.common.ConnectionResult;
+import com.google.android.gms.common.api.GoogleApiClient;
+import com.google.android.gms.wearable.Node;
+import com.google.android.gms.wearable.NodeApi;
+import com.google.android.gms.wearable.Wearable;
+
+import java.util.concurrent.TimeUnit;
+
+import static com.example.android.wearable.quiz.Constants.CONNECT_TIMEOUT_MS;
+import static com.example.android.wearable.quiz.Constants.RESET_QUIZ_PATH;
+
+/**
+ * Service to reset the quiz (by sending a message to the phone) when the Reset Quiz
+ * action on the Quiz Report is selected.
+ */
+public class QuizReportActionService extends IntentService {
+    public static final String ACTION_RESET_QUIZ = "com.example.android.wearable.quiz.RESET_QUIZ";
+
+    private static final String TAG = "QuizReportActionReceiver";
+
+    public QuizReportActionService() {
+        super(QuizReportActionService.class.getSimpleName());
+    }
+
+    @Override
+    public void onHandleIntent(Intent intent) {
+        if (intent.getAction().equals(ACTION_RESET_QUIZ)) {
+            GoogleApiClient googleApiClient = new GoogleApiClient.Builder(this)
+                    .addApi(Wearable.API)
+                    .build();
+            ConnectionResult result = googleApiClient.blockingConnect(CONNECT_TIMEOUT_MS,
+                    TimeUnit.MILLISECONDS);
+            if (!result.isSuccess()) {
+                Log.e(TAG, "QuizListenerService failed to connect to GoogleApiClient.");
+                return;
+            }
+            NodeApi.GetConnectedNodesResult nodes =
+                    Wearable.NodeApi.getConnectedNodes(googleApiClient).await();
+            for (Node node : nodes.getNodes()) {
+                Wearable.MessageApi.sendMessage(googleApiClient, node.getId(), RESET_QUIZ_PATH,
+                        new byte[0]);
+            }
+        }
+    }
+}
diff --git a/samples/wearable/Quiz/Wearable/src/main/java/com/example/android/wearable/quiz/UpdateQuestionService.java b/samples/wearable/Quiz/Wearable/src/main/java/com/example/android/wearable/quiz/UpdateQuestionService.java
new file mode 100644
index 0000000..0668c97
--- /dev/null
+++ b/samples/wearable/Quiz/Wearable/src/main/java/com/example/android/wearable/quiz/UpdateQuestionService.java
@@ -0,0 +1,92 @@
+package com.example.android.wearable.quiz;
+
+import android.app.IntentService;
+import android.app.NotificationManager;
+import android.content.Intent;
+import android.net.Uri;
+import android.os.Bundle;
+import android.util.Log;
+
+import com.google.android.gms.common.ConnectionResult;
+import com.google.android.gms.common.api.GoogleApiClient;
+import com.google.android.gms.wearable.DataApi;
+import com.google.android.gms.wearable.DataMap;
+import com.google.android.gms.wearable.DataMapItem;
+import com.google.android.gms.wearable.PutDataMapRequest;
+import com.google.android.gms.wearable.PutDataRequest;
+import com.google.android.gms.wearable.Wearable;
+
+import java.util.concurrent.TimeUnit;
+
+import static com.example.android.wearable.quiz.Constants.CHOSEN_ANSWER_CORRECT;
+import static com.example.android.wearable.quiz.Constants.QUESTION_INDEX;
+import static com.example.android.wearable.quiz.Constants.QUESTION_WAS_ANSWERED;
+
+/**
+ * Updates quiz status on the phone when user selects an answer to a question on the watch.
+ */
+public class UpdateQuestionService extends IntentService
+        implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener {
+    public static final String EXTRA_QUESTION_CORRECT = "extra_question_correct";
+    public static final String EXTRA_QUESTION_INDEX = "extra_question_index";
+
+    private static final long TIME_OUT_MS = 100;
+    private static final String TAG = "UpdateQuestionService";
+
+    private GoogleApiClient mGoogleApiClient;
+
+    public UpdateQuestionService() {
+        super(UpdateQuestionService.class.getSimpleName());
+    }
+
+    @Override
+    public void onCreate() {
+        super.onCreate();
+        mGoogleApiClient = new GoogleApiClient.Builder(this)
+                .addApi(Wearable.API)
+                .addConnectionCallbacks(this)
+                .addOnConnectionFailedListener(this)
+                .build();
+    }
+
+    @Override
+    protected void onHandleIntent(Intent intent) {
+        mGoogleApiClient.blockingConnect(TIME_OUT_MS, TimeUnit.MILLISECONDS);
+        Uri dataItemUri = intent.getData();
+        if (!mGoogleApiClient.isConnected()) {
+            Log.e(TAG, "Failed to update data item " + dataItemUri
+                    + " because client is disconnected from Google Play Services");
+            return;
+        }
+        DataApi.DataItemResult dataItemResult = Wearable.DataApi.getDataItem(
+                mGoogleApiClient, dataItemUri).await();
+        PutDataMapRequest putDataMapRequest = PutDataMapRequest
+                .createFromDataMapItem(DataMapItem.fromDataItem(dataItemResult.getDataItem()));
+        DataMap dataMap = putDataMapRequest.getDataMap();
+
+        // Update quiz status variables, which will be reflected on the phone.
+        int questionIndex = intent.getIntExtra(EXTRA_QUESTION_INDEX, -1);
+        boolean chosenAnswerCorrect = intent.getBooleanExtra(EXTRA_QUESTION_CORRECT, false);
+        dataMap.putInt(QUESTION_INDEX, questionIndex);
+        dataMap.putBoolean(CHOSEN_ANSWER_CORRECT, chosenAnswerCorrect);
+        dataMap.putBoolean(QUESTION_WAS_ANSWERED, true);
+        PutDataRequest request = putDataMapRequest.asPutDataRequest();
+        Wearable.DataApi.putDataItem(mGoogleApiClient, request).await();
+
+        // Remove this question notification.
+        ((NotificationManager) getSystemService(NOTIFICATION_SERVICE)).cancel(questionIndex);
+        mGoogleApiClient.disconnect();
+    }
+
+    @Override
+    public void onConnected(Bundle connectionHint) {
+    }
+
+    @Override
+    public void onConnectionSuspended(int cause) {
+    }
+
+    @Override
+    public void onConnectionFailed(ConnectionResult result) {
+    }
+}
diff --git a/samples/wearable/Quiz/Wearable/src/main/res/drawable-hdpi/ic_choice_a.png b/samples/wearable/Quiz/Wearable/src/main/res/drawable-hdpi/ic_choice_a.png
new file mode 100644
index 0000000..de18ce1
--- /dev/null
+++ b/samples/wearable/Quiz/Wearable/src/main/res/drawable-hdpi/ic_choice_a.png
Binary files differ
diff --git a/samples/wearable/Quiz/Wearable/src/main/res/drawable-hdpi/ic_choice_b.png b/samples/wearable/Quiz/Wearable/src/main/res/drawable-hdpi/ic_choice_b.png
new file mode 100644
index 0000000..3cdfe97
--- /dev/null
+++ b/samples/wearable/Quiz/Wearable/src/main/res/drawable-hdpi/ic_choice_b.png
Binary files differ
diff --git a/samples/wearable/Quiz/Wearable/src/main/res/drawable-hdpi/ic_choice_c.png b/samples/wearable/Quiz/Wearable/src/main/res/drawable-hdpi/ic_choice_c.png
new file mode 100644
index 0000000..f0ed2ef
--- /dev/null
+++ b/samples/wearable/Quiz/Wearable/src/main/res/drawable-hdpi/ic_choice_c.png
Binary files differ
diff --git a/samples/wearable/Quiz/Wearable/src/main/res/drawable-hdpi/ic_choice_d.png b/samples/wearable/Quiz/Wearable/src/main/res/drawable-hdpi/ic_choice_d.png
new file mode 100644
index 0000000..c158d29
--- /dev/null
+++ b/samples/wearable/Quiz/Wearable/src/main/res/drawable-hdpi/ic_choice_d.png
Binary files differ
diff --git a/samples/wearable/Quiz/Wearable/src/main/res/drawable-hdpi/ic_launcher.png b/samples/wearable/Quiz/Wearable/src/main/res/drawable-hdpi/ic_launcher.png
new file mode 100755
index 0000000..91a8cff
--- /dev/null
+++ b/samples/wearable/Quiz/Wearable/src/main/res/drawable-hdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/Quiz/Wearable/src/main/res/drawable-hdpi/ic_unknown_choice.png b/samples/wearable/Quiz/Wearable/src/main/res/drawable-hdpi/ic_unknown_choice.png
new file mode 100644
index 0000000..9aed517
--- /dev/null
+++ b/samples/wearable/Quiz/Wearable/src/main/res/drawable-hdpi/ic_unknown_choice.png
Binary files differ
diff --git a/samples/wearable/Quiz/Wearable/src/main/res/drawable-mdpi/ic_choice_a.png b/samples/wearable/Quiz/Wearable/src/main/res/drawable-mdpi/ic_choice_a.png
new file mode 100644
index 0000000..5745936
--- /dev/null
+++ b/samples/wearable/Quiz/Wearable/src/main/res/drawable-mdpi/ic_choice_a.png
Binary files differ
diff --git a/samples/wearable/Quiz/Wearable/src/main/res/drawable-mdpi/ic_choice_b.png b/samples/wearable/Quiz/Wearable/src/main/res/drawable-mdpi/ic_choice_b.png
new file mode 100644
index 0000000..958b92e
--- /dev/null
+++ b/samples/wearable/Quiz/Wearable/src/main/res/drawable-mdpi/ic_choice_b.png
Binary files differ
diff --git a/samples/wearable/Quiz/Wearable/src/main/res/drawable-mdpi/ic_choice_c.png b/samples/wearable/Quiz/Wearable/src/main/res/drawable-mdpi/ic_choice_c.png
new file mode 100644
index 0000000..9fcfab7
--- /dev/null
+++ b/samples/wearable/Quiz/Wearable/src/main/res/drawable-mdpi/ic_choice_c.png
Binary files differ
diff --git a/samples/wearable/Quiz/Wearable/src/main/res/drawable-mdpi/ic_choice_d.png b/samples/wearable/Quiz/Wearable/src/main/res/drawable-mdpi/ic_choice_d.png
new file mode 100644
index 0000000..821cadb
--- /dev/null
+++ b/samples/wearable/Quiz/Wearable/src/main/res/drawable-mdpi/ic_choice_d.png
Binary files differ
diff --git a/samples/wearable/Quiz/Wearable/src/main/res/drawable-mdpi/ic_launcher.png b/samples/wearable/Quiz/Wearable/src/main/res/drawable-mdpi/ic_launcher.png
new file mode 100755
index 0000000..728ee6d
--- /dev/null
+++ b/samples/wearable/Quiz/Wearable/src/main/res/drawable-mdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/Quiz/Wearable/src/main/res/drawable-mdpi/ic_unknown_choice.png b/samples/wearable/Quiz/Wearable/src/main/res/drawable-mdpi/ic_unknown_choice.png
new file mode 100644
index 0000000..b8030ef
--- /dev/null
+++ b/samples/wearable/Quiz/Wearable/src/main/res/drawable-mdpi/ic_unknown_choice.png
Binary files differ
diff --git a/samples/wearable/Quiz/Wearable/src/main/res/drawable-xhdpi/ic_choice_a.png b/samples/wearable/Quiz/Wearable/src/main/res/drawable-xhdpi/ic_choice_a.png
new file mode 100644
index 0000000..3dba96f
--- /dev/null
+++ b/samples/wearable/Quiz/Wearable/src/main/res/drawable-xhdpi/ic_choice_a.png
Binary files differ
diff --git a/samples/wearable/Quiz/Wearable/src/main/res/drawable-xhdpi/ic_choice_b.png b/samples/wearable/Quiz/Wearable/src/main/res/drawable-xhdpi/ic_choice_b.png
new file mode 100644
index 0000000..9ca3c85
--- /dev/null
+++ b/samples/wearable/Quiz/Wearable/src/main/res/drawable-xhdpi/ic_choice_b.png
Binary files differ
diff --git a/samples/wearable/Quiz/Wearable/src/main/res/drawable-xhdpi/ic_choice_c.png b/samples/wearable/Quiz/Wearable/src/main/res/drawable-xhdpi/ic_choice_c.png
new file mode 100644
index 0000000..b84b3b7
--- /dev/null
+++ b/samples/wearable/Quiz/Wearable/src/main/res/drawable-xhdpi/ic_choice_c.png
Binary files differ
diff --git a/samples/wearable/Quiz/Wearable/src/main/res/drawable-xhdpi/ic_choice_d.png b/samples/wearable/Quiz/Wearable/src/main/res/drawable-xhdpi/ic_choice_d.png
new file mode 100644
index 0000000..185e91e
--- /dev/null
+++ b/samples/wearable/Quiz/Wearable/src/main/res/drawable-xhdpi/ic_choice_d.png
Binary files differ
diff --git a/samples/wearable/Quiz/Wearable/src/main/res/drawable-xhdpi/ic_launcher.png b/samples/wearable/Quiz/Wearable/src/main/res/drawable-xhdpi/ic_launcher.png
new file mode 100755
index 0000000..64a5854
--- /dev/null
+++ b/samples/wearable/Quiz/Wearable/src/main/res/drawable-xhdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/Quiz/Wearable/src/main/res/drawable-xhdpi/ic_unknown_choice.png b/samples/wearable/Quiz/Wearable/src/main/res/drawable-xhdpi/ic_unknown_choice.png
new file mode 100644
index 0000000..57838d1
--- /dev/null
+++ b/samples/wearable/Quiz/Wearable/src/main/res/drawable-xhdpi/ic_unknown_choice.png
Binary files differ
diff --git a/samples/wearable/Quiz/Wearable/src/main/res/drawable-xxhdpi/ic_launcher.png b/samples/wearable/Quiz/Wearable/src/main/res/drawable-xxhdpi/ic_launcher.png
new file mode 100755
index 0000000..86a395b
--- /dev/null
+++ b/samples/wearable/Quiz/Wearable/src/main/res/drawable-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/Quiz/Wearable/src/main/res/values/colors.xml b/samples/wearable/Quiz/Wearable/src/main/res/values/colors.xml
new file mode 100644
index 0000000..e19c9e7
--- /dev/null
+++ b/samples/wearable/Quiz/Wearable/src/main/res/values/colors.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <color name="dark_green">#009900</color>
+    <color name="dark_red">#800000</color>
+    <color name="dark_yellow">#FF9900</color>
+</resources>
\ No newline at end of file
diff --git a/samples/wearable/Quiz/Wearable/src/main/res/values/strings.xml b/samples/wearable/Quiz/Wearable/src/main/res/values/strings.xml
new file mode 100644
index 0000000..2136073
--- /dev/null
+++ b/samples/wearable/Quiz/Wearable/src/main/res/values/strings.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+
+    <string name="app_name">Quiz Sample Wearable App</string>
+
+    <string name="question">Question %d</string>
+
+    <string name="quiz_report">Quiz Report</string>
+    <string name="correct">correct</string>
+    <string name="incorrect">incorrect</string>
+    <string name="skipped">skipped</string>
+    <string name="reset_quiz">Reset Quiz</string>
+
+</resources>
diff --git a/samples/wearable/Quiz/build.gradle b/samples/wearable/Quiz/build.gradle
new file mode 100644
index 0000000..4c8f6d8
--- /dev/null
+++ b/samples/wearable/Quiz/build.gradle
@@ -0,0 +1,16 @@
+// Top-level build file where you can add configuration options common to all sub-projects/modules.
+
+buildscript {
+    repositories {
+        mavenCentral()
+    }
+    dependencies {
+        classpath 'com.android.tools.build:gradle:0.11.+'
+    }
+}
+
+allprojects {
+    repositories {
+        mavenCentral()
+    }
+}
diff --git a/samples/wearable/Quiz/gradle.properties b/samples/wearable/Quiz/gradle.properties
new file mode 100644
index 0000000..5d08ba7
--- /dev/null
+++ b/samples/wearable/Quiz/gradle.properties
@@ -0,0 +1,18 @@
+# Project-wide Gradle settings.
+
+# IDE (e.g. Android Studio) users:
+# Settings specified in this file will override any Gradle settings
+# configured through the IDE.
+
+# For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+# Default value: -Xmx10248m -XX:MaxPermSize=256m
+# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
+
+# When configured, Gradle will run in incubating parallel mode.
+# This option should only be used with decoupled projects. More details, visit
+# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
+# org.gradle.parallel=true
\ No newline at end of file
diff --git a/samples/wearable/Quiz/gradle/wrapper/gradle-wrapper.jar b/samples/wearable/Quiz/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 0000000..5838598
--- /dev/null
+++ b/samples/wearable/Quiz/gradle/wrapper/gradle-wrapper.jar
Binary files differ
diff --git a/samples/wearable/Quiz/gradle/wrapper/gradle-wrapper.properties b/samples/wearable/Quiz/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..e83e460
--- /dev/null
+++ b/samples/wearable/Quiz/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Fri Mar 14 14:02:22 PDT 2014
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=http\://services.gradle.org/distributions/gradle-1.11-all.zip
diff --git a/samples/wearable/Quiz/gradlew b/samples/wearable/Quiz/gradlew
new file mode 100755
index 0000000..91a7e26
--- /dev/null
+++ b/samples/wearable/Quiz/gradlew
@@ -0,0 +1,164 @@
+#!/usr/bin/env bash
+
+##############################################################################
+##
+##  Gradle start up script for UN*X
+##
+##############################################################################
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn ( ) {
+    echo "$*"
+}
+
+die ( ) {
+    echo
+    echo "$*"
+    echo
+    exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+case "`uname`" in
+  CYGWIN* )
+    cygwin=true
+    ;;
+  Darwin* )
+    darwin=true
+    ;;
+  MINGW* )
+    msys=true
+    ;;
+esac
+
+# For Cygwin, ensure paths are in UNIX format before anything is touched.
+if $cygwin ; then
+    [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
+fi
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+    ls=`ls -ld "$PRG"`
+    link=`expr "$ls" : '.*-> \(.*\)$'`
+    if expr "$link" : '/.*' > /dev/null; then
+        PRG="$link"
+    else
+        PRG=`dirname "$PRG"`"/$link"
+    fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >&-
+APP_HOME="`pwd -P`"
+cd "$SAVED" >&-
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+        # IBM's JDK on AIX uses strange locations for the executables
+        JAVACMD="$JAVA_HOME/jre/sh/java"
+    else
+        JAVACMD="$JAVA_HOME/bin/java"
+    fi
+    if [ ! -x "$JAVACMD" ] ; then
+        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+    fi
+else
+    JAVACMD="java"
+    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
+    MAX_FD_LIMIT=`ulimit -H -n`
+    if [ $? -eq 0 ] ; then
+        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+            MAX_FD="$MAX_FD_LIMIT"
+        fi
+        ulimit -n $MAX_FD
+        if [ $? -ne 0 ] ; then
+            warn "Could not set maximum file descriptor limit: $MAX_FD"
+        fi
+    else
+        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+    fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+
+    # We build the pattern for arguments to be converted via cygpath
+    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+    SEP=""
+    for dir in $ROOTDIRSRAW ; do
+        ROOTDIRS="$ROOTDIRS$SEP$dir"
+        SEP="|"
+    done
+    OURCYGPATTERN="(^($ROOTDIRS))"
+    # Add a user-defined pattern to the cygpath arguments
+    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+    fi
+    # Now convert the arguments - kludge to limit ourselves to /bin/sh
+    i=0
+    for arg in "$@" ; do
+        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
+
+        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
+            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+        else
+            eval `echo args$i`="\"$arg\""
+        fi
+        i=$((i+1))
+    done
+    case $i in
+        (0) set -- ;;
+        (1) set -- "$args0" ;;
+        (2) set -- "$args0" "$args1" ;;
+        (3) set -- "$args0" "$args1" "$args2" ;;
+        (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+        (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+        (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+        (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+        (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+        (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+    esac
+fi
+
+# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
+function splitJvmOpts() {
+    JVM_OPTS=("$@")
+}
+eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
+JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
+
+exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
diff --git a/samples/wearable/Quiz/gradlew.bat b/samples/wearable/Quiz/gradlew.bat
new file mode 100755
index 0000000..aec9973
--- /dev/null
+++ b/samples/wearable/Quiz/gradlew.bat
@@ -0,0 +1,90 @@
+@if "%DEBUG%" == "" @echo off

+@rem ##########################################################################

+@rem

+@rem  Gradle startup script for Windows

+@rem

+@rem ##########################################################################

+

+@rem Set local scope for the variables with windows NT shell

+if "%OS%"=="Windows_NT" setlocal

+

+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.

+set DEFAULT_JVM_OPTS=

+

+set DIRNAME=%~dp0

+if "%DIRNAME%" == "" set DIRNAME=.

+set APP_BASE_NAME=%~n0

+set APP_HOME=%DIRNAME%

+

+@rem Find java.exe

+if defined JAVA_HOME goto findJavaFromJavaHome

+

+set JAVA_EXE=java.exe

+%JAVA_EXE% -version >NUL 2>&1

+if "%ERRORLEVEL%" == "0" goto init

+

+echo.

+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.

+echo.

+echo Please set the JAVA_HOME variable in your environment to match the

+echo location of your Java installation.

+

+goto fail

+

+:findJavaFromJavaHome

+set JAVA_HOME=%JAVA_HOME:"=%

+set JAVA_EXE=%JAVA_HOME%/bin/java.exe

+

+if exist "%JAVA_EXE%" goto init

+

+echo.

+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%

+echo.

+echo Please set the JAVA_HOME variable in your environment to match the

+echo location of your Java installation.

+

+goto fail

+

+:init

+@rem Get command-line arguments, handling Windowz variants

+

+if not "%OS%" == "Windows_NT" goto win9xME_args

+if "%@eval[2+2]" == "4" goto 4NT_args

+

+:win9xME_args

+@rem Slurp the command line arguments.

+set CMD_LINE_ARGS=

+set _SKIP=2

+

+:win9xME_args_slurp

+if "x%~1" == "x" goto execute

+

+set CMD_LINE_ARGS=%*

+goto execute

+

+:4NT_args

+@rem Get arguments from the 4NT Shell from JP Software

+set CMD_LINE_ARGS=%$

+

+:execute

+@rem Setup the command line

+

+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar

+

+@rem Execute Gradle

+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%

+

+:end

+@rem End local scope for the variables with windows NT shell

+if "%ERRORLEVEL%"=="0" goto mainEnd

+

+:fail

+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of

+rem the _cmd.exe /c_ return code!

+if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1

+exit /b 1

+

+:mainEnd

+if "%OS%"=="Windows_NT" endlocal

+

+:omega

diff --git a/samples/wearable/Quiz/settings.gradle b/samples/wearable/Quiz/settings.gradle
new file mode 100644
index 0000000..d6b72d1
--- /dev/null
+++ b/samples/wearable/Quiz/settings.gradle
@@ -0,0 +1 @@
+include 'Application', 'Wearable'
diff --git a/samples/wearable/RecipeAssistant/Application/build.gradle b/samples/wearable/RecipeAssistant/Application/build.gradle
new file mode 100644
index 0000000..03f9be8
--- /dev/null
+++ b/samples/wearable/RecipeAssistant/Application/build.gradle
@@ -0,0 +1,24 @@
+apply plugin: 'android'
+
+android {
+    compileSdkVersion 19
+    buildToolsVersion '20'
+
+    defaultConfig {
+        minSdkVersion 18
+        targetSdkVersion 19
+        versionCode 1
+        versionName "1.0"
+    }
+
+    buildTypes {
+        release {
+            runProguard false
+            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
+        }
+    }
+}
+
+dependencies {
+    compile "com.android.support:support-v4:20.0.+"
+}
diff --git a/samples/wearable/RecipeAssistant/Application/proguard-rules.txt b/samples/wearable/RecipeAssistant/Application/proguard-rules.txt
new file mode 100644
index 0000000..08e5bdc
--- /dev/null
+++ b/samples/wearable/RecipeAssistant/Application/proguard-rules.txt
@@ -0,0 +1,22 @@
+# To enable ProGuard in your project, edit project.properties
+# to define the proguard.config property as described in that file.
+#
+# Add project specific ProGuard rules here.
+# By default, the flags in this file are appended to flags specified
+# in ${sdk.dir}/tools/proguard/proguard-android.txt
+# You can edit the include path and order by changing the ProGuard
+# include property in project.properties.
+#
+# For more details, see
+#   http://developer.android.com/guide/developing/tools/proguard.html
+
+# Add any project specific keep options here:
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+#   public *;
+#}
+-dontwarn android.support.wearable.view.DelayedConfirmationView
+-dontwarn android.support.wearable.view.CircledImageView
diff --git a/samples/wearable/RecipeAssistant/Application/src/main/AndroidManifest.xml b/samples/wearable/RecipeAssistant/Application/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..7a1a04a
--- /dev/null
+++ b/samples/wearable/RecipeAssistant/Application/src/main/AndroidManifest.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.example.android.wearable.recipeassistant"
+    android:versionCode="1"
+    android:versionName="1.0" >
+
+    <uses-sdk android:minSdkVersion="18" android:targetSdkVersion="19" />
+
+    <application
+        android:allowBackup="true"
+        android:icon="@mipmap/ic_app_recipe"
+        android:label="@string/app_name"
+        android:theme="@android:style/Theme.Holo.Light" >
+        <activity
+            android:name=".MainActivity"
+            android:label="@string/app_name" >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
+        <activity
+            android:name=".RecipeActivity"
+            android:label="@string/app_name" >
+        </activity>
+        <service
+            android:name=".RecipeService" />
+    </application>
+
+</manifest>
diff --git a/samples/wearable/RecipeAssistant/Application/src/main/assets/beef-brisket-chili.json b/samples/wearable/RecipeAssistant/Application/src/main/assets/beef-brisket-chili.json
new file mode 100644
index 0000000..19598f9
--- /dev/null
+++ b/samples/wearable/RecipeAssistant/Application/src/main/assets/beef-brisket-chili.json
@@ -0,0 +1,91 @@
+{
+name: "beef-brisket-chili.json",
+steps: [
+{
+text: "Place the cinnamon stick, cumin, paprika and oregano in a pestle and mortar. Bash and grind until the cinnamon is in very small flakes. ",
+img: "step-1-grind-spices.jpg"
+},
+{
+text: "Score the beef and rub the spice mix into the cuts. ",
+img: "step-2-score-beef.jpg"
+},
+{
+text: "Season the beef and drizzle with olive oil. Brown in a hot pan. ",
+img: "step-3-brown-beef.jpg"
+},
+{
+text: "Finely slice the onion and fry in a little olive oil together with the chillies, finely sliced. You can control the heat of your chili by deseeding some of the chillies. ",
+img: "step-4-fry-onion.jpg"
+},
+{
+text: "Add the browned brisket to the pan with the onions and chillies and fry on a low heat."
+},
+{
+text: "Place the bell peppers, roughly sliced, the bay leaves and chopped tomatoes in a large covered pot. Bring to the boil and then add the beef, onions and chillies. ",
+img: "step-6-combine.jpg"
+},
+{
+text: "Bring back to the boil, cover and allow to simmer on a low heat for 4 hours."
+},
+{
+text: "Remove the brisket from the pot, place on a large plate and use two forks to pull the beef apart into individual pieces. ",
+img: "step-8-pull.jpg"
+},
+{
+text: "Remove the bay leaves and add the pulled beef and coriander back to the pot, together with the kidney beans."
+},
+{
+text: "Bring back to the boil and simmer gently for a further 15 - 20 mins."
+}
+],
+summary: "",
+title: "Beef brisket chili",
+img: "chili.jpg",
+serving: [
+"Serve with rice, yoghurt and fresh guacamole. Garnish with the remaining coriander."
+],
+ingredients: [
+{
+text: "3 lbs beef brisket"
+},
+{
+text: "2 red onions"
+},
+{
+text: "4 jalapeno chillies"
+},
+{
+text: "1 large cinnamon stick"
+},
+{
+text: "1 tbsp ground cumin"
+},
+{
+text: "1 tbsp paprika"
+},
+{
+text: "1 heaped tbsp dried oregano"
+},
+{
+text: "2 fresh bay leaves"
+},
+{
+text: "2 red bell peppers"
+},
+{
+text: "2 green bell peppers"
+},
+{
+text: "800g tin chopped tomatoes"
+},
+{
+text: "400g tin kidney beans"
+},
+{
+text: "400ml beef stock"
+},
+{
+text: "1/2 bunch coriander"
+}
+]
+}
\ No newline at end of file
diff --git a/samples/wearable/RecipeAssistant/Application/src/main/assets/chili.jpg b/samples/wearable/RecipeAssistant/Application/src/main/assets/chili.jpg
new file mode 100644
index 0000000..ca5f751
--- /dev/null
+++ b/samples/wearable/RecipeAssistant/Application/src/main/assets/chili.jpg
Binary files differ
diff --git a/samples/wearable/RecipeAssistant/Application/src/main/assets/guacamole.jpg b/samples/wearable/RecipeAssistant/Application/src/main/assets/guacamole.jpg
new file mode 100644
index 0000000..77175eb
--- /dev/null
+++ b/samples/wearable/RecipeAssistant/Application/src/main/assets/guacamole.jpg
Binary files differ
diff --git a/samples/wearable/RecipeAssistant/Application/src/main/assets/guacamole.json b/samples/wearable/RecipeAssistant/Application/src/main/assets/guacamole.json
new file mode 100644
index 0000000..5fae53f
--- /dev/null
+++ b/samples/wearable/RecipeAssistant/Application/src/main/assets/guacamole.json
@@ -0,0 +1,36 @@
+{
+name: "guacamole.json",
+steps: [
+{
+text: "Use a spoon to scoop the flesh of the avocados into a bowl."
+},
+{
+text: "Mash with a fork until fairly smooth and creamy. Preserve some small solid chunks to add texture."
+},
+{
+text: "Add the juice of the lime. ",
+img: "step-3-lime.jpg"
+},
+{
+text: "Add the cilantro."
+},
+{
+text: "Mix thoroughly."
+}
+],
+summary: "Some guacamole recipes call for many ingredients and can be a pain to prepare. This super simple guac can be thrown together in a couple of minutes and tastes great.",
+title: "Super simple guacamole",
+img: "guacamole.jpg",
+serving: "",
+ingredients: [
+{
+text: "2 ripe avocados"
+},
+{
+text: "1 lime"
+},
+{
+text: "2 tbsp cilantro"
+}
+]
+}
\ No newline at end of file
diff --git a/samples/wearable/RecipeAssistant/Application/src/main/assets/irish-stew.jpg b/samples/wearable/RecipeAssistant/Application/src/main/assets/irish-stew.jpg
new file mode 100644
index 0000000..0c20766
--- /dev/null
+++ b/samples/wearable/RecipeAssistant/Application/src/main/assets/irish-stew.jpg
Binary files differ
diff --git a/samples/wearable/RecipeAssistant/Application/src/main/assets/northern-irish-vegetable-soup.json b/samples/wearable/RecipeAssistant/Application/src/main/assets/northern-irish-vegetable-soup.json
new file mode 100644
index 0000000..55d2591
--- /dev/null
+++ b/samples/wearable/RecipeAssistant/Application/src/main/assets/northern-irish-vegetable-soup.json
@@ -0,0 +1,46 @@
+{
+name: "northern-irish-vegetable-soup.json",
+steps: [
+{
+text: "Place the beef in a large stock pot, cover with water and stew for 1 - 2 hours."
+},
+{
+text: "Allow the stock to cool, skim off any fat."
+},
+{
+text: "Add the soup mix to the stock, bring to the boil and simmer for 1 hour."
+},
+{
+text: "Roughly chop the leeks (green and white parts), onion, carrots, celery and parsley. Add to the soup. Season well and simmer until the vegetables are soft."
+}
+],
+summary: "This recipe is apparently unique to Northern Ireland and uses soup/herb celery which is hard to find outside the area, but regular table celery can be substituted (including the leaves).",
+title: "Northern irish vegetable soup",
+img: "irish-stew.jpg",
+serving: [
+"Whole boiled potatoes are traditionally placed in the soup at time of serving."
+],
+ingredients: [
+{
+text: "2 lbs beef shin or similar beef on bone"
+},
+{
+text: "60g soup mix (30g barley, 15g red lentils, 15g split peas)"
+},
+{
+text: "3 carrots"
+},
+{
+text: "1 white onion"
+},
+{
+text: "field celery or 1 stalk celery, plus any leaves on the bunch"
+},
+{
+text: "2 leeks"
+},
+{
+text: "1 bunch parsley"
+}
+]
+}
\ No newline at end of file
diff --git a/samples/wearable/RecipeAssistant/Application/src/main/assets/recipelist.json b/samples/wearable/RecipeAssistant/Application/src/main/assets/recipelist.json
new file mode 100644
index 0000000..efd787d
--- /dev/null
+++ b/samples/wearable/RecipeAssistant/Application/src/main/assets/recipelist.json
@@ -0,0 +1,23 @@
+{
+recipe_list:
+[
+{
+name: "guacamole.json",
+summary: "Some guacamole recipes call for many ingredients and can be a pain to prepare. This super simple guac can be thrown together in a couple of minutes and tastes great.",
+title: "Super simple guacamole",
+img: "guacamole.jpg"
+},
+{
+name: "northern-irish-vegetable-soup.json",
+summary: "This recipe is apparently unique to Northern Ireland and uses soup/herb celery which is hard to find outside the area, but regular table celery can be substituted (including the leaves).",
+title: "Northern irish vegetable soup",
+img: "irish-stew.jpg"
+},
+{
+name: "beef-brisket-chili.json",
+summary: "",
+title: "Beef brisket chili",
+img: "chili.jpg"
+}
+]
+}
\ No newline at end of file
diff --git a/samples/wearable/RecipeAssistant/Application/src/main/assets/step-1-grind-spices.jpg b/samples/wearable/RecipeAssistant/Application/src/main/assets/step-1-grind-spices.jpg
new file mode 100644
index 0000000..9b5f2b9
--- /dev/null
+++ b/samples/wearable/RecipeAssistant/Application/src/main/assets/step-1-grind-spices.jpg
Binary files differ
diff --git a/samples/wearable/RecipeAssistant/Application/src/main/assets/step-2-score-beef.jpg b/samples/wearable/RecipeAssistant/Application/src/main/assets/step-2-score-beef.jpg
new file mode 100644
index 0000000..66c549d
--- /dev/null
+++ b/samples/wearable/RecipeAssistant/Application/src/main/assets/step-2-score-beef.jpg
Binary files differ
diff --git a/samples/wearable/RecipeAssistant/Application/src/main/assets/step-3-brown-beef.jpg b/samples/wearable/RecipeAssistant/Application/src/main/assets/step-3-brown-beef.jpg
new file mode 100644
index 0000000..1bb801e
--- /dev/null
+++ b/samples/wearable/RecipeAssistant/Application/src/main/assets/step-3-brown-beef.jpg
Binary files differ
diff --git a/samples/wearable/RecipeAssistant/Application/src/main/assets/step-3-lime.jpg b/samples/wearable/RecipeAssistant/Application/src/main/assets/step-3-lime.jpg
new file mode 100644
index 0000000..b615d55
--- /dev/null
+++ b/samples/wearable/RecipeAssistant/Application/src/main/assets/step-3-lime.jpg
Binary files differ
diff --git a/samples/wearable/RecipeAssistant/Application/src/main/assets/step-4-fry-onion.jpg b/samples/wearable/RecipeAssistant/Application/src/main/assets/step-4-fry-onion.jpg
new file mode 100644
index 0000000..b5d2a18
--- /dev/null
+++ b/samples/wearable/RecipeAssistant/Application/src/main/assets/step-4-fry-onion.jpg
Binary files differ
diff --git a/samples/wearable/RecipeAssistant/Application/src/main/assets/step-6-combine.jpg b/samples/wearable/RecipeAssistant/Application/src/main/assets/step-6-combine.jpg
new file mode 100644
index 0000000..fe29405
--- /dev/null
+++ b/samples/wearable/RecipeAssistant/Application/src/main/assets/step-6-combine.jpg
Binary files differ
diff --git a/samples/wearable/RecipeAssistant/Application/src/main/assets/step-8-pull.jpg b/samples/wearable/RecipeAssistant/Application/src/main/assets/step-8-pull.jpg
new file mode 100644
index 0000000..f8288a8
--- /dev/null
+++ b/samples/wearable/RecipeAssistant/Application/src/main/assets/step-8-pull.jpg
Binary files differ
diff --git a/samples/wearable/RecipeAssistant/Application/src/main/java/com/example/android/wearable/recipeassistant/AssetUtils.java b/samples/wearable/RecipeAssistant/Application/src/main/java/com/example/android/wearable/recipeassistant/AssetUtils.java
new file mode 100644
index 0000000..c7991bb
--- /dev/null
+++ b/samples/wearable/RecipeAssistant/Application/src/main/java/com/example/android/wearable/recipeassistant/AssetUtils.java
@@ -0,0 +1,64 @@
+package com.example.android.wearable.recipeassistant;
+
+
+import android.content.Context;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.util.Log;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+final class AssetUtils {
+    private static final String TAG = "RecipeAssistant";
+
+    public static byte[] loadAsset(Context context, String asset) {
+        byte[] buffer = null;
+        try {
+            InputStream is = context.getAssets().open(asset);
+            int size = is.available();
+            buffer = new byte[size];
+            is.read(buffer);
+            is.close();
+        } catch (IOException e) {
+            Log.e(TAG, "Failed to load asset " + asset + ": " + e);
+        }
+        return buffer;
+    }
+
+    public static JSONObject loadJSONAsset(Context context, String asset) {
+        String jsonString = new String(loadAsset(context, asset));
+        JSONObject jsonObject = null;
+        try {
+            jsonObject = new JSONObject(jsonString);
+        } catch (JSONException e) {
+            Log.e(TAG, "Failed to parse JSON asset " + asset + ": " + e);
+        }
+        return jsonObject;
+    }
+
+    public static Bitmap loadBitmapAsset(Context context, String asset) {
+        InputStream is = null;
+        Bitmap bitmap = null;
+        try {
+            is = context.getAssets().open(asset);
+            if (is != null) {
+                bitmap = BitmapFactory.decodeStream(is);
+            }
+        } catch (IOException e) {
+            Log.e(TAG, e.toString());
+        } finally {
+            if (is != null) {
+                try {
+                    is.close();
+                } catch (IOException e) {
+                    Log.e(TAG, "Cannot close InputStream: ", e);
+                }
+            }
+        }
+        return bitmap;
+    }
+}
diff --git a/samples/wearable/RecipeAssistant/Application/src/main/java/com/example/android/wearable/recipeassistant/Constants.java b/samples/wearable/RecipeAssistant/Application/src/main/java/com/example/android/wearable/recipeassistant/Constants.java
new file mode 100644
index 0000000..375444e
--- /dev/null
+++ b/samples/wearable/RecipeAssistant/Application/src/main/java/com/example/android/wearable/recipeassistant/Constants.java
@@ -0,0 +1,27 @@
+package com.example.android.wearable.recipeassistant;
+
+public final class Constants {
+    private Constants() {
+    }
+    public static final String RECIPE_LIST_FILE = "recipelist.json";
+    public static final String RECIPE_NAME_TO_LOAD = "recipe_name";
+
+    public static final String RECIPE_FIELD_LIST = "recipe_list";
+    public static final String RECIPE_FIELD_IMAGE = "img";
+    public static final String RECIPE_FIELD_INGREDIENTS = "ingredients";
+    public static final String RECIPE_FIELD_NAME = "name";
+    public static final String RECIPE_FIELD_SUMMARY = "summary";
+    public static final String RECIPE_FIELD_STEPS = "steps";
+    public static final String RECIPE_FIELD_TEXT = "text";
+    public static final String RECIPE_FIELD_TITLE = "title";
+    public static final String RECIPE_FIELD_STEP_TEXT = "step_text";
+    public static final String RECIPE_FIELD_STEP_IMAGE = "step_image";
+
+    static final String ACTION_START_COOKING =
+            "com.example.android.wearable.recipeassistant.START_COOKING";
+    public static final String EXTRA_RECIPE = "recipe";
+
+    public static final int NOTIFICATION_ID = 0;
+    public static final int NOTIFICATION_IMAGE_WIDTH = 280;
+    public static final int NOTIFICATION_IMAGE_HEIGHT = 280;
+}
diff --git a/samples/wearable/RecipeAssistant/Application/src/main/java/com/example/android/wearable/recipeassistant/MainActivity.java b/samples/wearable/RecipeAssistant/Application/src/main/java/com/example/android/wearable/recipeassistant/MainActivity.java
new file mode 100644
index 0000000..a456190
--- /dev/null
+++ b/samples/wearable/RecipeAssistant/Application/src/main/java/com/example/android/wearable/recipeassistant/MainActivity.java
@@ -0,0 +1,35 @@
+
+package com.example.android.wearable.recipeassistant;
+
+import android.app.ListActivity;
+import android.content.Intent;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.View;
+import android.widget.ListView;
+
+public class MainActivity extends ListActivity {
+
+    private static final String TAG = "RecipeAssistant";
+    private RecipeListAdapter mAdapter;
+
+    @Override
+    protected void onListItemClick(ListView l, View v, int position, long id) {
+        if (Log.isLoggable(TAG, Log.DEBUG)) {
+            Log.d(TAG , "onListItemClick " + position);
+        }
+        String itemName = mAdapter.getItemName(position);
+        Intent intent = new Intent(getApplicationContext(), RecipeActivity.class);
+        intent.putExtra(Constants.RECIPE_NAME_TO_LOAD, itemName);
+        startActivity(intent);
+    }
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(android.R.layout.list_content);
+
+        mAdapter = new RecipeListAdapter(this);
+        setListAdapter(mAdapter);
+    }
+}
diff --git a/samples/wearable/RecipeAssistant/Application/src/main/java/com/example/android/wearable/recipeassistant/Recipe.java b/samples/wearable/RecipeAssistant/Application/src/main/java/com/example/android/wearable/recipeassistant/Recipe.java
new file mode 100644
index 0000000..24356b6
--- /dev/null
+++ b/samples/wearable/RecipeAssistant/Application/src/main/java/com/example/android/wearable/recipeassistant/Recipe.java
@@ -0,0 +1,110 @@
+package com.example.android.wearable.recipeassistant;
+
+import android.content.Context;
+import android.os.Bundle;
+import android.os.Parcelable;
+import android.util.Log;
+
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.util.ArrayList;
+
+public class Recipe {
+    private static final String TAG = "RecipeAssistant";
+
+    public String titleText;
+    public String summaryText;
+    public String recipeImage;
+    public String ingredientsText;
+
+    public static class RecipeStep {
+        RecipeStep() { }
+        public String stepImage;
+        public String stepText;
+
+        public Bundle toBundle() {
+            Bundle bundle = new Bundle();
+            bundle.putString(Constants.RECIPE_FIELD_STEP_TEXT, stepText);
+            bundle.putString(Constants.RECIPE_FIELD_STEP_IMAGE, stepImage);
+            return bundle;
+        }
+
+        public static RecipeStep fromBundle(Bundle bundle) {
+            RecipeStep recipeStep = new RecipeStep();
+            recipeStep.stepText = bundle.getString(Constants.RECIPE_FIELD_STEP_TEXT);
+            recipeStep.stepImage = bundle.getString(Constants.RECIPE_FIELD_STEP_IMAGE);
+            return recipeStep;
+        }
+    }
+    ArrayList<RecipeStep> recipeSteps;
+
+    public Recipe() {
+        recipeSteps = new ArrayList<RecipeStep>();
+    }
+
+    public static Recipe fromJson(Context context, JSONObject json) {
+        Recipe recipe = new Recipe();
+        try {
+            recipe.titleText = json.getString(Constants.RECIPE_FIELD_TITLE);
+            recipe.summaryText = json.getString(Constants.RECIPE_FIELD_SUMMARY);
+            if (json.has(Constants.RECIPE_FIELD_IMAGE)) {
+                recipe.recipeImage = json.getString(Constants.RECIPE_FIELD_IMAGE);
+            }
+            JSONArray ingredients = json.getJSONArray(Constants.RECIPE_FIELD_INGREDIENTS);
+            recipe.ingredientsText = "";
+            for (int i = 0; i < ingredients.length(); i++) {
+                recipe.ingredientsText += " - "
+                        + ingredients.getJSONObject(i).getString(Constants.RECIPE_FIELD_TEXT) + "\n";
+            }
+
+            JSONArray steps = json.getJSONArray(Constants.RECIPE_FIELD_STEPS);
+            for (int i = 0; i < steps.length(); i++) {
+                JSONObject step = steps.getJSONObject(i);
+                RecipeStep recipeStep = new RecipeStep();
+                recipeStep.stepText = step.getString(Constants.RECIPE_FIELD_TEXT);
+                if (step.has(Constants.RECIPE_FIELD_IMAGE)) {
+                    recipeStep.stepImage = step.getString(Constants.RECIPE_FIELD_IMAGE);
+                }
+                recipe.recipeSteps.add(recipeStep);
+            }
+        } catch (JSONException e) {
+            Log.e(TAG, "Error loading recipe: " + e);
+            return null;
+        }
+        return recipe;
+    }
+
+    public Bundle toBundle() {
+        Bundle bundle = new Bundle();
+        bundle.putString(Constants.RECIPE_FIELD_TITLE, titleText);
+        bundle.putString(Constants.RECIPE_FIELD_SUMMARY, summaryText);
+        bundle.putString(Constants.RECIPE_FIELD_IMAGE, recipeImage);
+        bundle.putString(Constants.RECIPE_FIELD_INGREDIENTS, ingredientsText);
+        if (recipeSteps != null) {
+            ArrayList<Parcelable> stepBundles = new ArrayList<Parcelable>(recipeSteps.size());
+            for (RecipeStep recipeStep : recipeSteps) {
+                stepBundles.add(recipeStep.toBundle());
+            }
+            bundle.putParcelableArrayList(Constants.RECIPE_FIELD_STEPS, stepBundles);
+        }
+        return bundle;
+    }
+
+    public static Recipe fromBundle(Bundle bundle) {
+        Recipe recipe = new Recipe();
+        recipe.titleText = bundle.getString(Constants.RECIPE_FIELD_TITLE);
+        recipe.summaryText = bundle.getString(Constants.RECIPE_FIELD_SUMMARY);
+        recipe.recipeImage = bundle.getString(Constants.RECIPE_FIELD_IMAGE);
+        recipe.ingredientsText = bundle.getString(Constants.RECIPE_FIELD_INGREDIENTS);
+        ArrayList<Parcelable> stepBundles =
+                bundle.getParcelableArrayList(Constants.RECIPE_FIELD_STEPS);
+        if (stepBundles != null) {
+            for (Parcelable stepBundle : stepBundles) {
+                recipe.recipeSteps.add(RecipeStep.fromBundle((Bundle) stepBundle));
+            }
+        }
+        return recipe;
+    }
+}
diff --git a/samples/wearable/RecipeAssistant/Application/src/main/java/com/example/android/wearable/recipeassistant/RecipeActivity.java b/samples/wearable/RecipeAssistant/Application/src/main/java/com/example/android/wearable/recipeassistant/RecipeActivity.java
new file mode 100644
index 0000000..1637745
--- /dev/null
+++ b/samples/wearable/RecipeAssistant/Application/src/main/java/com/example/android/wearable/recipeassistant/RecipeActivity.java
@@ -0,0 +1,122 @@
+package com.example.android.wearable.recipeassistant;
+
+import android.app.Activity;
+import android.app.PendingIntent;
+import android.content.Intent;
+import android.graphics.Bitmap;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.animation.Animation;
+import android.view.animation.AnimationUtils;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import org.json.JSONObject;
+
+public class RecipeActivity extends Activity {
+    private static final String TAG = "RecipeAssistant";
+    private String mRecipeName;
+    private Recipe mRecipe;
+    private ImageView mImageView;
+    private TextView mTitleTextView;
+    private TextView mSummaryTextView;
+    private TextView mIngredientsTextView;
+    private LinearLayout mStepsLayout;
+
+    @Override
+    protected void onStart() {
+        super.onStart();
+        Intent intent = getIntent();
+        mRecipeName = intent.getStringExtra(Constants.RECIPE_NAME_TO_LOAD);
+        if (Log.isLoggable(TAG, Log.DEBUG)) {
+            Log.d(TAG, "Intent: " + intent.toString() + " " + mRecipeName);
+        }
+        loadRecipe();
+    }
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.recipe);
+        mTitleTextView = (TextView) findViewById(R.id.recipeTextTitle);
+        mSummaryTextView = (TextView) findViewById(R.id.recipeTextSummary);
+        mImageView = (ImageView) findViewById(R.id.recipeImageView);
+        mIngredientsTextView = (TextView) findViewById(R.id.textIngredients);
+        mStepsLayout = (LinearLayout) findViewById(R.id.layoutSteps);
+    }
+
+    @Override
+    public boolean onCreateOptionsMenu(Menu menu) {
+        // Inflate the menu; this adds items to the action bar if it is present.
+        getMenuInflater().inflate(R.menu.main, menu);
+        return true;
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        switch(item.getItemId()) {
+            case R.id.action_cook:
+                startCooking();
+                return true;
+        }
+        return super.onOptionsItemSelected(item);
+    }
+
+    private void loadRecipe() {
+        JSONObject jsonObject = AssetUtils.loadJSONAsset(this, mRecipeName);
+        if (jsonObject != null) {
+            mRecipe = Recipe.fromJson(this, jsonObject);
+            if (mRecipe != null) {
+                displayRecipe(mRecipe);
+            }
+        }
+    }
+
+    private void displayRecipe(Recipe recipe) {
+        Animation fadeIn = AnimationUtils.loadAnimation(this, android.R.anim.fade_in);
+        mTitleTextView.setAnimation(fadeIn);
+        mTitleTextView.setText(recipe.titleText);
+        mSummaryTextView.setText(recipe.summaryText);
+        if (recipe.recipeImage != null) {
+            mImageView.setAnimation(fadeIn);
+            Bitmap recipeImage = AssetUtils.loadBitmapAsset(this, recipe.recipeImage);
+            mImageView.setImageBitmap(recipeImage);
+        }
+        mIngredientsTextView.setText(recipe.ingredientsText);
+
+        findViewById(R.id.ingredientsHeader).setAnimation(fadeIn);
+        findViewById(R.id.ingredientsHeader).setVisibility(View.VISIBLE);
+        findViewById(R.id.stepsHeader).setAnimation(fadeIn);
+
+        findViewById(R.id.stepsHeader).setVisibility(View.VISIBLE);
+
+        LayoutInflater inf = LayoutInflater.from(this);
+        mStepsLayout.removeAllViews();
+        int stepNumber = 1;
+        for (Recipe.RecipeStep step : recipe.recipeSteps) {
+            View view = inf.inflate(R.layout.step_item, null);
+            ImageView iv = (ImageView) view.findViewById(R.id.stepImageView);
+            if (step.stepImage == null) {
+                iv.setVisibility(View.GONE);
+            } else {
+                Bitmap stepImage = AssetUtils.loadBitmapAsset(this, step.stepImage);
+                iv.setImageBitmap(stepImage);
+            }
+            ((TextView) view.findViewById(R.id.textStep)).setText(
+                    (stepNumber++) + ". " + step.stepText);
+            mStepsLayout.addView(view);
+        }
+    }
+
+    private void startCooking() {
+        Intent intent = new Intent(this, RecipeService.class);
+        intent.setAction(Constants.ACTION_START_COOKING);
+        intent.putExtra(Constants.EXTRA_RECIPE, mRecipe.toBundle());
+        startService(intent);
+    }
+}
diff --git a/samples/wearable/RecipeAssistant/Application/src/main/java/com/example/android/wearable/recipeassistant/RecipeListAdapter.java b/samples/wearable/RecipeAssistant/Application/src/main/java/com/example/android/wearable/recipeassistant/RecipeListAdapter.java
new file mode 100644
index 0000000..9602bc6
--- /dev/null
+++ b/samples/wearable/RecipeAssistant/Application/src/main/java/com/example/android/wearable/recipeassistant/RecipeListAdapter.java
@@ -0,0 +1,157 @@
+package com.example.android.wearable.recipeassistant;
+
+import android.content.Context;
+import android.database.DataSetObserver;
+import android.graphics.Bitmap;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.ListAdapter;
+import android.widget.TextView;
+
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class RecipeListAdapter implements ListAdapter {
+    private String TAG = "RecipeListAdapter";
+
+    private class Item {
+        String title;
+        String name;
+        String summary;
+        Bitmap image;
+    }
+
+    private List<Item> mItems = new ArrayList<Item>();
+    private Context mContext;
+    private DataSetObserver mObserver;
+
+    public RecipeListAdapter(Context context) {
+        mContext = context;
+        loadRecipeList();
+    }
+
+    private void loadRecipeList() {
+        JSONObject jsonObject = AssetUtils.loadJSONAsset(mContext, Constants.RECIPE_LIST_FILE);
+        if (jsonObject != null) {
+            List<Item> items = parseJson(jsonObject);
+            appendItemsToList(items);
+        }
+    }
+
+    private List<Item> parseJson(JSONObject json) {
+        List<Item> result = new ArrayList<Item>();
+        try {
+            JSONArray items = json.getJSONArray(Constants.RECIPE_FIELD_LIST);
+            for (int i = 0; i < items.length(); i++) {
+                JSONObject item = items.getJSONObject(i);
+                Item parsed = new Item();
+                parsed.name = item.getString(Constants.RECIPE_FIELD_NAME);
+                parsed.title = item.getString(Constants.RECIPE_FIELD_TITLE);
+                if (item.has(Constants.RECIPE_FIELD_IMAGE)) {
+                    String imageFile = item.getString(Constants.RECIPE_FIELD_IMAGE);
+                    parsed.image = AssetUtils.loadBitmapAsset(mContext, imageFile);
+                }
+                parsed.summary = item.getString(Constants.RECIPE_FIELD_SUMMARY);
+                result.add(parsed);
+            }
+        } catch (JSONException e) {
+            Log.e(TAG, "Failed to parse recipe list: " + e);
+        }
+        return result;
+    }
+
+    private void appendItemsToList(List<Item> items) {
+        mItems.addAll(items);
+        if (mObserver != null) {
+            mObserver.onChanged();
+        }
+    }
+
+    @Override
+    public int getCount() {
+        return mItems.size();
+    }
+
+    @Override
+    public Object getItem(int position) {
+        return mItems.get(position);
+    }
+
+    @Override
+    public long getItemId(int position) {
+        return 0;
+    }
+
+    @Override
+    public int getItemViewType(int position) {
+        return 0;
+    }
+
+    @Override
+    public View getView(int position, View convertView, ViewGroup parent) {
+        View view = convertView;
+        if (view == null) {
+            LayoutInflater inf = LayoutInflater.from(mContext);
+            view = inf.inflate(R.layout.list_item, null);
+        }
+        Item item = (Item) getItem(position);
+        TextView titleView = (TextView) view.findViewById(R.id.textTitle);
+        TextView summaryView = (TextView) view.findViewById(R.id.textSummary);
+        ImageView iv = (ImageView) view.findViewById(R.id.imageView);
+
+        titleView.setText(item.title);
+        summaryView.setText(item.summary);
+        if (item.image != null) {
+            iv.setImageBitmap(item.image);
+        } else {
+            iv.setImageDrawable(mContext.getResources().getDrawable(R.drawable.ic_noimage));
+        }
+        return view;
+    }
+
+    @Override
+    public int getViewTypeCount() {
+        return 1;
+    }
+
+    @Override
+    public boolean hasStableIds() {
+        return false;
+    }
+
+    @Override
+    public boolean isEmpty() {
+        return mItems.isEmpty();
+    }
+
+    @Override
+    public void registerDataSetObserver(DataSetObserver observer) {
+        mObserver = observer;
+    }
+
+    @Override
+    public void unregisterDataSetObserver(DataSetObserver observer) {
+        mObserver = null;
+    }
+
+    @Override
+    public boolean areAllItemsEnabled() {
+        return true;
+    }
+
+    @Override
+    public boolean isEnabled(int position) {
+        return true;
+    }
+
+    public String getItemName(int position) {
+        return mItems.get(position).name;
+    }
+}
diff --git a/samples/wearable/RecipeAssistant/Application/src/main/java/com/example/android/wearable/recipeassistant/RecipeService.java b/samples/wearable/RecipeAssistant/Application/src/main/java/com/example/android/wearable/recipeassistant/RecipeService.java
new file mode 100644
index 0000000..607dd28
--- /dev/null
+++ b/samples/wearable/RecipeAssistant/Application/src/main/java/com/example/android/wearable/recipeassistant/RecipeService.java
@@ -0,0 +1,80 @@
+package com.example.android.wearable.recipeassistant;
+
+import android.app.Notification;
+import android.app.Service;
+import android.content.Intent;
+import android.graphics.Bitmap;
+import android.os.Binder;
+import android.os.IBinder;
+import android.support.v4.app.NotificationManagerCompat;
+import android.support.v4.app.NotificationCompat;
+
+import java.util.ArrayList;
+
+public class RecipeService extends Service {
+    private NotificationManagerCompat mNotificationManager;
+    private Binder mBinder = new LocalBinder();
+    private Recipe mRecipe;
+
+    public class LocalBinder extends Binder {
+        RecipeService getService() {
+            return RecipeService.this;
+        }
+    }
+
+    @Override
+    public void onCreate() {
+        mNotificationManager = NotificationManagerCompat.from(this);
+    }
+
+    @Override
+    public IBinder onBind(Intent intent) {
+        return mBinder;
+    }
+
+    @Override
+    public int onStartCommand(Intent intent, int flags, int startId) {
+        if (intent.getAction().equals(Constants.ACTION_START_COOKING)) {
+            createNotification(intent);
+            return START_STICKY;
+        }
+        return START_NOT_STICKY;
+    }
+
+    private void createNotification(Intent intent) {
+        mRecipe = Recipe.fromBundle(intent.getBundleExtra(Constants.EXTRA_RECIPE));
+        ArrayList<Notification> notificationPages = new ArrayList<Notification>();
+
+        int stepCount = mRecipe.recipeSteps.size();
+
+        for (int i = 0; i < stepCount; ++i) {
+            Recipe.RecipeStep recipeStep = mRecipe.recipeSteps.get(i);
+            NotificationCompat.BigTextStyle style = new NotificationCompat.BigTextStyle();
+            style.bigText(recipeStep.stepText);
+            style.setBigContentTitle(String.format(
+                    getResources().getString(R.string.step_count), i + 1, stepCount));
+            style.setSummaryText("");
+            NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
+            builder.setStyle(style);
+            notificationPages.add(builder.build());
+        }
+
+        NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
+
+        if (mRecipe.recipeImage != null) {
+            Bitmap recipeImage = Bitmap.createScaledBitmap(
+                    AssetUtils.loadBitmapAsset(this, mRecipe.recipeImage),
+                    Constants.NOTIFICATION_IMAGE_WIDTH, Constants.NOTIFICATION_IMAGE_HEIGHT, false);
+            builder.setLargeIcon(recipeImage);
+        }
+        builder.setContentTitle(mRecipe.titleText);
+        builder.setContentText(mRecipe.summaryText);
+        builder.setSmallIcon(R.mipmap.ic_notification_recipe);
+
+        Notification notification = builder
+                .extend(new NotificationCompat.WearableExtender()
+                        .addPages(notificationPages))
+                .build();
+        mNotificationManager.notify(Constants.NOTIFICATION_ID, notification);
+    }
+}
diff --git a/samples/wearable/RecipeAssistant/Application/src/main/res/drawable-hdpi/ic_noimage.png b/samples/wearable/RecipeAssistant/Application/src/main/res/drawable-hdpi/ic_noimage.png
new file mode 100644
index 0000000..7bba7ab
--- /dev/null
+++ b/samples/wearable/RecipeAssistant/Application/src/main/res/drawable-hdpi/ic_noimage.png
Binary files differ
diff --git a/samples/wearable/RecipeAssistant/Application/src/main/res/drawable-mdpi/ic_noimage.png b/samples/wearable/RecipeAssistant/Application/src/main/res/drawable-mdpi/ic_noimage.png
new file mode 100644
index 0000000..a5ad26f
--- /dev/null
+++ b/samples/wearable/RecipeAssistant/Application/src/main/res/drawable-mdpi/ic_noimage.png
Binary files differ
diff --git a/samples/wearable/RecipeAssistant/Application/src/main/res/drawable-xhdpi/ic_noimage.png b/samples/wearable/RecipeAssistant/Application/src/main/res/drawable-xhdpi/ic_noimage.png
new file mode 100644
index 0000000..8b631d1
--- /dev/null
+++ b/samples/wearable/RecipeAssistant/Application/src/main/res/drawable-xhdpi/ic_noimage.png
Binary files differ
diff --git a/samples/wearable/RecipeAssistant/Application/src/main/res/layout/list_item.xml b/samples/wearable/RecipeAssistant/Application/src/main/res/layout/list_item.xml
new file mode 100644
index 0000000..421d057
--- /dev/null
+++ b/samples/wearable/RecipeAssistant/Application/src/main/res/layout/list_item.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:layout_marginBottom="16dp"
+    android:orientation="vertical" >
+
+    <ImageView
+        android:id="@+id/imageView"
+        android:layout_width="fill_parent"
+        android:layout_height="300dp"
+        android:layout_alignParentLeft="true"
+        android:layout_alignParentTop="true"
+        android:layout_marginBottom="16dp"
+        android:background="@color/list_image_bg_color"
+        android:src="@drawable/ic_noimage" />
+
+    <LinearLayout
+        android:layout_width="fill_parent"
+        android:layout_height="wrap_content"
+        android:layout_alignBottom="@+id/imageView"
+        android:layout_alignParentLeft="true"
+        android:background="@color/list_text_bg_color"
+        android:orientation="vertical" >
+
+        <TextView
+            android:id="@+id/textTitle"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginBottom="8dp"
+            android:layout_marginLeft="8dp"
+            android:textAppearance="@style/RecipeTitleFont" />
+
+        <TextView
+            android:id="@+id/textSummary"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginBottom="16dp"
+            android:layout_marginLeft="16dp"
+            android:textAppearance="@style/RecipeSummaryFont" />
+    </LinearLayout>
+
+</RelativeLayout>
\ No newline at end of file
diff --git a/samples/wearable/RecipeAssistant/Application/src/main/res/layout/recipe.xml b/samples/wearable/RecipeAssistant/Application/src/main/res/layout/recipe.xml
new file mode 100644
index 0000000..220aac2
--- /dev/null
+++ b/samples/wearable/RecipeAssistant/Application/src/main/res/layout/recipe.xml
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="utf-8"?>
+<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent" >
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="vertical" >
+
+        <ImageView
+            android:id="@+id/recipeImageView"
+            android:layout_width="fill_parent"
+            android:layout_height="300dp"
+            android:layout_marginBottom="16dp"
+            android:background="@color/list_image_bg_color"
+            android:src="@drawable/ic_noimage" />
+
+        <LinearLayout
+            android:layout_width="fill_parent"
+            android:layout_height="wrap_content"
+            android:background="@color/list_text_bg_color"
+            android:orientation="vertical" >
+
+            <TextView
+                android:id="@+id/recipeTextTitle"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginBottom="8dp"
+                android:layout_marginLeft="8dp"
+                android:textAppearance="@style/RecipeHugeFont" />
+
+            <TextView
+                android:id="@+id/recipeTextSummary"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginBottom="16dp"
+                android:layout_marginLeft="16dp"
+                android:textAppearance="@style/RecipeSummaryFont" />
+        </LinearLayout>
+
+        <TextView
+            android:id="@+id/ingredientsHeader"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginBottom="8dp"
+            android:layout_marginLeft="8dp"
+            android:text="@string/ingredients"
+            android:textAppearance="@style/RecipeTitleFont"
+            android:visibility="gone" />
+
+        <TextView
+            android:id="@+id/textIngredients"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginBottom="8dp"
+            android:layout_marginLeft="8dp"
+            android:textAppearance="@style/RecipeSummaryFont" />
+
+        <TextView
+            android:id="@+id/stepsHeader"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginBottom="8dp"
+            android:layout_marginLeft="8dp"
+            android:text="@string/steps"
+            android:textAppearance="@style/RecipeTitleFont"
+            android:visibility="gone" />
+
+        <LinearLayout
+            android:id="@+id/layoutSteps"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_margin="8dp"
+            android:orientation="vertical"
+            android:textAppearance="@style/RecipeSummaryFont" >
+        </LinearLayout>
+    </LinearLayout>
+
+</ScrollView>
\ No newline at end of file
diff --git a/samples/wearable/RecipeAssistant/Application/src/main/res/layout/step_item.xml b/samples/wearable/RecipeAssistant/Application/src/main/res/layout/step_item.xml
new file mode 100644
index 0000000..2eee919
--- /dev/null
+++ b/samples/wearable/RecipeAssistant/Application/src/main/res/layout/step_item.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:layout_marginBottom="32dp"
+    android:orientation="vertical" >
+
+    <ImageView
+        android:id="@+id/stepImageView"
+        android:layout_width="fill_parent"
+        android:layout_height="300dp"
+        android:layout_alignParentLeft="true"
+        android:layout_alignParentTop="true"
+        android:layout_marginBottom="16dp"
+        android:background="@color/list_image_bg_color"
+        android:src="@drawable/ic_noimage" />
+
+    <LinearLayout
+        android:layout_width="fill_parent"
+        android:layout_height="wrap_content"
+        android:layout_alignBottom="@+id/stepImageView"
+        android:layout_alignParentLeft="true"
+        android:background="@color/list_text_bg_color"
+        android:orientation="vertical" >
+
+        <TextView
+            android:id="@+id/textStep"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginBottom="8dp"
+            android:layout_marginLeft="8dp"
+            android:layout_marginRight="8dp"
+            android:textAppearance="@style/RecipeTitleFont" />
+    </LinearLayout>
+
+</RelativeLayout>
\ No newline at end of file
diff --git a/samples/wearable/RecipeAssistant/Application/src/main/res/menu/main.xml b/samples/wearable/RecipeAssistant/Application/src/main/res/menu/main.xml
new file mode 100644
index 0000000..fd1ead7
--- /dev/null
+++ b/samples/wearable/RecipeAssistant/Application/src/main/res/menu/main.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<menu xmlns:android="http://schemas.android.com/apk/res/android">
+    <item
+        android:id="@+id/action_cook"
+        android:orderInCategory="100"
+        android:showAsAction="always|withText"
+        android:title="@string/action_cook" />
+</menu>
\ No newline at end of file
diff --git a/samples/wearable/RecipeAssistant/Application/src/main/res/mipmap-hdpi/ic_app_recipe.png b/samples/wearable/RecipeAssistant/Application/src/main/res/mipmap-hdpi/ic_app_recipe.png
new file mode 100644
index 0000000..8ceb869
--- /dev/null
+++ b/samples/wearable/RecipeAssistant/Application/src/main/res/mipmap-hdpi/ic_app_recipe.png
Binary files differ
diff --git a/samples/wearable/RecipeAssistant/Application/src/main/res/mipmap-hdpi/ic_notification_recipe.png b/samples/wearable/RecipeAssistant/Application/src/main/res/mipmap-hdpi/ic_notification_recipe.png
new file mode 100644
index 0000000..844d8ed
--- /dev/null
+++ b/samples/wearable/RecipeAssistant/Application/src/main/res/mipmap-hdpi/ic_notification_recipe.png
Binary files differ
diff --git a/samples/wearable/RecipeAssistant/Application/src/main/res/mipmap-mdpi/ic_app_recipe.png b/samples/wearable/RecipeAssistant/Application/src/main/res/mipmap-mdpi/ic_app_recipe.png
new file mode 100644
index 0000000..b884789
--- /dev/null
+++ b/samples/wearable/RecipeAssistant/Application/src/main/res/mipmap-mdpi/ic_app_recipe.png
Binary files differ
diff --git a/samples/wearable/RecipeAssistant/Application/src/main/res/mipmap-mdpi/ic_notification_recipe.png b/samples/wearable/RecipeAssistant/Application/src/main/res/mipmap-mdpi/ic_notification_recipe.png
new file mode 100644
index 0000000..3f3f58c
--- /dev/null
+++ b/samples/wearable/RecipeAssistant/Application/src/main/res/mipmap-mdpi/ic_notification_recipe.png
Binary files differ
diff --git a/samples/wearable/RecipeAssistant/Application/src/main/res/mipmap-xhdpi/ic_app_recipe.png b/samples/wearable/RecipeAssistant/Application/src/main/res/mipmap-xhdpi/ic_app_recipe.png
new file mode 100644
index 0000000..2a27c32
--- /dev/null
+++ b/samples/wearable/RecipeAssistant/Application/src/main/res/mipmap-xhdpi/ic_app_recipe.png
Binary files differ
diff --git a/samples/wearable/RecipeAssistant/Application/src/main/res/mipmap-xhdpi/ic_notification_recipe.png b/samples/wearable/RecipeAssistant/Application/src/main/res/mipmap-xhdpi/ic_notification_recipe.png
new file mode 100644
index 0000000..5a99b7c
--- /dev/null
+++ b/samples/wearable/RecipeAssistant/Application/src/main/res/mipmap-xhdpi/ic_notification_recipe.png
Binary files differ
diff --git a/samples/wearable/RecipeAssistant/Application/src/main/res/mipmap-xxhdpi/ic_app_recipe.png b/samples/wearable/RecipeAssistant/Application/src/main/res/mipmap-xxhdpi/ic_app_recipe.png
new file mode 100644
index 0000000..b10c770
--- /dev/null
+++ b/samples/wearable/RecipeAssistant/Application/src/main/res/mipmap-xxhdpi/ic_app_recipe.png
Binary files differ
diff --git a/samples/wearable/RecipeAssistant/Application/src/main/res/mipmap-xxhdpi/ic_notification_recipe.png b/samples/wearable/RecipeAssistant/Application/src/main/res/mipmap-xxhdpi/ic_notification_recipe.png
new file mode 100644
index 0000000..799726d
--- /dev/null
+++ b/samples/wearable/RecipeAssistant/Application/src/main/res/mipmap-xxhdpi/ic_notification_recipe.png
Binary files differ
diff --git a/samples/wearable/RecipeAssistant/Application/src/main/res/mipmap-xxxhdpi/ic_app_recipe.png b/samples/wearable/RecipeAssistant/Application/src/main/res/mipmap-xxxhdpi/ic_app_recipe.png
new file mode 100644
index 0000000..606f07f
--- /dev/null
+++ b/samples/wearable/RecipeAssistant/Application/src/main/res/mipmap-xxxhdpi/ic_app_recipe.png
Binary files differ
diff --git a/samples/wearable/RecipeAssistant/Application/src/main/res/mipmap-xxxhdpi/ic_notification_recipe.png b/samples/wearable/RecipeAssistant/Application/src/main/res/mipmap-xxxhdpi/ic_notification_recipe.png
new file mode 100644
index 0000000..30e28a8
--- /dev/null
+++ b/samples/wearable/RecipeAssistant/Application/src/main/res/mipmap-xxxhdpi/ic_notification_recipe.png
Binary files differ
diff --git a/samples/wearable/RecipeAssistant/Application/src/main/res/values/colors.xml b/samples/wearable/RecipeAssistant/Application/src/main/res/values/colors.xml
new file mode 100644
index 0000000..6e4689a
--- /dev/null
+++ b/samples/wearable/RecipeAssistant/Application/src/main/res/values/colors.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <color name="list_text_bg_color">#dfff</color>
+    <color name="list_image_bg_color">#6aaa</color>
+</resources>
diff --git a/samples/wearable/RecipeAssistant/Application/src/main/res/values/strings.xml b/samples/wearable/RecipeAssistant/Application/src/main/res/values/strings.xml
new file mode 100644
index 0000000..e99a612
--- /dev/null
+++ b/samples/wearable/RecipeAssistant/Application/src/main/res/values/strings.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <string name="app_name">Recipe Assistant</string>
+    <string name="action_settings">Settings</string>
+    <string name="action_cook">Start</string>
+    <string name="steps">Steps</string>
+    <string name="ingredients">Ingredients</string>
+    <string name="step_count">Step %1$d of %2$d</string>
+</resources>
diff --git a/samples/wearable/RecipeAssistant/Application/src/main/res/values/styles.xml b/samples/wearable/RecipeAssistant/Application/src/main/res/values/styles.xml
new file mode 100644
index 0000000..93071e2
--- /dev/null
+++ b/samples/wearable/RecipeAssistant/Application/src/main/res/values/styles.xml
@@ -0,0 +1,23 @@
+<resources xmlns:android="http://schemas.android.com/apk/res/android">
+    <style name="RecipeTitleFont" parent="@android:style/TextAppearance.Large">
+        <item name="android:layout_width">fill_parent</item>
+        <item name="android:layout_height">wrap_content</item>
+        <item name="android:textColor">#333333</item>
+        <item name="android:fontFamily">sans-serif</item>
+    </style>
+
+    <style name="RecipeHugeFont" parent="@android:style/TextAppearance.Large">
+        <item name="android:layout_width">fill_parent</item>
+        <item name="android:layout_height">wrap_content</item>
+        <item name="android:textColor">#333333</item>
+        <item name="android:fontFamily">sans-serif</item>
+        <item name="android:textSize">20pt</item>
+    </style>
+
+    <style name="RecipeSummaryFont" parent="@android:style/TextAppearance.Medium">
+        <item name="android:layout_width">fill_parent</item>
+        <item name="android:layout_height">wrap_content</item>
+        <item name="android:textColor">#333333</item>
+        <item name="android:fontFamily">sans-serif</item>
+    </style>
+</resources>
\ No newline at end of file
diff --git a/samples/wearable/RecipeAssistant/_index.html b/samples/wearable/RecipeAssistant/_index.html
new file mode 100644
index 0000000..3dce7d3
--- /dev/null
+++ b/samples/wearable/RecipeAssistant/_index.html
@@ -0,0 +1,8 @@
+<p>This phone application uses the enhanced notifications API to display
+recipe instructions using paged notifications. After starting the application
+on your phone, you can browse from a short list of recipes and select one to
+view. Each recipe is broken down into a number of steps; when ready, you can
+click on the START action in the action bar to send the steps to the wearable.
+On the wearable device, the steps are displayed as a multi-page notification,
+with one page for each step in the recipe.</p>
+
diff --git a/samples/wearable/RecipeAssistant/build.gradle b/samples/wearable/RecipeAssistant/build.gradle
new file mode 100644
index 0000000..4c8f6d8
--- /dev/null
+++ b/samples/wearable/RecipeAssistant/build.gradle
@@ -0,0 +1,16 @@
+// Top-level build file where you can add configuration options common to all sub-projects/modules.
+
+buildscript {
+    repositories {
+        mavenCentral()
+    }
+    dependencies {
+        classpath 'com.android.tools.build:gradle:0.11.+'
+    }
+}
+
+allprojects {
+    repositories {
+        mavenCentral()
+    }
+}
diff --git a/samples/wearable/RecipeAssistant/gradle/wrapper/gradle-wrapper.jar b/samples/wearable/RecipeAssistant/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 0000000..5838598
--- /dev/null
+++ b/samples/wearable/RecipeAssistant/gradle/wrapper/gradle-wrapper.jar
Binary files differ
diff --git a/samples/wearable/RecipeAssistant/gradle/wrapper/gradle-wrapper.properties b/samples/wearable/RecipeAssistant/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..e83e460
--- /dev/null
+++ b/samples/wearable/RecipeAssistant/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Fri Mar 14 14:02:22 PDT 2014
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=http\://services.gradle.org/distributions/gradle-1.11-all.zip
diff --git a/samples/wearable/RecipeAssistant/gradlew b/samples/wearable/RecipeAssistant/gradlew
new file mode 100755
index 0000000..91a7e26
--- /dev/null
+++ b/samples/wearable/RecipeAssistant/gradlew
@@ -0,0 +1,164 @@
+#!/usr/bin/env bash
+
+##############################################################################
+##
+##  Gradle start up script for UN*X
+##
+##############################################################################
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn ( ) {
+    echo "$*"
+}
+
+die ( ) {
+    echo
+    echo "$*"
+    echo
+    exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+case "`uname`" in
+  CYGWIN* )
+    cygwin=true
+    ;;
+  Darwin* )
+    darwin=true
+    ;;
+  MINGW* )
+    msys=true
+    ;;
+esac
+
+# For Cygwin, ensure paths are in UNIX format before anything is touched.
+if $cygwin ; then
+    [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
+fi
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+    ls=`ls -ld "$PRG"`
+    link=`expr "$ls" : '.*-> \(.*\)$'`
+    if expr "$link" : '/.*' > /dev/null; then
+        PRG="$link"
+    else
+        PRG=`dirname "$PRG"`"/$link"
+    fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >&-
+APP_HOME="`pwd -P`"
+cd "$SAVED" >&-
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+        # IBM's JDK on AIX uses strange locations for the executables
+        JAVACMD="$JAVA_HOME/jre/sh/java"
+    else
+        JAVACMD="$JAVA_HOME/bin/java"
+    fi
+    if [ ! -x "$JAVACMD" ] ; then
+        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+    fi
+else
+    JAVACMD="java"
+    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
+    MAX_FD_LIMIT=`ulimit -H -n`
+    if [ $? -eq 0 ] ; then
+        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+            MAX_FD="$MAX_FD_LIMIT"
+        fi
+        ulimit -n $MAX_FD
+        if [ $? -ne 0 ] ; then
+            warn "Could not set maximum file descriptor limit: $MAX_FD"
+        fi
+    else
+        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+    fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+
+    # We build the pattern for arguments to be converted via cygpath
+    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+    SEP=""
+    for dir in $ROOTDIRSRAW ; do
+        ROOTDIRS="$ROOTDIRS$SEP$dir"
+        SEP="|"
+    done
+    OURCYGPATTERN="(^($ROOTDIRS))"
+    # Add a user-defined pattern to the cygpath arguments
+    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+    fi
+    # Now convert the arguments - kludge to limit ourselves to /bin/sh
+    i=0
+    for arg in "$@" ; do
+        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
+
+        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
+            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+        else
+            eval `echo args$i`="\"$arg\""
+        fi
+        i=$((i+1))
+    done
+    case $i in
+        (0) set -- ;;
+        (1) set -- "$args0" ;;
+        (2) set -- "$args0" "$args1" ;;
+        (3) set -- "$args0" "$args1" "$args2" ;;
+        (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+        (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+        (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+        (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+        (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+        (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+    esac
+fi
+
+# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
+function splitJvmOpts() {
+    JVM_OPTS=("$@")
+}
+eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
+JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
+
+exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
diff --git a/samples/wearable/RecipeAssistant/gradlew.bat b/samples/wearable/RecipeAssistant/gradlew.bat
new file mode 100644
index 0000000..aec9973
--- /dev/null
+++ b/samples/wearable/RecipeAssistant/gradlew.bat
@@ -0,0 +1,90 @@
+@if "%DEBUG%" == "" @echo off

+@rem ##########################################################################

+@rem

+@rem  Gradle startup script for Windows

+@rem

+@rem ##########################################################################

+

+@rem Set local scope for the variables with windows NT shell

+if "%OS%"=="Windows_NT" setlocal

+

+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.

+set DEFAULT_JVM_OPTS=

+

+set DIRNAME=%~dp0

+if "%DIRNAME%" == "" set DIRNAME=.

+set APP_BASE_NAME=%~n0

+set APP_HOME=%DIRNAME%

+

+@rem Find java.exe

+if defined JAVA_HOME goto findJavaFromJavaHome

+

+set JAVA_EXE=java.exe

+%JAVA_EXE% -version >NUL 2>&1

+if "%ERRORLEVEL%" == "0" goto init

+

+echo.

+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.

+echo.

+echo Please set the JAVA_HOME variable in your environment to match the

+echo location of your Java installation.

+

+goto fail

+

+:findJavaFromJavaHome

+set JAVA_HOME=%JAVA_HOME:"=%

+set JAVA_EXE=%JAVA_HOME%/bin/java.exe

+

+if exist "%JAVA_EXE%" goto init

+

+echo.

+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%

+echo.

+echo Please set the JAVA_HOME variable in your environment to match the

+echo location of your Java installation.

+

+goto fail

+

+:init

+@rem Get command-line arguments, handling Windowz variants

+

+if not "%OS%" == "Windows_NT" goto win9xME_args

+if "%@eval[2+2]" == "4" goto 4NT_args

+

+:win9xME_args

+@rem Slurp the command line arguments.

+set CMD_LINE_ARGS=

+set _SKIP=2

+

+:win9xME_args_slurp

+if "x%~1" == "x" goto execute

+

+set CMD_LINE_ARGS=%*

+goto execute

+

+:4NT_args

+@rem Get arguments from the 4NT Shell from JP Software

+set CMD_LINE_ARGS=%$

+

+:execute

+@rem Setup the command line

+

+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar

+

+@rem Execute Gradle

+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%

+

+:end

+@rem End local scope for the variables with windows NT shell

+if "%ERRORLEVEL%"=="0" goto mainEnd

+

+:fail

+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of

+rem the _cmd.exe /c_ return code!

+if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1

+exit /b 1

+

+:mainEnd

+if "%OS%"=="Windows_NT" endlocal

+

+:omega

diff --git a/samples/wearable/RecipeAssistant/settings.gradle b/samples/wearable/RecipeAssistant/settings.gradle
new file mode 100644
index 0000000..aa94981
--- /dev/null
+++ b/samples/wearable/RecipeAssistant/settings.gradle
@@ -0,0 +1 @@
+include 'Application'
\ No newline at end of file
diff --git a/samples/wearable/SkeletonWearableApp/Wearable/build.gradle b/samples/wearable/SkeletonWearableApp/Wearable/build.gradle
new file mode 100644
index 0000000..2a52030
--- /dev/null
+++ b/samples/wearable/SkeletonWearableApp/Wearable/build.gradle
@@ -0,0 +1,25 @@
+apply plugin: 'android'
+
+android {
+    compileSdkVersion 20
+    buildToolsVersion '20'
+
+    defaultConfig {
+        minSdkVersion 20
+        targetSdkVersion 20
+        versionCode 1
+        versionName "1.0"
+    }
+
+    buildTypes {
+        release {
+            runProguard false
+            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
+        }
+    }
+}
+
+dependencies {
+    compile "com.android.support:support-v13:20.0.+"
+    compile "com.google.android.support:wearable:1.0.+"
+}
diff --git a/samples/wearable/SkeletonWearableApp/Wearable/proguard-rules.txt b/samples/wearable/SkeletonWearableApp/Wearable/proguard-rules.txt
new file mode 100644
index 0000000..2ddbcfc
--- /dev/null
+++ b/samples/wearable/SkeletonWearableApp/Wearable/proguard-rules.txt
@@ -0,0 +1,21 @@
+# To enable ProGuard in your project, edit project.properties
+# to define the proguard.config property as described in that file.
+#
+# Add project specific ProGuard rules here.
+# By default, the flags in this file are appended to flags specified
+# in ${sdk.dir}/tools/proguard/proguard-android.txt
+# You can edit the include path and order by changing the ProGuard
+# include property in project.properties.
+#
+# For more details, see
+#   http://developer.android.com/guide/developing/tools/proguard.html
+
+# Add any project specific keep options here:
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+#   public *;
+#}
+-dontwarn android.support.wearable.view.DelayedConfirmationView
diff --git a/samples/wearable/SkeletonWearableApp/Wearable/src/main/AndroidManifest.xml b/samples/wearable/SkeletonWearableApp/Wearable/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..cd68406
--- /dev/null
+++ b/samples/wearable/SkeletonWearableApp/Wearable/src/main/AndroidManifest.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+        package="com.example.android.google.wearable.app" >
+
+    <uses-sdk android:minSdkVersion="20" android:targetSdkVersion="20" />
+
+    <application
+            android:allowBackup="true"
+            android:icon="@drawable/ic_launcher"
+            android:label="@string/app_name"
+            android:theme="@android:style/Theme.DeviceDefault">
+        <activity
+            android:name="com.example.android.google.wearable.app.MainActivity"
+            android:label="@string/app_name">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN"/>
+                <category android:name="android.intent.category.LAUNCHER"/>
+            </intent-filter>
+            <intent-filter>
+                <action android:name="com.google.android.clockwork.example.SKELETON"/>
+                <category android:name="android.intent.category.DEFAULT"/>
+            </intent-filter>
+        </activity>
+        <activity
+            android:name="com.example.android.google.wearable.app.GridExampleActivity">
+            <intent-filter>
+                <action android:name="com.example.android.google.wearable.app.GRID_ACTIVITY"/>
+                <category android:name="android.intent.category.DEFAULT"/>
+            </intent-filter>
+        </activity>
+    </application>
+
+</manifest>
diff --git a/samples/wearable/SkeletonWearableApp/Wearable/src/main/java/com/example/android/google/wearable/app/GridExampleActivity.java b/samples/wearable/SkeletonWearableApp/Wearable/src/main/java/com/example/android/google/wearable/app/GridExampleActivity.java
new file mode 100644
index 0000000..0a88c04
--- /dev/null
+++ b/samples/wearable/SkeletonWearableApp/Wearable/src/main/java/com/example/android/google/wearable/app/GridExampleActivity.java
@@ -0,0 +1,108 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package com.example.android.google.wearable.app;
+
+import android.app.Activity;
+import android.app.Fragment;
+import android.app.FragmentManager;
+import android.graphics.Bitmap;
+import android.graphics.Canvas;
+import android.graphics.Color;
+import android.graphics.Paint;
+import android.graphics.Point;
+import android.graphics.Typeface;
+import android.os.Bundle;
+import android.support.wearable.view.CardFragment;
+import android.support.wearable.view.FragmentGridPagerAdapter;
+import android.support.wearable.view.GridViewPager;
+import android.support.wearable.view.ImageReference;
+import java.util.HashMap;
+import java.util.Map;
+
+public class GridExampleActivity extends Activity {
+    private static final int NUM_ROWS = 10;
+    private static final int NUM_COLS = 3;
+
+    MainAdapter mAdapter;
+    GridViewPager mPager;
+
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.grid_activity);
+        mPager = (GridViewPager) findViewById(R.id.fragment_container);
+        mAdapter = new MainAdapter(getFragmentManager());
+        mPager.setAdapter(mAdapter);
+
+    }
+
+    private static class MainAdapter extends FragmentGridPagerAdapter{
+        Map<Point, ImageReference> mBackgrounds = new HashMap<Point, ImageReference>();
+
+        public MainAdapter(FragmentManager fm) {
+            super(fm);
+        }
+
+        @Override
+        public int getRowCount() {
+            return NUM_ROWS;
+        }
+
+        @Override
+        public int getColumnCount(int rowNum) {
+            return NUM_COLS;
+        }
+
+        @Override
+        public Fragment getFragment(int rowNum, int colNum) {
+            return MainFragment.newInstance(rowNum, colNum);
+        }
+
+        @Override
+        public ImageReference getBackground(int row, int column) {
+            Point pt = new Point(column, row);
+            ImageReference ref = mBackgrounds.get(pt);
+            if (ref == null) {
+                Bitmap bm = Bitmap.createBitmap(200, 200, Bitmap.Config.ARGB_8888);
+                Canvas c = new Canvas(bm);
+                Paint p = new Paint();
+                // Clear previous image.
+                c.drawRect(0, 0, 200, 200, p);
+                p.setAntiAlias(true);
+                p.setTypeface(Typeface.DEFAULT);
+                p.setTextSize(64);
+                p.setColor(Color.LTGRAY);
+                c.drawText(column+ "-" + row, 20, 100, p);
+                ref = ImageReference.forBitmap(bm);
+                mBackgrounds.put(pt, ref);
+            }
+            return ref;
+        }
+    }
+
+    public static class MainFragment extends CardFragment {
+        private static MainFragment newInstance(int rowNum, int colNum) {
+            Bundle args = new Bundle();
+            args.putString(CardFragment.KEY_TITLE, "Row:" + rowNum);
+            args.putString(CardFragment.KEY_TEXT, "Col:" + colNum);
+            MainFragment f = new MainFragment();
+            f.setArguments(args);
+            return f;
+        }
+    }
+}
diff --git a/samples/wearable/SkeletonWearableApp/Wearable/src/main/java/com/example/android/google/wearable/app/MainActivity.java b/samples/wearable/SkeletonWearableApp/Wearable/src/main/java/com/example/android/google/wearable/app/MainActivity.java
new file mode 100644
index 0000000..11bcee7
--- /dev/null
+++ b/samples/wearable/SkeletonWearableApp/Wearable/src/main/java/com/example/android/google/wearable/app/MainActivity.java
@@ -0,0 +1,114 @@
+package com.example.android.google.wearable.app;
+
+import android.app.Activity;
+import android.app.Notification;
+import android.app.PendingIntent;
+import android.content.Intent;
+import android.os.Bundle;
+import android.support.v4.app.NotificationCompat;
+import android.support.v4.app.NotificationManagerCompat;
+import android.support.v4.view.GestureDetectorCompat;
+import android.support.wearable.view.DelayedConfirmationView;
+import android.support.wearable.view.DismissOverlayView;
+import android.util.Log;
+import android.view.GestureDetector;
+import android.view.MotionEvent;
+import android.view.View;
+import android.widget.ScrollView;
+
+
+public class MainActivity extends Activity
+        implements DelayedConfirmationView.DelayedConfirmationListener {
+    private static final String TAG = "MainActivity";
+
+    private static final int NOTIFICATION_ID = 1;
+    private static final int NOTIFICATION_REQUEST_CODE = 1;
+    private static final int NUM_SECONDS = 5;
+
+    private GestureDetectorCompat mGestureDetector;
+    private DismissOverlayView mDismissOverlayView;
+
+    @Override
+    public void onCreate(Bundle b) {
+        super.onCreate(b);
+        setContentView(R.layout.main_activity);
+
+        mDismissOverlayView = (DismissOverlayView) findViewById(R.id.dismiss_overlay);
+        mDismissOverlayView.setIntroText(R.string.intro_text);
+        mDismissOverlayView.showIntroIfNecessary();
+        mGestureDetector = new GestureDetectorCompat(this, new LongPressListener());
+    }
+
+    @Override
+    public boolean dispatchTouchEvent(MotionEvent event) {
+        return mGestureDetector.onTouchEvent(event) || super.dispatchTouchEvent(event);
+    }
+
+    private class LongPressListener extends GestureDetector.SimpleOnGestureListener {
+        @Override
+        public void onLongPress(MotionEvent event) {
+            mDismissOverlayView.show();
+        }
+    }
+
+    /**
+     * Handles the button to launch a notification.
+     */
+    public void showNotification(View view) {
+        Notification notification = new NotificationCompat.Builder(this)
+                .setContentTitle(getString(R.string.notification_title))
+                .setContentText(getString(R.string.notification_title))
+                .setSmallIcon(R.drawable.ic_launcher)
+                .addAction(R.drawable.ic_launcher,
+                        getText(R.string.action_launch_activity),
+                        PendingIntent.getActivity(this, NOTIFICATION_REQUEST_CODE,
+                                new Intent(this, GridExampleActivity.class),
+                                PendingIntent.FLAG_UPDATE_CURRENT))
+                .build();
+        NotificationManagerCompat.from(this).notify(NOTIFICATION_ID, notification);
+        finish();
+    }
+
+
+    /**
+     * Handles the button press to finish this activity and take the user back to the Home.
+     */
+    public void onFinishActivity(View view) {
+        setResult(RESULT_OK);
+        finish();
+    }
+
+    /**
+     * Handles the button to start a DelayedConfirmationView timer.
+     */
+    public void onStartTimer(View view) {
+        DelayedConfirmationView delayedConfirmationView = (DelayedConfirmationView)
+                findViewById(R.id.timer);
+        delayedConfirmationView.setTotalTimeMs(NUM_SECONDS * 1000);
+        delayedConfirmationView.setListener(this);
+        delayedConfirmationView.start();
+        scroll(View.FOCUS_DOWN);
+    }
+
+    @Override
+    public void onTimerFinished(View v) {
+        Log.d(TAG, "onTimerFinished is called.");
+        scroll(View.FOCUS_UP);
+    }
+
+    @Override
+    public void onTimerSelected(View v) {
+        Log.d(TAG, "onTimerSelected is called.");
+        scroll(View.FOCUS_UP);
+    }
+
+    private void scroll(final int scrollDirection) {
+        final ScrollView scrollView = (ScrollView) findViewById(R.id.scroll);
+        scrollView.post(new Runnable() {
+            @Override
+            public void run() {
+                scrollView.fullScroll(scrollDirection);
+            }
+        });
+    }
+}
\ No newline at end of file
diff --git a/samples/wearable/SkeletonWearableApp/Wearable/src/main/res/drawable-hdpi/ic_launcher.png b/samples/wearable/SkeletonWearableApp/Wearable/src/main/res/drawable-hdpi/ic_launcher.png
new file mode 100755
index 0000000..589f229
--- /dev/null
+++ b/samples/wearable/SkeletonWearableApp/Wearable/src/main/res/drawable-hdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/SkeletonWearableApp/Wearable/src/main/res/drawable-mdpi/ic_launcher.png b/samples/wearable/SkeletonWearableApp/Wearable/src/main/res/drawable-mdpi/ic_launcher.png
new file mode 100755
index 0000000..77dd571
--- /dev/null
+++ b/samples/wearable/SkeletonWearableApp/Wearable/src/main/res/drawable-mdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/SkeletonWearableApp/Wearable/src/main/res/drawable-xhdpi/ic_launcher.png b/samples/wearable/SkeletonWearableApp/Wearable/src/main/res/drawable-xhdpi/ic_launcher.png
new file mode 100755
index 0000000..fe34ebe
--- /dev/null
+++ b/samples/wearable/SkeletonWearableApp/Wearable/src/main/res/drawable-xhdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/SkeletonWearableApp/Wearable/src/main/res/drawable-xxhdpi/ic_launcher.png b/samples/wearable/SkeletonWearableApp/Wearable/src/main/res/drawable-xxhdpi/ic_launcher.png
new file mode 100755
index 0000000..ab80bcd
--- /dev/null
+++ b/samples/wearable/SkeletonWearableApp/Wearable/src/main/res/drawable-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/SkeletonWearableApp/Wearable/src/main/res/layout/grid_activity.xml b/samples/wearable/SkeletonWearableApp/Wearable/src/main/res/layout/grid_activity.xml
new file mode 100644
index 0000000..3ee687c
--- /dev/null
+++ b/samples/wearable/SkeletonWearableApp/Wearable/src/main/res/layout/grid_activity.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<android.support.wearable.view.GridViewPager
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/fragment_container"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent" />
diff --git a/samples/wearable/SkeletonWearableApp/Wearable/src/main/res/layout/main_activity.xml b/samples/wearable/SkeletonWearableApp/Wearable/src/main/res/layout/main_activity.xml
new file mode 100644
index 0000000..7b92da2
--- /dev/null
+++ b/samples/wearable/SkeletonWearableApp/Wearable/src/main/res/layout/main_activity.xml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<FrameLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <ScrollView
+        android:id="@+id/scroll"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:orientation="vertical"
+        android:background="#000000"
+        android:fillViewport="true">
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="vertical">
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginBottom="2dp"
+                android:text="@string/main_activity_title_text"
+                android:textSize="36sp"
+                android:textColor="#006600"/>
+
+            <Button
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:onClick="showNotification"
+                android:text="@string/show_notification" />
+
+            <Button
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:onClick="onFinishActivity"
+                android:text="@string/finish_activity" />
+
+            <Button
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:id="@+id/start_timer_button"
+                android:onClick="onStartTimer"
+                android:text="@string/start_timer" />
+
+            <android.support.wearable.view.DelayedConfirmationView
+                xmlns:app="http://schemas.android.com/apk/res-auto"
+                android:id="@+id/timer"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center"
+                android:src="@drawable/ic_launcher"
+                app:circle_color="@color/blue"
+                app:circle_padding="@dimen/circle_padding"
+                app:circle_border_width="@dimen/circle_border_normal_width"
+                app:circle_border_color="@color/white"
+                app:circle_radius="@dimen/circle_radius"/>
+
+        </LinearLayout>
+
+    </ScrollView>
+
+    <android.support.wearable.view.DismissOverlayView
+        android:id="@+id/dismiss_overlay"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent" />
+
+</FrameLayout>
diff --git a/samples/wearable/SkeletonWearableApp/Wearable/src/main/res/values/dimens.xml b/samples/wearable/SkeletonWearableApp/Wearable/src/main/res/values/dimens.xml
new file mode 100644
index 0000000..ea93886
--- /dev/null
+++ b/samples/wearable/SkeletonWearableApp/Wearable/src/main/res/values/dimens.xml
@@ -0,0 +1,5 @@
+<resources>
+    <dimen name="circle_border_normal_width">10dp</dimen>
+    <dimen name="circle_padding">5dp</dimen>
+    <dimen name="circle_radius">50dp</dimen>
+</resources>
diff --git a/samples/wearable/SkeletonWearableApp/Wearable/src/main/res/values/strings.xml b/samples/wearable/SkeletonWearableApp/Wearable/src/main/res/values/strings.xml
new file mode 100644
index 0000000..6046af0
--- /dev/null
+++ b/samples/wearable/SkeletonWearableApp/Wearable/src/main/res/values/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+
+    <string name="app_name">Skeleton Wearable App</string>
+    <string name="intro_text">Long press to go back home.</string>
+    <string name="main_activity_title_text"> Main Activity </string>
+    <string name="grid_activity_title_text"> Grid Activity </string>
+    <string name="finish_activity"> Finish Activity </string>
+    <string name="start_timer"> Start Timer (5 sec) </string>
+    <string name="show_notification"> Show Notification </string>
+    <string name="notification_title"> Skeleton App Notification </string>
+    <string name="action_launch_activity">Launch Activity</string>
+</resources>
diff --git a/samples/wearable/SkeletonWearableApp/build.gradle b/samples/wearable/SkeletonWearableApp/build.gradle
new file mode 100644
index 0000000..d9bdcb3
--- /dev/null
+++ b/samples/wearable/SkeletonWearableApp/build.gradle
@@ -0,0 +1,15 @@
+buildscript {
+    repositories {
+        mavenCentral()
+    }
+    dependencies {
+        classpath 'com.android.tools.build:gradle:0.11.+'
+    }
+}
+
+allprojects {
+    repositories {
+        mavenCentral()
+    }
+}
+
diff --git a/samples/wearable/SkeletonWearableApp/gradle.properties b/samples/wearable/SkeletonWearableApp/gradle.properties
new file mode 100644
index 0000000..5d08ba7
--- /dev/null
+++ b/samples/wearable/SkeletonWearableApp/gradle.properties
@@ -0,0 +1,18 @@
+# Project-wide Gradle settings.
+
+# IDE (e.g. Android Studio) users:
+# Settings specified in this file will override any Gradle settings
+# configured through the IDE.
+
+# For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+# Default value: -Xmx10248m -XX:MaxPermSize=256m
+# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
+
+# When configured, Gradle will run in incubating parallel mode.
+# This option should only be used with decoupled projects. More details, visit
+# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
+# org.gradle.parallel=true
\ No newline at end of file
diff --git a/samples/wearable/SkeletonWearableApp/gradle/wrapper/gradle-wrapper.jar b/samples/wearable/SkeletonWearableApp/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 0000000..5838598
--- /dev/null
+++ b/samples/wearable/SkeletonWearableApp/gradle/wrapper/gradle-wrapper.jar
Binary files differ
diff --git a/samples/wearable/SkeletonWearableApp/gradle/wrapper/gradle-wrapper.properties b/samples/wearable/SkeletonWearableApp/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..e83e460
--- /dev/null
+++ b/samples/wearable/SkeletonWearableApp/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Fri Mar 14 14:02:22 PDT 2014
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=http\://services.gradle.org/distributions/gradle-1.11-all.zip
diff --git a/samples/wearable/SkeletonWearableApp/gradlew b/samples/wearable/SkeletonWearableApp/gradlew
new file mode 100755
index 0000000..91a7e26
--- /dev/null
+++ b/samples/wearable/SkeletonWearableApp/gradlew
@@ -0,0 +1,164 @@
+#!/usr/bin/env bash
+
+##############################################################################
+##
+##  Gradle start up script for UN*X
+##
+##############################################################################
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn ( ) {
+    echo "$*"
+}
+
+die ( ) {
+    echo
+    echo "$*"
+    echo
+    exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+case "`uname`" in
+  CYGWIN* )
+    cygwin=true
+    ;;
+  Darwin* )
+    darwin=true
+    ;;
+  MINGW* )
+    msys=true
+    ;;
+esac
+
+# For Cygwin, ensure paths are in UNIX format before anything is touched.
+if $cygwin ; then
+    [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
+fi
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+    ls=`ls -ld "$PRG"`
+    link=`expr "$ls" : '.*-> \(.*\)$'`
+    if expr "$link" : '/.*' > /dev/null; then
+        PRG="$link"
+    else
+        PRG=`dirname "$PRG"`"/$link"
+    fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >&-
+APP_HOME="`pwd -P`"
+cd "$SAVED" >&-
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+        # IBM's JDK on AIX uses strange locations for the executables
+        JAVACMD="$JAVA_HOME/jre/sh/java"
+    else
+        JAVACMD="$JAVA_HOME/bin/java"
+    fi
+    if [ ! -x "$JAVACMD" ] ; then
+        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+    fi
+else
+    JAVACMD="java"
+    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
+    MAX_FD_LIMIT=`ulimit -H -n`
+    if [ $? -eq 0 ] ; then
+        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+            MAX_FD="$MAX_FD_LIMIT"
+        fi
+        ulimit -n $MAX_FD
+        if [ $? -ne 0 ] ; then
+            warn "Could not set maximum file descriptor limit: $MAX_FD"
+        fi
+    else
+        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+    fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+
+    # We build the pattern for arguments to be converted via cygpath
+    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+    SEP=""
+    for dir in $ROOTDIRSRAW ; do
+        ROOTDIRS="$ROOTDIRS$SEP$dir"
+        SEP="|"
+    done
+    OURCYGPATTERN="(^($ROOTDIRS))"
+    # Add a user-defined pattern to the cygpath arguments
+    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+    fi
+    # Now convert the arguments - kludge to limit ourselves to /bin/sh
+    i=0
+    for arg in "$@" ; do
+        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
+
+        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
+            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+        else
+            eval `echo args$i`="\"$arg\""
+        fi
+        i=$((i+1))
+    done
+    case $i in
+        (0) set -- ;;
+        (1) set -- "$args0" ;;
+        (2) set -- "$args0" "$args1" ;;
+        (3) set -- "$args0" "$args1" "$args2" ;;
+        (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+        (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+        (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+        (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+        (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+        (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+    esac
+fi
+
+# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
+function splitJvmOpts() {
+    JVM_OPTS=("$@")
+}
+eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
+JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
+
+exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
diff --git a/samples/wearable/SkeletonWearableApp/gradlew.bat b/samples/wearable/SkeletonWearableApp/gradlew.bat
new file mode 100755
index 0000000..aec9973
--- /dev/null
+++ b/samples/wearable/SkeletonWearableApp/gradlew.bat
@@ -0,0 +1,90 @@
+@if "%DEBUG%" == "" @echo off

+@rem ##########################################################################

+@rem

+@rem  Gradle startup script for Windows

+@rem

+@rem ##########################################################################

+

+@rem Set local scope for the variables with windows NT shell

+if "%OS%"=="Windows_NT" setlocal

+

+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.

+set DEFAULT_JVM_OPTS=

+

+set DIRNAME=%~dp0

+if "%DIRNAME%" == "" set DIRNAME=.

+set APP_BASE_NAME=%~n0

+set APP_HOME=%DIRNAME%

+

+@rem Find java.exe

+if defined JAVA_HOME goto findJavaFromJavaHome

+

+set JAVA_EXE=java.exe

+%JAVA_EXE% -version >NUL 2>&1

+if "%ERRORLEVEL%" == "0" goto init

+

+echo.

+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.

+echo.

+echo Please set the JAVA_HOME variable in your environment to match the

+echo location of your Java installation.

+

+goto fail

+

+:findJavaFromJavaHome

+set JAVA_HOME=%JAVA_HOME:"=%

+set JAVA_EXE=%JAVA_HOME%/bin/java.exe

+

+if exist "%JAVA_EXE%" goto init

+

+echo.

+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%

+echo.

+echo Please set the JAVA_HOME variable in your environment to match the

+echo location of your Java installation.

+

+goto fail

+

+:init

+@rem Get command-line arguments, handling Windowz variants

+

+if not "%OS%" == "Windows_NT" goto win9xME_args

+if "%@eval[2+2]" == "4" goto 4NT_args

+

+:win9xME_args

+@rem Slurp the command line arguments.

+set CMD_LINE_ARGS=

+set _SKIP=2

+

+:win9xME_args_slurp

+if "x%~1" == "x" goto execute

+

+set CMD_LINE_ARGS=%*

+goto execute

+

+:4NT_args

+@rem Get arguments from the 4NT Shell from JP Software

+set CMD_LINE_ARGS=%$

+

+:execute

+@rem Setup the command line

+

+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar

+

+@rem Execute Gradle

+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%

+

+:end

+@rem End local scope for the variables with windows NT shell

+if "%ERRORLEVEL%"=="0" goto mainEnd

+

+:fail

+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of

+rem the _cmd.exe /c_ return code!

+if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1

+exit /b 1

+

+:mainEnd

+if "%OS%"=="Windows_NT" endlocal

+

+:omega

diff --git a/samples/wearable/SkeletonWearableApp/settings.gradle b/samples/wearable/SkeletonWearableApp/settings.gradle
new file mode 100644
index 0000000..1d97d30
--- /dev/null
+++ b/samples/wearable/SkeletonWearableApp/settings.gradle
@@ -0,0 +1 @@
+include ':Wearable'
diff --git a/samples/wearable/Timer/Wearable/build.gradle b/samples/wearable/Timer/Wearable/build.gradle
new file mode 100644
index 0000000..4c5f5e9
--- /dev/null
+++ b/samples/wearable/Timer/Wearable/build.gradle
@@ -0,0 +1,26 @@
+apply plugin: 'android'
+
+android {
+    compileSdkVersion 20
+    buildToolsVersion '20'
+
+    defaultConfig {
+        minSdkVersion 20
+        targetSdkVersion 20
+        versionCode 1
+        versionName "1.0"
+    }
+
+    buildTypes {
+        release {
+            runProguard false
+            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
+        }
+    }
+}
+
+dependencies {
+    compile 'com.google.android.gms:play-services:5.+@aar'
+    compile "com.android.support:support-v4:20.0.+"
+    compile "com.google.android.support:wearable:1.0.+"
+}
diff --git a/samples/wearable/Timer/Wearable/proguard-rules.txt b/samples/wearable/Timer/Wearable/proguard-rules.txt
new file mode 100644
index 0000000..08e5bdc
--- /dev/null
+++ b/samples/wearable/Timer/Wearable/proguard-rules.txt
@@ -0,0 +1,22 @@
+# To enable ProGuard in your project, edit project.properties
+# to define the proguard.config property as described in that file.
+#
+# Add project specific ProGuard rules here.
+# By default, the flags in this file are appended to flags specified
+# in ${sdk.dir}/tools/proguard/proguard-android.txt
+# You can edit the include path and order by changing the ProGuard
+# include property in project.properties.
+#
+# For more details, see
+#   http://developer.android.com/guide/developing/tools/proguard.html
+
+# Add any project specific keep options here:
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+#   public *;
+#}
+-dontwarn android.support.wearable.view.DelayedConfirmationView
+-dontwarn android.support.wearable.view.CircledImageView
diff --git a/samples/wearable/Timer/Wearable/src/main/AndroidManifest.xml b/samples/wearable/Timer/Wearable/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..58f61e3
--- /dev/null
+++ b/samples/wearable/Timer/Wearable/src/main/AndroidManifest.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 The Android Open Source Project
+
+     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.
+-->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+        package="com.example.android.wearable.timer" >
+
+    <uses-sdk android:minSdkVersion="20" android:targetSdkVersion="20" />
+
+    <application
+            android:icon="@mipmap/ic_launcher"
+            android:label="@string/app_name"
+            android:theme="@android:style/Theme.DeviceDefault.Light">
+
+        <meta-data
+                android:name="com.google.android.gms.version"
+                android:value="@integer/google_play_services_version" />
+
+        <!-- Timer components -->
+        <activity android:name=".SetTimerActivity">
+            <intent-filter>
+                <action android:name="com.android.example.clockwork.timer.TIMER"/>
+                <category android:name="android.intent.category.DEFAULT"/>
+            </intent-filter>
+            <!-- Set a timer voice command -->
+            <intent-filter>
+                <action android:name="android.intent.action.SET_ALARM"/>
+                <category android:name="android.intent.category.DEFAULT"/>
+            </intent-filter>
+        </activity>
+
+        <service android:name=".TimerNotificationService" />
+
+    </application>
+</manifest>
diff --git a/samples/wearable/Timer/Wearable/src/main/java/com/example/android/wearable/timer/SetTimerActivity.java b/samples/wearable/Timer/Wearable/src/main/java/com/example/android/wearable/timer/SetTimerActivity.java
new file mode 100644
index 0000000..92dbfc0
--- /dev/null
+++ b/samples/wearable/Timer/Wearable/src/main/java/com/example/android/wearable/timer/SetTimerActivity.java
@@ -0,0 +1,222 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package com.example.android.wearable.timer;
+
+import android.app.Activity;
+import android.app.AlarmManager;
+import android.app.Notification;
+import android.app.PendingIntent;
+import android.content.Context;
+import android.content.Intent;
+import android.content.res.Resources;
+import android.os.Bundle;
+import android.provider.AlarmClock;
+import android.support.v4.app.NotificationCompat;
+import android.support.v4.app.NotificationManagerCompat;
+import android.util.Log;
+import android.view.View;
+import android.widget.AdapterView;
+import android.widget.ArrayAdapter;
+import android.widget.ListView;
+
+import com.example.android.wearable.timer.util.Constants;
+import com.example.android.wearable.timer.util.TimerFormat;
+import com.google.android.gms.common.ConnectionResult;
+import com.google.android.gms.common.api.GoogleApiClient;
+import com.google.android.gms.wearable.Wearable;
+
+/** This class sets a timer. */
+public class SetTimerActivity extends Activity
+        implements AdapterView.OnItemClickListener, GoogleApiClient.ConnectionCallbacks,
+        GoogleApiClient.OnConnectionFailedListener {
+
+    public static final int NUMBER_OF_TIMES = 10;
+    public static final String TAG = "SetTimerActivity";
+
+    private ListViewItem[] mTimeOptions = new ListViewItem[NUMBER_OF_TIMES];
+    private ListView mListView;
+    private GoogleApiClient mGoogleApiClient;
+
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        int paramLength = getIntent().getIntExtra(AlarmClock.EXTRA_LENGTH, 0);
+        if (Log.isLoggable(TAG, Log.DEBUG)) {
+            Log.d(TAG, "SetTimerActivity:onCreate=" + paramLength);
+        }
+        if (paramLength > 0 && paramLength <= 86400) {
+            long durationMillis = paramLength * 1000;
+            setupTimer(durationMillis);
+            finish();
+            return;
+        }
+
+        Resources res = getResources();
+        for (int i = 0; i < NUMBER_OF_TIMES; i++) {
+            mTimeOptions[i] = new ListViewItem(
+                    res.getQuantityString(R.plurals.timer_minutes, i + 1, i + 1),
+                    (i + 1) * 60 * 1000);
+        }
+
+        setContentView(R.layout.timer_set_timer);
+
+        // Initialize a simple list of countdown time options.
+        mListView = (ListView) findViewById(R.id.times_list_view);
+        ArrayAdapter<ListViewItem> arrayAdapter = new ArrayAdapter<ListViewItem>(this,
+                android.R.layout.simple_list_item_1, mTimeOptions);
+        mListView.setAdapter(arrayAdapter);
+        mListView.setOnItemClickListener(this);
+
+        mGoogleApiClient = new GoogleApiClient.Builder(this)
+                .addApi(Wearable.API)
+                .addConnectionCallbacks(this)
+                .addOnConnectionFailedListener(this)
+                .build();
+    }
+
+    @Override
+    protected void onStart() {
+        super.onStart();
+        mGoogleApiClient.connect();
+    }
+
+    @Override
+    protected void onStop() {
+        super.onStop();
+        mGoogleApiClient.disconnect();
+    }
+
+    /**
+     * Sets up an alarm (and an associated notification) to go off after <code>duration</code>
+     * milliseconds.
+     */
+    private void setupTimer(long duration) {
+        NotificationManagerCompat notifyMgr = NotificationManagerCompat.from(this);
+
+        // Delete dataItem and cancel a potential old countdown.
+        cancelCountdown(notifyMgr);
+
+        // Build notification and set it.
+        notifyMgr.notify(Constants.NOTIFICATION_TIMER_COUNTDOWN, buildNotification(duration));
+
+        // Register with the alarm manager to display a notification when the timer is done.
+        registerWithAlarmManager(duration);
+
+        finish();
+    }
+
+    @Override
+    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+        long duration = mTimeOptions[position].duration;
+        setupTimer(duration);
+    }
+
+    private void registerWithAlarmManager(long duration) {
+        // Get the alarm manager.
+        AlarmManager alarm = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
+
+        // Create intent that gets fired when timer expires.
+        Intent intent = new Intent(Constants.ACTION_SHOW_ALARM, null, this,
+                TimerNotificationService.class);
+        PendingIntent pendingIntent = PendingIntent.getService(this, 0, intent,
+                PendingIntent.FLAG_UPDATE_CURRENT);
+
+        // Calculate the time when it expires.
+        long wakeupTime = System.currentTimeMillis() + duration;
+
+        // Schedule an alarm.
+        alarm.setExact(AlarmManager.RTC_WAKEUP, wakeupTime, pendingIntent);
+    }
+
+    /**
+     * Build a notification including different actions and other various setup and return it.
+     *
+     * @param duration the duration of the timer.
+     * @return the notification to display.
+     */
+
+    private Notification buildNotification(long duration) {
+        // Intent to restart a timer.
+        Intent restartIntent = new Intent(Constants.ACTION_RESTART_ALARM, null, this,
+                TimerNotificationService.class);
+        PendingIntent pendingIntentRestart = PendingIntent
+                .getService(this, 0, restartIntent, PendingIntent.FLAG_UPDATE_CURRENT);
+
+        // Intent to delete a timer.
+        Intent deleteIntent = new Intent(Constants.ACTION_DELETE_ALARM, null, this,
+                TimerNotificationService.class);
+        PendingIntent pendingIntentDelete = PendingIntent
+                .getService(this, 0, deleteIntent, PendingIntent.FLAG_UPDATE_CURRENT);
+
+        // Create countdown notification using a chronometer style.
+        return new NotificationCompat.Builder(this)
+                .setSmallIcon(R.drawable.ic_cc_alarm)
+                .setContentTitle(getString(R.string.timer_time_left))
+                .setContentText(TimerFormat.getTimeString(duration))
+                .setUsesChronometer(true)
+                .setWhen(System.currentTimeMillis() + duration)
+                .addAction(R.drawable.ic_cc_alarm, getString(R.string.timer_restart),
+                        pendingIntentRestart)
+                .addAction(R.drawable.ic_cc_alarm, getString(R.string.timer_delete),
+                        pendingIntentDelete)
+                .setDeleteIntent(pendingIntentDelete)
+                .setLocalOnly(true)
+                .build();
+    }
+
+    /**
+     * Cancels an old countdown and deletes the dataItem.
+     *
+     * @param notifyMgr the notification manager.
+     */
+    private void cancelCountdown(NotificationManagerCompat notifyMgr) {
+        notifyMgr.cancel(Constants.NOTIFICATION_TIMER_EXPIRED);
+    }
+
+    /** Model class for the listview. */
+    private static class ListViewItem {
+
+        // Duration in milliseconds.
+        long duration;
+        // Label to display.
+        private String label;
+
+        public ListViewItem(String label, long duration) {
+            this.label = label;
+            this.duration = duration;
+        }
+
+        @Override
+        public String toString() {
+            return label;
+        }
+    }
+
+    @Override
+    public void onConnected(Bundle connectionHint) {
+    }
+
+    @Override
+    public void onConnectionSuspended(int cause) {
+    }
+
+    @Override
+    public void onConnectionFailed(ConnectionResult result) {
+    }
+}
diff --git a/samples/wearable/Timer/Wearable/src/main/java/com/example/android/wearable/timer/TimerNotificationService.java b/samples/wearable/Timer/Wearable/src/main/java/com/example/android/wearable/timer/TimerNotificationService.java
new file mode 100644
index 0000000..344d84c
--- /dev/null
+++ b/samples/wearable/Timer/Wearable/src/main/java/com/example/android/wearable/timer/TimerNotificationService.java
@@ -0,0 +1,137 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package com.example.android.wearable.timer;
+
+import android.app.AlarmManager;
+import android.app.IntentService;
+import android.app.Notification;
+import android.app.PendingIntent;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import android.support.v4.app.NotificationCompat;
+import android.support.v4.app.NotificationManagerCompat;
+import android.util.Log;
+
+import com.example.android.wearable.timer.util.Constants;
+import com.google.android.gms.common.ConnectionResult;
+import com.google.android.gms.common.api.GoogleApiClient;
+import com.google.android.gms.wearable.Wearable;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Service class that manages notifications of the timer.
+ */
+public class TimerNotificationService extends IntentService
+        implements GoogleApiClient.ConnectionCallbacks,
+        GoogleApiClient.OnConnectionFailedListener {
+
+    public static final String TAG = "TimerNotificationSvc";
+
+    public TimerNotificationService() {
+        super(TAG);
+    }
+
+    @Override
+    public void onCreate() {
+        super.onCreate();
+    }
+
+    @Override
+    protected void onHandleIntent(Intent intent) {
+        if (Log.isLoggable(TAG, Log.DEBUG)) {
+            Log.d(TAG, "onHandleIntent called with intent: " + intent);
+        }
+        String action = intent.getAction();
+        if (Constants.ACTION_SHOW_ALARM.equals(action)) {
+            showTimerDoneNotification();
+        } else if (Constants.ACTION_DELETE_ALARM.equals(action)) {
+            deleteTimer();
+        } else if (Constants.ACTION_RESTART_ALARM.equals(action)) {
+            restartAlarm();
+        } else {
+            throw new IllegalStateException("Undefined constant used: " + action);
+        }
+    }
+
+    private void restartAlarm() {
+        Intent dialogIntent = new Intent(this, SetTimerActivity.class);
+        dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+        startActivity(dialogIntent);
+        if (Log.isLoggable(TAG, Log.DEBUG)) {
+            Log.d(TAG, "Timer restarted.");
+        }
+    }
+
+    private void deleteTimer() {
+        cancelCountdownNotification();
+
+        AlarmManager alarm = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
+        Intent intent = new Intent(Constants.ACTION_SHOW_ALARM, null, this,
+                TimerNotificationService.class);
+        PendingIntent pendingIntent = PendingIntent.getService(this, 0, intent,
+                PendingIntent.FLAG_UPDATE_CURRENT);
+        alarm.cancel(pendingIntent);
+
+        if (Log.isLoggable(TAG, Log.DEBUG)) {
+            Log.d(TAG, "Timer deleted.");
+        }
+    }
+
+    private void cancelCountdownNotification() {
+        NotificationManagerCompat notifyMgr = NotificationManagerCompat.from(this);
+        notifyMgr.cancel(Constants.NOTIFICATION_TIMER_COUNTDOWN);
+    }
+
+    private void showTimerDoneNotification() {
+        // Cancel the countdown notification to show the "timer done" notification.
+        cancelCountdownNotification();
+
+        // Create an intent to restart a timer.
+        Intent restartIntent = new Intent(Constants.ACTION_RESTART_ALARM, null, this,
+                TimerNotificationService.class);
+        PendingIntent pendingIntentRestart = PendingIntent
+                .getService(this, 0, restartIntent, PendingIntent.FLAG_UPDATE_CURRENT);
+
+        // Create notification that timer has expired.
+        NotificationManagerCompat notifyMgr = NotificationManagerCompat.from(this);
+        Notification notif = new NotificationCompat.Builder(this)
+                .setSmallIcon(R.drawable.ic_cc_alarm)
+                .setContentTitle(getString(R.string.timer_done))
+                .setContentText(getString(R.string.timer_done))
+                .setUsesChronometer(true)
+                .setWhen(System.currentTimeMillis())
+                .addAction(R.drawable.ic_cc_alarm, getString(R.string.timer_restart),
+                        pendingIntentRestart)
+                .setLocalOnly(true)
+                .build();
+        notifyMgr.notify(Constants.NOTIFICATION_TIMER_EXPIRED, notif);
+    }
+
+    @Override
+    public void onConnected(Bundle connectionHint) {
+    }
+
+    @Override
+    public void onConnectionSuspended(int cause) {
+    }
+
+    @Override
+    public void onConnectionFailed(ConnectionResult result) {
+    }
+}
diff --git a/samples/wearable/Timer/Wearable/src/main/java/com/example/android/wearable/timer/util/Constants.java b/samples/wearable/Timer/Wearable/src/main/java/com/example/android/wearable/timer/util/Constants.java
new file mode 100644
index 0000000..b5f58fb
--- /dev/null
+++ b/samples/wearable/Timer/Wearable/src/main/java/com/example/android/wearable/timer/util/Constants.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package com.example.android.wearable.timer.util;
+
+import android.net.Uri;
+
+/** Used to hold constants. */
+public final class Constants {
+
+    public static final String START_TIME = "timer_start_time";
+    public static final String ORIGINAL_TIME = "timer_original_time";
+    public static final String DATA_ITEM_PATH = "/timer";
+    public static final Uri URI_PATTERN_DATA_ITEMS =
+            Uri.fromParts("wear", DATA_ITEM_PATH, null);
+
+    public static final int NOTIFICATION_TIMER_COUNTDOWN = 1;
+    public static final int NOTIFICATION_TIMER_EXPIRED = 2;
+
+    public static final String ACTION_SHOW_ALARM
+            = "com.android.example.clockwork.timer.ACTION_SHOW";
+    public static final String ACTION_DELETE_ALARM
+            = "com.android.example.clockwork.timer.ACTION_DELETE";
+    public static final String ACTION_RESTART_ALARM
+            = "com.android.example.clockwork.timer.ACTION_RESTART";
+
+    private Constants() {
+    }
+
+}
diff --git a/samples/wearable/Timer/Wearable/src/main/java/com/example/android/wearable/timer/util/TimerFormat.java b/samples/wearable/Timer/Wearable/src/main/java/com/example/android/wearable/timer/util/TimerFormat.java
new file mode 100644
index 0000000..ca84394
--- /dev/null
+++ b/samples/wearable/Timer/Wearable/src/main/java/com/example/android/wearable/timer/util/TimerFormat.java
@@ -0,0 +1,121 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package com.example.android.wearable.timer.util;
+
+/** Helper class to format the timer. Based on com.android.deskclock.timer.CountingTimerView. */
+public final class TimerFormat {
+
+    private static final String TWO_DIGITS = "%02d";
+
+    private static final String ONE_DIGIT = "%01d";
+
+    private static final String NEG_TWO_DIGITS = "-%02d";
+
+    private static final String NEG_ONE_DIGIT = "-%01d";
+
+    private static String mHours;
+
+    private static String mMinutes;
+
+    private static String mSeconds;
+
+    private TimerFormat() {
+
+    }
+
+    /**
+     * Update the time to display. Separates that time into the hours, minutes, seconds.
+     * Copied and shortened from com.android.deskclock.timer.CountingTimerView.
+     *
+     * @param time new time to display - in milliseconds
+     */
+    private static void setTime(long time) {
+        boolean neg = false;
+        boolean showNeg = false;
+        String format;
+        if (time < 0) {
+            time = -time;
+            neg = showNeg = true;
+        }
+        long seconds = time / 1000;
+        long hundreds = (time - seconds * 1000) / 10;
+        long minutes = seconds / 60;
+        seconds = seconds - minutes * 60;
+        long hours = minutes / 60;
+        minutes = minutes - hours * 60;
+        if (hours > 999) {
+            hours = 0;
+        }
+        // The time  can be between 0 and -1 seconds, but the "truncated" equivalent time of hours
+        // and minutes and seconds could be zero, so since we do not show fractions of seconds
+        // when counting down, do not show the minus sign.
+        if (hours == 0 && minutes == 0 && seconds == 0) {
+            showNeg = false;
+        }
+
+        // Normalize and check if it is 'time' to invalidate
+        if (!neg && hundreds != 0) {
+            seconds++;
+            if (seconds == 60) {
+                seconds = 0;
+                minutes++;
+                if (minutes == 60) {
+                    minutes = 0;
+                    hours++;
+                }
+            }
+        }
+
+        // Hours may be empty
+        if (hours >= 10) {
+            format = showNeg ? NEG_TWO_DIGITS : TWO_DIGITS;
+            mHours = String.format(format, hours);
+        } else if (hours > 0) {
+            format = showNeg ? NEG_ONE_DIGIT : ONE_DIGIT;
+            mHours = String.format(format, hours);
+        } else {
+            mHours = null;
+        }
+
+        // Minutes are never empty and when hours are non-empty, must be two digits
+        if (minutes >= 10 || hours > 0) {
+            format = (showNeg && hours == 0) ? NEG_TWO_DIGITS : TWO_DIGITS;
+            mMinutes = String.format(format, minutes);
+        } else {
+            format = (showNeg && hours == 0) ? NEG_ONE_DIGIT : ONE_DIGIT;
+            mMinutes = String.format(format, minutes);
+        }
+
+        // Seconds are always two digits
+        mSeconds = String.format(TWO_DIGITS, seconds);
+    }
+
+    /**
+     * Based on com.android.deskclock.timer.CountingTimerView.
+     *
+     * @param time the time to format.
+     * @return nicely formatted time.
+     */
+    public static String getTimeString(long time) {
+        setTime(time);
+        if (mHours == null) {
+            return String.format("%s:%s", mMinutes, mSeconds);
+        }
+        return String.format("%s:%s:%s", mHours, mMinutes, mSeconds);
+
+    }
+}
diff --git a/samples/wearable/Timer/Wearable/src/main/java/com/example/android/wearable/timer/util/TimerObj.java b/samples/wearable/Timer/Wearable/src/main/java/com/example/android/wearable/timer/util/TimerObj.java
new file mode 100644
index 0000000..2c33734
--- /dev/null
+++ b/samples/wearable/Timer/Wearable/src/main/java/com/example/android/wearable/timer/util/TimerObj.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package com.example.android.wearable.timer.util;
+
+import android.os.SystemClock;
+
+
+/** This class represents a timer. */
+public class TimerObj {
+
+    // Start time in milliseconds.
+    public long startTime;
+
+    // Length of the timer in milliseconds.
+    public long originalLength;
+
+    /**
+     * Construct a timer with a specific start time and length.
+     *
+     * @param startTime the start time of the timer.
+     * @param timerLength the length of the timer.
+     */
+    public TimerObj(long startTime, long timerLength) {
+        this.startTime = startTime;
+        this.originalLength = timerLength;
+    }
+
+    /**
+     * Calculate the time left of this timer.
+     * @return the time left for this timer.
+     */
+    public long timeLeft() {
+        long millis = SystemClock.elapsedRealtime();
+        return originalLength - (millis - startTime);
+    }
+}
diff --git a/samples/wearable/Timer/Wearable/src/main/res/drawable/ic_cc_alarm.png b/samples/wearable/Timer/Wearable/src/main/res/drawable/ic_cc_alarm.png
new file mode 100644
index 0000000..ad51ddf
--- /dev/null
+++ b/samples/wearable/Timer/Wearable/src/main/res/drawable/ic_cc_alarm.png
Binary files differ
diff --git a/samples/wearable/Timer/Wearable/src/main/res/layout/timer_set_timer.xml b/samples/wearable/Timer/Wearable/src/main/res/layout/timer_set_timer.xml
new file mode 100644
index 0000000..190b73c
--- /dev/null
+++ b/samples/wearable/Timer/Wearable/src/main/res/layout/timer_set_timer.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 The Android Open Source Project
+
+     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.
+-->
+
+<ListView xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="wrap_content"
+    android:layout_height="match_parent"
+    android:id="@+id/times_list_view" />
diff --git a/samples/wearable/Timer/Wearable/src/main/res/mipmap-hdpi/ic_launcher.png b/samples/wearable/Timer/Wearable/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 0000000..56f7fc1
--- /dev/null
+++ b/samples/wearable/Timer/Wearable/src/main/res/mipmap-hdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/Timer/Wearable/src/main/res/mipmap-mdpi/ic_launcher.png b/samples/wearable/Timer/Wearable/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 0000000..dec99cd
--- /dev/null
+++ b/samples/wearable/Timer/Wearable/src/main/res/mipmap-mdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/Timer/Wearable/src/main/res/mipmap-xhdpi/ic_launcher.png b/samples/wearable/Timer/Wearable/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 0000000..48fa0ab
--- /dev/null
+++ b/samples/wearable/Timer/Wearable/src/main/res/mipmap-xhdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/Timer/Wearable/src/main/res/mipmap-xxhdpi/ic_launcher.png b/samples/wearable/Timer/Wearable/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 0000000..8173921
--- /dev/null
+++ b/samples/wearable/Timer/Wearable/src/main/res/mipmap-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/Timer/Wearable/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/samples/wearable/Timer/Wearable/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 0000000..0dce809
--- /dev/null
+++ b/samples/wearable/Timer/Wearable/src/main/res/mipmap-xxxhdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/Timer/Wearable/src/main/res/values/strings.xml b/samples/wearable/Timer/Wearable/src/main/res/values/strings.xml
new file mode 100644
index 0000000..8cd0259
--- /dev/null
+++ b/samples/wearable/Timer/Wearable/src/main/res/values/strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 The Android Open Source Project
+
+ 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.
+-->
+
+<resources>
+    <string name="app_name">Timer Example Wearable App</string>
+    <string name="timer_done">Timer done</string>
+    <string name="timer_time_left">Time remaining</string>
+    <string name="timer_delete">Delete</string>
+    <string name="timer_restart">Restart</string>
+    <plurals name="timer_minutes">
+        <item quantity="one">1 minute</item>
+        <item quantity="other">%d minutes</item>
+    </plurals>
+</resources>
diff --git a/samples/wearable/Timer/build.gradle b/samples/wearable/Timer/build.gradle
new file mode 100644
index 0000000..4c8f6d8
--- /dev/null
+++ b/samples/wearable/Timer/build.gradle
@@ -0,0 +1,16 @@
+// Top-level build file where you can add configuration options common to all sub-projects/modules.
+
+buildscript {
+    repositories {
+        mavenCentral()
+    }
+    dependencies {
+        classpath 'com.android.tools.build:gradle:0.11.+'
+    }
+}
+
+allprojects {
+    repositories {
+        mavenCentral()
+    }
+}
diff --git a/samples/wearable/Timer/gradle/wrapper/gradle-wrapper.jar b/samples/wearable/Timer/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 0000000..5838598
--- /dev/null
+++ b/samples/wearable/Timer/gradle/wrapper/gradle-wrapper.jar
Binary files differ
diff --git a/samples/wearable/Timer/gradle/wrapper/gradle-wrapper.properties b/samples/wearable/Timer/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..e83e460
--- /dev/null
+++ b/samples/wearable/Timer/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Fri Mar 14 14:02:22 PDT 2014
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=http\://services.gradle.org/distributions/gradle-1.11-all.zip
diff --git a/samples/wearable/Timer/gradlew b/samples/wearable/Timer/gradlew
new file mode 100755
index 0000000..91a7e26
--- /dev/null
+++ b/samples/wearable/Timer/gradlew
@@ -0,0 +1,164 @@
+#!/usr/bin/env bash
+
+##############################################################################
+##
+##  Gradle start up script for UN*X
+##
+##############################################################################
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn ( ) {
+    echo "$*"
+}
+
+die ( ) {
+    echo
+    echo "$*"
+    echo
+    exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+case "`uname`" in
+  CYGWIN* )
+    cygwin=true
+    ;;
+  Darwin* )
+    darwin=true
+    ;;
+  MINGW* )
+    msys=true
+    ;;
+esac
+
+# For Cygwin, ensure paths are in UNIX format before anything is touched.
+if $cygwin ; then
+    [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
+fi
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+    ls=`ls -ld "$PRG"`
+    link=`expr "$ls" : '.*-> \(.*\)$'`
+    if expr "$link" : '/.*' > /dev/null; then
+        PRG="$link"
+    else
+        PRG=`dirname "$PRG"`"/$link"
+    fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >&-
+APP_HOME="`pwd -P`"
+cd "$SAVED" >&-
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+        # IBM's JDK on AIX uses strange locations for the executables
+        JAVACMD="$JAVA_HOME/jre/sh/java"
+    else
+        JAVACMD="$JAVA_HOME/bin/java"
+    fi
+    if [ ! -x "$JAVACMD" ] ; then
+        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+    fi
+else
+    JAVACMD="java"
+    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
+    MAX_FD_LIMIT=`ulimit -H -n`
+    if [ $? -eq 0 ] ; then
+        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+            MAX_FD="$MAX_FD_LIMIT"
+        fi
+        ulimit -n $MAX_FD
+        if [ $? -ne 0 ] ; then
+            warn "Could not set maximum file descriptor limit: $MAX_FD"
+        fi
+    else
+        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+    fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+
+    # We build the pattern for arguments to be converted via cygpath
+    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+    SEP=""
+    for dir in $ROOTDIRSRAW ; do
+        ROOTDIRS="$ROOTDIRS$SEP$dir"
+        SEP="|"
+    done
+    OURCYGPATTERN="(^($ROOTDIRS))"
+    # Add a user-defined pattern to the cygpath arguments
+    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+    fi
+    # Now convert the arguments - kludge to limit ourselves to /bin/sh
+    i=0
+    for arg in "$@" ; do
+        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
+
+        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
+            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+        else
+            eval `echo args$i`="\"$arg\""
+        fi
+        i=$((i+1))
+    done
+    case $i in
+        (0) set -- ;;
+        (1) set -- "$args0" ;;
+        (2) set -- "$args0" "$args1" ;;
+        (3) set -- "$args0" "$args1" "$args2" ;;
+        (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+        (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+        (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+        (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+        (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+        (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+    esac
+fi
+
+# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
+function splitJvmOpts() {
+    JVM_OPTS=("$@")
+}
+eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
+JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
+
+exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
diff --git a/samples/wearable/Timer/gradlew.bat b/samples/wearable/Timer/gradlew.bat
new file mode 100644
index 0000000..aec9973
--- /dev/null
+++ b/samples/wearable/Timer/gradlew.bat
@@ -0,0 +1,90 @@
+@if "%DEBUG%" == "" @echo off

+@rem ##########################################################################

+@rem

+@rem  Gradle startup script for Windows

+@rem

+@rem ##########################################################################

+

+@rem Set local scope for the variables with windows NT shell

+if "%OS%"=="Windows_NT" setlocal

+

+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.

+set DEFAULT_JVM_OPTS=

+

+set DIRNAME=%~dp0

+if "%DIRNAME%" == "" set DIRNAME=.

+set APP_BASE_NAME=%~n0

+set APP_HOME=%DIRNAME%

+

+@rem Find java.exe

+if defined JAVA_HOME goto findJavaFromJavaHome

+

+set JAVA_EXE=java.exe

+%JAVA_EXE% -version >NUL 2>&1

+if "%ERRORLEVEL%" == "0" goto init

+

+echo.

+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.

+echo.

+echo Please set the JAVA_HOME variable in your environment to match the

+echo location of your Java installation.

+

+goto fail

+

+:findJavaFromJavaHome

+set JAVA_HOME=%JAVA_HOME:"=%

+set JAVA_EXE=%JAVA_HOME%/bin/java.exe

+

+if exist "%JAVA_EXE%" goto init

+

+echo.

+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%

+echo.

+echo Please set the JAVA_HOME variable in your environment to match the

+echo location of your Java installation.

+

+goto fail

+

+:init

+@rem Get command-line arguments, handling Windowz variants

+

+if not "%OS%" == "Windows_NT" goto win9xME_args

+if "%@eval[2+2]" == "4" goto 4NT_args

+

+:win9xME_args

+@rem Slurp the command line arguments.

+set CMD_LINE_ARGS=

+set _SKIP=2

+

+:win9xME_args_slurp

+if "x%~1" == "x" goto execute

+

+set CMD_LINE_ARGS=%*

+goto execute

+

+:4NT_args

+@rem Get arguments from the 4NT Shell from JP Software

+set CMD_LINE_ARGS=%$

+

+:execute

+@rem Setup the command line

+

+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar

+

+@rem Execute Gradle

+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%

+

+:end

+@rem End local scope for the variables with windows NT shell

+if "%ERRORLEVEL%"=="0" goto mainEnd

+

+:fail

+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of

+rem the _cmd.exe /c_ return code!

+if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1

+exit /b 1

+

+:mainEnd

+if "%OS%"=="Windows_NT" endlocal

+

+:omega

diff --git a/samples/wearable/Timer/settings.gradle b/samples/wearable/Timer/settings.gradle
new file mode 100644
index 0000000..1d97d30
--- /dev/null
+++ b/samples/wearable/Timer/settings.gradle
@@ -0,0 +1 @@
+include ':Wearable'
diff --git a/samples/wearable/WatchViewStub/Wearable/_index.html b/samples/wearable/WatchViewStub/Wearable/_index.html
new file mode 100644
index 0000000..b46a3ec
--- /dev/null
+++ b/samples/wearable/WatchViewStub/Wearable/_index.html
@@ -0,0 +1,13 @@
+<p>This sample demonstrates how to specify different layouts for round and rectangular screens.
+The layouts used in this sample are as follows:
+    <ul>
+        <li>Round:  The background is a blue/green ring surrounding red text.</li>
+        <li>Rect:   The background is a blue/breen rounded rectangle with red text on top.</li>
+    </ul>
+Additionally, a unique animation is played when the user clicks on the layout, depending on whether
+the screen is round or rectangular:
+    <ul>
+        <li>Round:  The layout rotates 360 degrees.</li>
+        <li>Rect:   The layout shrinks to 70% and then grows back to 100%.</li>
+    </ul>
+</p>
\ No newline at end of file
diff --git a/samples/wearable/WatchViewStub/Wearable/build.gradle b/samples/wearable/WatchViewStub/Wearable/build.gradle
new file mode 100644
index 0000000..2a52030
--- /dev/null
+++ b/samples/wearable/WatchViewStub/Wearable/build.gradle
@@ -0,0 +1,25 @@
+apply plugin: 'android'
+
+android {
+    compileSdkVersion 20
+    buildToolsVersion '20'
+
+    defaultConfig {
+        minSdkVersion 20
+        targetSdkVersion 20
+        versionCode 1
+        versionName "1.0"
+    }
+
+    buildTypes {
+        release {
+            runProguard false
+            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
+        }
+    }
+}
+
+dependencies {
+    compile "com.android.support:support-v13:20.0.+"
+    compile "com.google.android.support:wearable:1.0.+"
+}
diff --git a/samples/wearable/WatchViewStub/Wearable/proguard-rules.txt b/samples/wearable/WatchViewStub/Wearable/proguard-rules.txt
new file mode 100644
index 0000000..f2fe155
--- /dev/null
+++ b/samples/wearable/WatchViewStub/Wearable/proguard-rules.txt
@@ -0,0 +1,20 @@
+# To enable ProGuard in your project, edit project.properties
+# to define the proguard.config property as described in that file.
+#
+# Add project specific ProGuard rules here.
+# By default, the flags in this file are appended to flags specified
+# in ${sdk.dir}/tools/proguard/proguard-android.txt
+# You can edit the include path and order by changing the ProGuard
+# include property in project.properties.
+#
+# For more details, see
+#   http://developer.android.com/guide/developing/tools/proguard.html
+
+# Add any project specific keep options here:
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+#   public *;
+#}
diff --git a/samples/wearable/WatchViewStub/Wearable/src/main/AndroidManifest.xml b/samples/wearable/WatchViewStub/Wearable/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..2192546
--- /dev/null
+++ b/samples/wearable/WatchViewStub/Wearable/src/main/AndroidManifest.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+        package="com.example.android.google.wearable.watchviewstub" >
+
+    <uses-sdk android:minSdkVersion="20" android:targetSdkVersion="20" />
+
+    <application
+            android:allowBackup="true"
+            android:icon="@drawable/ic_launcher"
+            android:label="@string/app_name"
+            android:theme="@android:style/Theme.DeviceDefault">
+        <activity
+            android:name="com.example.android.google.wearable.watchviewstub.MainActivity"
+            android:label="@string/app_name">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN"/>
+                <category android:name="android.intent.category.LAUNCHER"/>
+            </intent-filter>
+        </activity>
+    </application>
+
+</manifest>
diff --git a/samples/wearable/WatchViewStub/Wearable/src/main/java/com/example/android/google/wearable/watchviewstub/MainActivity.java b/samples/wearable/WatchViewStub/Wearable/src/main/java/com/example/android/google/wearable/watchviewstub/MainActivity.java
new file mode 100644
index 0000000..b8d14f5
--- /dev/null
+++ b/samples/wearable/WatchViewStub/Wearable/src/main/java/com/example/android/google/wearable/watchviewstub/MainActivity.java
@@ -0,0 +1,70 @@
+package com.example.android.google.wearable.watchviewstub;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.support.v4.view.GestureDetectorCompat;
+import android.support.wearable.view.DismissOverlayView;
+import android.support.wearable.view.WatchViewStub;
+import android.view.GestureDetector;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.animation.Animation;
+import android.view.animation.ScaleAnimation;
+import android.widget.RelativeLayout;
+
+
+public class MainActivity extends Activity {
+    private RelativeLayout mRectBackground;
+    private RelativeLayout mRoundBackground;
+
+    private GestureDetectorCompat mGestureDetector;
+    private DismissOverlayView mDismissOverlayView;
+
+    @Override
+    public void onCreate(Bundle b) {
+        super.onCreate(b);
+        setContentView(R.layout.main_activity);
+
+        WatchViewStub stub = (WatchViewStub) findViewById(R.id.stub);
+        stub.setOnLayoutInflatedListener(new WatchViewStub.OnLayoutInflatedListener() {
+            @Override
+            public void onLayoutInflated(WatchViewStub stub) {
+                mRectBackground = (RelativeLayout) findViewById(R.id.rect_layout);
+                mRoundBackground = (RelativeLayout) findViewById(R.id.round_layout);
+            }
+        });
+
+        mDismissOverlayView = (DismissOverlayView) findViewById(R.id.dismiss_overlay);
+        mGestureDetector = new GestureDetectorCompat(this, new LongPressListener());
+    }
+
+    /**
+     * Animates the layout when clicked. The animation used depends on whether the
+     * device is round or rectangular.
+     */
+    public void onLayoutClicked(View view) {
+        if (mRectBackground != null) {
+            ScaleAnimation scaleAnimation = new ScaleAnimation(1.0f, 0.7f, 1.0f, 0.7f,
+                    Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
+            scaleAnimation.setDuration(300);
+            scaleAnimation.setRepeatCount(1);
+            scaleAnimation.setRepeatMode(Animation.REVERSE);
+            mRectBackground.startAnimation(scaleAnimation);
+        }
+        if (mRoundBackground != null) {
+            mRoundBackground.animate().rotationBy(360).setDuration(300).start();
+        }
+    }
+
+    @Override
+    public boolean dispatchTouchEvent(MotionEvent event) {
+        return mGestureDetector.onTouchEvent(event) || super.dispatchTouchEvent(event);
+    }
+
+    private class LongPressListener extends GestureDetector.SimpleOnGestureListener {
+        @Override
+        public void onLongPress(MotionEvent event) {
+            mDismissOverlayView.show();
+        }
+    }
+}
\ No newline at end of file
diff --git a/samples/wearable/WatchViewStub/Wearable/src/main/res/drawable-hdpi/ic_launcher.png b/samples/wearable/WatchViewStub/Wearable/src/main/res/drawable-hdpi/ic_launcher.png
new file mode 100755
index 0000000..589f229
--- /dev/null
+++ b/samples/wearable/WatchViewStub/Wearable/src/main/res/drawable-hdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/WatchViewStub/Wearable/src/main/res/drawable-mdpi/ic_launcher.png b/samples/wearable/WatchViewStub/Wearable/src/main/res/drawable-mdpi/ic_launcher.png
new file mode 100755
index 0000000..77dd571
--- /dev/null
+++ b/samples/wearable/WatchViewStub/Wearable/src/main/res/drawable-mdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/WatchViewStub/Wearable/src/main/res/drawable-xhdpi/ic_launcher.png b/samples/wearable/WatchViewStub/Wearable/src/main/res/drawable-xhdpi/ic_launcher.png
new file mode 100755
index 0000000..fe34ebe
--- /dev/null
+++ b/samples/wearable/WatchViewStub/Wearable/src/main/res/drawable-xhdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/WatchViewStub/Wearable/src/main/res/drawable-xxhdpi/ic_launcher.png b/samples/wearable/WatchViewStub/Wearable/src/main/res/drawable-xxhdpi/ic_launcher.png
new file mode 100755
index 0000000..ab80bcd
--- /dev/null
+++ b/samples/wearable/WatchViewStub/Wearable/src/main/res/drawable-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/samples/wearable/WatchViewStub/Wearable/src/main/res/drawable/rect_background.xml b/samples/wearable/WatchViewStub/Wearable/src/main/res/drawable/rect_background.xml
new file mode 100644
index 0000000..f370bcb
--- /dev/null
+++ b/samples/wearable/WatchViewStub/Wearable/src/main/res/drawable/rect_background.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <corners android:radius="@dimen/rect_corner_radius"/>
+    <gradient android:startColor="@color/green"
+        android:endColor="@color/blue"
+        android:angle="45"/>
+</shape>
\ No newline at end of file
diff --git a/samples/wearable/WatchViewStub/Wearable/src/main/res/drawable/round_background.xml b/samples/wearable/WatchViewStub/Wearable/src/main/res/drawable/round_background.xml
new file mode 100644
index 0000000..d9e822e
--- /dev/null
+++ b/samples/wearable/WatchViewStub/Wearable/src/main/res/drawable/round_background.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="ring"
+    android:useLevel="false" >
+    <gradient android:startColor="@color/green"
+        android:endColor="@color/blue"/>
+</shape>
\ No newline at end of file
diff --git a/samples/wearable/WatchViewStub/Wearable/src/main/res/layout/main_activity.xml b/samples/wearable/WatchViewStub/Wearable/src/main/res/layout/main_activity.xml
new file mode 100644
index 0000000..4d48650
--- /dev/null
+++ b/samples/wearable/WatchViewStub/Wearable/src/main/res/layout/main_activity.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<FrameLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <android.support.wearable.view.WatchViewStub
+        xmlns:app="http://schemas.android.com/apk/res-auto"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:id="@+id/stub"
+        app:rectLayout="@layout/rect_layout"
+        app:roundLayout="@layout/round_layout"/>
+
+    <android.support.wearable.view.DismissOverlayView
+        android:id="@+id/dismiss_overlay"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent" />
+
+</FrameLayout>
+
diff --git a/samples/wearable/WatchViewStub/Wearable/src/main/res/layout/rect_layout.xml b/samples/wearable/WatchViewStub/Wearable/src/main/res/layout/rect_layout.xml
new file mode 100644
index 0000000..da9eb39
--- /dev/null
+++ b/samples/wearable/WatchViewStub/Wearable/src/main/res/layout/rect_layout.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:id="@+id/rect_layout"
+    android:background="@drawable/rect_background"
+    android:onClick="onLayoutClicked">
+    <TextView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="@string/rect_string"
+        android:textColor="@color/red"
+        android:textSize="@dimen/text_size"
+        android:gravity="center"
+        android:layout_centerInParent="true"/>
+</RelativeLayout>
\ No newline at end of file
diff --git a/samples/wearable/WatchViewStub/Wearable/src/main/res/layout/round_layout.xml b/samples/wearable/WatchViewStub/Wearable/src/main/res/layout/round_layout.xml
new file mode 100644
index 0000000..9cbb4da
--- /dev/null
+++ b/samples/wearable/WatchViewStub/Wearable/src/main/res/layout/round_layout.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:id="@+id/round_layout"
+    android:background="@drawable/round_background"
+    android:onClick="onLayoutClicked">
+    <TextView
+        android:layout_width="@dimen/round_text_view_width"
+        android:layout_height="wrap_content"
+        android:text="@string/round_string"
+        android:textColor="@color/red"
+        android:textSize="@dimen/text_size"
+        android:gravity="center"
+        android:layout_centerInParent="true"/>
+</RelativeLayout>
\ No newline at end of file
diff --git a/samples/wearable/WatchViewStub/Wearable/src/main/res/values/dimens.xml b/samples/wearable/WatchViewStub/Wearable/src/main/res/values/dimens.xml
new file mode 100644
index 0000000..dc1f1c4
--- /dev/null
+++ b/samples/wearable/WatchViewStub/Wearable/src/main/res/values/dimens.xml
@@ -0,0 +1,5 @@
+<resources>
+    <dimen name="rect_corner_radius">20dp</dimen>
+    <dimen name="round_text_view_width">150dp</dimen>
+    <dimen name="text_size">24sp</dimen>
+</resources>
diff --git a/samples/wearable/WatchViewStub/Wearable/src/main/res/values/strings.xml b/samples/wearable/WatchViewStub/Wearable/src/main/res/values/strings.xml
new file mode 100644
index 0000000..71a51c6
--- /dev/null
+++ b/samples/wearable/WatchViewStub/Wearable/src/main/res/values/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+
+    <string name="app_name">WatchViewStub Sample</string>
+    <string name="round_string">Your screen is round!</string>
+    <string name="rect_string">Your screen is rectangular!</string>
+
+</resources>
diff --git a/samples/wearable/WatchViewStub/build.gradle b/samples/wearable/WatchViewStub/build.gradle
new file mode 100644
index 0000000..d9bdcb3
--- /dev/null
+++ b/samples/wearable/WatchViewStub/build.gradle
@@ -0,0 +1,15 @@
+buildscript {
+    repositories {
+        mavenCentral()
+    }
+    dependencies {
+        classpath 'com.android.tools.build:gradle:0.11.+'
+    }
+}
+
+allprojects {
+    repositories {
+        mavenCentral()
+    }
+}
+
diff --git a/samples/wearable/WatchViewStub/gradle.properties b/samples/wearable/WatchViewStub/gradle.properties
new file mode 100644
index 0000000..5d08ba7
--- /dev/null
+++ b/samples/wearable/WatchViewStub/gradle.properties
@@ -0,0 +1,18 @@
+# Project-wide Gradle settings.
+
+# IDE (e.g. Android Studio) users:
+# Settings specified in this file will override any Gradle settings
+# configured through the IDE.
+
+# For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+# Default value: -Xmx10248m -XX:MaxPermSize=256m
+# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
+
+# When configured, Gradle will run in incubating parallel mode.
+# This option should only be used with decoupled projects. More details, visit
+# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
+# org.gradle.parallel=true
\ No newline at end of file
diff --git a/samples/wearable/WatchViewStub/gradle/wrapper/gradle-wrapper.jar b/samples/wearable/WatchViewStub/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 0000000..5838598
--- /dev/null
+++ b/samples/wearable/WatchViewStub/gradle/wrapper/gradle-wrapper.jar
Binary files differ
diff --git a/samples/wearable/WatchViewStub/gradle/wrapper/gradle-wrapper.properties b/samples/wearable/WatchViewStub/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..e83e460
--- /dev/null
+++ b/samples/wearable/WatchViewStub/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Fri Mar 14 14:02:22 PDT 2014
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=http\://services.gradle.org/distributions/gradle-1.11-all.zip
diff --git a/samples/wearable/WatchViewStub/gradlew b/samples/wearable/WatchViewStub/gradlew
new file mode 100755
index 0000000..91a7e26
--- /dev/null
+++ b/samples/wearable/WatchViewStub/gradlew
@@ -0,0 +1,164 @@
+#!/usr/bin/env bash
+
+##############################################################################
+##
+##  Gradle start up script for UN*X
+##
+##############################################################################
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn ( ) {
+    echo "$*"
+}
+
+die ( ) {
+    echo
+    echo "$*"
+    echo
+    exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+case "`uname`" in
+  CYGWIN* )
+    cygwin=true
+    ;;
+  Darwin* )
+    darwin=true
+    ;;
+  MINGW* )
+    msys=true
+    ;;
+esac
+
+# For Cygwin, ensure paths are in UNIX format before anything is touched.
+if $cygwin ; then
+    [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
+fi
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+    ls=`ls -ld "$PRG"`
+    link=`expr "$ls" : '.*-> \(.*\)$'`
+    if expr "$link" : '/.*' > /dev/null; then
+        PRG="$link"
+    else
+        PRG=`dirname "$PRG"`"/$link"
+    fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >&-
+APP_HOME="`pwd -P`"
+cd "$SAVED" >&-
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+        # IBM's JDK on AIX uses strange locations for the executables
+        JAVACMD="$JAVA_HOME/jre/sh/java"
+    else
+        JAVACMD="$JAVA_HOME/bin/java"
+    fi
+    if [ ! -x "$JAVACMD" ] ; then
+        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+    fi
+else
+    JAVACMD="java"
+    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
+    MAX_FD_LIMIT=`ulimit -H -n`
+    if [ $? -eq 0 ] ; then
+        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+            MAX_FD="$MAX_FD_LIMIT"
+        fi
+        ulimit -n $MAX_FD
+        if [ $? -ne 0 ] ; then
+            warn "Could not set maximum file descriptor limit: $MAX_FD"
+        fi
+    else
+        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+    fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+
+    # We build the pattern for arguments to be converted via cygpath
+    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+    SEP=""
+    for dir in $ROOTDIRSRAW ; do
+        ROOTDIRS="$ROOTDIRS$SEP$dir"
+        SEP="|"
+    done
+    OURCYGPATTERN="(^($ROOTDIRS))"
+    # Add a user-defined pattern to the cygpath arguments
+    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+    fi
+    # Now convert the arguments - kludge to limit ourselves to /bin/sh
+    i=0
+    for arg in "$@" ; do
+        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
+
+        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
+            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+        else
+            eval `echo args$i`="\"$arg\""
+        fi
+        i=$((i+1))
+    done
+    case $i in
+        (0) set -- ;;
+        (1) set -- "$args0" ;;
+        (2) set -- "$args0" "$args1" ;;
+        (3) set -- "$args0" "$args1" "$args2" ;;
+        (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+        (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+        (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+        (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+        (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+        (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+    esac
+fi
+
+# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
+function splitJvmOpts() {
+    JVM_OPTS=("$@")
+}
+eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
+JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
+
+exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
diff --git a/samples/wearable/WatchViewStub/gradlew.bat b/samples/wearable/WatchViewStub/gradlew.bat
new file mode 100755
index 0000000..aec9973
--- /dev/null
+++ b/samples/wearable/WatchViewStub/gradlew.bat
@@ -0,0 +1,90 @@
+@if "%DEBUG%" == "" @echo off

+@rem ##########################################################################

+@rem

+@rem  Gradle startup script for Windows

+@rem

+@rem ##########################################################################

+

+@rem Set local scope for the variables with windows NT shell

+if "%OS%"=="Windows_NT" setlocal

+

+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.

+set DEFAULT_JVM_OPTS=

+

+set DIRNAME=%~dp0

+if "%DIRNAME%" == "" set DIRNAME=.

+set APP_BASE_NAME=%~n0

+set APP_HOME=%DIRNAME%

+

+@rem Find java.exe

+if defined JAVA_HOME goto findJavaFromJavaHome

+

+set JAVA_EXE=java.exe

+%JAVA_EXE% -version >NUL 2>&1

+if "%ERRORLEVEL%" == "0" goto init

+

+echo.

+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.

+echo.

+echo Please set the JAVA_HOME variable in your environment to match the

+echo location of your Java installation.

+

+goto fail

+

+:findJavaFromJavaHome

+set JAVA_HOME=%JAVA_HOME:"=%

+set JAVA_EXE=%JAVA_HOME%/bin/java.exe

+

+if exist "%JAVA_EXE%" goto init

+

+echo.

+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%

+echo.

+echo Please set the JAVA_HOME variable in your environment to match the

+echo location of your Java installation.

+

+goto fail

+

+:init

+@rem Get command-line arguments, handling Windowz variants

+

+if not "%OS%" == "Windows_NT" goto win9xME_args

+if "%@eval[2+2]" == "4" goto 4NT_args

+

+:win9xME_args

+@rem Slurp the command line arguments.

+set CMD_LINE_ARGS=

+set _SKIP=2

+

+:win9xME_args_slurp

+if "x%~1" == "x" goto execute

+

+set CMD_LINE_ARGS=%*

+goto execute

+

+:4NT_args

+@rem Get arguments from the 4NT Shell from JP Software

+set CMD_LINE_ARGS=%$

+

+:execute

+@rem Setup the command line

+

+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar

+

+@rem Execute Gradle

+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%

+

+:end

+@rem End local scope for the variables with windows NT shell

+if "%ERRORLEVEL%"=="0" goto mainEnd

+

+:fail

+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of

+rem the _cmd.exe /c_ return code!

+if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1

+exit /b 1

+

+:mainEnd

+if "%OS%"=="Windows_NT" endlocal

+

+:omega

diff --git a/samples/wearable/WatchViewStub/settings.gradle b/samples/wearable/WatchViewStub/settings.gradle
new file mode 100644
index 0000000..1d97d30
--- /dev/null
+++ b/samples/wearable/WatchViewStub/settings.gradle
@@ -0,0 +1 @@
+include ':Wearable'
diff --git a/samples/wearable/build.gradle b/samples/wearable/build.gradle
new file mode 100644
index 0000000..c55e069
--- /dev/null
+++ b/samples/wearable/build.gradle
@@ -0,0 +1,44 @@
+buildscript {
+    ext.topDir = file('../../../../../')
+    repositories {
+        mavenCentral()
+    }
+    dependencies {
+        classpath 'com.android.tools.build:gradle:0.11.+'
+    }
+}
+
+List<String> samples = [
+    "AgendaData",
+    "DataLayer",
+    "DelayedConfirmation",
+    "ElizaChat",
+    "FindMyPhone",
+    "Flashlight",
+    "Geofencing",
+    "GridViewPager",
+    "JumpingJack",
+    "Notifications",
+    "Quiz",
+    "RecipeAssistant",
+    "SkeletonWearableApp",
+    "Timer",
+    "WatchViewStub",
+]
+
+List<String> taskNames = [
+    "clean",
+    "build",
+]
+
+taskNames.each { taskName ->
+    def task = project.hasProperty(taskName) ? project.tasks[taskName] : project.task(taskName)
+    samples.each { sample ->
+        File sampleDir = new File(sample)
+        task.dependsOn project.task([type: GradleBuild], "${sample}_${taskName}", {
+            buildFile = "${sample}/build.gradle"
+            dir = sample
+            tasks = [taskName]
+        })
+    }
+}
diff --git a/samples/wearable/gradle.properties b/samples/wearable/gradle.properties
new file mode 100644
index 0000000..3372dc3f
--- /dev/null
+++ b/samples/wearable/gradle.properties
@@ -0,0 +1 @@
+org.gradle.jvmargs=-Xmx4096m -XX:MaxPermSize=1024m
diff --git a/samples/wearable/gradle/wrapper/gradle-wrapper.jar b/samples/wearable/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 0000000..5838598
--- /dev/null
+++ b/samples/wearable/gradle/wrapper/gradle-wrapper.jar
Binary files differ
diff --git a/samples/wearable/gradle/wrapper/gradle-wrapper.properties b/samples/wearable/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..e83e460
--- /dev/null
+++ b/samples/wearable/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Fri Mar 14 14:02:22 PDT 2014
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=http\://services.gradle.org/distributions/gradle-1.11-all.zip
diff --git a/samples/wearable/gradlew b/samples/wearable/gradlew
new file mode 100755
index 0000000..d8910a5
--- /dev/null
+++ b/samples/wearable/gradlew
@@ -0,0 +1,174 @@
+#!/usr/bin/env bash
+
+##############################################################################
+##
+##  Gradle start up script for UN*X
+##
+##############################################################################
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn ( ) {
+    echo "$*"
+}
+
+die ( ) {
+    echo
+    echo "$*"
+    echo
+    exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+case "`uname`" in
+  CYGWIN* )
+    cygwin=true
+    ;;
+  Darwin* )
+    darwin=true
+    ;;
+  MINGW* )
+    msys=true
+    ;;
+esac
+
+# For Cygwin, ensure paths are in UNIX format before anything is touched.
+if $cygwin ; then
+    [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
+fi
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+    ls=`ls -ld "$PRG"`
+    link=`expr "$ls" : '.*-> \(.*\)$'`
+    if expr "$link" : '/.*' > /dev/null; then
+        PRG="$link"
+    else
+        PRG=`dirname "$PRG"`"/$link"
+    fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >&-
+APP_HOME="`pwd -P`"
+cd "$SAVED" >&-
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+        # IBM's JDK on AIX uses strange locations for the executables
+        JAVACMD="$JAVA_HOME/jre/sh/java"
+    else
+        JAVACMD="$JAVA_HOME/bin/java"
+    fi
+    if [ ! -x "$JAVACMD" ] ; then
+        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+    fi
+else
+    JAVACMD="java"
+    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
+    MAX_FD_LIMIT=`ulimit -H -n`
+    if [ $? -eq 0 ] ; then
+        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+            MAX_FD="$MAX_FD_LIMIT"
+        fi
+        ulimit -n $MAX_FD
+        if [ $? -ne 0 ] ; then
+            warn "Could not set maximum file descriptor limit: $MAX_FD"
+        fi
+    else
+        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+    fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+
+    # We build the pattern for arguments to be converted via cygpath
+    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+    SEP=""
+    for dir in $ROOTDIRSRAW ; do
+        ROOTDIRS="$ROOTDIRS$SEP$dir"
+        SEP="|"
+    done
+    OURCYGPATTERN="(^($ROOTDIRS))"
+    # Add a user-defined pattern to the cygpath arguments
+    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+    fi
+    # Now convert the arguments - kludge to limit ourselves to /bin/sh
+    i=0
+    for arg in "$@" ; do
+        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
+
+        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
+            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+        else
+            eval `echo args$i`="\"$arg\""
+        fi
+        i=$((i+1))
+    done
+    case $i in
+        (0) set -- ;;
+        (1) set -- "$args0" ;;
+        (2) set -- "$args0" "$args1" ;;
+        (3) set -- "$args0" "$args1" "$args2" ;;
+        (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+        (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+        (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+        (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+        (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+        (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+    esac
+fi
+
+# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
+function splitJvmOpts() {
+    JVM_OPTS=("$@")
+}
+eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
+JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
+
+# Change the project's .gradle to the android out dir.
+ANDROID_GRADLE_ROOT="$APP_HOME/../../../out/host/gradle/tools/updater"
+if [[ -z "$ANDROID_CACHE_DIR" ]]; then
+  ANDROID_CACHE_DIR="$ANDROID_GRADLE_ROOT/.gradle"
+fi
+
+# Change the local user directories to be under the android out dir
+export GRADLE_USER_HOME="$ANDROID_GRADLE_ROOT/.gradle"
+export M2_HOME="$ANDROID_GRADLE_ROOT/.m2"
+
+exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
diff --git a/samples/wearable/gradlew.bat b/samples/wearable/gradlew.bat
new file mode 100755
index 0000000..aec9973
--- /dev/null
+++ b/samples/wearable/gradlew.bat
@@ -0,0 +1,90 @@
+@if "%DEBUG%" == "" @echo off

+@rem ##########################################################################

+@rem

+@rem  Gradle startup script for Windows

+@rem

+@rem ##########################################################################

+

+@rem Set local scope for the variables with windows NT shell

+if "%OS%"=="Windows_NT" setlocal

+

+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.

+set DEFAULT_JVM_OPTS=

+

+set DIRNAME=%~dp0

+if "%DIRNAME%" == "" set DIRNAME=.

+set APP_BASE_NAME=%~n0

+set APP_HOME=%DIRNAME%

+

+@rem Find java.exe

+if defined JAVA_HOME goto findJavaFromJavaHome

+

+set JAVA_EXE=java.exe

+%JAVA_EXE% -version >NUL 2>&1

+if "%ERRORLEVEL%" == "0" goto init

+

+echo.

+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.

+echo.

+echo Please set the JAVA_HOME variable in your environment to match the

+echo location of your Java installation.

+

+goto fail

+

+:findJavaFromJavaHome

+set JAVA_HOME=%JAVA_HOME:"=%

+set JAVA_EXE=%JAVA_HOME%/bin/java.exe

+

+if exist "%JAVA_EXE%" goto init

+

+echo.

+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%

+echo.

+echo Please set the JAVA_HOME variable in your environment to match the

+echo location of your Java installation.

+

+goto fail

+

+:init

+@rem Get command-line arguments, handling Windowz variants

+

+if not "%OS%" == "Windows_NT" goto win9xME_args

+if "%@eval[2+2]" == "4" goto 4NT_args

+

+:win9xME_args

+@rem Slurp the command line arguments.

+set CMD_LINE_ARGS=

+set _SKIP=2

+

+:win9xME_args_slurp

+if "x%~1" == "x" goto execute

+

+set CMD_LINE_ARGS=%*

+goto execute

+

+:4NT_args

+@rem Get arguments from the 4NT Shell from JP Software

+set CMD_LINE_ARGS=%$

+

+:execute

+@rem Setup the command line

+

+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar

+

+@rem Execute Gradle

+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%

+

+:end

+@rem End local scope for the variables with windows NT shell

+if "%ERRORLEVEL%"=="0" goto mainEnd

+

+:fail

+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of

+rem the _cmd.exe /c_ return code!

+if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1

+exit /b 1

+

+:mainEnd

+if "%OS%"=="Windows_NT" endlocal

+

+:omega

diff --git a/ndk/platforms/android-20/include/lastlog.h b/samples/wearable/settings.gradle
similarity index 100%
copy from ndk/platforms/android-20/include/lastlog.h
copy to samples/wearable/settings.gradle
diff --git a/scripts/app_engine_server/LICENSE b/scripts/app_engine_server/LICENSE
deleted file mode 100644
index d645695..0000000
--- a/scripts/app_engine_server/LICENSE
+++ /dev/null
@@ -1,202 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
diff --git a/scripts/app_engine_server/MOVED-README.txt b/scripts/app_engine_server/MOVED-README.txt
new file mode 100644
index 0000000..5dba2bd
--- /dev/null
+++ b/scripts/app_engine_server/MOVED-README.txt
@@ -0,0 +1,4 @@
+The server configuration for developer.android.com documentation site
+has moved to:
+
+../../../vendor/google/docs/app-engine-server
diff --git a/scripts/app_engine_server/app.yaml b/scripts/app_engine_server/app.yaml
deleted file mode 100755
index 15f02e1..0000000
--- a/scripts/app_engine_server/app.yaml
+++ /dev/null
@@ -1,20 +0,0 @@
-application: androidappdocs-staging
-version: 2
-runtime: python
-api_version: 1
-
-handlers:
-- url: /remote_api
-  script: $PYTHON_LIB/google/appengine/ext/remote_api/handler.py
-  login: admin
-
-- url: /gae_shell/static
-  static_dir: gae_shell/static
-  expiration: 1d
-
-- url: /gae_shell/.*
-  script: /gae_shell/shell.py
-  login: admin
-
-- url: .*
-  script: main.py
diff --git a/scripts/app_engine_server/app.yaml.production b/scripts/app_engine_server/app.yaml.production
deleted file mode 100644
index 61bd51a..0000000
--- a/scripts/app_engine_server/app.yaml.production
+++ /dev/null
@@ -1,16 +0,0 @@
-application: androiddevdocs
-version: 1
-runtime: python
-api_version: 1
-
-handlers:
-- url: /gae_shell/static
-  static_dir: gae_shell/static
-  expiration: 1d
-
-- url: /gae_shell/.*
-  script: /gae_shell/shell.py
-  login: admin
-
-- url: .*
-  script: main.py
diff --git a/scripts/app_engine_server/gae_shell/README b/scripts/app_engine_server/gae_shell/README
deleted file mode 100644
index 5b0089f..0000000
--- a/scripts/app_engine_server/gae_shell/README
+++ /dev/null
@@ -1,17 +0,0 @@
-An interactive, stateful AJAX shell that runs Python code on the server.
-
-Part of http://code.google.com/p/google-app-engine-samples/.
-
-May be run as a standalone app or in an existing app as an admin-only handler.
-Can be used for system administration tasks, as an interactive way to try out
-APIs, or as a debugging aid during development.
-
-The logging, os, sys, db, and users modules are imported automatically.
-
-Interpreter state is stored in the datastore so that variables, function
-definitions, and other values in the global and local namespaces can be used
-across commands.
-
-To use the shell in your app, copy shell.py, static/*, and templates/* into
-your app's source directory. Then, copy the URL handlers from app.yaml into
-your app.yaml.
diff --git a/scripts/app_engine_server/gae_shell/__init__.py b/scripts/app_engine_server/gae_shell/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/scripts/app_engine_server/gae_shell/__init__.py
+++ /dev/null
diff --git a/scripts/app_engine_server/gae_shell/shell.py b/scripts/app_engine_server/gae_shell/shell.py
deleted file mode 100755
index df2fb17..0000000
--- a/scripts/app_engine_server/gae_shell/shell.py
+++ /dev/null
@@ -1,308 +0,0 @@
-#!/usr/bin/python
-#
-# Copyright 2007 Google 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.
-
-"""
-An interactive, stateful AJAX shell that runs Python code on the server.
-
-Part of http://code.google.com/p/google-app-engine-samples/.
-
-May be run as a standalone app or in an existing app as an admin-only handler.
-Can be used for system administration tasks, as an interactive way to try out
-APIs, or as a debugging aid during development.
-
-The logging, os, sys, db, and users modules are imported automatically.
-
-Interpreter state is stored in the datastore so that variables, function
-definitions, and other values in the global and local namespaces can be used
-across commands.
-
-To use the shell in your app, copy shell.py, static/*, and templates/* into
-your app's source directory. Then, copy the URL handlers from app.yaml into
-your app.yaml.
-
-TODO: unit tests!
-"""
-
-import logging
-import new
-import os
-import pickle
-import sys
-import traceback
-import types
-import wsgiref.handlers
-
-from google.appengine.api import users
-from google.appengine.ext import db
-from google.appengine.ext import webapp
-from google.appengine.ext.webapp import template
-
-
-# Set to True if stack traces should be shown in the browser, etc.
-_DEBUG = True
-
-# The entity kind for shell sessions. Feel free to rename to suit your app.
-_SESSION_KIND = '_Shell_Session'
-
-# Types that can't be pickled.
-UNPICKLABLE_TYPES = (
-  types.ModuleType,
-  types.TypeType,
-  types.ClassType,
-  types.FunctionType,
-  )
-
-# Unpicklable statements to seed new sessions with.
-INITIAL_UNPICKLABLES = [
-  'import logging',
-  'import os',
-  'import sys',
-  'from google.appengine.ext import db',
-  'from google.appengine.api import users',
-  ]
-
-
-class Session(db.Model):
-  """A shell session. Stores the session's globals.
-
-  Each session globals is stored in one of two places:
-
-  If the global is picklable, it's stored in the parallel globals and
-  global_names list properties. (They're parallel lists to work around the
-  unfortunate fact that the datastore can't store dictionaries natively.)
-
-  If the global is not picklable (e.g. modules, classes, and functions), or if
-  it was created by the same statement that created an unpicklable global,
-  it's not stored directly. Instead, the statement is stored in the
-  unpicklables list property. On each request, before executing the current
-  statement, the unpicklable statements are evaluated to recreate the
-  unpicklable globals.
-
-  The unpicklable_names property stores all of the names of globals that were
-  added by unpicklable statements. When we pickle and store the globals after
-  executing a statement, we skip the ones in unpicklable_names.
-
-  Using Text instead of string is an optimization. We don't query on any of
-  these properties, so they don't need to be indexed.
-  """
-  global_names = db.ListProperty(db.Text)
-  globals = db.ListProperty(db.Blob)
-  unpicklable_names = db.ListProperty(db.Text)
-  unpicklables = db.ListProperty(db.Text)
-
-  def set_global(self, name, value):
-    """Adds a global, or updates it if it already exists.
-
-    Also removes the global from the list of unpicklable names.
-
-    Args:
-      name: the name of the global to remove
-      value: any picklable value
-    """
-    blob = db.Blob(pickle.dumps(value))
-
-    if name in self.global_names:
-      index = self.global_names.index(name)
-      self.globals[index] = blob
-    else:
-      self.global_names.append(db.Text(name))
-      self.globals.append(blob)
-
-    self.remove_unpicklable_name(name)
-
-  def remove_global(self, name):
-    """Removes a global, if it exists.
-
-    Args:
-      name: string, the name of the global to remove
-    """
-    if name in self.global_names:
-      index = self.global_names.index(name)
-      del self.global_names[index]
-      del self.globals[index]
-
-  def globals_dict(self):
-    """Returns a dictionary view of the globals.
-    """
-    return dict((name, pickle.loads(val))
-                for name, val in zip(self.global_names, self.globals))
-
-  def add_unpicklable(self, statement, names):
-    """Adds a statement and list of names to the unpicklables.
-
-    Also removes the names from the globals.
-
-    Args:
-      statement: string, the statement that created new unpicklable global(s).
-      names: list of strings; the names of the globals created by the statement.
-    """
-    self.unpicklables.append(db.Text(statement))
-
-    for name in names:
-      self.remove_global(name)
-      if name not in self.unpicklable_names:
-        self.unpicklable_names.append(db.Text(name))
-
-  def remove_unpicklable_name(self, name):
-    """Removes a name from the list of unpicklable names, if it exists.
-
-    Args:
-      name: string, the name of the unpicklable global to remove
-    """
-    if name in self.unpicklable_names:
-      self.unpicklable_names.remove(name)
-
-
-class FrontPageHandler(webapp.RequestHandler):
-  """Creates a new session and renders the shell.html template.
-  """
-
-  def get(self):
-    # set up the session. TODO: garbage collect old shell sessions
-    session_key = self.request.get('session')
-    if session_key:
-      session = Session.get(session_key)
-    else:
-      # create a new session
-      session = Session()
-      session.unpicklables = [db.Text(line) for line in INITIAL_UNPICKLABLES]
-      session_key = session.put()
-
-    template_file = os.path.join(os.path.dirname(__file__), 'templates',
-                                 'shell.html')
-    session_url = '/?session=%s' % session_key
-    vars = { 'server_software': os.environ['SERVER_SOFTWARE'],
-             'python_version': sys.version,
-             'session': str(session_key),
-             'user': users.get_current_user(),
-             'login_url': users.create_login_url(session_url),
-             'logout_url': users.create_logout_url(session_url),
-             }
-    rendered = webapp.template.render(template_file, vars, debug=_DEBUG)
-    self.response.out.write(rendered)
-
-
-class StatementHandler(webapp.RequestHandler):
-  """Evaluates a python statement in a given session and returns the result.
-  """
-
-  def get(self):
-    self.response.headers['Content-Type'] = 'text/plain'
-
-    # extract the statement to be run
-    statement = self.request.get('statement')
-    if not statement:
-      return
-
-    # the python compiler doesn't like network line endings
-    statement = statement.replace('\r\n', '\n')
-
-    # add a couple newlines at the end of the statement. this makes
-    # single-line expressions such as 'class Foo: pass' evaluate happily.
-    statement += '\n\n'
-
-    # log and compile the statement up front
-    try:
-      logging.info('Compiling and evaluating:\n%s' % statement)
-      compiled = compile(statement, '<string>', 'single')
-    except:
-      self.response.out.write(traceback.format_exc())
-      return
-
-    # create a dedicated module to be used as this statement's __main__
-    statement_module = new.module('__main__')
-
-    # use this request's __builtin__, since it changes on each request.
-    # this is needed for import statements, among other things.
-    import __builtin__
-    statement_module.__builtins__ = __builtin__
-
-    # load the session from the datastore
-    session = Session.get(self.request.get('session'))
-
-    # swap in our custom module for __main__. then unpickle the session
-    # globals, run the statement, and re-pickle the session globals, all
-    # inside it.
-    old_main = sys.modules.get('__main__')
-    try:
-      sys.modules['__main__'] = statement_module
-      statement_module.__name__ = '__main__'
-
-      # re-evaluate the unpicklables
-      for code in session.unpicklables:
-        exec code in statement_module.__dict__
-
-      # re-initialize the globals
-      for name, val in session.globals_dict().items():
-        try:
-          statement_module.__dict__[name] = val
-        except:
-          msg = 'Dropping %s since it could not be unpickled.\n' % name
-          self.response.out.write(msg)
-          logging.warning(msg + traceback.format_exc())
-          session.remove_global(name)
-
-      # run!
-      old_globals = dict(statement_module.__dict__)
-      try:
-        old_stdout = sys.stdout
-        old_stderr = sys.stderr
-        try:
-          sys.stdout = self.response.out
-          sys.stderr = self.response.out
-          exec compiled in statement_module.__dict__
-        finally:
-          sys.stdout = old_stdout
-          sys.stderr = old_stderr
-      except:
-        self.response.out.write(traceback.format_exc())
-        return
-
-      # extract the new globals that this statement added
-      new_globals = {}
-      for name, val in statement_module.__dict__.items():
-        if name not in old_globals or val != old_globals[name]:
-          new_globals[name] = val
-
-      if True in [isinstance(val, UNPICKLABLE_TYPES)
-                  for val in new_globals.values()]:
-        # this statement added an unpicklable global. store the statement and
-        # the names of all of the globals it added in the unpicklables.
-        session.add_unpicklable(statement, new_globals.keys())
-        logging.debug('Storing this statement as an unpicklable.')
-
-      else:
-        # this statement didn't add any unpicklables. pickle and store the
-        # new globals back into the datastore.
-        for name, val in new_globals.items():
-          if not name.startswith('__'):
-            session.set_global(name, val)
-
-    finally:
-      sys.modules['__main__'] = old_main
-
-    session.put()
-
-
-def main():
-  application = webapp.WSGIApplication(
-    [('/gae_shell/', FrontPageHandler),
-     ('/gae_shell/shell.do', StatementHandler)], debug=_DEBUG)
-  wsgiref.handlers.CGIHandler().run(application)
-
-
-if __name__ == '__main__':
-  main()
diff --git a/scripts/app_engine_server/gae_shell/static/shell.js b/scripts/app_engine_server/gae_shell/static/shell.js
deleted file mode 100644
index 4aa1583..0000000
--- a/scripts/app_engine_server/gae_shell/static/shell.js
+++ /dev/null
@@ -1,195 +0,0 @@
-// Copyright 2007 Google 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.
-
-/**
- * @fileoverview
- * Javascript code for the interactive AJAX shell.
- *
- * Part of http://code.google.com/p/google-app-engine-samples/.
- *
- * Includes a function (shell.runStatement) that sends the current python
- * statement in the shell prompt text box to the server, and a callback
- * (shell.done) that displays the results when the XmlHttpRequest returns.
- *
- * Also includes cross-browser code (shell.getXmlHttpRequest) to get an
- * XmlHttpRequest.
- */
-
-/**
- * Shell namespace.
- * @type {Object}
- */
-var shell = {}
-
-/**
- * The shell history. history is an array of strings, ordered oldest to
- * newest. historyCursor is the current history element that the user is on.
- *
- * The last history element is the statement that the user is currently
- * typing. When a statement is run, it's frozen in the history, a new history
- * element is added to the end of the array for the new statement, and
- * historyCursor is updated to point to the new element.
- *
- * @type {Array}
- */
-shell.history = [''];
-
-/**
- * See {shell.history}
- * @type {number}
- */
-shell.historyCursor = 0;
-
-/**
- * A constant for the XmlHttpRequest 'done' state.
- * @type Number
- */
-shell.DONE_STATE = 4;
-
-/**
- * A cross-browser function to get an XmlHttpRequest object.
- *
- * @return {XmlHttpRequest?} a new XmlHttpRequest
- */
-shell.getXmlHttpRequest = function() {
-  if (window.XMLHttpRequest) {
-    return new XMLHttpRequest();
-  } else if (window.ActiveXObject) {
-    try {
-      return new ActiveXObject('Msxml2.XMLHTTP');
-    } catch(e) {
-      return new ActiveXObject('Microsoft.XMLHTTP');
-    }
-  }
-
-  return null;
-};
-
-/**
- * This is the prompt textarea's onkeypress handler. Depending on the key that
- * was pressed, it will run the statement, navigate the history, or update the
- * current statement in the history.
- *
- * @param {Event} event the keypress event
- * @return {Boolean} false to tell the browser not to submit the form.
- */
-shell.onPromptKeyPress = function(event) {
-  var statement = document.getElementById('statement');
-
-  if (this.historyCursor == this.history.length - 1) {
-    // we're on the current statement. update it in the history before doing
-    // anything.
-    this.history[this.historyCursor] = statement.value;
-  }
-
-  // should we pull something from the history?
-  if (event.ctrlKey && event.keyCode == 38 /* up arrow */) {
-    if (this.historyCursor > 0) {
-      statement.value = this.history[--this.historyCursor];
-    }
-    return false;
-  } else if (event.ctrlKey && event.keyCode == 40 /* down arrow */) {
-    if (this.historyCursor < this.history.length - 1) {
-      statement.value = this.history[++this.historyCursor];
-    }
-    return false;
-  } else if (!event.altKey) {
-    // probably changing the statement. update it in the history.
-    this.historyCursor = this.history.length - 1;
-    this.history[this.historyCursor] = statement.value;
-  }
-
-  // should we submit?
-  var ctrlEnter = (document.getElementById('submit_key').value == 'ctrl-enter');
-  if (event.keyCode == 13 /* enter */ && !event.altKey && !event.shiftKey &&
-      event.ctrlKey == ctrlEnter) {
-    return this.runStatement();
-  }
-};
-
-/**
- * The XmlHttpRequest callback. If the request succeeds, it adds the command
- * and its resulting output to the shell history div.
- *
- * @param {XmlHttpRequest} req the XmlHttpRequest we used to send the current
- *     statement to the server
- */
-shell.done = function(req) {
-  if (req.readyState == this.DONE_STATE) {
-    var statement = document.getElementById('statement')
-    statement.className = 'prompt';
-
-    // add the command to the shell output
-    var output = document.getElementById('output');
-
-    output.value += '\n>>> ' + statement.value;
-    statement.value = '';
-
-    // add a new history element
-    this.history.push('');
-    this.historyCursor = this.history.length - 1;
-
-    // add the command's result
-    var result = req.responseText.replace(/^\s*|\s*$/g, '');  // trim whitespace
-    if (result != '')
-      output.value += '\n' + result;
-
-    // scroll to the bottom
-    output.scrollTop = output.scrollHeight;
-    if (output.createTextRange) {
-      var range = output.createTextRange();
-      range.collapse(false);
-      range.select();
-    }
-  }
-};
-
-/**
- * This is the form's onsubmit handler. It sends the python statement to the
- * server, and registers shell.done() as the callback to run when it returns.
- *
- * @return {Boolean} false to tell the browser not to submit the form.
- */
-shell.runStatement = function() {
-  var form = document.getElementById('form');
-
-  // build a XmlHttpRequest
-  var req = this.getXmlHttpRequest();
-  if (!req) {
-    document.getElementById('ajax-status').innerHTML =
-        "<span class='error'>Your browser doesn't support AJAX. :(</span>";
-    return false;
-  }
-
-  req.onreadystatechange = function() { shell.done(req); };
-
-  // build the query parameter string
-  var params = '';
-  for (i = 0; i < form.elements.length; i++) {
-    var elem = form.elements[i];
-    if (elem.type != 'submit' && elem.type != 'button' && elem.id != 'caret') {
-      var value = escape(elem.value).replace(/\+/g, '%2B'); // escape ignores +
-      params += '&' + elem.name + '=' + value;
-    }
-  }
-
-  // send the request and tell the user.
-  document.getElementById('statement').className = 'prompt processing';
-  req.open(form.method, form.action + '?' + params, true);
-  req.setRequestHeader('Content-type',
-                       'application/x-www-form-urlencoded;charset=UTF-8');
-  req.send(null);
-
-  return false;
-};
diff --git a/scripts/app_engine_server/gae_shell/static/spinner.gif b/scripts/app_engine_server/gae_shell/static/spinner.gif
deleted file mode 100644
index 3e58d6e..0000000
--- a/scripts/app_engine_server/gae_shell/static/spinner.gif
+++ /dev/null
Binary files differ
diff --git a/scripts/app_engine_server/gae_shell/templates/shell.html b/scripts/app_engine_server/gae_shell/templates/shell.html
deleted file mode 100644
index 123b200..0000000
--- a/scripts/app_engine_server/gae_shell/templates/shell.html
+++ /dev/null
@@ -1,122 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html>
-<head>
-<meta http-equiv="content-type" content="text/html; charset=utf-8" />
-<title> Interactive Shell </title>
-<script type="text/javascript" src="/gae_shell/static/shell.js"></script>
-<style type="text/css">
-body {
-  font-family: monospace;
-  font-size: 10pt;
-}
-
-p {
-  margin: 0.5em;
-}
-
-.prompt, #output {
-  width: 45em;
-  border: 1px solid silver;
-  background-color: #f5f5f5;
-  font-size: 10pt;
-  margin: 0.5em;
-  padding: 0.5em;
-  padding-right: 0em;
-  overflow-x: hidden;
-}
-
-#toolbar {
-  margin-left: 0.5em;
-  padding-left: 0.5em;
-}
-
-#caret {
-  width: 2.5em;
-  margin-right: 0px;
-  padding-right: 0px;
-  border-right: 0px;
-}
-
-#statement {
-  width: 43em;
-  margin-left: -1em;
-  padding-left: 0px;
-  border-left: 0px;
-  background-position: top right;
-  background-repeat: no-repeat;
-}
-
-.processing {
-  background-image: url("/gae_shell/static/spinner.gif");
-}
-
-#ajax-status {
-  font-weight: bold;
-}
-
-.message {
-  color: #8AD;
-  font-weight: bold;
-  font-style: italic;
-}
-
-.error {
-  color: #F44;
-}
-
-.username {
-  font-weight: bold;
-}
-
-</style>
-</head>
-
-<body>
-
-<p> Interactive server-side Python shell for
-<a href="http://code.google.com/appengine/">Google App Engine</a>.
-(<a href="http://code.google.com/p/google-app-engine-samples/">source</a>)
-</p>
-
-<textarea id="output" rows="22" readonly="readonly">
-{{ server_software }}
-Python {{ python_version }}
-</textarea>
-
-<form id="form" action="shell.do" method="get">
-  <nobr>
-  <textarea class="prompt" id="caret" readonly="readonly" rows="4"
-            onfocus="document.getElementById('statement').focus()"
-            >&gt;&gt;&gt;</textarea>
-  <textarea class="prompt" name="statement" id="statement" rows="4"
-            onkeypress="return shell.onPromptKeyPress(event);"></textarea>
-  </nobr>
-  <input type="hidden" name="session" value="{{ session }}" />
-  <input type="submit" style="display: none" />
-</form>
-
-<p id="ajax-status"></p>
-
-<p id="toolbar">
-{% if user %}
-  <span class="username">{{ user.nickname }}</span>
-  (<a href="{{ logout_url }}">log out</a>)
-{% else %}
-  <a href="{{ login_url }}">log in</a>
-{% endif %}
- | Ctrl-Up/Down for history |
-<select id="submit_key">
-  <option value="enter">Enter</option>
-  <option value="ctrl-enter" selected="selected">Ctrl-Enter</option>
-</select>
-<label for="submit_key">submits</label>
-</p>
-
-<script type="text/javascript">
-document.getElementById('statement').focus();
-</script>
-
-</body>
-</html>
-
diff --git a/scripts/app_engine_server/index.yaml b/scripts/app_engine_server/index.yaml
deleted file mode 100644
index 8e6046d..0000000
--- a/scripts/app_engine_server/index.yaml
+++ /dev/null
@@ -1,12 +0,0 @@
-indexes:
-
-# AUTOGENERATED
-
-# This index.yaml is automatically updated whenever the dev_appserver
-# detects that a new type of query is run.  If you want to manage the
-# index.yaml file manually, remove the above marker line (the line
-# saying "# AUTOGENERATED").  If you want to manage some indexes
-# manually, move them above the marker line.  The index.yaml file is
-# automatically uploaded to the admin console when you next deploy
-# your application using appcfg.py.
-
diff --git a/scripts/app_engine_server/memcache_zipserve.py b/scripts/app_engine_server/memcache_zipserve.py
deleted file mode 100644
index 4efd984..0000000
--- a/scripts/app_engine_server/memcache_zipserve.py
+++ /dev/null
@@ -1,756 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-#
-# Copyright 2009 Google 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.
-#
-
-"""A class to serve pages from zip files and use memcache for performance.
-
-This contains a class and a function to create an anonymous instance of the
-class to serve HTTP GET requests. Memcache is used to increase response speed
-and lower processing cycles used in serving. Credit to Guido van Rossum and
-his implementation of zipserve which served as a reference as I wrote this.
-
-  MemcachedZipHandler: Class that serves request
-  create_handler: method to create instance of MemcachedZipHandler
-"""
-
-__author__ = 'jmatt@google.com (Justin Mattson)'
-
-import email.Utils
-import logging
-import mimetypes
-import re
-import sys
-import time
-import yaml
-import zipfile
-
-from google.appengine.api import memcache
-from google.appengine.ext import webapp
-from google.appengine.ext.webapp import util
-from time import localtime, strftime
-
-def create_handler(zip_files, max_age=None, public=None):
-  """Factory method to create a MemcachedZipHandler instance.
-
-  Args:
-    zip_files: A list of file names, or a list of lists of file name, first
-        member of file mappings. See MemcachedZipHandler documentation for
-        more information about using the list of lists format
-    max_age: The maximum client-side cache lifetime
-    public: Whether this should be declared public in the client-side cache
-  Returns:
-    A MemcachedZipHandler wrapped in a pretty, anonymous bow for use with App
-    Engine
-
-  Raises:
-    ValueError: if the zip_files argument is not a list
-  """
-  # verify argument integrity. If the argument is passed in list format,
-  # convert it to list of lists format
-  if zip_files and type(zip_files).__name__ == 'list':
-    num_items = len(zip_files)
-    while num_items > 0:
-      if type(zip_files[num_items - 1]).__name__ != 'list':
-        zip_files[num_items - 1] = [zip_files[num_items-1]]
-      num_items -= 1
-  else:
-    raise ValueError('File name arguments must be a list')
-
-  class HandlerWrapper(MemcachedZipHandler):
-    """Simple wrapper for an instance of MemcachedZipHandler.
-
-    I'm still not sure why this is needed
-    """
-    def get(self, name):
-      self.zipfilenames = zip_files
-      self.TrueGet(name)
-      if max_age is not None:
-        MAX_AGE = max_age
-      if public is not None:
-        PUBLIC = public
-
-  return HandlerWrapper
-
-
-class MemcachedZipHandler(webapp.RequestHandler):
-  """Handles get requests for a given URL.
-
-  Serves a GET request from a series of zip files. As files are served they are
-  put into memcache, which is much faster than retreiving them from the zip
-  source file again. It also uses considerably fewer CPU cycles.
-  """
-  zipfile_cache = {}                # class cache of source zip files
-  MAX_AGE = 43200                   # max client-side cache lifetime, in seconds
-  PUBLIC = True                     # public cache setting
-  CACHE_PREFIX = 'cache://'         # memcache key prefix for actual URLs
-  NEG_CACHE_PREFIX = 'noncache://'  # memcache key prefix for non-existant URL
-  REDIRECT_PREFIX = 'redirect://'   # memcache key prefix for redirect data
-  REDIRECT_FILE = 'redirects.yaml'  # Name of file that contains redirect table
-  REDIRECT_SRC = 'src'              # Name of the 'source' attribute for a
-                                    #   redirect table entry
-  REDIRECT_DST = 'dst'              # Name of the 'destination' attribute for
-                                    #   a redirect table entry
-  REDIRECT_TYPE = 'type'            # Name of the 'type' attribute for a
-                                    #   redirect table entry
-  REDIRECT_TYPE_PERM = 'permanent'  # Redirect 'type' string indicating a 301
-                                    #   redirect should be served
-  REDIRECT_TYPE_TEMP = 'temporary'  # Redirect 'type'string indicate a 302
-                                    #   Redirect should be served
-  intlString = 'intl/'
-  validLangs = ['en', 'de', 'es', 'fr','it','ja','ko','ru','zh-CN','zh-cn','zh-TW','zh-tw']
-
-  def TrueGet(self, reqUri):
-    """The top-level entry point to serving requests.
-
-    Called 'True' get because it does the work when called from the wrapper
-    class' get method. Some logic is applied to the request to serve files
-    from an intl/<lang>/... directory or fall through to the default language.
-
-    Args:
-      name: URL requested
-
-    Returns:
-      None
-    """
-    langName = 'en'
-    resetLangCookie = False
-    urlLangName = None
-    retry = False
-    isValidIntl = False
-    isStripped = False
-
-    # Try to retrieve the user's lang pref from the cookie. If there is no
-    # lang pref cookie in the request, add set-cookie to the response with the
-    # default value of 'en'.
-    try:
-      langName = self.request.cookies['android_developer_pref_lang']
-    except KeyError:
-      resetLangCookie = True
-      #logging.info('==========================EXCEPTION: NO LANG COOKIE FOUND, USING [%s]', langName)
-    logging.info('==========================REQ INIT name [%s] langName [%s] resetLangCookie [%s]', reqUri, langName, resetLangCookie)
-
-    # Do some prep for handling intl requests. Parse the url and validate
-    # the intl/lang substring, extract the url lang code (urlLangName) and the
-    # the uri that follows the intl/lang substring(contentUri)
-    sections = reqUri.split("/", 2)
-    isIntl = len(sections) > 2 and (sections[0] == "intl")
-    if isIntl:
-      isValidIntl = sections[1] in self.validLangs
-      urlLangName = sections[1]
-      contentUri = sections[2]
-      logging.info('  Content URI is [%s]...', contentUri)
-      if isValidIntl:
-        if (langName != urlLangName) or (langName == 'en'):
-          # if the lang code in the request is different from that in
-          # the cookie, or if the target lang is en, strip the
-          # intl/nn substring. It will later be redirected to
-          # the user's preferred language url.
-          # logging.info('  Handling a MISMATCHED intl request')
-          reqUri = contentUri
-          isStripped = True
-          isValidIntl = False
-          isIntl = False
-          #logging.info('INTL PREP resetting langName to urlLangName [%s]', langName)
-        #else:
-        #  logging.info('INTL PREP no need to reset langName')
-    else:
-      contentUri = reqUri
-
-    # Apply manual redirects from redirects.yaml. This occurs before any
-    # other mutations are performed, to avoid odd redirect behavior
-    # (For example, a user may want to redirect a directory without having
-    # /index.html appended.)
-    did_redirect = self.ProcessManualRedirects(contentUri, langName, isIntl)
-    if did_redirect:
-      return
-
-    # Preprocess the req url. If it references a directory or the domain itself,
-    # append '/index.html' to the url and 302 redirect. Otherwise, continue
-    # processing the request below.
-    did_redirect = self.PreprocessUrl(reqUri, langName)
-    if did_redirect:
-      return
-
-    # Send for processing
-    if self.isCleanUrl(reqUri, langName, isValidIntl, isStripped):
-      # handle a 'clean' request.
-      # Try to form a response using the actual request url.
-      # logging.info('  Request being handled as clean: [%s]', name)
-      if not self.CreateResponse(reqUri, langName, isValidIntl, resetLangCookie):
-        # If CreateResponse returns False, there was no such document
-        # in the intl/lang tree. Before going to 404, see if there is an
-        # English-language version of the doc in the default
-        # default tree and return it, else go to 404.
-        self.CreateResponse(contentUri, langName, False, resetLangCookie)
-
-    elif isIntl:
-      # handle the case where we need to pass through an invalid intl req
-      # for processing (so as to get 404 as appropriate). This is needed
-      # because intl urls are passed through clean and retried in English,
-      # if necessary.
-      # logging.info('  Handling an invalid intl request...')
-      self.CreateResponse(reqUri, langName, isValidIntl, resetLangCookie)
-
-    else:
-      # handle the case where we have a non-clean url (usually a non-intl
-      # url) that we need to interpret in the context of any lang pref
-      # that is set. Prepend an intl/lang string to the request url and
-      # send it as a 302 redirect. After the redirect, the subsequent
-      # request will be handled as a clean url.
-      self.RedirToIntl(reqUri, self.intlString, langName)
-
-  def ProcessManualRedirects(self, contentUri, langName, isIntl):
-    """Compute any manual redirects for a request and execute them.
-
-    This allows content authors to manually define a set of regex rules which,
-    when matched, will cause an HTTP redirect to be performed.
-
-    Redirect rules are typically stored in a file named redirects.yaml. See the
-    comments in that file for more information about formatting.
-
-    Redirect computations are stored in memcache for performance.
-
-    Note that international URIs are handled automatically, and are assumed to
-    mirror redirects for non-intl requests.
-
-    Args:
-      contentUri: The relative URI (without leading slash) that was requested.
-        This should NOT contain an intl-prefix, if otherwise present.
-      langName: The requested language.
-      isIntl: True if contentUri originally contained an intl prefix.
-
-    Results:
-      boolean: True if a redirect has been set, False otherwise.
-    """
-    # Redirect data is stored in memcache for performance
-    memcache_key = self.REDIRECT_PREFIX + contentUri
-    redirect_data = memcache.get(memcache_key)
-    if redirect_data is None:
-      logging.info('Redirect cache miss. Computing new redirect data.\n'
-                   'Memcache Key: ' + memcache_key)
-      redirect_data = self.ComputeManualRedirectUrl(contentUri)
-      memcache.set(memcache_key, redirect_data)
-    contentUri = redirect_data[0]
-    redirectType = redirect_data[1]
-
-    # If this is an international URL, prepend intl path to minimize
-    # number of redirects
-    if isIntl:
-      contentUri = '/%s%s%s' % (self.intlString, langName, contentUri)
-
-    if redirectType is None:
-      # No redirect necessary
-      return False
-    elif redirectType == self.REDIRECT_TYPE_PERM:
-      logging.info('Sending permanent redirect: ' + contentUri);
-      self.redirect(contentUri, permanent=True)
-      return True
-    elif redirectType == self.REDIRECT_TYPE_TEMP:
-      logging.info('Sending temporary redirect: ' + contentUri);
-      self.redirect(contentUri, permanent=False)
-      return True
-    else:
-      # Invalid redirect type
-      logging.error('Invalid redirect type: %s', redirectType)
-      raise ('Invalid redirect type: %s', redirectType)
-
-  def ComputeManualRedirectUrl(self, uri):
-    """Read redirects file and evaluate redirect rules for a given URI.
-
-    Args:
-      uri: The relative URI (without leading slash) for which redirect data
-        should be computed. No special handling of intl URIs is pefromed
-        at this level.
-
-    Returns:
-      tuple: The computed redirect data. This tuple has two parts:
-        redirect_uri: The new URI that should be used. (If no redirect rule is
-          found, the original input to 'uri' will be returned.
-        redirect_type: Either 'permanent' for an HTTP 301 redirect, 'temporary'
-          for an HTTP 302 redirect, or None if no redirect should be performed.
-    """
-    # Redircts are defined in a file named redirects.yaml.
-    try:
-      f = open(self.REDIRECT_FILE)
-      data = yaml.load(f)
-      f.close()
-    except IOError, e:
-      logging.warning('Error opening redirect file (' + self.REDIRECT_FILE +
-                      '): ' + e.strerror)
-      return (uri, None)
-
-    # The incoming path is missing a leading slash. However, many parts of the
-    # redirect system require leading slashes to distinguish between relative
-    # and absolute redirects. So, to compensate for this, we'll add a leading
-    # slash here as well.
-    uri = '/' + uri
-
-    # Check to make sure we actually got an iterable list out of the YAML file
-    if data is None:
-      logging.warning('Redirect file (' + self.REDIRECT_FILE + ') not valid '
-                      'YAML.')
-    elif 'redirects' not in data:
-      logging.warning('Redirect file (' + self.REDIRECT_FILE + ') not '
-                      'properly formatted -- no \'redirects:\' header.')
-    elif hasattr(data['redirects'], '__iter__'):
-      # Iterate through redirect data, try to find a redirect that matches.
-      for redirect in data['redirects']:
-          # Note: re.search adds an implied '^' to the beginning of the regex
-          # This means that the regex must match from the beginning of the
-          # string.
-          try:
-            if re.match(redirect[self.REDIRECT_SRC], uri):
-              # Match found. Apply redirect rule.
-              redirect_uri = re.sub('^' + redirect[self.REDIRECT_SRC],
-                  redirect[self.REDIRECT_DST], uri)
-              logging.info('Redirect rule matched.\n'
-                             'Rule: %s\n'
-                             'Src: %s\n'
-                             'Dst: %s',
-                           redirect[self.REDIRECT_SRC], uri, redirect_uri)
-              if self.REDIRECT_TYPE in redirect:
-                redirect_type = redirect[self.REDIRECT_TYPE]
-              else:
-                # Default redirect type, if unspecified
-                redirect_type = self.REDIRECT_TYPE_PERM
-              return (redirect_uri, redirect_type)
-          except:
-            e = sys.exc_info()[1]
-            raise ('Error while processing redirect rule.\n'
-                     'Rule: %s\n'
-                     'Error: %s' % (redirect[self.REDIRECT_SRC], e))
-    # No redirect found, return URL unchanged
-    return (uri, None)
-
-  def isCleanUrl(self, name, langName, isValidIntl, isStripped):
-    """Determine whether to pass an incoming url straight to processing.
-
-       Args:
-         name: The incoming URL
-
-       Returns:
-         boolean: Whether the URL should be sent straight to processing
-    """
-    # logging.info('  >>>> isCleanUrl name [%s] langName [%s] isValidIntl [%s]', name, langName, isValidIntl)
-    if (langName == 'en' and not isStripped) or isValidIntl or not ('.html' in name) or (not isValidIntl and not langName):
-      return True
-
-  def PreprocessUrl(self, name, langName):
-    """Any preprocessing work on the URL when it comes in.
-
-    Put any work related to interpreting the incoming URL here. For example,
-    this is used to redirect requests for a directory to the index.html file
-    in that directory. Subclasses should override this method to do different
-    preprocessing.
-
-    Args:
-      name: The incoming URL
-
-    Returns:
-      True if the request was redirected to '/index.html'.
-      Otherewise False.
-    """
-
-    # determine if this is a request for a directory
-    final_path_segment = name
-    final_slash_offset = name.rfind('/')
-    if final_slash_offset != len(name) - 1:
-      final_path_segment = name[final_slash_offset + 1:]
-      if final_path_segment.find('.') == -1:
-        name = ''.join([name, '/'])
-
-    # if this is a directory or the domain itself, redirect to /index.html
-    if not name or (name[len(name) - 1:] == '/'):
-      uri = ''.join(['/', name, 'index.html'])
-      # logging.info('--->PREPROCESSING REDIRECT [%s] to [%s] with langName [%s]', name, uri, langName)
-      self.redirect(uri, False)
-      return True
-    else:
-      return False
-
-  def RedirToIntl(self, name, intlString, langName):
-    """Redirect an incoming request to the appropriate intl uri.
-
-       For non-en langName, builds the intl/lang string from a
-       base (en) string and redirects (302) the request to look for
-       a version of the file in langName. For en langName, simply
-       redirects a stripped uri string (intl/nn removed).
-
-    Args:
-      name: The incoming, preprocessed URL
-
-    Returns:
-      The lang-specific URL
-    """
-    if not (langName == 'en'):
-      builtIntlLangUri = ''.join([intlString, langName, '/', name, '?', self.request.query_string])
-    else:
-      builtIntlLangUri = name
-    uri = ''.join(['/', builtIntlLangUri])
-    logging.info('-->REDIRECTING %s to  %s', name, uri)
-    self.redirect(uri, False)
-    return uri
-
-  def CreateResponse(self, name, langName, isValidIntl, resetLangCookie):
-    """Process the url and form a response, if appropriate.
-
-       Attempts to retrieve the requested file (name) from cache,
-       negative cache, or store (zip) and form the response.
-       For intl requests that are not found (in the localized tree),
-       returns False rather than forming a response, so that
-       the request can be retried with the base url (this is the
-       fallthrough to default language).
-
-       For requests that are found, forms the headers and
-       adds the content to the response entity. If the request was
-       for an intl (localized) url, also resets the language cookie
-       to the language specified in the url if needed, to ensure that
-       the client language and response data remain harmonious.
-
-    Args:
-      name: The incoming, preprocessed URL
-      langName: The language id. Used as necessary to reset the
-                language cookie in the response.
-      isValidIntl: If present, indicates whether the request is
-                   for a language-specific url
-      resetLangCookie: Whether the response should reset the
-                       language cookie to 'langName'
-
-    Returns:
-      True: A response was successfully created for the request
-      False: No response was created.
-    """
-    # see if we have the page in the memcache
-    logging.info('PROCESSING %s langName [%s] isValidIntl [%s] resetLang [%s]',
-      name, langName, isValidIntl, resetLangCookie)
-    resp_data = self.GetFromCache(name)
-    if resp_data is None:
-      logging.info('  Cache miss for %s', name)
-      resp_data = self.GetFromNegativeCache(name)
-      if resp_data is None:
-        resp_data = self.GetFromStore(name)
-
-        # IF we have the file, put it in the memcache
-        # ELSE put it in the negative cache
-        if resp_data is not None:
-          self.StoreOrUpdateInCache(name, resp_data)
-        elif isValidIntl:
-          # couldn't find the intl doc. Try to fall through to English.
-          #logging.info('  Retrying with base uri...')
-          return False
-        else:
-          logging.info('  Adding %s to negative cache, serving 404', name)
-          self.StoreInNegativeCache(name)
-          self.Write404Error()
-          return True
-      else:
-        # found it in negative cache
-        self.Write404Error()
-        return True
-
-    # found content from cache or store
-    logging.info('FOUND CLEAN')
-    if resetLangCookie:
-      logging.info('  Resetting android_developer_pref_lang cookie to [%s]',
-      langName)
-      expireDate = time.mktime(localtime()) + 60 * 60 * 24 * 365 * 10
-      self.response.headers.add_header('Set-Cookie',
-      'android_developer_pref_lang=%s; path=/; expires=%s' %
-      (langName, strftime("%a, %d %b %Y %H:%M:%S", localtime(expireDate))))
-    mustRevalidate = False
-    if ('.html' in name):
-      # revalidate html files -- workaround for cache inconsistencies for
-      # negotiated responses
-      mustRevalidate = True
-      #logging.info('  Adding [Vary: Cookie] to response...')
-      self.response.headers.add_header('Vary', 'Cookie')
-    content_type, encoding = mimetypes.guess_type(name)
-    if content_type:
-      self.response.headers['Content-Type'] = content_type
-      self.SetCachingHeaders(mustRevalidate)
-      self.response.out.write(resp_data)
-    elif (name == 'favicon.ico'):
-      self.response.headers['Content-Type'] = 'image/x-icon'
-      self.SetCachingHeaders(mustRevalidate)
-      self.response.out.write(resp_data)
-    elif name.endswith('.psd'):
-      self.response.headers['Content-Type'] = 'application/octet-stream'
-      self.SetCachingHeaders(mustRevalidate)
-      self.response.out.write(resp_data)
-    elif name.endswith('.svg'):
-      self.response.headers['Content-Type'] = 'image/svg+xml'
-      self.SetCachingHeaders(mustRevalidate)
-      self.response.out.write(resp_data)
-    elif name.endswith('.mp4'):
-      self.response.headers['Content-Type'] = 'video/mp4'
-      self.SetCachingHeaders(mustRevalidate)
-      self.response.out.write(resp_data)
-    elif name.endswith('.webm'):
-      self.response.headers['Content-Type'] = 'video/webm'
-      self.SetCachingHeaders(mustRevalidate)
-      self.response.out.write(resp_data)
-    elif name.endswith('.ogv'):
-      self.response.headers['Content-Type'] = 'video/ogg'
-      self.SetCachingHeaders(mustRevalidate)
-      self.response.out.write(resp_data)
-    return True
-
-  def GetFromStore(self, file_path):
-    """Retrieve file from zip files.
-
-    Get the file from the source, it must not have been in the memcache. If
-    possible, we'll use the zip file index to quickly locate where the file
-    should be found. (See MapToFileArchive documentation for assumptions about
-    file ordering.) If we don't have an index or don't find the file where the
-    index says we should, look through all the zip files to find it.
-
-    Args:
-      file_path: the file that we're looking for
-
-    Returns:
-      The contents of the requested file
-    """
-    resp_data = None
-    file_itr = iter(self.zipfilenames)
-
-    # decode any escape characters in the URI
-    # Note: We are currenty just looking for '@' (%40)
-    file_path = file_path.replace('%40', '@')
-
-    # check the index, if we have one, to see what archive the file is in
-    archive_name = self.MapFileToArchive(file_path)
-    if not archive_name:
-      archive_name = file_itr.next()[0]
-
-    while resp_data is None and archive_name:
-      zip_archive = self.LoadZipFile(archive_name)
-      if zip_archive:
-
-        # we expect some lookups will fail, and that's okay, 404s will deal
-        # with that
-        try:
-          resp_data = zip_archive.read(file_path)
-        except (KeyError, RuntimeError), err:
-          # no op
-          x = False
-        if resp_data is not None:
-          logging.info('%s read from %s', file_path, archive_name)
-
-      try:
-        archive_name = file_itr.next()[0]
-      except (StopIteration), err:
-        archive_name = False
-
-    return resp_data
-
-  def LoadZipFile(self, zipfilename):
-    """Convenience method to load zip file.
-
-    Just a convenience method to load the zip file from the data store. This is
-    useful if we ever want to change data stores and also as a means of
-    dependency injection for testing. This method will look at our file cache
-    first, and then load and cache the file if there's a cache miss
-
-    Args:
-      zipfilename: the name of the zip file to load
-
-    Returns:
-      The zip file requested, or None if there is an I/O error
-    """
-    zip_archive = None
-    zip_archive = self.zipfile_cache.get(zipfilename)
-    if zip_archive is None:
-      try:
-        zip_archive = zipfile.ZipFile(zipfilename)
-        self.zipfile_cache[zipfilename] = zip_archive
-      except (IOError, RuntimeError), err:
-        logging.error('Can\'t open zipfile %s, cause: %s' % (zipfilename,
-                                                             err))
-    return zip_archive
-
-  def MapFileToArchive(self, file_path):
-    """Given a file name, determine what archive it should be in.
-
-    This method makes two critical assumptions.
-    (1) The zip files passed as an argument to the handler, if concatenated
-        in that same order, would result in a total ordering
-        of all the files. See (2) for ordering type.
-    (2) Upper case letters before lower case letters. The traversal of a
-        directory tree is depth first. A parent directory's files are added
-        before the files of any child directories
-
-    Args:
-      file_path: the file to be mapped to an archive
-
-    Returns:
-      The name of the archive where we expect the file to be
-    """
-    num_archives = len(self.zipfilenames)
-    while num_archives > 0:
-      target = self.zipfilenames[num_archives - 1]
-      if len(target) > 1:
-        if self.CompareFilenames(target[1], file_path) >= 0:
-          return target[0]
-      num_archives -= 1
-
-    return None
-
-  def CompareFilenames(self, file1, file2):
-    """Determines whether file1 is lexigraphically 'before' file2.
-
-    WARNING: This method assumes that paths are output in a depth-first,
-    with parent directories' files stored before childs'
-
-    We say that file1 is lexigraphically before file2 if the last non-matching
-    path segment of file1 is alphabetically before file2.
-
-    Args:
-      file1: the first file path
-      file2: the second file path
-
-    Returns:
-      A positive number if file1 is before file2
-      A negative number if file2 is before file1
-      0 if filenames are the same
-    """
-    f1_segments = file1.split('/')
-    f2_segments = file2.split('/')
-
-    segment_ptr = 0
-    while (segment_ptr < len(f1_segments) and
-           segment_ptr < len(f2_segments) and
-           f1_segments[segment_ptr] == f2_segments[segment_ptr]):
-      segment_ptr += 1
-
-    if len(f1_segments) == len(f2_segments):
-
-      # we fell off the end, the paths much be the same
-      if segment_ptr == len(f1_segments):
-        return 0
-
-      # we didn't fall of the end, compare the segments where they differ
-      if f1_segments[segment_ptr] < f2_segments[segment_ptr]:
-        return 1
-      elif f1_segments[segment_ptr] > f2_segments[segment_ptr]:
-        return -1
-      else:
-        return 0
-
-      # the number of segments differs, we either mismatched comparing
-      # directories, or comparing a file to a directory
-    else:
-
-      # IF we were looking at the last segment of one of the paths,
-      # the one with fewer segments is first because files come before
-      # directories
-      # ELSE we just need to compare directory names
-      if (segment_ptr + 1 == len(f1_segments) or
-          segment_ptr + 1 == len(f2_segments)):
-        return len(f2_segments) - len(f1_segments)
-      else:
-        if f1_segments[segment_ptr] < f2_segments[segment_ptr]:
-          return 1
-        elif f1_segments[segment_ptr] > f2_segments[segment_ptr]:
-          return -1
-        else:
-          return 0
-
-  def SetCachingHeaders(self, revalidate):
-    """Set caching headers for the request."""
-    max_age = self.MAX_AGE
-    #self.response.headers['Expires'] = email.Utils.formatdate(
-    #    time.time() + max_age, usegmt=True)
-    cache_control = []
-    if self.PUBLIC:
-      cache_control.append('public')
-    cache_control.append('max-age=%d' % max_age)
-    if revalidate:
-      cache_control.append('must-revalidate')
-    self.response.headers['Cache-Control'] = ', '.join(cache_control)
-
-  def GetFromCache(self, filename):
-    """Get file from memcache, if available.
-
-    Args:
-      filename: The URL of the file to return
-
-    Returns:
-      The content of the file
-    """
-    return memcache.get('%s%s' % (self.CACHE_PREFIX, filename))
-
-  def StoreOrUpdateInCache(self, filename, data):
-    """Store data in the cache.
-
-    Store a piece of data in the memcache. Memcache has a maximum item size of
-    1*10^6 bytes. If the data is too large, fail, but log the failure. Future
-    work will consider compressing the data before storing or chunking it
-
-    Args:
-      filename: the name of the file to store
-      data: the data of the file
-
-    Returns:
-      None
-    """
-    try:
-      if not memcache.add('%s%s' % (self.CACHE_PREFIX, filename), data):
-        memcache.replace('%s%s' % (self.CACHE_PREFIX, filename), data)
-    except (ValueError), err:
-      logging.warning('Data size too large to cache\n%s' % err)
-
-  def Write404Error(self):
-    """Ouptut a simple 404 response."""
-    self.error(404)
-    self.response.out.write(
-        ''.join(['<html><head><title>404: Not Found</title></head>',
-                 '<body><b><h2>Error 404</h2><br/>',
-                 'File not found</b></body></html>']))
-
-  def StoreInNegativeCache(self, filename):
-    """If a non-existant URL is accessed, cache this result as well.
-
-    Future work should consider setting a maximum negative cache size to
-    prevent it from from negatively impacting the real cache.
-
-    Args:
-      filename: URL to add ot negative cache
-
-    Returns:
-      None
-    """
-    memcache.add('%s%s' % (self.NEG_CACHE_PREFIX, filename), -1)
-
-  def GetFromNegativeCache(self, filename):
-    """Retrieve from negative cache.
-
-    Args:
-      filename: URL to retreive
-
-    Returns:
-      The file contents if present in the negative cache.
-    """
-    return memcache.get('%s%s' % (self.NEG_CACHE_PREFIX, filename))
-
-def main():
-  application = webapp.WSGIApplication([('/([^/]+)/(.*)',
-                                         MemcachedZipHandler)])
-  util.run_wsgi_app(application)
-
-
-if __name__ == '__main__':
-  main()
diff --git a/scripts/app_engine_server/redirects.yaml b/scripts/app_engine_server/redirects.yaml
deleted file mode 100644
index b7a90a5..0000000
--- a/scripts/app_engine_server/redirects.yaml
+++ /dev/null
@@ -1,700 +0,0 @@
-# Redirect file.
-# This file contains the list of rewrite rules that are applied when serving
-# pages.
-#
-# Each redirect has four parts:
-#
-# - src: The path to redirect. This is a regex rule prefixed with an implied
-#   '^'. Unless you're doing something advanced, your path should start with
-#   '/' character.
-#
-# - dst: The path to redirect to. If the path begins with a slash,
-#   it is considered a relative redirect. Otherwise, it is an absolute
-#   redirct (and should probably begin with http: or http://). You may use
-#   capturing groups to preserve part of the source path. To referece a
-#   capturing group, use \N, where N is the (1-based) index of desired group.
-#
-# - type: Either 'permanent' or 'temporary', depending on whether you want an
-#   HTTP 301 or HTTP 302 redirect, respectiviely. See RFC 2616 for the
-#   difference between these:
-#
-#       http://tools.ietf.org/html/rfc2616
-#
-#   If you don't specify a type, 'permanent' will be used by default. Note that
-#   this is different from the Apache convention (which uses 'temporary' by
-#   default.)
-#
-# - comment: Currently ignored by the computer, but useful for humans.
-#
-# Example:
-#
-# redirects:
-# - src: /foo
-#   dst: /bar
-#   # Redirect /foo to /bar. This will also redirect foo/ and
-#   # foo/test.html. Note that the redirect type is optional. This will be
-#   # treated as a permanent redirect.
-#
-# - src: /(.+droid(/.*)?)$
-#   dst: /droids/\1
-#   type: permanent
-#   # Redirect /android to /droids/android and /bugdroid to
-#   # /droids/bugdroid. However, it will not redirect /droid or
-#   # /bugdroids.
-
-#
-# - src: /google
-#   dst: http://www.google.com
-#   type: temporary
-#   # This is an example of a redirect to an absolute URI.
-#
-#
-#   WATCH OUT -- SRC LINE HAS TO START WITH A HYPHEN !!
-
-redirects:
-# new one works
-- src: /sdk/android-
-  dst: /about/versions/android-
-  type: permanent
-  comment: Redirect sdk reference to new location
-
-- src: /about/versions/index.html
-  dst: /about/index.html
-  type: permanent
-
-- src: /about/versions/api-levels.html
-  dst: /guide/topics/manifest/uses-sdk-element.html#ApiLevels
-  type: permanent
-
-# new one works
-- src: /sdk/oem-usb.html
-  dst: /tools/extras/oem-usb.html
-  type: permanent
-  comment: Redirect sdk reference to new location
-
-- src: /sdk/installing.html
-  dst: /sdk/installing/index.html
-  type: permanent
-  comment: Redirect sdk reference to new location
-
-- src: /sdk/compatibility-library.html
-  dst: /tools/support-library/index.html
-  type: permanent
-
-- src: /tools/extras/support-library.html
-  dst: /tools/support-library/index.html
-  type: permanent
-
-- src: /training/basics/fragments/support-lib.html
-  dst: /tools/support-library/setup.html
-  type: permanent
-
-- src: /training/id-auth/.*
-  dst: /google/play-services/auth.html
-  type: permanent
-
-# new one works
-- src: /sdk/eclipse-adt.html
-  dst: /tools/sdk/eclipse-adt.html
-  type: permanent
-  comment: Redirect sdk reference to new location
-
-# new one works
-- src: /sdk/tools-notes.html
-  dst: /tools/sdk/tools-notes.html
-  type: permanent
-  comment: Redirect sdk reference to new location
-
-# new one works
-- src: /sdk/adding-components.html
-  dst: /sdk/exploring.html
-  type: permanent
-  comment: Redirect sdk reference to new location
-
-- src: /sdk/ndk/overview.html
-  dst: /tools/sdk/ndk/index.html
-  type: permanent
-
-- src: /sdk/ndk/
-  dst: /tools/sdk/ndk/
-  type: permanent
-  comment: Redirect sdk reference to new location
-
-- src: /tools/sdk/win-usb.html
-  dst: /sdk/win-usb.html
-  type: permanent
-
-- src: /tools/sdk/index.html
-  dst: /sdk/index.html
-  type: permanent
-
-- src: /tools/sdk/installing.html
-  dst: /sdk/installing/bundle.html
-  type: permanent
-
-#new one works
-- src: /sdk/requirements.html
-  dst: /sdk/index.html
-  type: permanent
-  comment: Redirect sdk reference to new location
-
-- src: /sdk/installing/next.html
-  dst: /training/basics/firstapp/index.html
-  type: permanent
-  comment: Next steps doc was lame and everybody should go to first class
-
-
-#- src: /sdk/(?!index.html|installing/|exploring)
-#  dst: /tools/sdk/
-#  type: permanent
-#  comment: Redirect sdk reference to new location
-
-#- src: /sdk/compatibility
-#  dst: /tools/sdk/support-package.html
-#  type: permanent
-#  comment: Redirect to new location
-
-# new one
-- src: /guide/market/
-  dst: /google/play/
-  type: permanent
-  comment: redirect billing to new loc
-
-- src: /guide/google/gcm/client-javadoc/.*
-  dst: /reference/com/google/android/gcm/package-summary.html
-  type: permanent
-  comment: redirect to new loc
-
-- src: /guide/google/gcm/server-javadoc/.*
-  dst: /reference/com/google/android/gcm/server/package-summary.html
-  type: permanent
-  comment: redirect to new loc
-
-- src: /guide/google/play/services.html
-  dst: /google/play-services/index.html
-  type: permanent
-  comment: redirect to new loc
-
-- src: /guide/google/
-  dst: /google/
-  type: permanent
-  comment: redirect to new loc
-
-- src: /guide/publishing/licensing.html
-  dst: /google/play/licensing/index.html
-  type: permanent
-  comment: Redirect Licensing docs to new location
-
-# new one
-- src: /google/play/billing/billing_about.html
-  dst: /google/play/billing/index.html
-  type: permanent
-  comment: Redirect Licensing docs to new location
-
-- src: /guide/developing/tools/
-  dst: /tools/help/
-  type: permanent
-  comment: Redirect to new location
-
-- src: /guide/developing/
-  dst: /tools/
-  type: permanent
-  comment: Redirect to new location
-
-- src: /tools/aidl.html
-  dst: /guide/components/aidl.html
-  type: permanent
-
-- src: /guide/market/publishing/multiple-apks.html
-  dst: /google/play/publishing/multiple-apks.html
-  type: permanent
-  comment: Redirect to new location
-
-- src: /guide/publishing/publishing.html
-  dst: /distribute/googleplay/publish/preparing.html
-  type: permanent
-  comment: Redirect to new location
-
-- src: /guide/publishing/
-  dst: /tools/publishing/
-  type: permanent
-  comment: Redirect to new location
-
-- src: /guide/topics/fundamentals.html
-  dst: /guide/components/fundamentals.html
-  type: permanent
-
-- src: /guide/topics/intents/intents-filters.html
-  dst: /guide/components/intents-filters.html
-  type: permanent
-
-- src: /guide/topics/fundamentals/
-  dst: /guide/components/
-  type: permanent
-  comment: Redirect to new location
-
-- src: /guide/topics/clipboard/copy-paste.html
-  dst: /guide/topics/text/copy-paste.html
-  type: permanent
-  comment: Redirect to new location
-
-- src: /guide/topics/ui/notifiers/index.html
-  dst: /guide/topics/ui/notifiers/notifications.html
-  type: permanent
-  comment: Flatten side nav to make Notifications and Toasts separate
-
-# new one
-- src: /guide/topics/wireless/
-  dst: /guide/topics/connectivity/
-  type: permanent
-  comment: Redirect to new location
-
-# new one
-- src: /guide/topics/drawing/.*
-  dst: /guide/topics/graphics/opengl.html
-  type: permanent
-  comment: Redirect to new location
-
-- src: /guide/topics/connectivity/usb/adk.html
-  dst: /tools/adk/index.html
-  type: permanent
-
-- src: /tools/workflow/publishing/versioning.html
-  dst: /tools/publishing/versioning.html
-  type: permanent
-
-- src: /tools/workflow/publishing/publishing.html
-  dst: /tools/publishing/publishing_overview.html
-  type: permanent
-
-- src: /tools/workflow/publishing_overview.html
-  dst: /tools/publishing/publishing_overview.html
-  type: permanent
-
-- src: /tools/workflow/publishing/publishing_overview.html
-  dst: /tools/publishing/publishing_overview.html
-  type: permanent
-
-- src: /tools/workflow/app-signing.html
-  dst: /tools/publishing/app-signing.html
-  type: permanent
-
-- src: /tools/adk/aoa.html
-  dst: http://source.android.com/tech/accessories/aoap/aoa.html
-  type: permanent
-  comment: Open Accessory Protocol content has moved to source.android.com.
-
-- src: /tools/adk/aoa2.html
-  dst: http://source.android.com/tech/accessories/aoap/aoa2.html
-  type: permanent
-  comment: Open Accessory Protocol content has moved to source.android.com.
-
-- src: /guide/topics/usb
-  dst: /guide/topics/connectivity/usb
-  type: permanent
-  comment: Redirect to new location
-
-# new one
-- src: /guide/appendix/api-levels.html
-  dst: /guide/topics/manifest/uses-sdk-element.html#ApiLevels
-  type: permanent
-  comment: Redirect to new location
-
-- src: /guide/appendix/install-location.html
-  dst: /guide/topics/data/install-location.html
-  type: permanent
-
-- src: /guide/appendix/g-app-intents.html
-  dst: /guide/components/intents-common.html
-  type: permanent
-  comment: Redirect to new location
-
-# new one
-- src: /guide/basics/.*
-  dst: /about/index.html
-  type: permanent
-  comment: Redirect to new location
-
-- src: /guide/topics/security/security.html
-  dst: /training/articles/security-tips.html
-  type: permanent
-  comment: Redirect to new location
-
-- src: /guide/topics/security/index.html
-  dst: /training/articles/security-tips.html
-  type: permanent
-  comment: Redirect to new location
-
-# new one
-- src: /guide/appendix/market-filters.html
-  dst: /google/play/filters.html
-  type: permanent
-  comment: Redirect to new location
-
-- src: /guide/topics/testing/
-  dst: /tools/testing/
-  type: permanent
-
-- src: /guide/topics/graphics/animation.html
-  dst: /guide/topics/graphics/overview.html
-  type: permanent
-  comment: Redirect to new location
-
-- src: /guide/topics/graphics/renderscript/(compute.html|index.html|reference.html)
-  dst: /guide/topics/renderscript/index.html
-  type: permanent
-  comment: Redirect to new location
-
-- src: /guide/topics/graphics/renderscript.html
-  dst: /guide/topics/renderscript/index.html
-  type: permanent
-  comment: Redirect to new location
-
-- src: /guide/topics/location/obtaining-user-location.html
-  dst: /guide/topics/location/strategies.html
-  type: permanent
-  comment: Redirect to new location
-
-# new one
-- src: /guide/topics/nfc/
-  dst: /guide/topics/connectivity/nfc/
-  type: permanent
-  comment: Redirect to new location
-
-# new one
-- src: /guide/topics/wireless/
-  dst: /guide/topics/connectivity/
-  type: permanent
-  comment: Redirect to new location
-
-# new one
-- src: /guide/topics/network/
-  dst: /guide/topics/connectivity/
-  type: permanent
-  comment: Redirect to new location
-
-# new one
-- src: /resources/articles/creating-input-method.html
-  dst: /guide/topics/text/creating-input-method.html
-  type: permanent
-
-# new one
-- src: /resources/articles/spell-checker-framework.html
-  dst: /guide/topics/text/spell-checker-framework.html
-  type: permanent
-
-# new one
-- src: /resources/tutorials/notepad/
-  dst: /training/notepad/
-  type: permanent
-  comment: this is only for external links, until we update this documentation
-
-# new one
-- src: /resources/faq/
-  dst: /guide/faq/
-  type: permanent
-  comment: FAQ still needs a permanent home
-
-# new one
-- src: /resources/tutorials/hello-world.html
-  dst: /training/basics/firstapp/index.html
-  type: permanent
-  comment: Redirect to new location
-
-# add the rest of the tutorials here
-
-- src: /guide/practices/design/
-  dst: /guide/practices/
-  type: permanent
-  comment: Redirect to new location
-
-- src: /guide/practices/accessibility.html
-  dst: /guide/topics/ui/accessibility/index.html
-  type: permanent
-
-# move best practices to training
-
-- src: /guide/practices/app-design/performance.html
-  dst: /training/articles/perf-tips.html
-  type: permanent
-
-- src: /guide/practices/performance.html
-  dst: /training/articles/perf-tips.html
-  type: permanent
-
-- src: /guide/practices/app-design/responsiveness.html
-  dst: /training/articles/perf-anr.html
-  type: permanent
-
-- src: /guide/practices/responsiveness.html
-  dst: /training/articles/perf-anr.html
-  type: permanent
-
-- src: /guide/practices/security.html
-  dst: /training/articles/security-tips.html
-  type: permanent
-
-- src: /guide/practices/jni.html
-  dst: /training/articles/perf-jni.html
-  type: permanent
-
-# move ui docs to design
-
-- src: /guide/practices/ui_guidelines/index.html
-  dst: /design/index.html
-  type: permanent
-
-- src: /guide/practices/ui_guidelines/icon_design.*
-  dst: /design/style/iconography.html
-  type: permanent
-
-- src: /guide/practices/ui_guidelines/activity_task_design.html
-  dst: /design/patterns/app-structure.html
-  type: permanent
-
-- src: /guide/practices/ui_guidelines/menu_design.html
-  dst: /design/patterns/actionbar.html
-  type: permanent
-
-
-# new one
-- src: /resources/dashboard/.*
-  dst: /about/dashboards/index.html
-  type: permanent
-  comment: Redirect to new location
-
-- src: /resources/community-groups.html
-  dst: /support.html
-  type: permanent
-  comment: Redirect to new location
-
-- src: /guide/tutorials/
-  dst: /resources/tutorials/
-  type: permanent
-
-- src: /resources/tutorials/views/hello-linearlayout.html
-  dst: /guide/topics/ui/layout/linear.html
-  type: permanent
-  comment: Redirect to new location
-
-- src: /resources/tutorials/views/hello-relativelayout.html
-  dst: /guide/topics/ui/layout/relative.html
-  type: permanent
-  comment: Redirect to new location
-
-- src: /resources/tutorials/views/hello-listview.html
-  dst: /guide/topics/ui/layout/listview.html
-  type: permanent
-  comment: Redirect to new location
-
-- src: /resources/tutorials/views/hello-gridview.html
-  dst: /guide/topics/ui/layout/gridview.html
-  type: permanent
-  comment: Redirect to new location
-
-- src: /guide/webapps/overview.html
-  dst: /guide/webapps/index.html
-  type: permanent
-
-- src: /resources/tutorials/views/hello-webview.html
-  dst: /guide/webapps/webview.html
-  type: permanent
-  comment: Redirect to new location
-
-- src: /resources/tutorials/views/hello-formstuff.html
-  dst: /guide/topics/ui/controls.html
-  type: permanent
-  comment: Redirect to new location
-
-- src: /resources/tutorials/views/hello-datepicker.html
-  dst: /guide/topics/ui/controls/pickers.html
-  type: permanent
-  comment: Redirect to new location
-
-- src: /resources/tutorials/views/hello-timepicker.html
-  dst: /guide/topics/ui/controls/pickers.html
-  type: permanent
-  comment: Redirect to new location
-
-- src: /resources/tutorials/views/hello-autocomplete.html
-  dst: /guide/topics/ui/controls/text.html
-  type: permanent
-  comment: Redirect to new location
-
-- src: /resources/tutorials/views/hello-spinner.html
-  dst: /guide/topics/ui/controls/spinner.html
-  type: permanent
-  comment: Redirect to new location
-
-- src: /resources/tutorials/opengl/opengl-es10.html
-  dst: /training/graphics/opengl/index.html
-  type: permanent
-
-- src: /resources/tutorials/opengl/opengl-es20.html
-  dst: /training/graphics/opengl/index.html
-  type: permanent
-
-- src: /resources/tutorials/views/hello-mapview.html
-  dst: https://developers.google.com/maps/documentation/android/hello-mapview
-  type: permanent
-
-- src: /resources/tutorials/views/.*
-  dst: /guide/topics/ui/declaring-layout.html#CommonLayouts
-  type: permanent
-
-- src: /guide/topics/ui/layout-objects.html
-  dst: /guide/topics/ui/declaring-layout.html#CommonLayouts
-  type: permanent
-
-- src: /resources/tutorials/localization/.*
-  dst: /training/basics/supporting-devices/languages.html
-  type: permanent
-
-- src: /resources/samples/.*
-  dst: /samples/index.html
-  type: permanent
-
-- src: /tools/samples/index.html
-  dst: /samples/index.html
-  type: permanent
-  comment: Redirect to new location
-
-- src: /resources/(?!articles)
-  dst: /training/
-  type: permanent
-  comment: Redirect to new location
-
-- src: /guide/publishing/publishing.html#BuildaButton
-  dst: /distribute/googleplay/promote/badges.html
-  type: permanent
-  comment: Redirect to new location
-
-
-# ------------------- TRAINING -------------------
-
-- src: /guide/topics/ui/layout/tabs.html
-  dst: /training/implementing-navigation/lateral.html
-  type: permanent
-
-- src: /training/cloudsync/aesync.html
-  dst: /google/gcm/index.html
-  type: permanent
-  comment: Syncing with App Engine was removed because it's obsolete.
-
-- src: /training/basics/location/
-  dst: /training/location/
-  type: permanent
-
-# -------------------- MISC ----------------------
-
-- src: /shareables/
-  dst: http://commondatastorage.googleapis.com/androiddevelopers/shareables/
-  type: permanent
-  comment: Redirect to new location
-
-- src: /downloads/
-  dst: http://commondatastorage.googleapis.com/androiddevelopers/
-  type: permanent
-  comment: Redirect to new location
-
-- src: /search.html
-  dst: /index.html
-  type: permanent
-  comment: Redirect to new location
-
-- src: /videos/index.html
-  dst: /develop/index.html
-  type: permanent
-  comment: Redirect to new location
-
-- src: /live/index.html
-  dst: https://developers.google.com/live/
-  type: permanent
-  comment: Redirect to new location
-
-- src: /intl/zh-CN/...
-  dst: /intl/zh-cn/...
-  type: permanent
-
-- src: /intl/zh-TW/...
-  dst: /intl/zh-tw/...
-  type: permanent
-
-# -------------------- EASTER EGG REDIRECTS ----------------------
-
-
-
-
-
-# ---------- PLATFORM VERSIONS ----------------
-
-- src: /4.2
-  dst: /about/versions/android-4.2.html
-  type: permanent
-
-- src: /4.1
-  dst: /about/versions/android-4.1.html
-  type: permanent
-
-- src: /4.0
-  dst: /about/versions/android-4.0.html
-  type: permanent
-
-- src: /(k|kk|kitkat)/?$
-  dst: /about/versions/kitkat.html
-  type: permanent
-
-- src: /(j|jb|jellybean)/?$
-  dst: /about/versions/jelly-bean.html
-  type: permanent
-
-- src: /(i|ics|icecreamsandwich)/?$
-  dst: /about/versions/android-4.0-highlights.html
-  type: permanent
-
-- src: /(h|hc|honeycomb)/?$
-  dst: /about/versions/android-3.0-highlights.html
-  type: permanent
-
-- src: /(g|gb|gingerbread)/?$
-  dst: /about/versions/android-2.3-highlights.html
-  type: permanent
-
-# ---------- MISC -----------------
-
-- src: /%2B/?$
-  dst: https://plus.google.com/108967384991768947849/posts
-  type: permanent
-  comment: Redirect /+ and /+/ to Google+
-
-- src: /blog
-  dst: http://android-developers.blogspot.com/
-  type: permanent
-
-- src: /stats
-  dst: /about/dashboards/index.html
-  type: permanent
-
-- src: /youtube
-  dst: http://www.youtube.com/user/androiddevelopers
-  type: permanent
-
-- src: /playbadge/?$
-  dst: http://developer.android.com/distribute/googleplay/promote/badges.html
-  type: permanent
-
-- src: /deviceart/?$
-  dst: http://developer.android.com/distribute/promote/device-art.html
-  type: permanent
-
-- src: /edu/signup/?$
-  dst: https://services.google.com/fb/forms/playedu
-  type: permanent
-
-- src: /edu/?$
-  dst: /distribute/googleplay/edu/index.html
-  type: permanent
-
-- src: /edu/signup
-  dst: https://services.google.com/fb/forms/playedu
-  type: permanent
diff --git a/scripts/divide_and_compress.py b/scripts/divide_and_compress.py
deleted file mode 100755
index 2bcb0ab..0000000
--- a/scripts/divide_and_compress.py
+++ /dev/null
@@ -1,366 +0,0 @@
-#!/usr/bin/python2.4
-#
-# Copyright (C) 2008 Google 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.
-#
-
-"""Module to compress directories in to series of zip files.
-
-This module will take a directory and compress all its contents, including
-child directories into a series of zip files named N.zip where 'N' ranges from
-0 to infinity. The zip files will all be below a certain specified maximum
-threshold.
-
-The directory is compressed with a depth first traversal, each directory's
-file contents being compressed as it is visisted, before the compression of any
-child directory's contents. In this way the files within an archive are ordered
-and the archives themselves are ordered.
-
-The class also constructs a 'main.py' file intended for use with Google App
-Engine with a custom App Engine program not currently distributed with this
-code base. The custom App Engine runtime can leverage the index files written
-out by this class to more quickly locate which zip file to serve a given URL
-from.
-"""
-
-__author__ = 'jmatt@google.com (Justin Mattson)'
-
-import optparse
-import os
-import stat
-import sys
-import zipfile
-import divide_and_compress_constants
-
-
-def CreateOptionsParser():
-  """Creates the parser for command line arguments.
-
-  Returns:
-    A configured optparse.OptionParser object.
-  """
-  rtn = optparse.OptionParser()
-  rtn.add_option('-s', '--sourcefiles', dest='sourcefiles', default=None,
-                 help='The directory containing the files to compress')
-  rtn.add_option('-d', '--destination', dest='destination', default=None,
-                 help=('Where to put the archive files, this should not be'
-                       ' a child of where the source files exist.'))
-  rtn.add_option('-f', '--filesize', dest='filesize', default='1M',
-                 help=('Maximum size of archive files. A number followed by '
-                       'a magnitude indicator either "B", "K", "M", or "G". '
-                       'Examples:\n  1000000B == one million BYTES\n'
-                       '  1.2M == one point two MEGABYTES\n'
-                       '  1M == 1048576 BYTES'))
-  rtn.add_option('-n', '--nocompress', action='store_false', dest='compress',
-                 default=True,
-                 help=('Whether the archive files should be compressed, or '
-                       'just a concatenation of the source files'))
-  return rtn
-
-
-def VerifyArguments(options, parser):
-  """Runs simple checks on correctness of commandline arguments.
-
-  Args:
-    options: The command line options passed.
-    parser: The parser object used to parse the command string.
-  """
-  try:
-    if options.sourcefiles is None or options.destination is None:
-      parser.print_help()
-      sys.exit(-1)
-  except AttributeError:
-    parser.print_help()
-    sys.exit(-1)
-
-
-def ParseSize(size_str):
-  """Parse the file size argument from a string to a number of bytes.
-
-  Args:
-    size_str: The string representation of the file size.
-
-  Returns:
-    The file size in bytes.
-
-  Raises:
-    ValueError: Raises an error if the numeric or qualifier portions of the
-      file size argument is invalid.
-  """
-  if len(size_str) < 2:
-    raise ValueError(('filesize argument not understood, please include'
-                      ' a numeric value and magnitude indicator'))
-  magnitude = size_str[-1]
-  if not magnitude in ('B', 'K', 'M', 'G'):
-    raise ValueError(('filesize magnitude indicator not valid, must be "B",'
-                      '"K","M", or "G"'))
-  numeral = float(size_str[:-1])
-  if magnitude == 'K':
-    numeral *= 1024
-  elif magnitude == 'M':
-    numeral *= 1048576
-  elif magnitude == 'G':
-    numeral *= 1073741824
-  return int(numeral)
-
-
-class DirectoryZipper(object):
-  """Class to compress a directory and all its sub-directories."""
-
-  def __init__(self, output_path, base_dir, archive_size, enable_compression):
-    """DirectoryZipper constructor.
-
-    Args:
-      output_path: A string, the path to write the archives and index file to.
-      base_dir: A string, the directory to compress.
-      archive_size: An number, the maximum size, in bytes, of a single
-        archive file.
-      enable_compression: A boolean, whether or not compression should be
-        enabled, if disabled, the files will be written into an uncompresed
-        zip.
-    """
-    self.output_dir = output_path
-    self.current_archive = '0.zip'
-    self.base_path = base_dir
-    self.max_size = archive_size
-    self.compress = enable_compression
-
-    # Set index_fp to None, because we don't know what it will be yet.
-    self.index_fp = None
-
-  def StartCompress(self):
-    """Start compress of the directory.
-
-    This will start the compression process and write the archives to the
-    specified output directory. It will also produce an 'index.txt' file in the
-    output directory that maps from file to archive.
-    """
-    self.index_fp = open(os.path.join(self.output_dir, 'main.py'), 'w')
-    self.index_fp.write(divide_and_compress_constants.file_preamble)
-    os.path.walk(self.base_path, self.CompressDirectory, 1)
-    self.index_fp.write(divide_and_compress_constants.file_endpiece)
-    self.index_fp.close()
-
-  def RemoveLastFile(self, archive_path=None):
-    """Removes the last item in the archive.
-
-    This removes the last item in the archive by reading the items out of the
-    archive, adding them to a new archive, deleting the old archive, and
-    moving the new archive to the location of the old archive.
-
-    Args:
-      archive_path: Path to the archive to modify. This archive should not be
-        open elsewhere, since it will need to be deleted.
-
-    Returns:
-      A new ZipFile object that points to the modified archive file.
-    """
-    if archive_path is None:
-      archive_path = os.path.join(self.output_dir, self.current_archive)
-
-    # Move the old file and create a new one at its old location.
-    root, ext = os.path.splitext(archive_path)
-    old_archive = ''.join([root, '-old', ext])
-    os.rename(archive_path, old_archive)
-    old_fp = self.OpenZipFileAtPath(old_archive, mode='r')
-
-    # By default, store uncompressed.
-    compress_bit = zipfile.ZIP_STORED
-    if self.compress:
-      compress_bit = zipfile.ZIP_DEFLATED
-    new_fp = self.OpenZipFileAtPath(archive_path,
-                                    mode='w',
-                                    compress=compress_bit)
-
-    # Read the old archive in a new archive, except the last one.
-    for zip_member in old_fp.infolist()[:-1]:
-      new_fp.writestr(zip_member, old_fp.read(zip_member.filename))
-
-    # Close files and delete the old one.
-    old_fp.close()
-    new_fp.close()
-    os.unlink(old_archive)
-
-  def OpenZipFileAtPath(self, path, mode=None, compress=zipfile.ZIP_DEFLATED):
-    """This method is mainly for testing purposes, eg dependency injection."""
-    if mode is None:
-      if os.path.exists(path):
-        mode = 'a'
-      else:
-        mode = 'w'
-
-    if mode == 'r':
-      return zipfile.ZipFile(path, mode)
-    else:
-      return zipfile.ZipFile(path, mode, compress)
-
-  def CompressDirectory(self, unused_id, dir_path, dir_contents):
-    """Method to compress the given directory.
-
-    This method compresses the directory 'dir_path'. It will add to an existing
-    zip file that still has space and create new ones as necessary to keep zip
-    file sizes under the maximum specified size. This also writes out the
-    mapping of files to archives to the self.index_fp file descriptor
-
-    Args:
-      unused_id: A numeric identifier passed by the os.path.walk method, this
-        is not used by this method.
-      dir_path: A string, the path to the directory to compress.
-      dir_contents: A list of directory contents to be compressed.
-    """
-    # Construct the queue of files to be added that this method will use
-    # it seems that dir_contents is given in reverse alphabetical order,
-    # so put them in alphabetical order by inserting to front of the list.
-    dir_contents.sort()
-    zip_queue = []
-    for filename in dir_contents:
-      zip_queue.append(os.path.join(dir_path, filename))
-    compress_bit = zipfile.ZIP_DEFLATED
-    if not self.compress:
-      compress_bit = zipfile.ZIP_STORED
-
-    # Zip all files in this directory, adding to existing archives and creating
-    # as necessary.
-    while zip_queue:
-      target_file = zip_queue[0]
-      if os.path.isfile(target_file):
-        self.AddFileToArchive(target_file, compress_bit)
-
-        # See if adding the new file made our archive too large.
-        if not self.ArchiveIsValid():
-
-          # IF fixing fails, the last added file was to large, skip it
-          # ELSE the current archive filled normally, make a new one and try
-          #  adding the file again.
-          if not self.FixArchive('SIZE'):
-            zip_queue.pop(0)
-          else:
-            self.current_archive = '%i.zip' % (
-                int(self.current_archive[
-                    0:self.current_archive.rfind('.zip')]) + 1)
-        else:
-
-          # Write an index record if necessary.
-          self.WriteIndexRecord()
-          zip_queue.pop(0)
-      else:
-        zip_queue.pop(0)
-
-  def WriteIndexRecord(self):
-    """Write an index record to the index file.
-
-    Only write an index record if this is the first file to go into archive
-
-    Returns:
-      True if an archive record is written, False if it isn't.
-    """
-    archive = self.OpenZipFileAtPath(
-        os.path.join(self.output_dir, self.current_archive), 'r')
-    archive_index = archive.infolist()
-    if len(archive_index) == 1:
-      self.index_fp.write(
-          '[\'%s\', \'%s\'],\n' % (self.current_archive,
-                                   archive_index[0].filename))
-      archive.close()
-      return True
-    else:
-      archive.close()
-      return False
-
-  def FixArchive(self, problem):
-    """Make the archive compliant.
-
-    Args:
-      problem: An enum, the reason the archive is invalid.
-
-    Returns:
-      Whether the file(s) removed to fix the archive could conceivably be
-      in an archive, but for some reason can't be added to this one.
-    """
-    archive_path = os.path.join(self.output_dir, self.current_archive)
-    return_value = None
-
-    if problem == 'SIZE':
-      archive_obj = self.OpenZipFileAtPath(archive_path, mode='r')
-      num_archive_files = len(archive_obj.infolist())
-
-      # IF there is a single file, that means its too large to compress,
-      # delete the created archive
-      # ELSE do normal finalization.
-      if num_archive_files == 1:
-        print ('WARNING: %s%s is too large to store.' % (
-            self.base_path, archive_obj.infolist()[0].filename))
-        archive_obj.close()
-        os.unlink(archive_path)
-        return_value = False
-      else:
-        archive_obj.close()
-        self.RemoveLastFile(
-          os.path.join(self.output_dir, self.current_archive))
-        print 'Final archive size for %s is %i' % (
-            self.current_archive, os.path.getsize(archive_path))
-        return_value = True
-    return return_value
-
-  def AddFileToArchive(self, filepath, compress_bit):
-    """Add the file at filepath to the current archive.
-
-    Args:
-      filepath: A string, the path of the file to add.
-      compress_bit: A boolean, whether or not this file should be compressed
-        when added.
-
-    Returns:
-      True if the file could be added (typically because this is a file) or
-      False if it couldn't be added (typically because its a directory).
-    """
-    curr_archive_path = os.path.join(self.output_dir, self.current_archive)
-    if os.path.isfile(filepath) and not os.path.islink(filepath):
-      if os.path.getsize(filepath) > 1048576:
-        print 'Warning: %s is potentially too large to serve on GAE' % filepath
-      archive = self.OpenZipFileAtPath(curr_archive_path,
-                                       compress=compress_bit)
-      # Add the file to the archive.
-      archive.write(filepath, filepath[len(self.base_path):])
-      archive.close()
-      return True
-    else:
-      return False
-
-  def ArchiveIsValid(self):
-    """Check whether the archive is valid.
-
-    Currently this only checks whether the archive is under the required size.
-    The thought is that eventually this will do additional validation
-
-    Returns:
-      True if the archive is valid, False if its not.
-    """
-    archive_path = os.path.join(self.output_dir, self.current_archive)
-    return os.path.getsize(archive_path) <= self.max_size
-
-
-def main(argv):
-  parser = CreateOptionsParser()
-  (options, unused_args) = parser.parse_args(args=argv[1:])
-  VerifyArguments(options, parser)
-  zipper = DirectoryZipper(options.destination,
-                           options.sourcefiles,
-                           ParseSize(options.filesize),
-                           options.compress)
-  zipper.StartCompress()
-
-
-if __name__ == '__main__':
-  main(sys.argv)
diff --git a/scripts/divide_and_compress_constants.py b/scripts/divide_and_compress_constants.py
deleted file mode 100644
index 89a607d..0000000
--- a/scripts/divide_and_compress_constants.py
+++ /dev/null
@@ -1,59 +0,0 @@
-#!/usr/bin/python2.4
-#
-# Copyright (C) 2008 Google 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.
-#
-
-"""Constants for the divide_and_compress script and DirectoryZipper class."""
-
-__author__ = 'jmatt@google.com (Justin Mattson)'
-
-file_preamble = """#!/usr/bin/env python
-#
-# Copyright 2008 Google 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.
-#
-
-import wsgiref.handlers
-from google.appengine.ext import zipserve
-from google.appengine.ext import webapp
-import memcache_zipserve
-
-class MainHandler(webapp.RequestHandler):
-
-  def get(self):
-    self.response.out.write('Hello world!')
-
-def main():
-  handler = memcache_zipserve.create_handler(["""
-
-file_endpiece = """
-    ])
-  application = webapp.WSGIApplication([('/(.*)', handler)], debug=False)
-  wsgiref.handlers.CGIHandler().run(application)
-
-if __name__ == '__main__':
-    main()
-"""
\ No newline at end of file
diff --git a/scripts/divide_and_compress_test.py b/scripts/divide_and_compress_test.py
deleted file mode 100755
index 426449a..0000000
--- a/scripts/divide_and_compress_test.py
+++ /dev/null
@@ -1,489 +0,0 @@
-#!/usr/bin/python2.4
-#
-# Copyright (C) 2008 Google 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.
-#
-
-"""Tests for divide_and_compress.py.
-
-TODO(jmatt): Add tests for module methods.
-"""
-
-__author__ = 'jmatt@google.com (Justin Mattson)'
-
-import os
-import stat
-import unittest
-import zipfile
-
-import divide_and_compress
-import mox
-
-
-class BagOfParts(object):
-  """Just a generic class that I can use to assign random attributes to."""
-
-  def NoOp(self):
-    x = 1
-
-    
-class ValidAndRemoveTests(unittest.TestCase):
-  """Test the ArchiveIsValid and RemoveLastFile methods."""
-  
-  def setUp(self):
-    """Prepare the test.
-
-    Construct some mock objects for use with the tests.
-    """
-    self.my_mox = mox.Mox()
-    file1 = BagOfParts()
-    file1.filename = 'file1.txt'
-    file1.contents = 'This is a test file'
-    file2 = BagOfParts()
-    file2.filename = 'file2.txt'
-    file2.contents = ('akdjfk;djsf;kljdslkfjslkdfjlsfjkdvn;kn;2389rtu4i'
-                      'tn;ghf8:89H*hp748FJw80fu9WJFpwf39pujens;fihkhjfk'
-                      'sdjfljkgsc n;iself')
-    self.files = {'file1': file1, 'file2': file2}
-
-  def tearDown(self):
-    """Remove any stubs we've created."""
-    self.my_mox.UnsetStubs()
-
-  def testArchiveIsValid(self):
-    """Test the DirectoryZipper.ArchiveIsValid method.
-
-    Run two tests, one that we expect to pass and one that we expect to fail
-    """
-    test_file_size = 1056730
-    self.my_mox.StubOutWithMock(os, 'stat')
-    os.stat('/foo/0.zip').AndReturn([test_file_size])
-    self.my_mox.StubOutWithMock(stat, 'ST_SIZE')
-    stat.ST_SIZE = 0
-    os.stat('/baz/0.zip').AndReturn([test_file_size])
-    mox.Replay(os.stat)
-    test_target = divide_and_compress.DirectoryZipper('/foo/', 'bar', 
-                                                      test_file_size - 1, True)
-
-    self.assertEqual(False, test_target.ArchiveIsValid(),
-                     msg=('ERROR: Test failed, ArchiveIsValid should have '
-                          'returned false, but returned true'))
-
-    test_target = divide_and_compress.DirectoryZipper('/baz/', 'bar',
-                                                      test_file_size + 1, True)
-    self.assertEqual(True, test_target.ArchiveIsValid(),
-                     msg=('ERROR: Test failed, ArchiveIsValid should have'
-                          ' returned true, but returned false'))
-
-  def testRemoveLastFile(self):
-    """Test DirectoryZipper.RemoveLastFile method.
-
-    Construct a ZipInfo mock object with two records, verify that write is
-    only called once on the new ZipFile object.
-    """
-    source = self.CreateZipSource()
-    dest = self.CreateZipDestination()
-    source_path = ''.join([os.getcwd(), '/0-old.zip'])
-    dest_path = ''.join([os.getcwd(), '/0.zip'])
-    test_target = divide_and_compress.DirectoryZipper(
-        ''.join([os.getcwd(), '/']), 'dummy', 1024*1024, True)
-    self.my_mox.StubOutWithMock(test_target, 'OpenZipFileAtPath')
-    test_target.OpenZipFileAtPath(source_path, mode='r').AndReturn(source)
-    test_target.OpenZipFileAtPath(dest_path,
-                                  compress=zipfile.ZIP_DEFLATED,
-                                  mode='w').AndReturn(dest)
-    self.my_mox.StubOutWithMock(os, 'rename')
-    os.rename(dest_path, source_path)
-    self.my_mox.StubOutWithMock(os, 'unlink')
-    os.unlink(source_path)
-    
-    self.my_mox.ReplayAll()
-    test_target.RemoveLastFile()
-    self.my_mox.VerifyAll()    
-
-  def CreateZipSource(self):
-    """Create a mock zip sourec object.
-
-    Read should only be called once, because the second file is the one
-    being removed.
-
-    Returns:
-      A configured mocked
-    """
-    
-    source_zip = self.my_mox.CreateMock(zipfile.ZipFile)
-    source_zip.infolist().AndReturn([self.files['file1'], self.files['file1']])
-    source_zip.infolist().AndReturn([self.files['file1'], self.files['file1']])
-    source_zip.read(self.files['file1'].filename).AndReturn(
-        self.files['file1'].contents)
-    source_zip.close()
-    return source_zip
-
-  def CreateZipDestination(self):
-    """Create mock destination zip.
-
-    Write should only be called once, because there are two files in the
-    source zip and we expect the second to be removed.
-
-    Returns:
-      A configured mocked
-    """
-    
-    dest_zip = mox.MockObject(zipfile.ZipFile)
-    dest_zip.writestr(self.files['file1'].filename,
-                      self.files['file1'].contents)
-    dest_zip.close()
-    return dest_zip
-
-
-class FixArchiveTests(unittest.TestCase):
-  """Tests for the DirectoryZipper.FixArchive method."""
-  
-  def setUp(self):
-    """Create a mock file object."""
-    self.my_mox = mox.Mox()
-    self.file1 = BagOfParts()
-    self.file1.filename = 'file1.txt'
-    self.file1.contents = 'This is a test file'
-
-  def tearDown(self):
-    """Unset any mocks that we've created."""
-    self.my_mox.UnsetStubs()
-
-  def _InitMultiFileData(self):
-    """Create an array of mock file objects.
-
-    Create three mock file objects that we can use for testing.
-    """
-    self.multi_file_dir = []
-    
-    file1 = BagOfParts()
-    file1.filename = 'file1.txt'
-    file1.contents = 'kjaskl;jkdjfkja;kjsnbvjnvnbuewklriujalvjsd'
-    self.multi_file_dir.append(file1)
-
-    file2 = BagOfParts()
-    file2.filename = 'file2.txt'
-    file2.contents = ('He entered the room and there in the center, it was.'
-                      ' Looking upon the thing, suddenly he could not remember'
-                      ' whether he had actually seen it before or whether'
-                      ' his memory of it was merely the effect of something'
-                      ' so often being imagined that it had long since become '
-                      ' manifest in his mind.')
-    self.multi_file_dir.append(file2)
-
-    file3 = BagOfParts()
-    file3.filename = 'file3.txt'
-    file3.contents = 'Whoa, what is \'file2.txt\' all about?'
-    self.multi_file_dir.append(file3)
-    
-  def testSingleFileArchive(self):
-    """Test behavior of FixArchive when the archive has a single member.
-
-    We expect that when this method is called with an archive that has a
-    single member that it will return False and unlink the archive.
-    """
-    test_target = divide_and_compress.DirectoryZipper(
-        ''.join([os.getcwd(), '/']), 'dummy', 1024*1024, True)
-    self.my_mox.StubOutWithMock(test_target, 'OpenZipFileAtPath')
-    test_target.OpenZipFileAtPath(
-        ''.join([os.getcwd(), '/0.zip']), mode='r').AndReturn(
-            self.CreateSingleFileMock())
-    self.my_mox.StubOutWithMock(os, 'unlink')
-    os.unlink(''.join([os.getcwd(), '/0.zip']))
-    self.my_mox.ReplayAll()
-    self.assertEqual(False, test_target.FixArchive('SIZE'))
-    self.my_mox.VerifyAll()
-
-  def CreateSingleFileMock(self):
-    """Create a mock ZipFile object for testSingleFileArchive.
-
-    We just need it to return a single member infolist twice
-
-    Returns:
-      A configured mock object
-    """
-    mock_zip = self.my_mox.CreateMock(zipfile.ZipFile)
-    mock_zip.infolist().AndReturn([self.file1])
-    mock_zip.infolist().AndReturn([self.file1])
-    mock_zip.close()
-    return mock_zip
-
-  def testMultiFileArchive(self):
-    """Test behavior of DirectoryZipper.FixArchive with a multi-file archive.
-
-    We expect that FixArchive will rename the old archive, adding '-old' before
-    '.zip', read all the members except the last one of '-old' into a new
-    archive with the same name as the original, and then unlink the '-old' copy
-    """
-    test_target = divide_and_compress.DirectoryZipper(
-        ''.join([os.getcwd(), '/']), 'dummy', 1024*1024, True)
-    self.my_mox.StubOutWithMock(test_target, 'OpenZipFileAtPath')
-    test_target.OpenZipFileAtPath(
-        ''.join([os.getcwd(), '/0.zip']), mode='r').AndReturn(
-            self.CreateMultiFileMock())
-    self.my_mox.StubOutWithMock(test_target, 'RemoveLastFile')
-    test_target.RemoveLastFile(''.join([os.getcwd(), '/0.zip']))
-    self.my_mox.StubOutWithMock(os, 'stat')
-    os.stat(''.join([os.getcwd(), '/0.zip'])).AndReturn([49302])
-    self.my_mox.StubOutWithMock(stat, 'ST_SIZE')
-    stat.ST_SIZE = 0
-    self.my_mox.ReplayAll()
-    self.assertEqual(True, test_target.FixArchive('SIZE'))
-    self.my_mox.VerifyAll()
-
-  def CreateMultiFileMock(self):
-    """Create mock ZipFile object for use with testMultiFileArchive.
-
-    The mock just needs to return the infolist mock that is prepared in
-    InitMultiFileData()
-
-    Returns:
-      A configured mock object
-    """
-    self._InitMultiFileData()
-    mock_zip = self.my_mox.CreateMock(zipfile.ZipFile)
-    mock_zip.infolist().AndReturn(self.multi_file_dir)
-    mock_zip.close()
-    return mock_zip
-
-
-class AddFileToArchiveTest(unittest.TestCase):
-  """Test behavior of method to add a file to an archive."""
-
-  def setUp(self):
-    """Setup the arguments for the DirectoryZipper object."""
-    self.my_mox = mox.Mox()
-    self.output_dir = '%s/' % os.getcwd()
-    self.file_to_add = 'file.txt'
-    self.input_dir = '/foo/bar/baz/'
-
-  def tearDown(self):
-    self.my_mox.UnsetStubs()
-
-  def testAddFileToArchive(self):
-    """Test the DirectoryZipper.AddFileToArchive method.
-
-    We are testing a pretty trivial method, we just expect it to look at the
-    file its adding, so that it possible can through out a warning.
-    """
-    test_target = divide_and_compress.DirectoryZipper(self.output_dir,
-                                                      self.input_dir,
-                                                      1024*1024, True)
-    self.my_mox.StubOutWithMock(test_target, 'OpenZipFileAtPath')
-    archive_mock = self.CreateArchiveMock()
-    test_target.OpenZipFileAtPath(
-        ''.join([self.output_dir, '0.zip']),
-        compress=zipfile.ZIP_DEFLATED).AndReturn(archive_mock)
-    self.StubOutOsModule()
-    self.my_mox.ReplayAll()
-    test_target.AddFileToArchive(''.join([self.input_dir, self.file_to_add]),
-                                 zipfile.ZIP_DEFLATED)
-    self.my_mox.VerifyAll()
-
-  def StubOutOsModule(self):
-    """Create a mock for the os.path and os.stat objects.
-
-    Create a stub that will return the type (file or directory) and size of the
-    object that is to be added.
-    """
-    self.my_mox.StubOutWithMock(os.path, 'isfile')
-    os.path.isfile(''.join([self.input_dir, self.file_to_add])).AndReturn(True)
-    self.my_mox.StubOutWithMock(os, 'stat')
-    os.stat(''.join([self.input_dir, self.file_to_add])).AndReturn([39480])
-    self.my_mox.StubOutWithMock(stat, 'ST_SIZE')
-    stat.ST_SIZE = 0
-    
-  def CreateArchiveMock(self):
-    """Create a mock ZipFile for use with testAddFileToArchive.
-
-    Just verify that write is called with the file we expect and that the
-    archive is closed after the file addition
-
-    Returns:
-      A configured mock object
-    """
-    archive_mock = self.my_mox.CreateMock(zipfile.ZipFile)
-    archive_mock.write(''.join([self.input_dir, self.file_to_add]),
-                       self.file_to_add)
-    archive_mock.close()
-    return archive_mock
-
-
-class CompressDirectoryTest(unittest.TestCase):
-  """Test the master method of the class.
-
-  Testing with the following directory structure.
-  /dir1/
-  /dir1/file1.txt
-  /dir1/file2.txt
-  /dir1/dir2/
-  /dir1/dir2/dir3/
-  /dir1/dir2/dir4/
-  /dir1/dir2/dir4/file3.txt
-  /dir1/dir5/
-  /dir1/dir5/file4.txt
-  /dir1/dir5/file5.txt
-  /dir1/dir5/file6.txt
-  /dir1/dir5/file7.txt
-  /dir1/dir6/
-  /dir1/dir6/file8.txt
-
-  file1.txt., file2.txt, file3.txt should be in 0.zip
-  file4.txt should be in 1.zip
-  file5.txt, file6.txt should be in 2.zip
-  file7.txt will not be stored since it will be too large compressed
-  file8.txt should b in 3.zip
-  """
-
-  def setUp(self):
-    """Setup all the mocks for this test."""
-    self.my_mox = mox.Mox()
-
-    self.base_dir = '/dir1'
-    self.output_path = '/out_dir/'
-    self.test_target = divide_and_compress.DirectoryZipper(
-        self.output_path, self.base_dir, 1024*1024, True)
-    
-    self.InitArgLists()
-    self.InitOsDotPath()
-    self.InitArchiveIsValid()
-    self.InitWriteIndexRecord()
-    self.InitAddFileToArchive()
-
-  def tearDown(self):
-    self.my_mox.UnsetStubs()
-
-  def testCompressDirectory(self):
-    """Test the DirectoryZipper.CompressDirectory method."""
-    self.my_mox.ReplayAll()
-    for arguments in self.argument_lists:
-      self.test_target.CompressDirectory(None, arguments[0], arguments[1])
-    self.my_mox.VerifyAll()
-
-  def InitAddFileToArchive(self):
-    """Setup mock for DirectoryZipper.AddFileToArchive.
-
-    Make sure that the files are added in the order we expect.
-    """
-    self.my_mox.StubOutWithMock(self.test_target, 'AddFileToArchive')
-    self.test_target.AddFileToArchive('/dir1/file1.txt', zipfile.ZIP_DEFLATED)
-    self.test_target.AddFileToArchive('/dir1/file2.txt', zipfile.ZIP_DEFLATED)
-    self.test_target.AddFileToArchive('/dir1/dir2/dir4/file3.txt',
-                                      zipfile.ZIP_DEFLATED)
-    self.test_target.AddFileToArchive('/dir1/dir5/file4.txt',
-                                      zipfile.ZIP_DEFLATED)
-    self.test_target.AddFileToArchive('/dir1/dir5/file4.txt',
-                                      zipfile.ZIP_DEFLATED)
-    self.test_target.AddFileToArchive('/dir1/dir5/file5.txt',
-                                      zipfile.ZIP_DEFLATED)
-    self.test_target.AddFileToArchive('/dir1/dir5/file5.txt',
-                                      zipfile.ZIP_DEFLATED)
-    self.test_target.AddFileToArchive('/dir1/dir5/file6.txt',
-                                      zipfile.ZIP_DEFLATED)
-    self.test_target.AddFileToArchive('/dir1/dir5/file7.txt',
-                                      zipfile.ZIP_DEFLATED)
-    self.test_target.AddFileToArchive('/dir1/dir5/file7.txt',
-                                      zipfile.ZIP_DEFLATED)
-    self.test_target.AddFileToArchive('/dir1/dir6/file8.txt',
-                                      zipfile.ZIP_DEFLATED)
-  
-  def InitWriteIndexRecord(self):
-    """Setup mock for DirectoryZipper.WriteIndexRecord."""
-    self.my_mox.StubOutWithMock(self.test_target, 'WriteIndexRecord')
-
-    # we are trying to compress 8 files, but we should only attempt to
-    # write an index record 7 times, because one file is too large to be stored
-    self.test_target.WriteIndexRecord().AndReturn(True)
-    self.test_target.WriteIndexRecord().AndReturn(False)
-    self.test_target.WriteIndexRecord().AndReturn(False)
-    self.test_target.WriteIndexRecord().AndReturn(True)
-    self.test_target.WriteIndexRecord().AndReturn(True)
-    self.test_target.WriteIndexRecord().AndReturn(False)
-    self.test_target.WriteIndexRecord().AndReturn(True)
-
-  def InitArchiveIsValid(self):
-    """Mock out DirectoryZipper.ArchiveIsValid and DirectoryZipper.FixArchive.
-
-    Mock these methods out such that file1, file2, and file3 go into one
-    archive. file4 then goes into the next archive, file5 and file6 in the
-    next, file 7 should appear too large to compress into an archive, and
-    file8 goes into the final archive
-    """
-    self.my_mox.StubOutWithMock(self.test_target, 'ArchiveIsValid')
-    self.my_mox.StubOutWithMock(self.test_target, 'FixArchive')
-    self.test_target.ArchiveIsValid().AndReturn(True)
-    self.test_target.ArchiveIsValid().AndReturn(True)
-    self.test_target.ArchiveIsValid().AndReturn(True)
-
-    # should be file4.txt
-    self.test_target.ArchiveIsValid().AndReturn(False)
-    self.test_target.FixArchive('SIZE').AndReturn(True)
-    self.test_target.ArchiveIsValid().AndReturn(True)
-
-    # should be file5.txt
-    self.test_target.ArchiveIsValid().AndReturn(False)
-    self.test_target.FixArchive('SIZE').AndReturn(True)
-    self.test_target.ArchiveIsValid().AndReturn(True)
-    self.test_target.ArchiveIsValid().AndReturn(True)
-
-    # should be file7.txt
-    self.test_target.ArchiveIsValid().AndReturn(False)
-    self.test_target.FixArchive('SIZE').AndReturn(True)
-    self.test_target.ArchiveIsValid().AndReturn(False)
-    self.test_target.FixArchive('SIZE').AndReturn(False)
-    self.test_target.ArchiveIsValid().AndReturn(True)
-    
-  def InitOsDotPath(self):
-    """Mock out os.path.isfile.
-
-    Mock this out so the things we want to appear as files appear as files and
-    the things we want to appear as directories appear as directories. Also
-    make sure that the order of file visits is as we expect (which is why
-    InAnyOrder isn't used here).
-    """
-    self.my_mox.StubOutWithMock(os.path, 'isfile')
-    os.path.isfile('/dir1/dir2').AndReturn(False)
-    os.path.isfile('/dir1/dir5').AndReturn(False)
-    os.path.isfile('/dir1/dir6').AndReturn(False)
-    os.path.isfile('/dir1/file1.txt').AndReturn(True)
-    os.path.isfile('/dir1/file2.txt').AndReturn(True)
-    os.path.isfile('/dir1/dir2/dir3').AndReturn(False)
-    os.path.isfile('/dir1/dir2/dir4').AndReturn(False)
-    os.path.isfile('/dir1/dir2/dir4/file3.txt').AndReturn(True)
-    os.path.isfile('/dir1/dir5/file4.txt').AndReturn(True)
-    os.path.isfile('/dir1/dir5/file4.txt').AndReturn(True)
-    os.path.isfile('/dir1/dir5/file5.txt').AndReturn(True)
-    os.path.isfile('/dir1/dir5/file5.txt').AndReturn(True)
-    os.path.isfile('/dir1/dir5/file6.txt').AndReturn(True)
-    os.path.isfile('/dir1/dir5/file7.txt').AndReturn(True)
-    os.path.isfile('/dir1/dir5/file7.txt').AndReturn(True)
-    os.path.isfile('/dir1/dir6/file8.txt').AndReturn(True)
-
-  def InitArgLists(self):
-    """Create the directory path => directory contents mappings."""
-    self.argument_lists = []
-    self.argument_lists.append(['/dir1',
-                                ['file1.txt', 'file2.txt', 'dir2', 'dir5',
-                                 'dir6']])
-    self.argument_lists.append(['/dir1/dir2', ['dir3', 'dir4']])
-    self.argument_lists.append(['/dir1/dir2/dir3', []])
-    self.argument_lists.append(['/dir1/dir2/dir4', ['file3.txt']])
-    self.argument_lists.append(['/dir1/dir5',
-                                ['file4.txt', 'file5.txt', 'file6.txt',
-                                 'file7.txt']])
-    self.argument_lists.append(['/dir1/dir6', ['file8.txt']])
-      
-if __name__ == '__main__':
-  unittest.main()
diff --git a/scripts/stack_core.py b/scripts/stack_core.py
index 28a5977..31b68be 100755
--- a/scripts/stack_core.py
+++ b/scripts/stack_core.py
@@ -23,9 +23,12 @@
 def PrintTraceLines(trace_lines):
   """Print back trace."""
   maxlen = max(map(lambda tl: len(tl[1]), trace_lines))
+  spacing = ""
+  if symbol.ARCH == "arm64" or symbol.ARCH == "mips64" or symbol.ARCH == "x86_64":
+    spacing = "        "
   print
   print "Stack Trace:"
-  print "  RELADDR   " + "FUNCTION".ljust(maxlen) + "  FILE:LINE"
+  print "  RELADDR   " + spacing + "FUNCTION".ljust(maxlen) + "  FILE:LINE"
   for tl in trace_lines:
     (addr, symbol_with_offset, location) = tl
     print "  %8s  %s  %s" % (addr, symbol_with_offset.ljust(maxlen), location)
@@ -58,19 +61,35 @@
   print
   print "-----------------------------------------------------\n"
 
+def CleanLine(ln):
+  # AndroidFeedback adds zero width spaces into its crash reports. These
+  # should be removed or the regular expresssions will fail to match.
+  return unicode(ln, errors='ignore')
+
 def ConvertTrace(lines):
   """Convert strings containing native crash to a stack."""
+  lines = map(CleanLine, lines)
+
   process_info_line = re.compile("(pid: [0-9]+, tid: [0-9]+.*)")
+  abi_line = re.compile("(ABI: \'(.*)\')")
   signal_line = re.compile("(signal [0-9]+ \(.*\).*)")
-  register_line = re.compile("(([ ]*[0-9a-z]{2} [0-9a-f]{8}){4})")
+  abort_message_line = re.compile("(Abort message: '.*')")
   thread_line = re.compile("(.*)(\-\-\- ){15}\-\-\-")
   dalvik_jni_thread_line = re.compile("(\".*\" prio=[0-9]+ tid=[0-9]+ NATIVE.*)")
   dalvik_native_thread_line = re.compile("(\".*\" sysTid=[0-9]+ nice=[0-9]+.*)")
 
+  for line in lines:
+    abi_header = abi_line.search(line)
+    if abi_header:
+      symbol.ARCH = abi_header.group(2)
+      break
+
   width = "{8}"
-  if symbol.ARCH == "arm64" or symbol.ARCH == "x86_64":
+  if symbol.ARCH == "arm64" or symbol.ARCH == "mips64" or symbol.ARCH == "x86_64":
     width = "{16}"
 
+  register_line = re.compile("(([ ]*[0-9a-z]{2} +[0-9a-f]" + width + "){4})")
+
   # Note that both trace and value line matching allow for variable amounts of
   # whitespace (e.g. \t). This is because the we want to allow for the stack
   # tool to operate on AndroidFeedback provided system logs. AndroidFeedback
@@ -107,18 +126,17 @@
   value_lines = []
   last_frame = -1
 
-  for ln in lines:
-    # AndroidFeedback adds zero width spaces into its crash reports. These
-    # should be removed or the regular expresssions will fail to match.
-    line = unicode(ln, errors='ignore')
+  for line in lines:
     process_header = process_info_line.search(line)
     signal_header = signal_line.search(line)
-    register_header = register_line.search(line)
+    abort_message_header = abort_message_line.search(line)
     thread_header = thread_line.search(line)
+    register_header = register_line.search(line)
+    abi_header = abi_line.search(line)
     dalvik_jni_thread_header = dalvik_jni_thread_line.search(line)
     dalvik_native_thread_header = dalvik_native_thread_line.search(line)
-    if process_header or signal_header or register_header or thread_header \
-        or dalvik_jni_thread_header or dalvik_native_thread_header:
+    if process_header or signal_header or abort_message_header or thread_header or abi_header or \
+        register_header or dalvik_jni_thread_header or dalvik_native_thread_header:
       if trace_lines or value_lines:
         PrintOutput(trace_lines, value_lines)
         PrintDivider()
@@ -129,6 +147,8 @@
         print process_header.group(1)
       if signal_header:
         print signal_header.group(1)
+      if abort_message_header:
+        print abort_message_header.group(1)
       if register_header:
         print register_header.group(1)
       if thread_header:
@@ -137,6 +157,8 @@
         print dalvik_jni_thread_header.group(1)
       if dalvik_native_thread_header:
         print dalvik_native_thread_header.group(1)
+      if abi_header:
+        print abi_header.group(1)
       continue
     if trace_line.match(line):
       match = trace_line.match(line)
diff --git a/scripts/symbol.py b/scripts/symbol.py
index 8c1fa68..a10621a 100755
--- a/scripts/symbol.py
+++ b/scripts/symbol.py
@@ -19,6 +19,7 @@
 The information can include symbol names, offsets, and source locations.
 """
 
+import glob
 import os
 import re
 import subprocess
@@ -43,73 +44,45 @@
 
 ARCH = "arm"
 
-TOOLCHAIN_INFO = None
+TOOLCHAIN = None
 
-def Uname():
-  """'uname' for constructing prebuilt/<...> and out/host/<...> paths."""
-  uname = os.uname()[0]
-  if uname == "Darwin":
-    proc = os.uname()[-1]
-    if proc == "i386" or proc == "x86_64":
-      return "darwin-x86"
-    return "darwin-ppc"
-  if uname == "Linux":
-    return "linux-x86"
-  return uname
-
-def ToolPath(tool, toolchain_info=None):
-  """Return a full qualified path to the specified tool"""
-  if not toolchain_info:
-    toolchain_info = FindToolchain()
-  (label, platform, target) = toolchain_info
-  return os.path.join(ANDROID_BUILD_TOP, "prebuilts/gcc", Uname(), platform, label, "bin",
-                     target + "-" + tool)
+def ToolPath(tool, toolchain=None):
+  """Return a fully-qualified path to the specified tool"""
+  if not toolchain:
+    toolchain = FindToolchain()
+  return glob.glob(os.path.join(toolchain, "*-" + tool))[0]
 
 def FindToolchain():
-  """Look for the latest available toolchain
+  """Returns the toolchain matching ARCH. Assumes that you're lunched
+  such that the necessary toolchain is either your primary or secondary.
+  TODO: we could make this 'just work' for most users by just globbing the
+  newest toolchains for every architecture out of prebuilts/, but other
+  parts of this tool assume you're lunched correctly anyway."""
+  global TOOLCHAIN
+  if TOOLCHAIN is not None:
+    return TOOLCHAIN
 
-  Args:
-    None
+  # We say "arm64", GCC says "aarch64".
+  gcc_arch = ARCH
+  if gcc_arch == "arm64":
+    gcc_arch = "aarch64"
 
-  Returns:
-    A pair of strings containing toolchain label and target prefix.
-  """
-  global TOOLCHAIN_INFO
-  if TOOLCHAIN_INFO is not None:
-    return TOOLCHAIN_INFO
+  tc1 = os.environ["ANDROID_TOOLCHAIN"]
+  tc2 = os.environ["ANDROID_TOOLCHAIN_2ND_ARCH"]
 
-  ## Known toolchains, newer ones in the front.
-  if ARCH == "arm64":
-    gcc_version = os.environ["TARGET_GCC_VERSION"]
-    known_toolchains = [
-      ("aarch64-linux-android-" + gcc_version, "aarch64", "aarch64-linux-android")
-    ]
-  elif ARCH == "arm":
-    gcc_version = os.environ["TARGET_GCC_VERSION"]
-    known_toolchains = [
-      ("arm-linux-androideabi-" + gcc_version, "arm", "arm-linux-androideabi"),
-    ]
-  elif ARCH =="x86":
-    known_toolchains = [
-      ("i686-android-linux-4.4.3", "x86", "i686-android-linux")
-    ]
-  elif ARCH == "mips":
-    gcc_version = os.environ["TARGET_GCC_VERSION"]
-    known_toolchains = [
-      ("mipsel-linux-android-" + gcc_version, "mips", "mipsel-linux-android")
-    ]
+  if (gcc_arch + "/" + gcc_arch + "-") in tc1:
+    toolchain = tc1
+  elif (gcc_arch + "/" + gcc_arch + "-") in tc2:
+    toolchain = tc2
   else:
-    known_toolchains = []
+    raise Exception("Could not find tool chain for %s" % (gcc_arch))
 
-  # Look for addr2line to check for valid toolchain path.
-  for (label, platform, target) in known_toolchains:
-    toolchain_info = (label, platform, target);
-    if os.path.exists(ToolPath("addr2line", toolchain_info)):
-      TOOLCHAIN_INFO = toolchain_info
-      print "Using toolchain from :" + ToolPath("", TOOLCHAIN_INFO)
-      return toolchain_info
+  if not os.path.exists(ToolPath("addr2line", toolchain)):
+    raise Exception("No addr2line for %s" % (toolchain))
 
-  raise Exception("Could not find tool chain")
+  TOOLCHAIN = toolchain
+  print "Using toolchain from: %s" % TOOLCHAIN
+  return TOOLCHAIN
 
 def SymbolInformation(lib, addr):
   """Look up symbol information about an address.
@@ -206,7 +179,6 @@
   if not os.path.exists(symbols):
     return None
 
-  (label, platform, target) = FindToolchain()
   cmd = [ToolPath("addr2line"), "--functions", "--inlines",
       "--demangle", "--exe=" + symbols]
   child = subprocess.Popen(cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
diff --git a/sdk/api-versions.xml b/sdk/api-versions.xml
deleted file mode 100644
index 5576def..0000000
--- a/sdk/api-versions.xml
+++ /dev/null
@@ -1,55564 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<api version="1">
-	<class name="android/Manifest" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="android/Manifest$permission" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="ACCESS_CHECKIN_PROPERTIES" />
-		<field name="ACCESS_COARSE_LOCATION" />
-		<field name="ACCESS_FINE_LOCATION" />
-		<field name="ACCESS_LOCATION_EXTRA_COMMANDS" />
-		<field name="ACCESS_MOCK_LOCATION" />
-		<field name="ACCESS_NETWORK_STATE" />
-		<field name="ACCESS_SURFACE_FLINGER" />
-		<field name="ACCESS_WIFI_STATE" />
-		<field name="ACCOUNT_MANAGER" since="5" />
-		<field name="ADD_SYSTEM_SERVICE" />
-		<field name="ADD_VOICEMAIL" since="14" />
-		<field name="AUTHENTICATE_ACCOUNTS" since="5" />
-		<field name="BATTERY_STATS" />
-		<field name="BIND_ACCESSIBILITY_SERVICE" since="16" />
-		<field name="BIND_APPWIDGET" since="3" />
-		<field name="BIND_DEVICE_ADMIN" since="8" />
-		<field name="BIND_INPUT_METHOD" since="3" />
-		<field name="BIND_NFC_SERVICE" since="19" />
-		<field name="BIND_NOTIFICATION_LISTENER_SERVICE" since="18" />
-		<field name="BIND_PRINT_SERVICE" since="19" />
-		<field name="BIND_REMOTEVIEWS" since="11" />
-		<field name="BIND_TEXT_SERVICE" since="14" />
-		<field name="BIND_TV_INPUT" since="21" />
-		<field name="BIND_VOICE_INTERACTION" since="21" />
-		<field name="BIND_VPN_SERVICE" since="14" />
-		<field name="BIND_WALLPAPER" since="8" />
-		<field name="BLUETOOTH" />
-		<field name="BLUETOOTH_ADMIN" />
-		<field name="BLUETOOTH_PRIVILEGED" since="19" />
-		<field name="BODY_SENSORS" since="20" />
-		<field name="BRICK" />
-		<field name="BROADCAST_PACKAGE_REMOVED" />
-		<field name="BROADCAST_SMS" since="2" />
-		<field name="BROADCAST_STICKY" />
-		<field name="BROADCAST_WAP_PUSH" since="2" />
-		<field name="CALL_PHONE" />
-		<field name="CALL_PRIVILEGED" />
-		<field name="CAMERA" />
-		<field name="CAPTURE_AUDIO_OUTPUT" since="19" />
-		<field name="CAPTURE_SECURE_VIDEO_OUTPUT" since="19" />
-		<field name="CAPTURE_VIDEO_OUTPUT" since="19" />
-		<field name="CHANGE_COMPONENT_ENABLED_STATE" />
-		<field name="CHANGE_CONFIGURATION" />
-		<field name="CHANGE_NETWORK_STATE" />
-		<field name="CHANGE_WIFI_MULTICAST_STATE" since="4" />
-		<field name="CHANGE_WIFI_STATE" />
-		<field name="CLEAR_APP_CACHE" />
-		<field name="CLEAR_APP_USER_DATA" />
-		<field name="CONTROL_LOCATION_UPDATES" />
-		<field name="DELETE_CACHE_FILES" />
-		<field name="DELETE_PACKAGES" />
-		<field name="DEVICE_POWER" />
-		<field name="DIAGNOSTIC" />
-		<field name="DISABLE_KEYGUARD" />
-		<field name="DUMP" />
-		<field name="EXPAND_STATUS_BAR" />
-		<field name="FACTORY_TEST" />
-		<field name="FLASHLIGHT" />
-		<field name="FORCE_BACK" />
-		<field name="FOTA_UPDATE" />
-		<field name="GET_ACCOUNTS" />
-		<field name="GET_PACKAGE_SIZE" />
-		<field name="GET_TASKS" />
-		<field name="GET_TOP_ACTIVITY_INFO" since="18" />
-		<field name="GLOBAL_SEARCH" since="4" />
-		<field name="HARDWARE_TEST" />
-		<field name="INJECT_EVENTS" />
-		<field name="INSTALL_LOCATION_PROVIDER" since="4" />
-		<field name="INSTALL_PACKAGES" />
-		<field name="INSTALL_SHORTCUT" since="19" />
-		<field name="INTERNAL_SYSTEM_WINDOW" />
-		<field name="INTERNET" />
-		<field name="KILL_BACKGROUND_PROCESSES" since="8" />
-		<field name="LOCATION_HARDWARE" since="18" />
-		<field name="MANAGE_ACCOUNTS" since="5" />
-		<field name="MANAGE_APP_TOKENS" />
-		<field name="MANAGE_DOCUMENTS" since="19" />
-		<field name="MASTER_CLEAR" />
-		<field name="MEDIA_CONTENT_CONTROL" since="19" />
-		<field name="MODIFY_AUDIO_SETTINGS" />
-		<field name="MODIFY_PHONE_STATE" />
-		<field name="MOUNT_FORMAT_FILESYSTEMS" since="3" />
-		<field name="MOUNT_UNMOUNT_FILESYSTEMS" />
-		<field name="NFC" since="9" />
-		<field name="PERSISTENT_ACTIVITY" />
-		<field name="PROCESS_OUTGOING_CALLS" />
-		<field name="READ_CALENDAR" />
-		<field name="READ_CALL_LOG" since="16" />
-		<field name="READ_CONTACTS" />
-		<field name="READ_EXTERNAL_STORAGE" since="16" />
-		<field name="READ_FRAME_BUFFER" />
-		<field name="READ_HISTORY_BOOKMARKS" since="4" />
-		<field name="READ_INPUT_STATE" />
-		<field name="READ_LOGS" />
-		<field name="READ_OWNER_DATA" />
-		<field name="READ_PHONE_STATE" />
-		<field name="READ_PROFILE" since="14" />
-		<field name="READ_SMS" />
-		<field name="READ_SOCIAL_STREAM" since="15" />
-		<field name="READ_SYNC_SETTINGS" />
-		<field name="READ_SYNC_STATS" />
-		<field name="READ_USER_DICTIONARY" since="16" />
-		<field name="REBOOT" />
-		<field name="RECEIVE_BOOT_COMPLETED" />
-		<field name="RECEIVE_MMS" />
-		<field name="RECEIVE_SMS" />
-		<field name="RECEIVE_WAP_PUSH" />
-		<field name="RECORD_AUDIO" />
-		<field name="REORDER_TASKS" />
-		<field name="RESTART_PACKAGES" />
-		<field name="SEND_RESPOND_VIA_MESSAGE" since="18" />
-		<field name="SEND_SMS" />
-		<field name="SET_ACTIVITY_WATCHER" />
-		<field name="SET_ALARM" since="9" />
-		<field name="SET_ALWAYS_FINISH" />
-		<field name="SET_ANIMATION_SCALE" />
-		<field name="SET_DEBUG_APP" />
-		<field name="SET_ORIENTATION" />
-		<field name="SET_POINTER_SPEED" since="13" />
-		<field name="SET_PREFERRED_APPLICATIONS" />
-		<field name="SET_PROCESS_FOREGROUND" />
-		<field name="SET_PROCESS_LIMIT" />
-		<field name="SET_TIME" since="8" />
-		<field name="SET_TIME_ZONE" />
-		<field name="SET_WALLPAPER" />
-		<field name="SET_WALLPAPER_HINTS" />
-		<field name="SIGNAL_PERSISTENT_PROCESSES" />
-		<field name="STATUS_BAR" />
-		<field name="SUBSCRIBED_FEEDS_READ" />
-		<field name="SUBSCRIBED_FEEDS_WRITE" />
-		<field name="SYSTEM_ALERT_WINDOW" />
-		<field name="TRANSMIT_IR" since="19" />
-		<field name="UNINSTALL_SHORTCUT" since="19" />
-		<field name="UPDATE_DEVICE_STATS" since="3" />
-		<field name="USE_CREDENTIALS" since="5" />
-		<field name="USE_SIP" since="9" />
-		<field name="VIBRATE" />
-		<field name="WAKE_LOCK" />
-		<field name="WRITE_APN_SETTINGS" />
-		<field name="WRITE_CALENDAR" />
-		<field name="WRITE_CALL_LOG" since="16" />
-		<field name="WRITE_CONTACTS" />
-		<field name="WRITE_EXTERNAL_STORAGE" since="4" />
-		<field name="WRITE_GSERVICES" />
-		<field name="WRITE_HISTORY_BOOKMARKS" since="4" />
-		<field name="WRITE_OWNER_DATA" />
-		<field name="WRITE_PROFILE" since="14" />
-		<field name="WRITE_SECURE_SETTINGS" since="3" />
-		<field name="WRITE_SETTINGS" />
-		<field name="WRITE_SMS" />
-		<field name="WRITE_SOCIAL_STREAM" since="15" />
-		<field name="WRITE_SYNC_SETTINGS" />
-		<field name="WRITE_USER_DICTIONARY" since="16" />
-	</class>
-	<class name="android/Manifest$permission_group" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="ACCESSIBILITY_FEATURES" since="18" />
-		<field name="ACCOUNTS" />
-		<field name="AFFECTS_BATTERY" since="17" />
-		<field name="APP_INFO" since="17" />
-		<field name="AUDIO_SETTINGS" since="17" />
-		<field name="BLUETOOTH_NETWORK" since="17" />
-		<field name="BOOKMARKS" since="17" />
-		<field name="CALENDAR" since="17" />
-		<field name="CAMERA" since="17" />
-		<field name="COST_MONEY" />
-		<field name="DEVELOPMENT_TOOLS" />
-		<field name="DEVICE_ALARMS" since="17" />
-		<field name="DISPLAY" since="17" />
-		<field name="HARDWARE_CONTROLS" />
-		<field name="LOCATION" />
-		<field name="MESSAGES" />
-		<field name="MICROPHONE" since="17" />
-		<field name="NETWORK" />
-		<field name="PERSONAL_INFO" />
-		<field name="PHONE_CALLS" />
-		<field name="SCREENLOCK" since="17" />
-		<field name="SOCIAL_INFO" since="17" />
-		<field name="STATUS_BAR" since="17" />
-		<field name="STORAGE" since="4" />
-		<field name="SYNC_SETTINGS" since="17" />
-		<field name="SYSTEM_CLOCK" since="17" />
-		<field name="SYSTEM_TOOLS" />
-		<field name="USER_DICTIONARY" since="17" />
-		<field name="VOICEMAIL" since="17" />
-		<field name="WALLPAPER" since="17" />
-		<field name="WRITE_USER_DICTIONARY" since="17" />
-	</class>
-	<class name="android/R" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="android/R$anim" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="accelerate_decelerate_interpolator" />
-		<field name="accelerate_interpolator" />
-		<field name="anticipate_interpolator" since="4" />
-		<field name="anticipate_overshoot_interpolator" since="4" />
-		<field name="bounce_interpolator" since="4" />
-		<field name="cycle_interpolator" since="8" />
-		<field name="decelerate_interpolator" />
-		<field name="fade_in" />
-		<field name="fade_out" />
-		<field name="linear_interpolator" since="4" />
-		<field name="overshoot_interpolator" since="4" />
-		<field name="slide_in_left" />
-		<field name="slide_out_right" />
-	</class>
-	<class name="android/R$animator" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="fade_in" />
-		<field name="fade_out" />
-	</class>
-	<class name="android/R$array" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="emailAddressTypes" />
-		<field name="imProtocols" />
-		<field name="organizationTypes" />
-		<field name="phoneTypes" />
-		<field name="postalAddressTypes" />
-	</class>
-	<class name="android/R$attr" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="absListViewStyle" />
-		<field name="accessibilityEventTypes" since="14" />
-		<field name="accessibilityFeedbackType" since="14" />
-		<field name="accessibilityFlags" since="14" />
-		<field name="accessibilityLiveRegion" since="19" />
-		<field name="accountPreferences" since="5" />
-		<field name="accountType" since="5" />
-		<field name="action" />
-		<field name="actionBarDivider" since="14" />
-		<field name="actionBarItemBackground" since="14" />
-		<field name="actionBarSize" since="11" />
-		<field name="actionBarSplitStyle" since="14" />
-		<field name="actionBarStyle" since="11" />
-		<field name="actionBarTabBarStyle" since="11" />
-		<field name="actionBarTabStyle" since="11" />
-		<field name="actionBarTabTextStyle" since="11" />
-		<field name="actionBarTheme" since="21" />
-		<field name="actionBarWidgetTheme" since="14" />
-		<field name="actionButtonStyle" since="11" />
-		<field name="actionDropDownStyle" since="11" />
-		<field name="actionLayout" since="11" />
-		<field name="actionMenuTextAppearance" since="11" />
-		<field name="actionMenuTextColor" since="11" />
-		<field name="actionModeBackground" since="11" />
-		<field name="actionModeCloseButtonStyle" since="11" />
-		<field name="actionModeCloseDrawable" since="11" />
-		<field name="actionModeCopyDrawable" since="11" />
-		<field name="actionModeCutDrawable" since="11" />
-		<field name="actionModePasteDrawable" since="11" />
-		<field name="actionModeSelectAllDrawable" since="14" />
-		<field name="actionModeSplitBackground" since="14" />
-		<field name="actionModeStyle" since="14" />
-		<field name="actionOverflowButtonStyle" since="11" />
-		<field name="actionOverflowMenuStyle" since="21" />
-		<field name="actionProviderClass" since="14" />
-		<field name="actionViewClass" since="11" />
-		<field name="activatedBackgroundIndicator" since="11" />
-		<field name="activityCloseEnterAnimation" />
-		<field name="activityCloseExitAnimation" />
-		<field name="activityOpenEnterAnimation" />
-		<field name="activityOpenExitAnimation" />
-		<field name="addPrintersActivity" since="19" />
-		<field name="addStatesFromChildren" />
-		<field name="adjustViewBounds" />
-		<field name="advancedPrintOptionsActivity" since="19" />
-		<field name="alertDialogIcon" since="11" />
-		<field name="alertDialogStyle" />
-		<field name="alertDialogTheme" since="11" />
-		<field name="alignmentMode" since="14" />
-		<field name="allContactsName" since="11" />
-		<field name="allowBackup" since="4" />
-		<field name="allowClearUserData" />
-		<field name="allowEmbedded" since="20" />
-		<field name="allowParallelSyncs" since="11" />
-		<field name="allowSingleTap" since="3" />
-		<field name="allowTaskReparenting" />
-		<field name="alpha" since="11" />
-		<field name="alphabeticShortcut" />
-		<field name="alwaysDrawnWithCache" />
-		<field name="alwaysRetainTaskState" />
-		<field name="angle" />
-		<field name="animateFirstView" since="11" />
-		<field name="animateLayoutChanges" since="11" />
-		<field name="animateOnClick" since="3" />
-		<field name="animation" />
-		<field name="animationCache" />
-		<field name="animationDuration" />
-		<field name="animationOrder" />
-		<field name="animationResolution" since="11" />
-		<field name="antialias" />
-		<field name="anyDensity" since="4" />
-		<field name="apduServiceBanner" since="19" />
-		<field name="apiKey" />
-		<field name="author" since="7" />
-		<field name="authorities" />
-		<field name="autoAdvanceViewId" since="11" />
-		<field name="autoCompleteTextViewStyle" />
-		<field name="autoLink" />
-		<field name="autoMirrored" since="19" />
-		<field name="autoRemoveFromRecents" since="21" />
-		<field name="autoStart" since="7" />
-		<field name="autoText" />
-		<field name="autoUrlDetect" since="4" />
-		<field name="background" />
-		<field name="backgroundDimAmount" />
-		<field name="backgroundDimEnabled" since="3" />
-		<field name="backgroundSplit" since="14" />
-		<field name="backgroundStacked" since="14" />
-		<field name="backupAgent" since="4" />
-		<field name="banner" since="21" />
-		<field name="baseline" since="11" />
-		<field name="baselineAlignBottom" />
-		<field name="baselineAligned" />
-		<field name="baselineAlignedChildIndex" />
-		<field name="borderlessButtonStyle" since="11" />
-		<field name="bottom" />
-		<field name="bottomBright" />
-		<field name="bottomDark" />
-		<field name="bottomLeftRadius" />
-		<field name="bottomMedium" />
-		<field name="bottomOffset" since="3" />
-		<field name="bottomRightRadius" />
-		<field name="breadCrumbShortTitle" since="11" />
-		<field name="breadCrumbTitle" since="11" />
-		<field name="bufferType" />
-		<field name="button" />
-		<field name="buttonBarButtonStyle" since="11" />
-		<field name="buttonBarStyle" since="11" />
-		<field name="buttonStyle" />
-		<field name="buttonStyleInset" />
-		<field name="buttonStyleSmall" />
-		<field name="buttonStyleToggle" />
-		<field name="cacheColorHint" />
-		<field name="calendarViewShown" since="11" />
-		<field name="calendarViewStyle" since="11" />
-		<field name="canRequestEnhancedWebAccessibility" since="18" />
-		<field name="canRequestFilterKeyEvents" since="18" />
-		<field name="canRequestTouchExplorationMode" since="18" />
-		<field name="canRetrieveWindowContent" since="14" />
-		<field name="candidatesTextStyleSpans" since="3" />
-		<field name="capitalize" />
-		<field name="category" since="19" />
-		<field name="centerBright" />
-		<field name="centerColor" />
-		<field name="centerDark" />
-		<field name="centerMedium" />
-		<field name="centerX" />
-		<field name="centerY" />
-		<field name="checkBoxPreferenceStyle" />
-		<field name="checkMark" />
-		<field name="checkable" />
-		<field name="checkableBehavior" />
-		<field name="checkboxStyle" />
-		<field name="checked" />
-		<field name="checkedButton" />
-		<field name="checkedTextViewStyle" since="17" />
-		<field name="childDivider" />
-		<field name="childIndicator" />
-		<field name="childIndicatorEnd" since="18" />
-		<field name="childIndicatorLeft" />
-		<field name="childIndicatorRight" />
-		<field name="childIndicatorStart" since="18" />
-		<field name="choiceMode" />
-		<field name="clearTaskOnLaunch" />
-		<field name="clickable" />
-		<field name="clipChildren" />
-		<field name="clipOrientation" />
-		<field name="clipToPadding" />
-		<field name="clipToPath" since="21" />
-		<field name="codes" since="3" />
-		<field name="collapseColumns" />
-		<field name="color" />
-		<field name="colorAccent" since="21" />
-		<field name="colorActivatedHighlight" since="14" />
-		<field name="colorBackground" />
-		<field name="colorBackgroundCacheHint" since="5" />
-		<field name="colorButtonNormal" since="21" />
-		<field name="colorControlActivated" since="21" />
-		<field name="colorControlHighlight" since="21" />
-		<field name="colorControlNormal" since="21" />
-		<field name="colorFocusedHighlight" since="14" />
-		<field name="colorForeground" />
-		<field name="colorForegroundInverse" />
-		<field name="colorLongPressedHighlight" since="14" />
-		<field name="colorMultiSelectHighlight" since="14" />
-		<field name="colorPressedHighlight" since="14" />
-		<field name="colorPrimary" since="21" />
-		<field name="colorPrimaryDark" since="21" />
-		<field name="columnCount" since="14" />
-		<field name="columnDelay" />
-		<field name="columnOrderPreserved" since="14" />
-		<field name="columnWidth" />
-		<field name="compatibleWidthLimitDp" since="13" />
-		<field name="completionHint" />
-		<field name="completionHintView" />
-		<field name="completionThreshold" />
-		<field name="configChanges" />
-		<field name="configure" since="3" />
-		<field name="constantSize" />
-		<field name="content" since="3" />
-		<field name="contentAuthority" since="5" />
-		<field name="contentDescription" since="4" />
-		<field name="contentInsetEnd" since="21" />
-		<field name="contentInsetLeft" since="21" />
-		<field name="contentInsetRight" since="21" />
-		<field name="contentInsetStart" since="21" />
-		<field name="controlX1" since="21" />
-		<field name="controlX2" since="21" />
-		<field name="controlY1" since="21" />
-		<field name="controlY2" since="21" />
-		<field name="cropToPadding" />
-		<field name="cursorVisible" />
-		<field name="customNavigationLayout" since="11" />
-		<field name="customTokens" since="11" />
-		<field name="cycles" />
-		<field name="dashGap" />
-		<field name="dashWidth" />
-		<field name="data" />
-		<field name="datePickerStyle" since="11" />
-		<field name="dateTextAppearance" since="11" />
-		<field name="debuggable" />
-		<field name="defaultValue" />
-		<field name="delay" />
-		<field name="dependency" />
-		<field name="descendantFocusability" />
-		<field name="description" />
-		<field name="detachWallpaper" since="5" />
-		<field name="detailColumn" since="5" />
-		<field name="detailSocialSummary" since="5" />
-		<field name="detailsElementBackground" since="11" />
-		<field name="dial" />
-		<field name="dialogIcon" />
-		<field name="dialogLayout" />
-		<field name="dialogMessage" />
-		<field name="dialogPreferenceStyle" />
-		<field name="dialogTheme" since="11" />
-		<field name="dialogTitle" />
-		<field name="digits" />
-		<field name="direction" />
-		<field name="directionDescriptions" since="14" />
-		<field name="directionPriority" />
-		<field name="disableDependentsState" />
-		<field name="disabledAlpha" />
-		<field name="displayOptions" since="11" />
-		<field name="dither" />
-		<field name="divider" />
-		<field name="dividerHeight" />
-		<field name="dividerHorizontal" since="11" />
-		<field name="dividerPadding" since="11" />
-		<field name="dividerVertical" since="11" />
-		<field name="documentLaunchMode" since="21" />
-		<field name="drawSelectorOnTop" />
-		<field name="drawable" />
-		<field name="drawableBottom" />
-		<field name="drawableEnd" since="14" />
-		<field name="drawableLeft" />
-		<field name="drawablePadding" />
-		<field name="drawableRight" />
-		<field name="drawableStart" since="14" />
-		<field name="drawableTop" />
-		<field name="drawingCacheQuality" />
-		<field name="dropDownAnchor" since="3" />
-		<field name="dropDownHeight" since="4" />
-		<field name="dropDownHintAppearance" />
-		<field name="dropDownHorizontalOffset" since="5" />
-		<field name="dropDownItemStyle" />
-		<field name="dropDownListViewStyle" />
-		<field name="dropDownSelector" />
-		<field name="dropDownSpinnerStyle" since="11" />
-		<field name="dropDownVerticalOffset" since="5" />
-		<field name="dropDownWidth" since="3" />
-		<field name="duplicateParentState" />
-		<field name="duration" />
-		<field name="editTextBackground" since="11" />
-		<field name="editTextColor" since="11" />
-		<field name="editTextPreferenceStyle" />
-		<field name="editTextStyle" />
-		<field name="editable" />
-		<field name="editorExtras" since="3" />
-		<field name="elegantTextHeight" since="21" />
-		<field name="elevation" since="21" />
-		<field name="ellipsize" />
-		<field name="ems" />
-		<field name="enabled" />
-		<field name="endColor" />
-		<field name="endYear" />
-		<field name="enterFadeDuration" since="11" />
-		<field name="entries" />
-		<field name="entryValues" />
-		<field name="eventsInterceptionEnabled" since="4" />
-		<field name="excludeClass" since="21" />
-		<field name="excludeFromRecents" />
-		<field name="excludeId" since="21" />
-		<field name="excludeViewName" since="21" />
-		<field name="exitFadeDuration" since="11" />
-		<field name="expandableListPreferredChildIndicatorLeft" />
-		<field name="expandableListPreferredChildIndicatorRight" />
-		<field name="expandableListPreferredChildPaddingLeft" />
-		<field name="expandableListPreferredItemIndicatorLeft" />
-		<field name="expandableListPreferredItemIndicatorRight" />
-		<field name="expandableListPreferredItemPaddingLeft" />
-		<field name="expandableListViewStyle" />
-		<field name="expandableListViewWhiteStyle" since="8" />
-		<field name="exported" />
-		<field name="extraTension" since="4" />
-		<field name="factor" />
-		<field name="fadeDuration" since="4" />
-		<field name="fadeEnabled" since="4" />
-		<field name="fadeOffset" since="4" />
-		<field name="fadeScrollbars" since="5" />
-		<field name="fadingEdge" />
-		<field name="fadingEdgeLength" />
-		<field name="fadingMode" since="19" />
-		<field name="fastScrollAlwaysVisible" since="11" />
-		<field name="fastScrollEnabled" since="3" />
-		<field name="fastScrollOverlayPosition" since="11" />
-		<field name="fastScrollPreviewBackgroundLeft" since="11" />
-		<field name="fastScrollPreviewBackgroundRight" since="11" />
-		<field name="fastScrollStyle" since="21" />
-		<field name="fastScrollTextColor" since="11" />
-		<field name="fastScrollThumbDrawable" since="11" />
-		<field name="fastScrollTrackDrawable" since="11" />
-		<field name="fill" since="21" />
-		<field name="fillAfter" />
-		<field name="fillBefore" />
-		<field name="fillEnabled" since="3" />
-		<field name="fillOpacity" since="21" />
-		<field name="fillViewport" />
-		<field name="filter" />
-		<field name="filterTouchesWhenObscured" since="9" />
-		<field name="finishOnCloseSystemDialogs" since="5" />
-		<field name="finishOnTaskLaunch" />
-		<field name="firstDayOfWeek" since="11" />
-		<field name="fitsSystemWindows" />
-		<field name="flipInterval" />
-		<field name="focusable" />
-		<field name="focusableInTouchMode" />
-		<field name="focusedMonthDateColor" since="11" />
-		<field name="fontFamily" since="16" />
-		<field name="footerDividersEnabled" since="3" />
-		<field name="foreground" />
-		<field name="foregroundGravity" />
-		<field name="format" />
-		<field name="format12Hour" since="17" />
-		<field name="format24Hour" since="17" />
-		<field name="fragment" since="11" />
-		<field name="fragmentCloseEnterAnimation" since="11" />
-		<field name="fragmentCloseExitAnimation" since="11" />
-		<field name="fragmentFadeEnterAnimation" since="11" />
-		<field name="fragmentFadeExitAnimation" since="11" />
-		<field name="fragmentOpenEnterAnimation" since="11" />
-		<field name="fragmentOpenExitAnimation" since="11" />
-		<field name="freezesText" />
-		<field name="fromAlpha" />
-		<field name="fromDegrees" />
-		<field name="fromId" since="21" />
-		<field name="fromScene" since="19" />
-		<field name="fromXDelta" />
-		<field name="fromXScale" />
-		<field name="fromYDelta" />
-		<field name="fromYScale" />
-		<field name="fullBright" />
-		<field name="fullDark" />
-		<field name="functionalTest" />
-		<field name="galleryItemBackground" />
-		<field name="galleryStyle" />
-		<field name="gestureColor" since="4" />
-		<field name="gestureStrokeAngleThreshold" since="4" />
-		<field name="gestureStrokeLengthThreshold" since="4" />
-		<field name="gestureStrokeSquarenessThreshold" since="4" />
-		<field name="gestureStrokeType" since="4" />
-		<field name="gestureStrokeWidth" since="4" />
-		<field name="glEsVersion" since="4" />
-		<field name="gradientRadius" />
-		<field name="grantUriPermissions" />
-		<field name="gravity" />
-		<field name="gridViewStyle" />
-		<field name="groupIndicator" />
-		<field name="hand_hour" />
-		<field name="hand_minute" />
-		<field name="handle" since="3" />
-		<field name="handleProfiling" />
-		<field name="hapticFeedbackEnabled" since="3" />
-		<field name="hardwareAccelerated" since="11" />
-		<field name="hasCode" />
-		<field name="headerBackground" />
-		<field name="headerDividersEnabled" since="3" />
-		<field name="height" />
-		<field name="hideOnContentScroll" since="21" />
-		<field name="hint" />
-		<field name="homeAsUpIndicator" since="11" />
-		<field name="homeLayout" since="11" />
-		<field name="horizontalDivider" />
-		<field name="horizontalGap" since="3" />
-		<field name="horizontalScrollViewStyle" since="11" />
-		<field name="horizontalSpacing" />
-		<field name="host" />
-		<field name="icon" />
-		<field name="iconPreview" since="3" />
-		<field name="iconifiedByDefault" since="11" />
-		<field name="id" />
-		<field name="ignoreGravity" />
-		<field name="imageButtonStyle" />
-		<field name="imageWellStyle" />
-		<field name="imeActionId" since="3" />
-		<field name="imeActionLabel" since="3" />
-		<field name="imeExtractEnterAnimation" since="3" />
-		<field name="imeExtractExitAnimation" since="3" />
-		<field name="imeFullscreenBackground" since="3" />
-		<field name="imeOptions" since="3" />
-		<field name="imeSubtypeExtraValue" since="11" />
-		<field name="imeSubtypeLocale" since="11" />
-		<field name="imeSubtypeMode" since="11" />
-		<field name="immersive" since="11" />
-		<field name="importantForAccessibility" since="16" />
-		<field name="inAnimation" />
-		<field name="includeFontPadding" />
-		<field name="includeInGlobalSearch" since="4" />
-		<field name="indeterminate" />
-		<field name="indeterminateBehavior" />
-		<field name="indeterminateDrawable" />
-		<field name="indeterminateDuration" />
-		<field name="indeterminateOnly" />
-		<field name="indeterminateProgressStyle" since="11" />
-		<field name="indicatorEnd" since="18" />
-		<field name="indicatorLeft" />
-		<field name="indicatorRight" />
-		<field name="indicatorStart" since="18" />
-		<field name="inflatedId" />
-		<field name="initOrder" />
-		<field name="initialKeyguardLayout" since="17" />
-		<field name="initialLayout" since="3" />
-		<field name="innerRadius" since="3" />
-		<field name="innerRadiusRatio" />
-		<field name="inputMethod" />
-		<field name="inputType" since="3" />
-		<field name="insetBottom" />
-		<field name="insetLeft" />
-		<field name="insetRight" />
-		<field name="insetTop" />
-		<field name="installLocation" since="8" />
-		<field name="interpolator" />
-		<field name="isAlwaysSyncable" since="11" />
-		<field name="isAsciiCapable" since="19" />
-		<field name="isAuxiliary" since="14" />
-		<field name="isDefault" since="3" />
-		<field name="isGame" since="21" />
-		<field name="isIndicator" />
-		<field name="isModifier" since="3" />
-		<field name="isRepeatable" since="3" />
-		<field name="isScrollContainer" since="3" />
-		<field name="isSticky" since="3" />
-		<field name="isolatedProcess" since="16" />
-		<field name="itemBackground" />
-		<field name="itemIconDisabledAlpha" />
-		<field name="itemPadding" since="11" />
-		<field name="itemTextAppearance" />
-		<field name="keepScreenOn" />
-		<field name="key" />
-		<field name="keyBackground" since="3" />
-		<field name="keyEdgeFlags" since="3" />
-		<field name="keyHeight" since="3" />
-		<field name="keyIcon" since="3" />
-		<field name="keyLabel" since="3" />
-		<field name="keyOutputText" since="3" />
-		<field name="keyPreviewHeight" since="3" />
-		<field name="keyPreviewLayout" since="3" />
-		<field name="keyPreviewOffset" since="3" />
-		<field name="keySet" since="19" />
-		<field name="keyTextColor" since="3" />
-		<field name="keyTextSize" since="3" />
-		<field name="keyWidth" since="3" />
-		<field name="keyboardLayout" since="16" />
-		<field name="keyboardMode" since="3" />
-		<field name="keycode" />
-		<field name="killAfterRestore" since="5" />
-		<field name="l_resource_pad1" since="21" />
-		<field name="l_resource_pad10" since="21" />
-		<field name="l_resource_pad11" since="21" />
-		<field name="l_resource_pad12" since="21" />
-		<field name="l_resource_pad13" since="21" />
-		<field name="l_resource_pad14" since="21" />
-		<field name="l_resource_pad15" since="21" />
-		<field name="l_resource_pad16" since="21" />
-		<field name="l_resource_pad17" since="21" />
-		<field name="l_resource_pad18" since="21" />
-		<field name="l_resource_pad19" since="21" />
-		<field name="l_resource_pad2" since="21" />
-		<field name="l_resource_pad20" since="21" />
-		<field name="l_resource_pad21" since="21" />
-		<field name="l_resource_pad22" since="21" />
-		<field name="l_resource_pad23" since="21" />
-		<field name="l_resource_pad24" since="21" />
-		<field name="l_resource_pad25" since="21" />
-		<field name="l_resource_pad3" since="21" />
-		<field name="l_resource_pad4" since="21" />
-		<field name="l_resource_pad5" since="21" />
-		<field name="l_resource_pad6" since="21" />
-		<field name="l_resource_pad7" since="21" />
-		<field name="l_resource_pad8" since="21" />
-		<field name="l_resource_pad9" since="21" />
-		<field name="label" />
-		<field name="labelFor" since="17" />
-		<field name="labelTextSize" since="3" />
-		<field name="largeHeap" since="11" />
-		<field name="largeScreens" since="4" />
-		<field name="largestWidthLimitDp" since="13" />
-		<field name="launchMode" />
-		<field name="layerType" since="11" />
-		<field name="layout" />
-		<field name="layoutAnimation" />
-		<field name="layoutDirection" since="17" />
-		<field name="layoutMode" since="18" />
-		<field name="layout_above" />
-		<field name="layout_alignBaseline" />
-		<field name="layout_alignBottom" />
-		<field name="layout_alignEnd" since="17" />
-		<field name="layout_alignLeft" />
-		<field name="layout_alignParentBottom" />
-		<field name="layout_alignParentEnd" since="17" />
-		<field name="layout_alignParentLeft" />
-		<field name="layout_alignParentRight" />
-		<field name="layout_alignParentStart" since="17" />
-		<field name="layout_alignParentTop" />
-		<field name="layout_alignRight" />
-		<field name="layout_alignStart" since="17" />
-		<field name="layout_alignTop" />
-		<field name="layout_alignWithParentIfMissing" />
-		<field name="layout_below" />
-		<field name="layout_centerHorizontal" />
-		<field name="layout_centerInParent" />
-		<field name="layout_centerVertical" />
-		<field name="layout_column" />
-		<field name="layout_columnSpan" since="14" />
-		<field name="layout_gravity" />
-		<field name="layout_height" />
-		<field name="layout_margin" />
-		<field name="layout_marginBottom" />
-		<field name="layout_marginEnd" since="17" />
-		<field name="layout_marginLeft" />
-		<field name="layout_marginRight" />
-		<field name="layout_marginStart" since="17" />
-		<field name="layout_marginTop" />
-		<field name="layout_row" since="14" />
-		<field name="layout_rowSpan" since="14" />
-		<field name="layout_scale" />
-		<field name="layout_span" />
-		<field name="layout_toEndOf" since="17" />
-		<field name="layout_toLeftOf" />
-		<field name="layout_toRightOf" />
-		<field name="layout_toStartOf" since="17" />
-		<field name="layout_weight" />
-		<field name="layout_width" />
-		<field name="layout_x" />
-		<field name="layout_y" />
-		<field name="left" />
-		<field name="lineSpacingExtra" />
-		<field name="lineSpacingMultiplier" />
-		<field name="lines" />
-		<field name="linksClickable" />
-		<field name="listChoiceBackgroundIndicator" since="11" />
-		<field name="listChoiceIndicatorMultiple" />
-		<field name="listChoiceIndicatorSingle" />
-		<field name="listDivider" />
-		<field name="listDividerAlertDialog" since="11" />
-		<field name="listPopupWindowStyle" since="11" />
-		<field name="listPreferredItemHeight" />
-		<field name="listPreferredItemHeightLarge" since="14" />
-		<field name="listPreferredItemHeightSmall" since="14" />
-		<field name="listPreferredItemPaddingEnd" since="17" />
-		<field name="listPreferredItemPaddingLeft" since="14" />
-		<field name="listPreferredItemPaddingRight" since="14" />
-		<field name="listPreferredItemPaddingStart" since="17" />
-		<field name="listSelector" />
-		<field name="listSeparatorTextViewStyle" />
-		<field name="listViewStyle" />
-		<field name="listViewWhiteStyle" />
-		<field name="logo" since="11" />
-		<field name="longClickable" />
-		<field name="loopViews" since="11" />
-		<field name="manageSpaceActivity" />
-		<field name="mapViewStyle" />
-		<field name="marqueeRepeatLimit" since="2" />
-		<field name="matchOrder" since="21" />
-		<field name="max" />
-		<field name="maxDate" since="11" />
-		<field name="maxEms" />
-		<field name="maxHeight" />
-		<field name="maxItemsPerRow" />
-		<field name="maxLength" />
-		<field name="maxLevel" />
-		<field name="maxLines" />
-		<field name="maxRecents" since="21" />
-		<field name="maxRows" />
-		<field name="maxSdkVersion" since="4" />
-		<field name="maxWidth" />
-		<field name="measureAllChildren" />
-		<field name="measureWithLargestChild" since="11" />
-		<field name="mediaRouteButtonStyle" since="16" />
-		<field name="mediaRouteTypes" since="16" />
-		<field name="menuCategory" />
-		<field name="mimeType" />
-		<field name="minDate" since="11" />
-		<field name="minEms" />
-		<field name="minHeight" />
-		<field name="minLevel" />
-		<field name="minLines" />
-		<field name="minResizeHeight" since="14" />
-		<field name="minResizeWidth" since="14" />
-		<field name="minSdkVersion" />
-		<field name="minWidth" />
-		<field name="mipMap" since="18" />
-		<field name="mirrorForRtl" since="18" />
-		<field name="mode" />
-		<field name="moreIcon" />
-		<field name="multiprocess" />
-		<field name="name" />
-		<field name="navigationBarColor" since="21" />
-		<field name="navigationMode" since="11" />
-		<field name="negativeButtonText" />
-		<field name="nestedScrollingEnabled" since="21" />
-		<field name="nextFocusDown" />
-		<field name="nextFocusForward" since="11" />
-		<field name="nextFocusLeft" />
-		<field name="nextFocusRight" />
-		<field name="nextFocusUp" />
-		<field name="noHistory" since="3" />
-		<field name="normalScreens" since="4" />
-		<field name="notificationTimeout" since="14" />
-		<field name="numColumns" />
-		<field name="numStars" />
-		<field name="numeric" />
-		<field name="numericShortcut" />
-		<field name="onClick" since="4" />
-		<field name="oneshot" />
-		<field name="opacity" since="11" />
-		<field name="order" />
-		<field name="orderInCategory" />
-		<field name="ordering" since="11" />
-		<field name="orderingFromXml" />
-		<field name="orientation" />
-		<field name="outAnimation" />
-		<field name="overScrollFooter" since="9" />
-		<field name="overScrollHeader" since="9" />
-		<field name="overScrollMode" since="9" />
-		<field name="overridesImplicitlyEnabledSubtype" since="14" />
-		<field name="packageNames" since="14" />
-		<field name="padding" />
-		<field name="paddingBottom" />
-		<field name="paddingEnd" since="17" />
-		<field name="paddingLeft" />
-		<field name="paddingMode" since="21" />
-		<field name="paddingRight" />
-		<field name="paddingStart" since="17" />
-		<field name="paddingTop" />
-		<field name="panelBackground" />
-		<field name="panelColorBackground" />
-		<field name="panelColorForeground" />
-		<field name="panelFullBackground" />
-		<field name="panelTextAppearance" />
-		<field name="parentActivityName" since="16" />
-		<field name="password" />
-		<field name="path" />
-		<field name="pathData" since="21" />
-		<field name="pathPattern" />
-		<field name="pathPrefix" />
-		<field name="permission" />
-		<field name="permissionFlags" since="17" />
-		<field name="permissionGroup" />
-		<field name="permissionGroupFlags" since="17" />
-		<field name="persistable" since="21" />
-		<field name="persistent" />
-		<field name="persistentDrawingCache" />
-		<field name="phoneNumber" />
-		<field name="pivotX" />
-		<field name="pivotY" />
-		<field name="popupAnimationStyle" since="9" />
-		<field name="popupBackground" />
-		<field name="popupCharacters" since="3" />
-		<field name="popupKeyboard" since="3" />
-		<field name="popupLayout" since="3" />
-		<field name="popupMenuStyle" since="11" />
-		<field name="popupWindowStyle" />
-		<field name="port" />
-		<field name="positiveButtonText" />
-		<field name="preferenceCategoryStyle" />
-		<field name="preferenceInformationStyle" />
-		<field name="preferenceLayoutChild" />
-		<field name="preferenceScreenStyle" />
-		<field name="preferenceStyle" />
-		<field name="presentationTheme" since="17" />
-		<field name="previewImage" since="11" />
-		<field name="priority" />
-		<field name="privateImeOptions" since="3" />
-		<field name="process" />
-		<field name="progress" />
-		<field name="progressBarPadding" since="11" />
-		<field name="progressBarStyle" />
-		<field name="progressBarStyleHorizontal" />
-		<field name="progressBarStyleInverse" since="4" />
-		<field name="progressBarStyleLarge" />
-		<field name="progressBarStyleLargeInverse" since="4" />
-		<field name="progressBarStyleSmall" />
-		<field name="progressBarStyleSmallInverse" since="4" />
-		<field name="progressBarStyleSmallTitle" />
-		<field name="progressDrawable" />
-		<field name="prompt" />
-		<field name="propertyName" since="11" />
-		<field name="protectionLevel" />
-		<field name="publicKey" since="14" />
-		<field name="queryActionMsg" />
-		<field name="queryAfterZeroResults" since="4" />
-		<field name="queryHint" since="11" />
-		<field name="quickContactBadgeStyleSmallWindowLarge" since="6" />
-		<field name="quickContactBadgeStyleSmallWindowMedium" since="6" />
-		<field name="quickContactBadgeStyleSmallWindowSmall" since="6" />
-		<field name="quickContactBadgeStyleWindowLarge" since="6" />
-		<field name="quickContactBadgeStyleWindowMedium" since="6" />
-		<field name="quickContactBadgeStyleWindowSmall" since="6" />
-		<field name="radioButtonStyle" />
-		<field name="radius" />
-		<field name="rating" />
-		<field name="ratingBarStyle" />
-		<field name="ratingBarStyleIndicator" />
-		<field name="ratingBarStyleSmall" />
-		<field name="readPermission" />
-		<field name="repeatCount" />
-		<field name="repeatMode" />
-		<field name="reqFiveWayNav" since="3" />
-		<field name="reqHardKeyboard" since="3" />
-		<field name="reqKeyboardType" since="3" />
-		<field name="reqNavigation" since="3" />
-		<field name="reqTouchScreen" since="3" />
-		<field name="requireDeviceUnlock" since="19" />
-		<field name="required" since="5" />
-		<field name="requiredAccountType" since="18" />
-		<field name="requiredForAllUsers" since="18" />
-		<field name="requiredForProfile" since="21" />
-		<field name="requiresFadingEdge" since="14" />
-		<field name="requiresSmallestWidthDp" since="13" />
-		<field name="resizeMode" since="12" />
-		<field name="resizeable" since="4" />
-		<field name="resource" />
-		<field name="restoreAnyVersion" since="8" />
-		<field name="restoreNeedsApplication" since="5" />
-		<field name="restrictedAccountType" since="18" />
-		<field name="reversible" since="21" />
-		<field name="right" />
-		<field name="ringtonePreferenceStyle" />
-		<field name="ringtoneType" />
-		<field name="rotation" since="11" />
-		<field name="rotationX" since="11" />
-		<field name="rotationY" since="11" />
-		<field name="rowCount" since="14" />
-		<field name="rowDelay" />
-		<field name="rowEdgeFlags" since="3" />
-		<field name="rowHeight" />
-		<field name="rowOrderPreserved" since="14" />
-		<field name="saveEnabled" />
-		<field name="scaleGravity" />
-		<field name="scaleHeight" />
-		<field name="scaleType" />
-		<field name="scaleWidth" />
-		<field name="scaleX" since="11" />
-		<field name="scaleY" since="11" />
-		<field name="scheme" />
-		<field name="screenDensity" since="9" />
-		<field name="screenOrientation" />
-		<field name="screenSize" since="9" />
-		<field name="scrollHorizontally" />
-		<field name="scrollViewStyle" />
-		<field name="scrollX" />
-		<field name="scrollY" />
-		<field name="scrollbarAlwaysDrawHorizontalTrack" />
-		<field name="scrollbarAlwaysDrawVerticalTrack" />
-		<field name="scrollbarDefaultDelayBeforeFade" since="5" />
-		<field name="scrollbarFadeDuration" since="5" />
-		<field name="scrollbarSize" />
-		<field name="scrollbarStyle" />
-		<field name="scrollbarThumbHorizontal" />
-		<field name="scrollbarThumbVertical" />
-		<field name="scrollbarTrackHorizontal" />
-		<field name="scrollbarTrackVertical" />
-		<field name="scrollbars" />
-		<field name="scrollingCache" />
-		<field name="searchButtonText" />
-		<field name="searchMode" />
-		<field name="searchSettingsDescription" since="4" />
-		<field name="searchSuggestAuthority" />
-		<field name="searchSuggestIntentAction" />
-		<field name="searchSuggestIntentData" />
-		<field name="searchSuggestPath" />
-		<field name="searchSuggestSelection" />
-		<field name="searchSuggestThreshold" since="4" />
-		<field name="secondaryProgress" />
-		<field name="seekBarStyle" />
-		<field name="segmentedButtonStyle" since="11" />
-		<field name="selectAllOnFocus" />
-		<field name="selectable" />
-		<field name="selectableItemBackground" since="11" />
-		<field name="selectableItemBackgroundBorderless" since="21" />
-		<field name="selectedDateVerticalBar" since="11" />
-		<field name="selectedWeekBackgroundColor" since="11" />
-		<field name="sessionService" since="21" />
-		<field name="settingsActivity" since="3" />
-		<field name="setupActivity" since="21" />
-		<field name="shadowColor" />
-		<field name="shadowDx" />
-		<field name="shadowDy" />
-		<field name="shadowRadius" />
-		<field name="shape" />
-		<field name="shareInterpolator" />
-		<field name="sharedUserId" />
-		<field name="sharedUserLabel" since="3" />
-		<field name="shouldDisableView" />
-		<field name="showAsAction" since="11" />
-		<field name="showDefault" />
-		<field name="showDividers" since="11" />
-		<field name="showOnLockScreen" since="17" />
-		<field name="showSilent" />
-		<field name="showWeekNumber" since="11" />
-		<field name="shownWeekCount" since="11" />
-		<field name="shrinkColumns" />
-		<field name="singleLine" />
-		<field name="singleUser" since="17" />
-		<field name="slideEdge" since="21" />
-		<field name="smallIcon" since="5" />
-		<field name="smallScreens" since="4" />
-		<field name="smoothScrollbar" since="3" />
-		<field name="soundEffectsEnabled" />
-		<field name="spacing" />
-		<field name="spinnerDropDownItemStyle" />
-		<field name="spinnerItemStyle" />
-		<field name="spinnerMode" since="11" />
-		<field name="spinnerStyle" />
-		<field name="spinnersShown" since="11" />
-		<field name="splitMotionEvents" since="11" />
-		<field name="splitTrack" since="21" />
-		<field name="src" />
-		<field name="ssp" since="19" />
-		<field name="sspPattern" since="19" />
-		<field name="sspPrefix" since="19" />
-		<field name="stackFromBottom" />
-		<field name="stackViewStyle" since="21" />
-		<field name="starStyle" />
-		<field name="startColor" />
-		<field name="startDelay" since="19" />
-		<field name="startOffset" />
-		<field name="startYear" />
-		<field name="stateListAnimator" since="21" />
-		<field name="stateNotNeeded" />
-		<field name="state_above_anchor" />
-		<field name="state_accelerated" since="11" />
-		<field name="state_activated" since="11" />
-		<field name="state_active" />
-		<field name="state_checkable" />
-		<field name="state_checked" />
-		<field name="state_drag_can_accept" since="14" />
-		<field name="state_drag_hovered" since="14" />
-		<field name="state_empty" />
-		<field name="state_enabled" />
-		<field name="state_expanded" />
-		<field name="state_first" />
-		<field name="state_focused" />
-		<field name="state_hovered" since="14" />
-		<field name="state_last" />
-		<field name="state_long_pressable" since="3" />
-		<field name="state_middle" />
-		<field name="state_multiline" since="11" />
-		<field name="state_pressed" />
-		<field name="state_selected" />
-		<field name="state_single" />
-		<field name="state_window_focused" />
-		<field name="staticWallpaperPreview" since="11" />
-		<field name="statusBarColor" since="21" />
-		<field name="stepSize" />
-		<field name="stopWithTask" since="14" />
-		<field name="streamType" />
-		<field name="stretchColumns" />
-		<field name="stretchMode" />
-		<field name="stroke" since="21" />
-		<field name="strokeLineCap" since="21" />
-		<field name="strokeLineJoin" since="21" />
-		<field name="strokeOpacity" since="21" />
-		<field name="strokeWidth" since="21" />
-		<field name="subtitle" since="11" />
-		<field name="subtitleTextAppearance" since="21" />
-		<field name="subtitleTextStyle" since="11" />
-		<field name="subtypeExtraValue" since="14" />
-		<field name="subtypeId" since="17" />
-		<field name="subtypeLocale" since="14" />
-		<field name="suggestActionMsg" />
-		<field name="suggestActionMsgColumn" />
-		<field name="summary" />
-		<field name="summaryColumn" since="5" />
-		<field name="summaryOff" />
-		<field name="summaryOn" />
-		<field name="supportsRtl" since="17" />
-		<field name="supportsSwitchingToNextInputMethod" since="19" />
-		<field name="supportsUploading" since="5" />
-		<field name="switchMinWidth" since="14" />
-		<field name="switchPadding" since="14" />
-		<field name="switchPreferenceStyle" since="14" />
-		<field name="switchStyle" since="21" />
-		<field name="switchTextAppearance" since="14" />
-		<field name="switchTextOff" since="14" />
-		<field name="switchTextOn" since="14" />
-		<field name="syncable" />
-		<field name="tabStripEnabled" since="8" />
-		<field name="tabStripLeft" since="8" />
-		<field name="tabStripRight" since="8" />
-		<field name="tabWidgetStyle" />
-		<field name="tag" />
-		<field name="targetActivity" />
-		<field name="targetClass" />
-		<field name="targetDescriptions" since="14" />
-		<field name="targetId" since="19" />
-		<field name="targetPackage" />
-		<field name="targetSdkVersion" since="4" />
-		<field name="targetViewName" since="21" />
-		<field name="taskAffinity" />
-		<field name="taskCloseEnterAnimation" />
-		<field name="taskCloseExitAnimation" />
-		<field name="taskOpenEnterAnimation" />
-		<field name="taskOpenExitAnimation" />
-		<field name="taskToBackEnterAnimation" />
-		<field name="taskToBackExitAnimation" />
-		<field name="taskToFrontEnterAnimation" />
-		<field name="taskToFrontExitAnimation" />
-		<field name="tension" since="4" />
-		<field name="testOnly" since="4" />
-		<field name="text" />
-		<field name="textAlignment" since="17" />
-		<field name="textAllCaps" since="14" />
-		<field name="textAppearance" />
-		<field name="textAppearanceButton" />
-		<field name="textAppearanceInverse" />
-		<field name="textAppearanceLarge" />
-		<field name="textAppearanceLargeInverse" />
-		<field name="textAppearanceLargePopupMenu" since="11" />
-		<field name="textAppearanceListItem" since="14" />
-		<field name="textAppearanceListItemSecondary" since="21" />
-		<field name="textAppearanceListItemSmall" since="14" />
-		<field name="textAppearanceMedium" />
-		<field name="textAppearanceMediumInverse" />
-		<field name="textAppearanceSearchResultSubtitle" since="5" />
-		<field name="textAppearanceSearchResultTitle" since="5" />
-		<field name="textAppearanceSmall" />
-		<field name="textAppearanceSmallInverse" />
-		<field name="textAppearanceSmallPopupMenu" since="11" />
-		<field name="textCheckMark" />
-		<field name="textCheckMarkInverse" />
-		<field name="textColor" />
-		<field name="textColorAlertDialogListItem" since="11" />
-		<field name="textColorHighlight" />
-		<field name="textColorHighlightInverse" since="11" />
-		<field name="textColorHint" />
-		<field name="textColorHintInverse" />
-		<field name="textColorLink" />
-		<field name="textColorLinkInverse" since="11" />
-		<field name="textColorPrimary" />
-		<field name="textColorPrimaryDisableOnly" />
-		<field name="textColorPrimaryInverse" />
-		<field name="textColorPrimaryInverseDisableOnly" since="4" />
-		<field name="textColorPrimaryInverseNoDisable" />
-		<field name="textColorPrimaryNoDisable" />
-		<field name="textColorSecondary" />
-		<field name="textColorSecondaryInverse" />
-		<field name="textColorSecondaryInverseNoDisable" />
-		<field name="textColorSecondaryNoDisable" />
-		<field name="textColorTertiary" />
-		<field name="textColorTertiaryInverse" />
-		<field name="textCursorDrawable" since="12" />
-		<field name="textDirection" since="17" />
-		<field name="textEditNoPasteWindowLayout" since="11" />
-		<field name="textEditPasteWindowLayout" since="11" />
-		<field name="textEditSideNoPasteWindowLayout" since="11" />
-		<field name="textEditSidePasteWindowLayout" since="11" />
-		<field name="textEditSuggestionItemLayout" since="14" />
-		<field name="textFilterEnabled" />
-		<field name="textIsSelectable" since="11" />
-		<field name="textOff" />
-		<field name="textOn" />
-		<field name="textScaleX" />
-		<field name="textSelectHandle" since="9" />
-		<field name="textSelectHandleLeft" since="9" />
-		<field name="textSelectHandleRight" since="9" />
-		<field name="textSelectHandleWindowStyle" since="9" />
-		<field name="textSize" />
-		<field name="textStyle" />
-		<field name="textSuggestionsWindowStyle" since="14" />
-		<field name="textViewStyle" />
-		<field name="theme" />
-		<field name="thickness" since="3" />
-		<field name="thicknessRatio" />
-		<field name="thumb" />
-		<field name="thumbOffset" />
-		<field name="thumbTextPadding" since="14" />
-		<field name="thumbnail" since="5" />
-		<field name="tileMode" />
-		<field name="timeZone" since="17" />
-		<field name="tint" />
-		<field name="tintMode" since="21" />
-		<field name="title" />
-		<field name="titleCondensed" />
-		<field name="titleTextAppearance" since="21" />
-		<field name="titleTextStyle" since="11" />
-		<field name="toAlpha" />
-		<field name="toDegrees" />
-		<field name="toId" since="21" />
-		<field name="toScene" since="19" />
-		<field name="toXDelta" />
-		<field name="toXScale" />
-		<field name="toYDelta" />
-		<field name="toYScale" />
-		<field name="top" />
-		<field name="topBright" />
-		<field name="topDark" />
-		<field name="topLeftRadius" />
-		<field name="topOffset" since="3" />
-		<field name="topRightRadius" />
-		<field name="track" since="14" />
-		<field name="transcriptMode" />
-		<field name="transformPivotX" since="11" />
-		<field name="transformPivotY" since="11" />
-		<field name="transition" since="19" />
-		<field name="transitionGroup" since="21" />
-		<field name="transitionOrdering" since="19" />
-		<field name="translationX" since="11" />
-		<field name="translationY" since="11" />
-		<field name="translationZ" since="21" />
-		<field name="trimPathEnd" since="21" />
-		<field name="trimPathOffset" since="21" />
-		<field name="trimPathStart" since="21" />
-		<field name="tvInputType" since="21" />
-		<field name="type" />
-		<field name="typeface" />
-		<field name="uiOptions" since="14" />
-		<field name="uncertainGestureColor" since="4" />
-		<field name="unfocusedMonthDateColor" since="11" />
-		<field name="unselectedAlpha" />
-		<field name="updatePeriodMillis" since="3" />
-		<field name="useDefaultMargins" since="14" />
-		<field name="useIntrinsicSizeAsMinimum" since="11" />
-		<field name="useLevel" />
-		<field name="userVisible" since="5" />
-		<field name="value" />
-		<field name="valueFrom" since="11" />
-		<field name="valueTo" since="11" />
-		<field name="valueType" since="11" />
-		<field name="variablePadding" />
-		<field name="vendor" since="19" />
-		<field name="versionCode" />
-		<field name="versionName" />
-		<field name="verticalCorrection" since="3" />
-		<field name="verticalDivider" />
-		<field name="verticalGap" since="3" />
-		<field name="verticalScrollbarPosition" since="11" />
-		<field name="verticalSpacing" />
-		<field name="viewName" since="21" />
-		<field name="viewportHeight" since="21" />
-		<field name="viewportWidth" since="21" />
-		<field name="visibility" />
-		<field name="visible" />
-		<field name="vmSafeMode" since="8" />
-		<field name="voiceLanguage" since="3" />
-		<field name="voiceLanguageModel" since="3" />
-		<field name="voiceMaxResults" since="3" />
-		<field name="voicePromptText" since="3" />
-		<field name="voiceSearchMode" since="3" />
-		<field name="wallpaperCloseEnterAnimation" since="5" />
-		<field name="wallpaperCloseExitAnimation" since="5" />
-		<field name="wallpaperIntraCloseEnterAnimation" since="5" />
-		<field name="wallpaperIntraCloseExitAnimation" since="5" />
-		<field name="wallpaperIntraOpenEnterAnimation" since="5" />
-		<field name="wallpaperIntraOpenExitAnimation" since="5" />
-		<field name="wallpaperOpenEnterAnimation" since="5" />
-		<field name="wallpaperOpenExitAnimation" since="5" />
-		<field name="webTextViewStyle" since="8" />
-		<field name="webViewStyle" />
-		<field name="weekDayTextAppearance" since="11" />
-		<field name="weekNumberColor" since="11" />
-		<field name="weekSeparatorLineColor" since="11" />
-		<field name="weightSum" />
-		<field name="widgetCategory" since="17" />
-		<field name="widgetLayout" />
-		<field name="width" />
-		<field name="windowActionBar" since="11" />
-		<field name="windowActionBarOverlay" since="11" />
-		<field name="windowActionModeOverlay" since="11" />
-		<field name="windowAllowEnterTransitionOverlap" since="21" />
-		<field name="windowAllowExitTransitionOverlap" since="21" />
-		<field name="windowAnimationStyle" />
-		<field name="windowBackground" />
-		<field name="windowCloseOnTouchOutside" since="11" />
-		<field name="windowContentOverlay" />
-		<field name="windowContentTransitionManager" since="21" />
-		<field name="windowContentTransitions" since="21" />
-		<field name="windowDisablePreview" since="3" />
-		<field name="windowDrawsSystemBarBackgrounds" since="21" />
-		<field name="windowEnableSplitTouch" since="11" />
-		<field name="windowEnterAnimation" />
-		<field name="windowEnterTransition" since="21" />
-		<field name="windowExitAnimation" />
-		<field name="windowExitTransition" since="21" />
-		<field name="windowFrame" />
-		<field name="windowFullscreen" />
-		<field name="windowHideAnimation" />
-		<field name="windowIsFloating" />
-		<field name="windowIsTranslucent" />
-		<field name="windowMinWidthMajor" since="11" />
-		<field name="windowMinWidthMinor" since="11" />
-		<field name="windowNoDisplay" since="3" />
-		<field name="windowNoTitle" />
-		<field name="windowOverscan" since="18" />
-		<field name="windowSharedElementEnterTransition" since="21" />
-		<field name="windowSharedElementExitTransition" since="21" />
-		<field name="windowShowAnimation" />
-		<field name="windowShowWallpaper" since="5" />
-		<field name="windowSoftInputMode" since="3" />
-		<field name="windowSwipeToDismiss" since="20" />
-		<field name="windowTitleBackgroundStyle" />
-		<field name="windowTitleSize" />
-		<field name="windowTitleStyle" />
-		<field name="windowTranslucentNavigation" since="19" />
-		<field name="windowTranslucentStatus" since="19" />
-		<field name="writePermission" />
-		<field name="x" />
-		<field name="xlargeScreens" since="9" />
-		<field name="y" />
-		<field name="yesNoPreferenceStyle" />
-		<field name="zAdjustment" />
-	</class>
-	<class name="android/R$bool" since="3">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="android/R$color" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="background_dark" />
-		<field name="background_light" />
-		<field name="black" />
-		<field name="darker_gray" />
-		<field name="holo_blue_bright" since="14" />
-		<field name="holo_blue_dark" since="14" />
-		<field name="holo_blue_light" since="14" />
-		<field name="holo_green_dark" since="14" />
-		<field name="holo_green_light" since="14" />
-		<field name="holo_orange_dark" since="14" />
-		<field name="holo_orange_light" since="14" />
-		<field name="holo_purple" since="14" />
-		<field name="holo_red_dark" since="14" />
-		<field name="holo_red_light" since="14" />
-		<field name="primary_text_dark" />
-		<field name="primary_text_dark_nodisable" />
-		<field name="primary_text_light" />
-		<field name="primary_text_light_nodisable" />
-		<field name="secondary_text_dark" />
-		<field name="secondary_text_dark_nodisable" />
-		<field name="secondary_text_light" />
-		<field name="secondary_text_light_nodisable" />
-		<field name="tab_indicator_text" />
-		<field name="tertiary_text_dark" />
-		<field name="tertiary_text_light" />
-		<field name="transparent" />
-		<field name="white" />
-		<field name="widget_edittext_dark" />
-	</class>
-	<class name="android/R$dimen" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="app_icon_size" />
-		<field name="dialog_min_width_major" since="11" />
-		<field name="dialog_min_width_minor" since="11" />
-		<field name="l_resource_pad1" since="21" />
-		<field name="l_resource_pad10" since="21" />
-		<field name="l_resource_pad2" since="21" />
-		<field name="l_resource_pad3" since="21" />
-		<field name="l_resource_pad4" since="21" />
-		<field name="l_resource_pad5" since="21" />
-		<field name="l_resource_pad6" since="21" />
-		<field name="l_resource_pad7" since="21" />
-		<field name="l_resource_pad8" since="21" />
-		<field name="l_resource_pad9" since="21" />
-		<field name="notification_large_icon_height" since="11" />
-		<field name="notification_large_icon_width" since="11" />
-		<field name="thumbnail_height" />
-		<field name="thumbnail_width" />
-	</class>
-	<class name="android/R$drawable" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="alert_dark_frame" />
-		<field name="alert_light_frame" />
-		<field name="arrow_down_float" />
-		<field name="arrow_up_float" />
-		<field name="bottom_bar" />
-		<field name="btn_default" />
-		<field name="btn_default_small" />
-		<field name="btn_dialog" />
-		<field name="btn_dropdown" />
-		<field name="btn_minus" />
-		<field name="btn_plus" />
-		<field name="btn_radio" />
-		<field name="btn_star" />
-		<field name="btn_star_big_off" />
-		<field name="btn_star_big_on" />
-		<field name="button_onoff_indicator_off" />
-		<field name="button_onoff_indicator_on" />
-		<field name="checkbox_off_background" />
-		<field name="checkbox_on_background" />
-		<field name="dark_header" since="3" />
-		<field name="dialog_frame" />
-		<field name="dialog_holo_dark_frame" since="11" />
-		<field name="dialog_holo_light_frame" since="11" />
-		<field name="divider_horizontal_bright" />
-		<field name="divider_horizontal_dark" />
-		<field name="divider_horizontal_dim_dark" />
-		<field name="divider_horizontal_textfield" />
-		<field name="edit_text" />
-		<field name="editbox_background" />
-		<field name="editbox_background_normal" />
-		<field name="editbox_dropdown_dark_frame" />
-		<field name="editbox_dropdown_light_frame" />
-		<field name="gallery_thumb" />
-		<field name="ic_btn_speak_now" since="3" />
-		<field name="ic_delete" />
-		<field name="ic_dialog_alert" />
-		<field name="ic_dialog_dialer" />
-		<field name="ic_dialog_email" />
-		<field name="ic_dialog_info" />
-		<field name="ic_dialog_map" />
-		<field name="ic_input_add" />
-		<field name="ic_input_delete" />
-		<field name="ic_input_get" />
-		<field name="ic_lock_idle_alarm" />
-		<field name="ic_lock_idle_charging" />
-		<field name="ic_lock_idle_lock" />
-		<field name="ic_lock_idle_low_battery" />
-		<field name="ic_lock_lock" />
-		<field name="ic_lock_power_off" />
-		<field name="ic_lock_silent_mode" />
-		<field name="ic_lock_silent_mode_off" />
-		<field name="ic_media_ff" />
-		<field name="ic_media_next" />
-		<field name="ic_media_pause" />
-		<field name="ic_media_play" />
-		<field name="ic_media_previous" />
-		<field name="ic_media_rew" />
-		<field name="ic_menu_add" />
-		<field name="ic_menu_agenda" />
-		<field name="ic_menu_always_landscape_portrait" />
-		<field name="ic_menu_call" />
-		<field name="ic_menu_camera" />
-		<field name="ic_menu_close_clear_cancel" />
-		<field name="ic_menu_compass" />
-		<field name="ic_menu_crop" />
-		<field name="ic_menu_day" />
-		<field name="ic_menu_delete" />
-		<field name="ic_menu_directions" />
-		<field name="ic_menu_edit" />
-		<field name="ic_menu_gallery" />
-		<field name="ic_menu_help" />
-		<field name="ic_menu_info_details" />
-		<field name="ic_menu_manage" />
-		<field name="ic_menu_mapmode" />
-		<field name="ic_menu_month" />
-		<field name="ic_menu_more" />
-		<field name="ic_menu_my_calendar" />
-		<field name="ic_menu_mylocation" />
-		<field name="ic_menu_myplaces" />
-		<field name="ic_menu_preferences" />
-		<field name="ic_menu_recent_history" />
-		<field name="ic_menu_report_image" />
-		<field name="ic_menu_revert" />
-		<field name="ic_menu_rotate" />
-		<field name="ic_menu_save" />
-		<field name="ic_menu_search" />
-		<field name="ic_menu_send" />
-		<field name="ic_menu_set_as" />
-		<field name="ic_menu_share" />
-		<field name="ic_menu_slideshow" />
-		<field name="ic_menu_sort_alphabetically" />
-		<field name="ic_menu_sort_by_size" />
-		<field name="ic_menu_today" />
-		<field name="ic_menu_upload" />
-		<field name="ic_menu_upload_you_tube" />
-		<field name="ic_menu_view" />
-		<field name="ic_menu_week" />
-		<field name="ic_menu_zoom" />
-		<field name="ic_notification_clear_all" />
-		<field name="ic_notification_overlay" />
-		<field name="ic_partial_secure" />
-		<field name="ic_popup_disk_full" />
-		<field name="ic_popup_reminder" />
-		<field name="ic_popup_sync" />
-		<field name="ic_search_category_default" />
-		<field name="ic_secure" />
-		<field name="list_selector_background" />
-		<field name="menu_frame" />
-		<field name="menu_full_frame" />
-		<field name="menuitem_background" />
-		<field name="picture_frame" />
-		<field name="presence_audio_away" since="9" />
-		<field name="presence_audio_busy" since="9" />
-		<field name="presence_audio_online" since="9" />
-		<field name="presence_away" />
-		<field name="presence_busy" />
-		<field name="presence_invisible" />
-		<field name="presence_offline" />
-		<field name="presence_online" />
-		<field name="presence_video_away" since="9" />
-		<field name="presence_video_busy" since="9" />
-		<field name="presence_video_online" since="9" />
-		<field name="progress_horizontal" />
-		<field name="progress_indeterminate_horizontal" />
-		<field name="radiobutton_off_background" />
-		<field name="radiobutton_on_background" />
-		<field name="screen_background_dark" />
-		<field name="screen_background_dark_transparent" since="5" />
-		<field name="screen_background_light" />
-		<field name="screen_background_light_transparent" since="5" />
-		<field name="spinner_background" />
-		<field name="spinner_dropdown_background" />
-		<field name="star_big_off" />
-		<field name="star_big_on" />
-		<field name="star_off" />
-		<field name="star_on" />
-		<field name="stat_notify_call_mute" />
-		<field name="stat_notify_chat" />
-		<field name="stat_notify_error" />
-		<field name="stat_notify_missed_call" />
-		<field name="stat_notify_more" />
-		<field name="stat_notify_sdcard" />
-		<field name="stat_notify_sdcard_prepare" since="5" />
-		<field name="stat_notify_sdcard_usb" />
-		<field name="stat_notify_sync" />
-		<field name="stat_notify_sync_noanim" />
-		<field name="stat_notify_voicemail" />
-		<field name="stat_sys_data_bluetooth" />
-		<field name="stat_sys_download" />
-		<field name="stat_sys_download_done" />
-		<field name="stat_sys_headset" />
-		<field name="stat_sys_phone_call" />
-		<field name="stat_sys_phone_call_forward" />
-		<field name="stat_sys_phone_call_on_hold" />
-		<field name="stat_sys_speakerphone" />
-		<field name="stat_sys_upload" />
-		<field name="stat_sys_upload_done" />
-		<field name="stat_sys_vp_phone_call" since="4" />
-		<field name="stat_sys_vp_phone_call_on_hold" since="4" />
-		<field name="stat_sys_warning" />
-		<field name="status_bar_item_app_background" />
-		<field name="status_bar_item_background" />
-		<field name="sym_action_call" />
-		<field name="sym_action_chat" />
-		<field name="sym_action_email" />
-		<field name="sym_call_incoming" />
-		<field name="sym_call_missed" />
-		<field name="sym_call_outgoing" />
-		<field name="sym_contact_card" />
-		<field name="sym_def_app_icon" />
-		<field name="title_bar" />
-		<field name="title_bar_tall" since="3" />
-		<field name="toast_frame" />
-		<field name="zoom_plate" />
-	</class>
-	<class name="android/R$fraction" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="android/R$id" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="addToDictionary" since="3" />
-		<field name="background" />
-		<field name="button1" />
-		<field name="button2" />
-		<field name="button3" />
-		<field name="candidatesArea" since="3" />
-		<field name="checkbox" />
-		<field name="closeButton" since="3" />
-		<field name="content" />
-		<field name="copy" since="3" />
-		<field name="copyUrl" since="3" />
-		<field name="custom" since="8" />
-		<field name="cut" since="3" />
-		<field name="edit" />
-		<field name="empty" />
-		<field name="extractArea" since="3" />
-		<field name="hint" />
-		<field name="home" since="11" />
-		<field name="icon" />
-		<field name="icon1" />
-		<field name="icon2" />
-		<field name="input" />
-		<field name="inputArea" since="3" />
-		<field name="inputExtractEditText" since="3" />
-		<field name="keyboardView" since="3" />
-		<field name="l_resource_pad1" since="21" />
-		<field name="l_resource_pad10" since="21" />
-		<field name="l_resource_pad11" since="21" />
-		<field name="l_resource_pad12" since="21" />
-		<field name="l_resource_pad13" since="21" />
-		<field name="l_resource_pad14" since="21" />
-		<field name="l_resource_pad15" since="21" />
-		<field name="l_resource_pad16" since="21" />
-		<field name="l_resource_pad17" since="21" />
-		<field name="l_resource_pad18" since="21" />
-		<field name="l_resource_pad19" since="21" />
-		<field name="l_resource_pad2" since="21" />
-		<field name="l_resource_pad3" since="21" />
-		<field name="l_resource_pad4" since="21" />
-		<field name="l_resource_pad5" since="21" />
-		<field name="l_resource_pad6" since="21" />
-		<field name="l_resource_pad7" since="21" />
-		<field name="l_resource_pad8" since="21" />
-		<field name="l_resource_pad9" since="21" />
-		<field name="list" />
-		<field name="mask" since="21" />
-		<field name="message" />
-		<field name="paste" since="3" />
-		<field name="primary" />
-		<field name="progress" />
-		<field name="secondaryProgress" />
-		<field name="selectAll" since="3" />
-		<field name="selectTextMode" since="11" />
-		<field name="selectedIcon" />
-		<field name="startSelectingText" since="3" />
-		<field name="stopSelectingText" since="3" />
-		<field name="summary" />
-		<field name="switchInputMethod" since="3" />
-		<field name="tabcontent" />
-		<field name="tabhost" />
-		<field name="tabs" />
-		<field name="text1" />
-		<field name="text2" />
-		<field name="title" />
-		<field name="toggle" />
-		<field name="widget_frame" />
-	</class>
-	<class name="android/R$integer" since="3">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="config_longAnimTime" />
-		<field name="config_mediumAnimTime" />
-		<field name="config_shortAnimTime" />
-		<field name="status_bar_notification_info_maxnum" since="14" />
-	</class>
-	<class name="android/R$interpolator" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="accelerate_cubic" />
-		<field name="accelerate_decelerate" />
-		<field name="accelerate_quad" />
-		<field name="accelerate_quint" />
-		<field name="anticipate" />
-		<field name="anticipate_overshoot" />
-		<field name="bounce" />
-		<field name="cycle" />
-		<field name="decelerate_cubic" />
-		<field name="decelerate_quad" />
-		<field name="decelerate_quint" />
-		<field name="fast_out_linear_in" since="21" />
-		<field name="fast_out_slow_in" since="21" />
-		<field name="l_resource_pad1" since="21" />
-		<field name="l_resource_pad2" since="21" />
-		<field name="l_resource_pad3" since="21" />
-		<field name="l_resource_pad4" since="21" />
-		<field name="linear" />
-		<field name="linear_out_slow_in" since="21" />
-		<field name="overshoot" />
-	</class>
-	<class name="android/R$layout" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="activity_list_item" />
-		<field name="browser_link_context_header" />
-		<field name="expandable_list_content" />
-		<field name="list_content" since="11" />
-		<field name="preference_category" />
-		<field name="select_dialog_item" />
-		<field name="select_dialog_multichoice" />
-		<field name="select_dialog_singlechoice" />
-		<field name="simple_dropdown_item_1line" />
-		<field name="simple_expandable_list_item_1" />
-		<field name="simple_expandable_list_item_2" />
-		<field name="simple_gallery_item" />
-		<field name="simple_list_item_1" />
-		<field name="simple_list_item_2" />
-		<field name="simple_list_item_activated_1" since="11" />
-		<field name="simple_list_item_activated_2" since="11" />
-		<field name="simple_list_item_checked" />
-		<field name="simple_list_item_multiple_choice" />
-		<field name="simple_list_item_single_choice" />
-		<field name="simple_selectable_list_item" since="11" />
-		<field name="simple_spinner_dropdown_item" />
-		<field name="simple_spinner_item" />
-		<field name="test_list_item" />
-		<field name="two_line_list_item" />
-	</class>
-	<class name="android/R$menu" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="android/R$mipmap" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="sym_def_app_icon" />
-	</class>
-	<class name="android/R$plurals" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="android/R$raw" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="android/R$string" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="VideoView_error_button" />
-		<field name="VideoView_error_text_invalid_progressive_playback" since="3" />
-		<field name="VideoView_error_text_unknown" />
-		<field name="VideoView_error_title" />
-		<field name="cancel" />
-		<field name="copy" />
-		<field name="copyUrl" />
-		<field name="cut" />
-		<field name="defaultMsisdnAlphaTag" />
-		<field name="defaultVoiceMailAlphaTag" />
-		<field name="dialog_alert_title" since="3" />
-		<field name="emptyPhoneNumber" />
-		<field name="httpErrorBadUrl" />
-		<field name="httpErrorUnsupportedScheme" />
-		<field name="no" />
-		<field name="ok" />
-		<field name="paste" />
-		<field name="search_go" />
-		<field name="selectAll" />
-		<field name="selectTextMode" since="11" />
-		<field name="status_bar_notification_info_overflow" since="14" />
-		<field name="unknownName" />
-		<field name="untitled" />
-		<field name="yes" />
-	</class>
-	<class name="android/R$style" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="Animation" />
-		<field name="Animation_Activity" />
-		<field name="Animation_Dialog" />
-		<field name="Animation_InputMethod" since="5" />
-		<field name="Animation_Toast" />
-		<field name="Animation_Translucent" />
-		<field name="DeviceDefault_ButtonBar" since="14" />
-		<field name="DeviceDefault_ButtonBar_AlertDialog" since="14" />
-		<field name="DeviceDefault_Light_ButtonBar" since="14" />
-		<field name="DeviceDefault_Light_ButtonBar_AlertDialog" since="14" />
-		<field name="DeviceDefault_Light_SegmentedButton" since="14" />
-		<field name="DeviceDefault_SegmentedButton" since="14" />
-		<field name="Holo_ButtonBar" since="11" />
-		<field name="Holo_ButtonBar_AlertDialog" since="11" />
-		<field name="Holo_Light_ButtonBar" since="11" />
-		<field name="Holo_Light_ButtonBar_AlertDialog" since="11" />
-		<field name="Holo_Light_SegmentedButton" since="11" />
-		<field name="Holo_SegmentedButton" since="11" />
-		<field name="MediaButton" />
-		<field name="MediaButton_Ffwd" />
-		<field name="MediaButton_Next" />
-		<field name="MediaButton_Pause" />
-		<field name="MediaButton_Play" />
-		<field name="MediaButton_Previous" />
-		<field name="MediaButton_Rew" />
-		<field name="TextAppearance" />
-		<field name="TextAppearance_DeviceDefault" since="14" />
-		<field name="TextAppearance_DeviceDefault_DialogWindowTitle" since="14" />
-		<field name="TextAppearance_DeviceDefault_Inverse" since="14" />
-		<field name="TextAppearance_DeviceDefault_Large" since="14" />
-		<field name="TextAppearance_DeviceDefault_Large_Inverse" since="14" />
-		<field name="TextAppearance_DeviceDefault_Medium" since="14" />
-		<field name="TextAppearance_DeviceDefault_Medium_Inverse" since="14" />
-		<field name="TextAppearance_DeviceDefault_SearchResult_Subtitle" since="14" />
-		<field name="TextAppearance_DeviceDefault_SearchResult_Title" since="14" />
-		<field name="TextAppearance_DeviceDefault_Small" since="14" />
-		<field name="TextAppearance_DeviceDefault_Small_Inverse" since="14" />
-		<field name="TextAppearance_DeviceDefault_Widget" since="14" />
-		<field name="TextAppearance_DeviceDefault_Widget_ActionBar_Menu" since="14" />
-		<field name="TextAppearance_DeviceDefault_Widget_ActionBar_Subtitle" since="14" />
-		<field name="TextAppearance_DeviceDefault_Widget_ActionBar_Subtitle_Inverse" since="14" />
-		<field name="TextAppearance_DeviceDefault_Widget_ActionBar_Title" since="14" />
-		<field name="TextAppearance_DeviceDefault_Widget_ActionBar_Title_Inverse" since="14" />
-		<field name="TextAppearance_DeviceDefault_Widget_ActionMode_Subtitle" since="14" />
-		<field name="TextAppearance_DeviceDefault_Widget_ActionMode_Subtitle_Inverse" since="14" />
-		<field name="TextAppearance_DeviceDefault_Widget_ActionMode_Title" since="14" />
-		<field name="TextAppearance_DeviceDefault_Widget_ActionMode_Title_Inverse" since="14" />
-		<field name="TextAppearance_DeviceDefault_Widget_Button" since="14" />
-		<field name="TextAppearance_DeviceDefault_Widget_DropDownHint" since="14" />
-		<field name="TextAppearance_DeviceDefault_Widget_DropDownItem" since="14" />
-		<field name="TextAppearance_DeviceDefault_Widget_EditText" since="14" />
-		<field name="TextAppearance_DeviceDefault_Widget_IconMenu_Item" since="14" />
-		<field name="TextAppearance_DeviceDefault_Widget_PopupMenu" since="14" />
-		<field name="TextAppearance_DeviceDefault_Widget_PopupMenu_Large" since="14" />
-		<field name="TextAppearance_DeviceDefault_Widget_PopupMenu_Small" since="14" />
-		<field name="TextAppearance_DeviceDefault_Widget_TabWidget" since="14" />
-		<field name="TextAppearance_DeviceDefault_Widget_TextView" since="14" />
-		<field name="TextAppearance_DeviceDefault_Widget_TextView_PopupMenu" since="14" />
-		<field name="TextAppearance_DeviceDefault_Widget_TextView_SpinnerItem" since="14" />
-		<field name="TextAppearance_DeviceDefault_WindowTitle" since="14" />
-		<field name="TextAppearance_DialogWindowTitle" />
-		<field name="TextAppearance_Holo" since="13" />
-		<field name="TextAppearance_Holo_DialogWindowTitle" since="13" />
-		<field name="TextAppearance_Holo_Inverse" since="13" />
-		<field name="TextAppearance_Holo_Large" since="13" />
-		<field name="TextAppearance_Holo_Large_Inverse" since="13" />
-		<field name="TextAppearance_Holo_Medium" since="13" />
-		<field name="TextAppearance_Holo_Medium_Inverse" since="13" />
-		<field name="TextAppearance_Holo_SearchResult_Subtitle" since="13" />
-		<field name="TextAppearance_Holo_SearchResult_Title" since="13" />
-		<field name="TextAppearance_Holo_Small" since="13" />
-		<field name="TextAppearance_Holo_Small_Inverse" since="13" />
-		<field name="TextAppearance_Holo_Widget" since="13" />
-		<field name="TextAppearance_Holo_Widget_ActionBar_Menu" since="14" />
-		<field name="TextAppearance_Holo_Widget_ActionBar_Subtitle" since="13" />
-		<field name="TextAppearance_Holo_Widget_ActionBar_Subtitle_Inverse" since="14" />
-		<field name="TextAppearance_Holo_Widget_ActionBar_Title" since="13" />
-		<field name="TextAppearance_Holo_Widget_ActionBar_Title_Inverse" since="14" />
-		<field name="TextAppearance_Holo_Widget_ActionMode_Subtitle" since="13" />
-		<field name="TextAppearance_Holo_Widget_ActionMode_Subtitle_Inverse" since="14" />
-		<field name="TextAppearance_Holo_Widget_ActionMode_Title" since="13" />
-		<field name="TextAppearance_Holo_Widget_ActionMode_Title_Inverse" since="14" />
-		<field name="TextAppearance_Holo_Widget_Button" since="13" />
-		<field name="TextAppearance_Holo_Widget_DropDownHint" since="13" />
-		<field name="TextAppearance_Holo_Widget_DropDownItem" since="13" />
-		<field name="TextAppearance_Holo_Widget_EditText" since="13" />
-		<field name="TextAppearance_Holo_Widget_IconMenu_Item" since="13" />
-		<field name="TextAppearance_Holo_Widget_PopupMenu" since="13" />
-		<field name="TextAppearance_Holo_Widget_PopupMenu_Large" since="13" />
-		<field name="TextAppearance_Holo_Widget_PopupMenu_Small" since="13" />
-		<field name="TextAppearance_Holo_Widget_TabWidget" since="13" />
-		<field name="TextAppearance_Holo_Widget_TextView" since="13" />
-		<field name="TextAppearance_Holo_Widget_TextView_PopupMenu" since="13" />
-		<field name="TextAppearance_Holo_Widget_TextView_SpinnerItem" since="13" />
-		<field name="TextAppearance_Holo_WindowTitle" since="13" />
-		<field name="TextAppearance_Inverse" />
-		<field name="TextAppearance_Large" />
-		<field name="TextAppearance_Large_Inverse" />
-		<field name="TextAppearance_Material" since="21" />
-		<field name="TextAppearance_Material_Body1" since="21" />
-		<field name="TextAppearance_Material_Body2" since="21" />
-		<field name="TextAppearance_Material_Button" since="21" />
-		<field name="TextAppearance_Material_Caption" since="21" />
-		<field name="TextAppearance_Material_DialogWindowTitle" since="21" />
-		<field name="TextAppearance_Material_Display1" since="21" />
-		<field name="TextAppearance_Material_Display2" since="21" />
-		<field name="TextAppearance_Material_Display3" since="21" />
-		<field name="TextAppearance_Material_Display4" since="21" />
-		<field name="TextAppearance_Material_Headline" since="21" />
-		<field name="TextAppearance_Material_Inverse" since="21" />
-		<field name="TextAppearance_Material_Large" since="21" />
-		<field name="TextAppearance_Material_Large_Inverse" since="21" />
-		<field name="TextAppearance_Material_Medium" since="21" />
-		<field name="TextAppearance_Material_Medium_Inverse" since="21" />
-		<field name="TextAppearance_Material_Menu" since="21" />
-		<field name="TextAppearance_Material_SearchResult_Subtitle" since="21" />
-		<field name="TextAppearance_Material_SearchResult_Title" since="21" />
-		<field name="TextAppearance_Material_Small" since="21" />
-		<field name="TextAppearance_Material_Small_Inverse" since="21" />
-		<field name="TextAppearance_Material_Subhead" since="21" />
-		<field name="TextAppearance_Material_Title" since="21" />
-		<field name="TextAppearance_Material_Widget" since="21" />
-		<field name="TextAppearance_Material_Widget_ActionBar_Menu" since="21" />
-		<field name="TextAppearance_Material_Widget_ActionBar_Subtitle" since="21" />
-		<field name="TextAppearance_Material_Widget_ActionBar_Subtitle_Inverse" since="21" />
-		<field name="TextAppearance_Material_Widget_ActionBar_Title" since="21" />
-		<field name="TextAppearance_Material_Widget_ActionBar_Title_Inverse" since="21" />
-		<field name="TextAppearance_Material_Widget_ActionMode_Subtitle" since="21" />
-		<field name="TextAppearance_Material_Widget_ActionMode_Subtitle_Inverse" since="21" />
-		<field name="TextAppearance_Material_Widget_ActionMode_Title" since="21" />
-		<field name="TextAppearance_Material_Widget_ActionMode_Title_Inverse" since="21" />
-		<field name="TextAppearance_Material_Widget_Button" since="21" />
-		<field name="TextAppearance_Material_Widget_DropDownHint" since="21" />
-		<field name="TextAppearance_Material_Widget_DropDownItem" since="21" />
-		<field name="TextAppearance_Material_Widget_EditText" since="21" />
-		<field name="TextAppearance_Material_Widget_IconMenu_Item" since="21" />
-		<field name="TextAppearance_Material_Widget_PopupMenu" since="21" />
-		<field name="TextAppearance_Material_Widget_PopupMenu_Large" since="21" />
-		<field name="TextAppearance_Material_Widget_PopupMenu_Small" since="21" />
-		<field name="TextAppearance_Material_Widget_TabWidget" since="21" />
-		<field name="TextAppearance_Material_Widget_TextView" since="21" />
-		<field name="TextAppearance_Material_Widget_TextView_PopupMenu" since="21" />
-		<field name="TextAppearance_Material_Widget_TextView_SpinnerItem" since="21" />
-		<field name="TextAppearance_Material_WindowTitle" since="21" />
-		<field name="TextAppearance_Medium" />
-		<field name="TextAppearance_Medium_Inverse" />
-		<field name="TextAppearance_Small" />
-		<field name="TextAppearance_Small_Inverse" />
-		<field name="TextAppearance_StatusBar_EventContent" since="9" />
-		<field name="TextAppearance_StatusBar_EventContent_Title" since="9" />
-		<field name="TextAppearance_StatusBar_Icon" since="9" />
-		<field name="TextAppearance_StatusBar_Title" since="9" />
-		<field name="TextAppearance_SuggestionHighlight" since="14" />
-		<field name="TextAppearance_Theme" />
-		<field name="TextAppearance_Theme_Dialog" />
-		<field name="TextAppearance_Widget" />
-		<field name="TextAppearance_Widget_Button" />
-		<field name="TextAppearance_Widget_DropDownHint" />
-		<field name="TextAppearance_Widget_DropDownItem" />
-		<field name="TextAppearance_Widget_EditText" />
-		<field name="TextAppearance_Widget_IconMenu_Item" />
-		<field name="TextAppearance_Widget_PopupMenu_Large" since="11" />
-		<field name="TextAppearance_Widget_PopupMenu_Small" since="11" />
-		<field name="TextAppearance_Widget_TabWidget" />
-		<field name="TextAppearance_Widget_TextView" />
-		<field name="TextAppearance_Widget_TextView_PopupMenu" />
-		<field name="TextAppearance_Widget_TextView_SpinnerItem" />
-		<field name="TextAppearance_WindowTitle" />
-		<field name="Theme" />
-		<field name="ThemeOverlay" since="21" />
-		<field name="ThemeOverlay_Material" since="21" />
-		<field name="ThemeOverlay_Material_ActionBar" since="21" />
-		<field name="ThemeOverlay_Material_Dark" since="21" />
-		<field name="ThemeOverlay_Material_Dark_ActionBar" since="21" />
-		<field name="ThemeOverlay_Material_Light" since="21" />
-		<field name="Theme_Black" />
-		<field name="Theme_Black_NoTitleBar" />
-		<field name="Theme_Black_NoTitleBar_Fullscreen" />
-		<field name="Theme_DeviceDefault" since="14" />
-		<field name="Theme_DeviceDefault_Dialog" since="14" />
-		<field name="Theme_DeviceDefault_DialogWhenLarge" since="14" />
-		<field name="Theme_DeviceDefault_DialogWhenLarge_NoActionBar" since="14" />
-		<field name="Theme_DeviceDefault_Dialog_MinWidth" since="14" />
-		<field name="Theme_DeviceDefault_Dialog_NoActionBar" since="14" />
-		<field name="Theme_DeviceDefault_Dialog_NoActionBar_MinWidth" since="14" />
-		<field name="Theme_DeviceDefault_InputMethod" since="14" />
-		<field name="Theme_DeviceDefault_Light" since="14" />
-		<field name="Theme_DeviceDefault_Light_DarkActionBar" since="14" />
-		<field name="Theme_DeviceDefault_Light_Dialog" since="14" />
-		<field name="Theme_DeviceDefault_Light_DialogWhenLarge" since="14" />
-		<field name="Theme_DeviceDefault_Light_DialogWhenLarge_NoActionBar" since="14" />
-		<field name="Theme_DeviceDefault_Light_Dialog_MinWidth" since="14" />
-		<field name="Theme_DeviceDefault_Light_Dialog_NoActionBar" since="14" />
-		<field name="Theme_DeviceDefault_Light_Dialog_NoActionBar_MinWidth" since="14" />
-		<field name="Theme_DeviceDefault_Light_NoActionBar" since="14" />
-		<field name="Theme_DeviceDefault_Light_NoActionBar_Fullscreen" since="14" />
-		<field name="Theme_DeviceDefault_Light_NoActionBar_Overscan" since="18" />
-		<field name="Theme_DeviceDefault_Light_NoActionBar_TranslucentDecor" since="19" />
-		<field name="Theme_DeviceDefault_Light_Panel" since="14" />
-		<field name="Theme_DeviceDefault_NoActionBar" since="14" />
-		<field name="Theme_DeviceDefault_NoActionBar_Fullscreen" since="14" />
-		<field name="Theme_DeviceDefault_NoActionBar_Overscan" since="18" />
-		<field name="Theme_DeviceDefault_NoActionBar_TranslucentDecor" since="19" />
-		<field name="Theme_DeviceDefault_Panel" since="14" />
-		<field name="Theme_DeviceDefault_Settings" since="21" />
-		<field name="Theme_DeviceDefault_Wallpaper" since="14" />
-		<field name="Theme_DeviceDefault_Wallpaper_NoTitleBar" since="14" />
-		<field name="Theme_Dialog" />
-		<field name="Theme_Holo" since="11" />
-		<field name="Theme_Holo_Dialog" since="11" />
-		<field name="Theme_Holo_DialogWhenLarge" since="11" />
-		<field name="Theme_Holo_DialogWhenLarge_NoActionBar" since="11" />
-		<field name="Theme_Holo_Dialog_MinWidth" since="11" />
-		<field name="Theme_Holo_Dialog_NoActionBar" since="11" />
-		<field name="Theme_Holo_Dialog_NoActionBar_MinWidth" since="11" />
-		<field name="Theme_Holo_InputMethod" since="11" />
-		<field name="Theme_Holo_Light" since="11" />
-		<field name="Theme_Holo_Light_DarkActionBar" since="14" />
-		<field name="Theme_Holo_Light_Dialog" since="11" />
-		<field name="Theme_Holo_Light_DialogWhenLarge" since="11" />
-		<field name="Theme_Holo_Light_DialogWhenLarge_NoActionBar" since="11" />
-		<field name="Theme_Holo_Light_Dialog_MinWidth" since="11" />
-		<field name="Theme_Holo_Light_Dialog_NoActionBar" since="11" />
-		<field name="Theme_Holo_Light_Dialog_NoActionBar_MinWidth" since="11" />
-		<field name="Theme_Holo_Light_NoActionBar" since="13" />
-		<field name="Theme_Holo_Light_NoActionBar_Fullscreen" since="13" />
-		<field name="Theme_Holo_Light_NoActionBar_Overscan" since="18" />
-		<field name="Theme_Holo_Light_NoActionBar_TranslucentDecor" since="19" />
-		<field name="Theme_Holo_Light_Panel" since="11" />
-		<field name="Theme_Holo_NoActionBar" since="11" />
-		<field name="Theme_Holo_NoActionBar_Fullscreen" since="11" />
-		<field name="Theme_Holo_NoActionBar_Overscan" since="18" />
-		<field name="Theme_Holo_NoActionBar_TranslucentDecor" since="19" />
-		<field name="Theme_Holo_Panel" since="11" />
-		<field name="Theme_Holo_Wallpaper" since="11" />
-		<field name="Theme_Holo_Wallpaper_NoTitleBar" since="11" />
-		<field name="Theme_InputMethod" since="3" />
-		<field name="Theme_Light" />
-		<field name="Theme_Light_NoTitleBar" />
-		<field name="Theme_Light_NoTitleBar_Fullscreen" />
-		<field name="Theme_Light_Panel" since="3" />
-		<field name="Theme_Light_WallpaperSettings" since="5" />
-		<field name="Theme_Material" since="21" />
-		<field name="Theme_Material_Dialog" since="21" />
-		<field name="Theme_Material_DialogWhenLarge" since="21" />
-		<field name="Theme_Material_DialogWhenLarge_NoActionBar" since="21" />
-		<field name="Theme_Material_Dialog_MinWidth" since="21" />
-		<field name="Theme_Material_Dialog_NoActionBar" since="21" />
-		<field name="Theme_Material_Dialog_NoActionBar_MinWidth" since="21" />
-		<field name="Theme_Material_InputMethod" since="21" />
-		<field name="Theme_Material_Light" since="21" />
-		<field name="Theme_Material_Light_DarkActionBar" since="21" />
-		<field name="Theme_Material_Light_Dialog" since="21" />
-		<field name="Theme_Material_Light_DialogWhenLarge" since="21" />
-		<field name="Theme_Material_Light_DialogWhenLarge_NoActionBar" since="21" />
-		<field name="Theme_Material_Light_Dialog_MinWidth" since="21" />
-		<field name="Theme_Material_Light_Dialog_NoActionBar" since="21" />
-		<field name="Theme_Material_Light_Dialog_NoActionBar_MinWidth" since="21" />
-		<field name="Theme_Material_Light_NoActionBar" since="21" />
-		<field name="Theme_Material_Light_NoActionBar_Fullscreen" since="21" />
-		<field name="Theme_Material_Light_NoActionBar_Overscan" since="21" />
-		<field name="Theme_Material_Light_NoActionBar_TranslucentDecor" since="21" />
-		<field name="Theme_Material_Light_Panel" since="21" />
-		<field name="Theme_Material_Light_Voice" since="21" />
-		<field name="Theme_Material_NoActionBar" since="21" />
-		<field name="Theme_Material_NoActionBar_Fullscreen" since="21" />
-		<field name="Theme_Material_NoActionBar_Overscan" since="21" />
-		<field name="Theme_Material_NoActionBar_TranslucentDecor" since="21" />
-		<field name="Theme_Material_Panel" since="21" />
-		<field name="Theme_Material_Settings" since="21" />
-		<field name="Theme_Material_Voice" since="21" />
-		<field name="Theme_Material_Wallpaper" since="21" />
-		<field name="Theme_Material_Wallpaper_NoTitleBar" since="21" />
-		<field name="Theme_NoDisplay" since="3" />
-		<field name="Theme_NoTitleBar" />
-		<field name="Theme_NoTitleBar_Fullscreen" />
-		<field name="Theme_NoTitleBar_OverlayActionModes" since="11" />
-		<field name="Theme_Panel" since="3" />
-		<field name="Theme_Translucent" />
-		<field name="Theme_Translucent_NoTitleBar" />
-		<field name="Theme_Translucent_NoTitleBar_Fullscreen" />
-		<field name="Theme_Wallpaper" since="5" />
-		<field name="Theme_WallpaperSettings" since="5" />
-		<field name="Theme_Wallpaper_NoTitleBar" since="5" />
-		<field name="Theme_Wallpaper_NoTitleBar_Fullscreen" since="5" />
-		<field name="Theme_WithActionBar" since="11" />
-		<field name="Widget" />
-		<field name="Widget_AbsListView" />
-		<field name="Widget_ActionBar" since="11" />
-		<field name="Widget_ActionBar_TabBar" since="13" />
-		<field name="Widget_ActionBar_TabText" since="13" />
-		<field name="Widget_ActionBar_TabView" since="13" />
-		<field name="Widget_ActionButton" since="11" />
-		<field name="Widget_ActionButton_CloseMode" since="11" />
-		<field name="Widget_ActionButton_Overflow" since="11" />
-		<field name="Widget_AutoCompleteTextView" />
-		<field name="Widget_Button" />
-		<field name="Widget_Button_Inset" />
-		<field name="Widget_Button_Small" />
-		<field name="Widget_Button_Toggle" />
-		<field name="Widget_CalendarView" since="11" />
-		<field name="Widget_CompoundButton" />
-		<field name="Widget_CompoundButton_CheckBox" />
-		<field name="Widget_CompoundButton_RadioButton" />
-		<field name="Widget_CompoundButton_Star" />
-		<field name="Widget_DatePicker" since="11" />
-		<field name="Widget_DeviceDefault" since="14" />
-		<field name="Widget_DeviceDefault_ActionBar" since="14" />
-		<field name="Widget_DeviceDefault_ActionBar_Solid" since="14" />
-		<field name="Widget_DeviceDefault_ActionBar_TabBar" since="14" />
-		<field name="Widget_DeviceDefault_ActionBar_TabText" since="14" />
-		<field name="Widget_DeviceDefault_ActionBar_TabView" since="14" />
-		<field name="Widget_DeviceDefault_ActionButton" since="14" />
-		<field name="Widget_DeviceDefault_ActionButton_CloseMode" since="14" />
-		<field name="Widget_DeviceDefault_ActionButton_Overflow" since="14" />
-		<field name="Widget_DeviceDefault_ActionButton_TextButton" since="14" />
-		<field name="Widget_DeviceDefault_ActionMode" since="14" />
-		<field name="Widget_DeviceDefault_AutoCompleteTextView" since="14" />
-		<field name="Widget_DeviceDefault_Button" since="14" />
-		<field name="Widget_DeviceDefault_Button_Borderless" since="14" />
-		<field name="Widget_DeviceDefault_Button_Borderless_Small" since="14" />
-		<field name="Widget_DeviceDefault_Button_Inset" since="14" />
-		<field name="Widget_DeviceDefault_Button_Small" since="14" />
-		<field name="Widget_DeviceDefault_Button_Toggle" since="14" />
-		<field name="Widget_DeviceDefault_CalendarView" since="14" />
-		<field name="Widget_DeviceDefault_CheckedTextView" since="17" />
-		<field name="Widget_DeviceDefault_CompoundButton_CheckBox" since="14" />
-		<field name="Widget_DeviceDefault_CompoundButton_RadioButton" since="14" />
-		<field name="Widget_DeviceDefault_CompoundButton_Star" since="14" />
-		<field name="Widget_DeviceDefault_DatePicker" since="14" />
-		<field name="Widget_DeviceDefault_DropDownItem" since="14" />
-		<field name="Widget_DeviceDefault_DropDownItem_Spinner" since="14" />
-		<field name="Widget_DeviceDefault_EditText" since="14" />
-		<field name="Widget_DeviceDefault_ExpandableListView" since="14" />
-		<field name="Widget_DeviceDefault_FastScroll" since="21" />
-		<field name="Widget_DeviceDefault_GridView" since="14" />
-		<field name="Widget_DeviceDefault_HorizontalScrollView" since="14" />
-		<field name="Widget_DeviceDefault_ImageButton" since="14" />
-		<field name="Widget_DeviceDefault_Light" since="14" />
-		<field name="Widget_DeviceDefault_Light_ActionBar" since="14" />
-		<field name="Widget_DeviceDefault_Light_ActionBar_Solid" since="14" />
-		<field name="Widget_DeviceDefault_Light_ActionBar_Solid_Inverse" since="14" />
-		<field name="Widget_DeviceDefault_Light_ActionBar_TabBar" since="14" />
-		<field name="Widget_DeviceDefault_Light_ActionBar_TabBar_Inverse" since="14" />
-		<field name="Widget_DeviceDefault_Light_ActionBar_TabText" since="14" />
-		<field name="Widget_DeviceDefault_Light_ActionBar_TabText_Inverse" since="14" />
-		<field name="Widget_DeviceDefault_Light_ActionBar_TabView" since="14" />
-		<field name="Widget_DeviceDefault_Light_ActionBar_TabView_Inverse" since="14" />
-		<field name="Widget_DeviceDefault_Light_ActionButton" since="14" />
-		<field name="Widget_DeviceDefault_Light_ActionButton_CloseMode" since="14" />
-		<field name="Widget_DeviceDefault_Light_ActionButton_Overflow" since="14" />
-		<field name="Widget_DeviceDefault_Light_ActionMode" since="14" />
-		<field name="Widget_DeviceDefault_Light_ActionMode_Inverse" since="14" />
-		<field name="Widget_DeviceDefault_Light_AutoCompleteTextView" since="14" />
-		<field name="Widget_DeviceDefault_Light_Button" since="14" />
-		<field name="Widget_DeviceDefault_Light_Button_Borderless_Small" since="14" />
-		<field name="Widget_DeviceDefault_Light_Button_Inset" since="14" />
-		<field name="Widget_DeviceDefault_Light_Button_Small" since="14" />
-		<field name="Widget_DeviceDefault_Light_Button_Toggle" since="14" />
-		<field name="Widget_DeviceDefault_Light_CalendarView" since="14" />
-		<field name="Widget_DeviceDefault_Light_CheckedTextView" since="17" />
-		<field name="Widget_DeviceDefault_Light_CompoundButton_CheckBox" since="14" />
-		<field name="Widget_DeviceDefault_Light_CompoundButton_RadioButton" since="14" />
-		<field name="Widget_DeviceDefault_Light_CompoundButton_Star" since="14" />
-		<field name="Widget_DeviceDefault_Light_DropDownItem" since="14" />
-		<field name="Widget_DeviceDefault_Light_DropDownItem_Spinner" since="14" />
-		<field name="Widget_DeviceDefault_Light_EditText" since="14" />
-		<field name="Widget_DeviceDefault_Light_ExpandableListView" since="14" />
-		<field name="Widget_DeviceDefault_Light_FastScroll" since="21" />
-		<field name="Widget_DeviceDefault_Light_GridView" since="14" />
-		<field name="Widget_DeviceDefault_Light_HorizontalScrollView" since="14" />
-		<field name="Widget_DeviceDefault_Light_ImageButton" since="14" />
-		<field name="Widget_DeviceDefault_Light_ListPopupWindow" since="14" />
-		<field name="Widget_DeviceDefault_Light_ListView" since="14" />
-		<field name="Widget_DeviceDefault_Light_ListView_DropDown" since="14" />
-		<field name="Widget_DeviceDefault_Light_MediaRouteButton" since="16" />
-		<field name="Widget_DeviceDefault_Light_PopupMenu" since="14" />
-		<field name="Widget_DeviceDefault_Light_PopupWindow" since="14" />
-		<field name="Widget_DeviceDefault_Light_ProgressBar" since="14" />
-		<field name="Widget_DeviceDefault_Light_ProgressBar_Horizontal" since="14" />
-		<field name="Widget_DeviceDefault_Light_ProgressBar_Inverse" since="14" />
-		<field name="Widget_DeviceDefault_Light_ProgressBar_Large" since="14" />
-		<field name="Widget_DeviceDefault_Light_ProgressBar_Large_Inverse" since="14" />
-		<field name="Widget_DeviceDefault_Light_ProgressBar_Small" since="14" />
-		<field name="Widget_DeviceDefault_Light_ProgressBar_Small_Inverse" since="14" />
-		<field name="Widget_DeviceDefault_Light_ProgressBar_Small_Title" since="14" />
-		<field name="Widget_DeviceDefault_Light_RatingBar" since="14" />
-		<field name="Widget_DeviceDefault_Light_RatingBar_Indicator" since="14" />
-		<field name="Widget_DeviceDefault_Light_RatingBar_Small" since="14" />
-		<field name="Widget_DeviceDefault_Light_ScrollView" since="14" />
-		<field name="Widget_DeviceDefault_Light_SeekBar" since="14" />
-		<field name="Widget_DeviceDefault_Light_Spinner" since="14" />
-		<field name="Widget_DeviceDefault_Light_StackView" since="21" />
-		<field name="Widget_DeviceDefault_Light_Tab" since="14" />
-		<field name="Widget_DeviceDefault_Light_TabWidget" since="14" />
-		<field name="Widget_DeviceDefault_Light_TextView" since="14" />
-		<field name="Widget_DeviceDefault_Light_TextView_SpinnerItem" since="14" />
-		<field name="Widget_DeviceDefault_Light_WebTextView" since="14" />
-		<field name="Widget_DeviceDefault_Light_WebView" since="14" />
-		<field name="Widget_DeviceDefault_ListPopupWindow" since="14" />
-		<field name="Widget_DeviceDefault_ListView" since="14" />
-		<field name="Widget_DeviceDefault_ListView_DropDown" since="14" />
-		<field name="Widget_DeviceDefault_MediaRouteButton" since="16" />
-		<field name="Widget_DeviceDefault_PopupMenu" since="14" />
-		<field name="Widget_DeviceDefault_PopupWindow" since="14" />
-		<field name="Widget_DeviceDefault_ProgressBar" since="14" />
-		<field name="Widget_DeviceDefault_ProgressBar_Horizontal" since="14" />
-		<field name="Widget_DeviceDefault_ProgressBar_Large" since="14" />
-		<field name="Widget_DeviceDefault_ProgressBar_Small" since="14" />
-		<field name="Widget_DeviceDefault_ProgressBar_Small_Title" since="14" />
-		<field name="Widget_DeviceDefault_RatingBar" since="14" />
-		<field name="Widget_DeviceDefault_RatingBar_Indicator" since="14" />
-		<field name="Widget_DeviceDefault_RatingBar_Small" since="14" />
-		<field name="Widget_DeviceDefault_ScrollView" since="14" />
-		<field name="Widget_DeviceDefault_SeekBar" since="14" />
-		<field name="Widget_DeviceDefault_Spinner" since="14" />
-		<field name="Widget_DeviceDefault_StackView" since="21" />
-		<field name="Widget_DeviceDefault_Tab" since="14" />
-		<field name="Widget_DeviceDefault_TabWidget" since="14" />
-		<field name="Widget_DeviceDefault_TextView" since="14" />
-		<field name="Widget_DeviceDefault_TextView_SpinnerItem" since="14" />
-		<field name="Widget_DeviceDefault_WebTextView" since="14" />
-		<field name="Widget_DeviceDefault_WebView" since="14" />
-		<field name="Widget_DropDownItem" />
-		<field name="Widget_DropDownItem_Spinner" />
-		<field name="Widget_EditText" />
-		<field name="Widget_ExpandableListView" />
-		<field name="Widget_FastScroll" since="21" />
-		<field name="Widget_FragmentBreadCrumbs" since="11" />
-		<field name="Widget_Gallery" />
-		<field name="Widget_GridView" />
-		<field name="Widget_Holo" since="11" />
-		<field name="Widget_Holo_ActionBar" since="11" />
-		<field name="Widget_Holo_ActionBar_Solid" since="14" />
-		<field name="Widget_Holo_ActionBar_TabBar" since="13" />
-		<field name="Widget_Holo_ActionBar_TabText" since="13" />
-		<field name="Widget_Holo_ActionBar_TabView" since="13" />
-		<field name="Widget_Holo_ActionButton" since="11" />
-		<field name="Widget_Holo_ActionButton_CloseMode" since="11" />
-		<field name="Widget_Holo_ActionButton_Overflow" since="11" />
-		<field name="Widget_Holo_ActionButton_TextButton" since="11" />
-		<field name="Widget_Holo_ActionMode" since="11" />
-		<field name="Widget_Holo_AutoCompleteTextView" since="11" />
-		<field name="Widget_Holo_Button" since="11" />
-		<field name="Widget_Holo_Button_Borderless" since="11" />
-		<field name="Widget_Holo_Button_Borderless_Small" since="14" />
-		<field name="Widget_Holo_Button_Inset" since="11" />
-		<field name="Widget_Holo_Button_Small" since="11" />
-		<field name="Widget_Holo_Button_Toggle" since="11" />
-		<field name="Widget_Holo_CalendarView" since="11" />
-		<field name="Widget_Holo_CheckedTextView" since="17" />
-		<field name="Widget_Holo_CompoundButton_CheckBox" since="11" />
-		<field name="Widget_Holo_CompoundButton_RadioButton" since="11" />
-		<field name="Widget_Holo_CompoundButton_Star" since="11" />
-		<field name="Widget_Holo_DatePicker" since="11" />
-		<field name="Widget_Holo_DropDownItem" since="11" />
-		<field name="Widget_Holo_DropDownItem_Spinner" since="11" />
-		<field name="Widget_Holo_EditText" since="11" />
-		<field name="Widget_Holo_ExpandableListView" since="11" />
-		<field name="Widget_Holo_FastScroll" since="21" />
-		<field name="Widget_Holo_GridView" since="11" />
-		<field name="Widget_Holo_HorizontalScrollView" since="11" />
-		<field name="Widget_Holo_ImageButton" since="11" />
-		<field name="Widget_Holo_Light" since="11" />
-		<field name="Widget_Holo_Light_ActionBar" since="11" />
-		<field name="Widget_Holo_Light_ActionBar_Solid" since="14" />
-		<field name="Widget_Holo_Light_ActionBar_Solid_Inverse" since="14" />
-		<field name="Widget_Holo_Light_ActionBar_TabBar" since="13" />
-		<field name="Widget_Holo_Light_ActionBar_TabBar_Inverse" since="14" />
-		<field name="Widget_Holo_Light_ActionBar_TabText" since="13" />
-		<field name="Widget_Holo_Light_ActionBar_TabText_Inverse" since="14" />
-		<field name="Widget_Holo_Light_ActionBar_TabView" since="13" />
-		<field name="Widget_Holo_Light_ActionBar_TabView_Inverse" since="14" />
-		<field name="Widget_Holo_Light_ActionButton" since="11" />
-		<field name="Widget_Holo_Light_ActionButton_CloseMode" since="11" />
-		<field name="Widget_Holo_Light_ActionButton_Overflow" since="11" />
-		<field name="Widget_Holo_Light_ActionMode" since="11" />
-		<field name="Widget_Holo_Light_ActionMode_Inverse" since="14" />
-		<field name="Widget_Holo_Light_AutoCompleteTextView" since="11" />
-		<field name="Widget_Holo_Light_Button" since="11" />
-		<field name="Widget_Holo_Light_Button_Borderless" since="21" />
-		<field name="Widget_Holo_Light_Button_Borderless_Small" since="14" />
-		<field name="Widget_Holo_Light_Button_Inset" since="11" />
-		<field name="Widget_Holo_Light_Button_Small" since="11" />
-		<field name="Widget_Holo_Light_Button_Toggle" since="11" />
-		<field name="Widget_Holo_Light_CalendarView" since="11" />
-		<field name="Widget_Holo_Light_CheckedTextView" since="17" />
-		<field name="Widget_Holo_Light_CompoundButton_CheckBox" since="11" />
-		<field name="Widget_Holo_Light_CompoundButton_RadioButton" since="11" />
-		<field name="Widget_Holo_Light_CompoundButton_Star" since="11" />
-		<field name="Widget_Holo_Light_DropDownItem" since="11" />
-		<field name="Widget_Holo_Light_DropDownItem_Spinner" since="11" />
-		<field name="Widget_Holo_Light_EditText" since="11" />
-		<field name="Widget_Holo_Light_ExpandableListView" since="11" />
-		<field name="Widget_Holo_Light_FastScroll" since="21" />
-		<field name="Widget_Holo_Light_GridView" since="11" />
-		<field name="Widget_Holo_Light_HorizontalScrollView" since="11" />
-		<field name="Widget_Holo_Light_ImageButton" since="11" />
-		<field name="Widget_Holo_Light_ListPopupWindow" since="11" />
-		<field name="Widget_Holo_Light_ListView" since="11" />
-		<field name="Widget_Holo_Light_ListView_DropDown" since="11" />
-		<field name="Widget_Holo_Light_MediaRouteButton" since="16" />
-		<field name="Widget_Holo_Light_PopupMenu" since="11" />
-		<field name="Widget_Holo_Light_PopupWindow" since="11" />
-		<field name="Widget_Holo_Light_ProgressBar" since="11" />
-		<field name="Widget_Holo_Light_ProgressBar_Horizontal" since="11" />
-		<field name="Widget_Holo_Light_ProgressBar_Inverse" since="11" />
-		<field name="Widget_Holo_Light_ProgressBar_Large" since="11" />
-		<field name="Widget_Holo_Light_ProgressBar_Large_Inverse" since="11" />
-		<field name="Widget_Holo_Light_ProgressBar_Small" since="11" />
-		<field name="Widget_Holo_Light_ProgressBar_Small_Inverse" since="11" />
-		<field name="Widget_Holo_Light_ProgressBar_Small_Title" since="11" />
-		<field name="Widget_Holo_Light_RatingBar" since="11" />
-		<field name="Widget_Holo_Light_RatingBar_Indicator" since="11" />
-		<field name="Widget_Holo_Light_RatingBar_Small" since="11" />
-		<field name="Widget_Holo_Light_ScrollView" since="11" />
-		<field name="Widget_Holo_Light_SeekBar" since="11" />
-		<field name="Widget_Holo_Light_Spinner" since="11" />
-		<field name="Widget_Holo_Light_StackView" since="21" />
-		<field name="Widget_Holo_Light_Tab" since="11" />
-		<field name="Widget_Holo_Light_TabWidget" since="11" />
-		<field name="Widget_Holo_Light_TextView" since="11" />
-		<field name="Widget_Holo_Light_TextView_SpinnerItem" since="11" />
-		<field name="Widget_Holo_Light_WebTextView" since="11" />
-		<field name="Widget_Holo_Light_WebView" since="11" />
-		<field name="Widget_Holo_ListPopupWindow" since="11" />
-		<field name="Widget_Holo_ListView" since="11" />
-		<field name="Widget_Holo_ListView_DropDown" since="11" />
-		<field name="Widget_Holo_MediaRouteButton" since="16" />
-		<field name="Widget_Holo_PopupMenu" since="11" />
-		<field name="Widget_Holo_PopupWindow" since="11" />
-		<field name="Widget_Holo_ProgressBar" since="11" />
-		<field name="Widget_Holo_ProgressBar_Horizontal" since="11" />
-		<field name="Widget_Holo_ProgressBar_Large" since="11" />
-		<field name="Widget_Holo_ProgressBar_Small" since="11" />
-		<field name="Widget_Holo_ProgressBar_Small_Title" since="11" />
-		<field name="Widget_Holo_RatingBar" since="11" />
-		<field name="Widget_Holo_RatingBar_Indicator" since="11" />
-		<field name="Widget_Holo_RatingBar_Small" since="11" />
-		<field name="Widget_Holo_ScrollView" since="11" />
-		<field name="Widget_Holo_SeekBar" since="11" />
-		<field name="Widget_Holo_Spinner" since="11" />
-		<field name="Widget_Holo_StackView" since="21" />
-		<field name="Widget_Holo_Tab" since="11" />
-		<field name="Widget_Holo_TabWidget" since="11" />
-		<field name="Widget_Holo_TextView" since="11" />
-		<field name="Widget_Holo_TextView_SpinnerItem" since="11" />
-		<field name="Widget_Holo_WebTextView" since="11" />
-		<field name="Widget_Holo_WebView" since="11" />
-		<field name="Widget_ImageButton" />
-		<field name="Widget_ImageWell" />
-		<field name="Widget_KeyboardView" since="3" />
-		<field name="Widget_ListPopupWindow" since="11" />
-		<field name="Widget_ListView" />
-		<field name="Widget_ListView_DropDown" />
-		<field name="Widget_ListView_Menu" />
-		<field name="Widget_ListView_White" />
-		<field name="Widget_Material" since="21" />
-		<field name="Widget_Material_ActionBar" since="21" />
-		<field name="Widget_Material_ActionBar_Solid" since="21" />
-		<field name="Widget_Material_ActionBar_TabBar" since="21" />
-		<field name="Widget_Material_ActionBar_TabText" since="21" />
-		<field name="Widget_Material_ActionBar_TabView" since="21" />
-		<field name="Widget_Material_ActionButton" since="21" />
-		<field name="Widget_Material_ActionButton_CloseMode" since="21" />
-		<field name="Widget_Material_ActionButton_Overflow" since="21" />
-		<field name="Widget_Material_ActionMode" since="21" />
-		<field name="Widget_Material_AutoCompleteTextView" since="21" />
-		<field name="Widget_Material_Button" since="21" />
-		<field name="Widget_Material_ButtonBar" since="21" />
-		<field name="Widget_Material_ButtonBar_AlertDialog" since="21" />
-		<field name="Widget_Material_Button_Borderless" since="21" />
-		<field name="Widget_Material_Button_Borderless_Small" since="21" />
-		<field name="Widget_Material_Button_Inset" since="21" />
-		<field name="Widget_Material_Button_Small" since="21" />
-		<field name="Widget_Material_Button_Toggle" since="21" />
-		<field name="Widget_Material_CalendarView" since="21" />
-		<field name="Widget_Material_CheckedTextView" since="21" />
-		<field name="Widget_Material_CompoundButton_CheckBox" since="21" />
-		<field name="Widget_Material_CompoundButton_RadioButton" since="21" />
-		<field name="Widget_Material_CompoundButton_Star" since="21" />
-		<field name="Widget_Material_DatePicker" since="21" />
-		<field name="Widget_Material_DropDownItem" since="21" />
-		<field name="Widget_Material_DropDownItem_Spinner" since="21" />
-		<field name="Widget_Material_EditText" since="21" />
-		<field name="Widget_Material_ExpandableListView" since="21" />
-		<field name="Widget_Material_FastScroll" since="21" />
-		<field name="Widget_Material_GridView" since="21" />
-		<field name="Widget_Material_HorizontalScrollView" since="21" />
-		<field name="Widget_Material_ImageButton" since="21" />
-		<field name="Widget_Material_Light" since="21" />
-		<field name="Widget_Material_Light_ActionBar" since="21" />
-		<field name="Widget_Material_Light_ActionBar_Solid" since="21" />
-		<field name="Widget_Material_Light_ActionBar_TabBar" since="21" />
-		<field name="Widget_Material_Light_ActionBar_TabText" since="21" />
-		<field name="Widget_Material_Light_ActionBar_TabView" since="21" />
-		<field name="Widget_Material_Light_ActionButton" since="21" />
-		<field name="Widget_Material_Light_ActionButton_CloseMode" since="21" />
-		<field name="Widget_Material_Light_ActionButton_Overflow" since="21" />
-		<field name="Widget_Material_Light_ActionMode" since="21" />
-		<field name="Widget_Material_Light_AutoCompleteTextView" since="21" />
-		<field name="Widget_Material_Light_Button" since="21" />
-		<field name="Widget_Material_Light_ButtonBar" since="21" />
-		<field name="Widget_Material_Light_ButtonBar_AlertDialog" since="21" />
-		<field name="Widget_Material_Light_Button_Borderless" since="21" />
-		<field name="Widget_Material_Light_Button_Borderless_Small" since="21" />
-		<field name="Widget_Material_Light_Button_Inset" since="21" />
-		<field name="Widget_Material_Light_Button_Small" since="21" />
-		<field name="Widget_Material_Light_Button_Toggle" since="21" />
-		<field name="Widget_Material_Light_CalendarView" since="21" />
-		<field name="Widget_Material_Light_CheckedTextView" since="21" />
-		<field name="Widget_Material_Light_CompoundButton_CheckBox" since="21" />
-		<field name="Widget_Material_Light_CompoundButton_RadioButton" since="21" />
-		<field name="Widget_Material_Light_CompoundButton_Star" since="21" />
-		<field name="Widget_Material_Light_DropDownItem" since="21" />
-		<field name="Widget_Material_Light_DropDownItem_Spinner" since="21" />
-		<field name="Widget_Material_Light_EditText" since="21" />
-		<field name="Widget_Material_Light_ExpandableListView" since="21" />
-		<field name="Widget_Material_Light_FastScroll" since="21" />
-		<field name="Widget_Material_Light_GridView" since="21" />
-		<field name="Widget_Material_Light_HorizontalScrollView" since="21" />
-		<field name="Widget_Material_Light_ImageButton" since="21" />
-		<field name="Widget_Material_Light_ListPopupWindow" since="21" />
-		<field name="Widget_Material_Light_ListView" since="21" />
-		<field name="Widget_Material_Light_ListView_DropDown" since="21" />
-		<field name="Widget_Material_Light_MediaRouteButton" since="21" />
-		<field name="Widget_Material_Light_PopupMenu" since="21" />
-		<field name="Widget_Material_Light_PopupMenu_Overflow" since="21" />
-		<field name="Widget_Material_Light_PopupWindow" since="21" />
-		<field name="Widget_Material_Light_ProgressBar" since="21" />
-		<field name="Widget_Material_Light_ProgressBar_Horizontal" since="21" />
-		<field name="Widget_Material_Light_ProgressBar_Inverse" since="21" />
-		<field name="Widget_Material_Light_ProgressBar_Large" since="21" />
-		<field name="Widget_Material_Light_ProgressBar_Large_Inverse" since="21" />
-		<field name="Widget_Material_Light_ProgressBar_Small" since="21" />
-		<field name="Widget_Material_Light_ProgressBar_Small_Inverse" since="21" />
-		<field name="Widget_Material_Light_ProgressBar_Small_Title" since="21" />
-		<field name="Widget_Material_Light_RatingBar" since="21" />
-		<field name="Widget_Material_Light_RatingBar_Indicator" since="21" />
-		<field name="Widget_Material_Light_RatingBar_Small" since="21" />
-		<field name="Widget_Material_Light_ScrollView" since="21" />
-		<field name="Widget_Material_Light_SeekBar" since="21" />
-		<field name="Widget_Material_Light_SegmentedButton" since="21" />
-		<field name="Widget_Material_Light_Spinner" since="21" />
-		<field name="Widget_Material_Light_StackView" since="21" />
-		<field name="Widget_Material_Light_Tab" since="21" />
-		<field name="Widget_Material_Light_TabWidget" since="21" />
-		<field name="Widget_Material_Light_TextView" since="21" />
-		<field name="Widget_Material_Light_TextView_SpinnerItem" since="21" />
-		<field name="Widget_Material_Light_WebTextView" since="21" />
-		<field name="Widget_Material_Light_WebView" since="21" />
-		<field name="Widget_Material_ListPopupWindow" since="21" />
-		<field name="Widget_Material_ListView" since="21" />
-		<field name="Widget_Material_ListView_DropDown" since="21" />
-		<field name="Widget_Material_MediaRouteButton" since="21" />
-		<field name="Widget_Material_PopupMenu" since="21" />
-		<field name="Widget_Material_PopupMenu_Overflow" since="21" />
-		<field name="Widget_Material_PopupWindow" since="21" />
-		<field name="Widget_Material_ProgressBar" since="21" />
-		<field name="Widget_Material_ProgressBar_Horizontal" since="21" />
-		<field name="Widget_Material_ProgressBar_Large" since="21" />
-		<field name="Widget_Material_ProgressBar_Small" since="21" />
-		<field name="Widget_Material_ProgressBar_Small_Title" since="21" />
-		<field name="Widget_Material_RatingBar" since="21" />
-		<field name="Widget_Material_RatingBar_Indicator" since="21" />
-		<field name="Widget_Material_RatingBar_Small" since="21" />
-		<field name="Widget_Material_ScrollView" since="21" />
-		<field name="Widget_Material_SeekBar" since="21" />
-		<field name="Widget_Material_SegmentedButton" since="21" />
-		<field name="Widget_Material_Spinner" since="21" />
-		<field name="Widget_Material_StackView" since="21" />
-		<field name="Widget_Material_Tab" since="21" />
-		<field name="Widget_Material_TabWidget" since="21" />
-		<field name="Widget_Material_TextView" since="21" />
-		<field name="Widget_Material_TextView_SpinnerItem" since="21" />
-		<field name="Widget_Material_Toolbar" since="21" />
-		<field name="Widget_Material_Toolbar_Button_Navigation" since="21" />
-		<field name="Widget_Material_WebTextView" since="21" />
-		<field name="Widget_Material_WebView" since="21" />
-		<field name="Widget_PopupMenu" since="11" />
-		<field name="Widget_PopupWindow" />
-		<field name="Widget_ProgressBar" />
-		<field name="Widget_ProgressBar_Horizontal" />
-		<field name="Widget_ProgressBar_Inverse" since="4" />
-		<field name="Widget_ProgressBar_Large" />
-		<field name="Widget_ProgressBar_Large_Inverse" since="4" />
-		<field name="Widget_ProgressBar_Small" />
-		<field name="Widget_ProgressBar_Small_Inverse" since="4" />
-		<field name="Widget_RatingBar" />
-		<field name="Widget_ScrollView" />
-		<field name="Widget_SeekBar" />
-		<field name="Widget_Spinner" />
-		<field name="Widget_Spinner_DropDown" since="11" />
-		<field name="Widget_StackView" since="21" />
-		<field name="Widget_TabWidget" />
-		<field name="Widget_TextView" />
-		<field name="Widget_TextView_PopupMenu" />
-		<field name="Widget_TextView_SpinnerItem" />
-		<field name="Widget_Toolbar" since="21" />
-		<field name="Widget_Toolbar_Button_Navigation" since="21" />
-		<field name="Widget_WebView" />
-		<field name="l_resource_pad1" since="21" />
-		<field name="l_resource_pad10" since="21" />
-		<field name="l_resource_pad11" since="21" />
-		<field name="l_resource_pad12" since="21" />
-		<field name="l_resource_pad13" since="21" />
-		<field name="l_resource_pad14" since="21" />
-		<field name="l_resource_pad15" since="21" />
-		<field name="l_resource_pad16" since="21" />
-		<field name="l_resource_pad17" since="21" />
-		<field name="l_resource_pad18" since="21" />
-		<field name="l_resource_pad19" since="21" />
-		<field name="l_resource_pad2" since="21" />
-		<field name="l_resource_pad20" since="21" />
-		<field name="l_resource_pad21" since="21" />
-		<field name="l_resource_pad22" since="21" />
-		<field name="l_resource_pad23" since="21" />
-		<field name="l_resource_pad24" since="21" />
-		<field name="l_resource_pad25" since="21" />
-		<field name="l_resource_pad26" since="21" />
-		<field name="l_resource_pad27" since="21" />
-		<field name="l_resource_pad28" since="21" />
-		<field name="l_resource_pad3" since="21" />
-		<field name="l_resource_pad4" since="21" />
-		<field name="l_resource_pad5" since="21" />
-		<field name="l_resource_pad6" since="21" />
-		<field name="l_resource_pad7" since="21" />
-		<field name="l_resource_pad8" since="21" />
-		<field name="l_resource_pad9" since="21" />
-	</class>
-	<class name="android/R$transition" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="no_transition" />
-	</class>
-	<class name="android/R$xml" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="android/accessibilityservice/AccessibilityService" since="4">
-		<extends name="android/app/Service" />
-		<method name="&lt;init>()V" />
-		<method name="findFocus(I)Landroid/view/accessibility/AccessibilityNodeInfo;" since="21" />
-		<method name="getRootInActiveWindow()Landroid/view/accessibility/AccessibilityNodeInfo;" since="16" />
-		<method name="getServiceInfo()Landroid/accessibilityservice/AccessibilityServiceInfo;" since="16" />
-		<method name="getWindows()Ljava/util/List;" since="21" />
-		<method name="onAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;)V" />
-		<method name="onGesture(I)Z" since="16" />
-		<method name="onInterrupt()V" />
-		<method name="onKeyEvent(Landroid/view/KeyEvent;)Z" since="18" />
-		<method name="onServiceConnected()V" />
-		<method name="performGlobalAction(I)Z" since="16" />
-		<method name="setServiceInfo(Landroid/accessibilityservice/AccessibilityServiceInfo;)V" />
-		<field name="GESTURE_SWIPE_DOWN" since="16" />
-		<field name="GESTURE_SWIPE_DOWN_AND_LEFT" since="16" />
-		<field name="GESTURE_SWIPE_DOWN_AND_RIGHT" since="16" />
-		<field name="GESTURE_SWIPE_DOWN_AND_UP" since="16" />
-		<field name="GESTURE_SWIPE_LEFT" since="16" />
-		<field name="GESTURE_SWIPE_LEFT_AND_DOWN" since="16" />
-		<field name="GESTURE_SWIPE_LEFT_AND_RIGHT" since="16" />
-		<field name="GESTURE_SWIPE_LEFT_AND_UP" since="16" />
-		<field name="GESTURE_SWIPE_RIGHT" since="16" />
-		<field name="GESTURE_SWIPE_RIGHT_AND_DOWN" since="16" />
-		<field name="GESTURE_SWIPE_RIGHT_AND_LEFT" since="16" />
-		<field name="GESTURE_SWIPE_RIGHT_AND_UP" since="16" />
-		<field name="GESTURE_SWIPE_UP" since="16" />
-		<field name="GESTURE_SWIPE_UP_AND_DOWN" since="16" />
-		<field name="GESTURE_SWIPE_UP_AND_LEFT" since="16" />
-		<field name="GESTURE_SWIPE_UP_AND_RIGHT" since="16" />
-		<field name="GLOBAL_ACTION_BACK" since="16" />
-		<field name="GLOBAL_ACTION_HOME" since="16" />
-		<field name="GLOBAL_ACTION_NOTIFICATIONS" since="16" />
-		<field name="GLOBAL_ACTION_QUICK_SETTINGS" since="17" />
-		<field name="GLOBAL_ACTION_RECENTS" since="16" />
-		<field name="SERVICE_INTERFACE" />
-		<field name="SERVICE_META_DATA" since="14" />
-	</class>
-	<class name="android/accessibilityservice/AccessibilityServiceInfo" since="4">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="capabilityToString(I)Ljava/lang/String;" since="18" />
-		<method name="feedbackTypeToString(I)Ljava/lang/String;" since="14" />
-		<method name="flagToString(I)Ljava/lang/String;" since="14" />
-		<method name="getCanRetrieveWindowContent()Z" since="14" />
-		<method name="getCapabilities()I" since="18" />
-		<method name="getDescription()Ljava/lang/String;" since="14" />
-		<method name="getId()Ljava/lang/String;" since="14" />
-		<method name="getResolveInfo()Landroid/content/pm/ResolveInfo;" since="14" />
-		<method name="getSettingsActivityName()Ljava/lang/String;" since="14" />
-		<method name="loadDescription(Landroid/content/pm/PackageManager;)Ljava/lang/String;" since="16" />
-		<field name="CAPABILITY_CAN_REQUEST_ENHANCED_WEB_ACCESSIBILITY" since="18" />
-		<field name="CAPABILITY_CAN_REQUEST_FILTER_KEY_EVENTS" since="18" />
-		<field name="CAPABILITY_CAN_REQUEST_TOUCH_EXPLORATION" since="18" />
-		<field name="CAPABILITY_CAN_RETRIEVE_WINDOW_CONTENT" since="18" />
-		<field name="CREATOR" />
-		<field name="DEFAULT" />
-		<field name="FEEDBACK_ALL_MASK" since="14" />
-		<field name="FEEDBACK_AUDIBLE" />
-		<field name="FEEDBACK_BRAILLE" since="17" />
-		<field name="FEEDBACK_GENERIC" />
-		<field name="FEEDBACK_HAPTIC" />
-		<field name="FEEDBACK_SPOKEN" />
-		<field name="FEEDBACK_VISUAL" />
-		<field name="FLAG_INCLUDE_NOT_IMPORTANT_VIEWS" since="16" />
-		<field name="FLAG_REPORT_VIEW_IDS" since="18" />
-		<field name="FLAG_REQUEST_ENHANCED_WEB_ACCESSIBILITY" since="18" />
-		<field name="FLAG_REQUEST_FILTER_KEY_EVENTS" since="18" />
-		<field name="FLAG_REQUEST_TOUCH_EXPLORATION_MODE" since="16" />
-		<field name="FLAG_RETRIEVE_INTERACTIVE_WINDOWS" since="21" />
-		<field name="eventTypes" />
-		<field name="feedbackType" />
-		<field name="flags" />
-		<field name="notificationTimeout" />
-		<field name="packageNames" />
-	</class>
-	<class name="android/accounts/AbstractAccountAuthenticator" since="5">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="addAccount(Landroid/accounts/AccountAuthenticatorResponse;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Landroid/os/Bundle;)Landroid/os/Bundle;" />
-		<method name="addAccountFromCredentials(Landroid/accounts/AccountAuthenticatorResponse;Landroid/accounts/Account;Landroid/os/Bundle;)Landroid/os/Bundle;" since="18" />
-		<method name="confirmCredentials(Landroid/accounts/AccountAuthenticatorResponse;Landroid/accounts/Account;Landroid/os/Bundle;)Landroid/os/Bundle;" />
-		<method name="editProperties(Landroid/accounts/AccountAuthenticatorResponse;Ljava/lang/String;)Landroid/os/Bundle;" />
-		<method name="getAccountCredentialsForCloning(Landroid/accounts/AccountAuthenticatorResponse;Landroid/accounts/Account;)Landroid/os/Bundle;" since="18" />
-		<method name="getAccountRemovalAllowed(Landroid/accounts/AccountAuthenticatorResponse;Landroid/accounts/Account;)Landroid/os/Bundle;" />
-		<method name="getAuthToken(Landroid/accounts/AccountAuthenticatorResponse;Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;)Landroid/os/Bundle;" />
-		<method name="getAuthTokenLabel(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="getIBinder()Landroid/os/IBinder;" />
-		<method name="hasFeatures(Landroid/accounts/AccountAuthenticatorResponse;Landroid/accounts/Account;[Ljava/lang/String;)Landroid/os/Bundle;" />
-		<method name="updateCredentials(Landroid/accounts/AccountAuthenticatorResponse;Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;)Landroid/os/Bundle;" />
-	</class>
-	<class name="android/accounts/Account" since="5">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>(Landroid/os/Parcel;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
-		<field name="CREATOR" />
-		<field name="name" />
-		<field name="type" />
-	</class>
-	<class name="android/accounts/AccountAuthenticatorActivity" since="5">
-		<extends name="android/app/Activity" />
-		<method name="&lt;init>()V" />
-		<method name="setAccountAuthenticatorResult(Landroid/os/Bundle;)V" />
-	</class>
-	<class name="android/accounts/AccountAuthenticatorResponse" since="5">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>(Landroid/os/Parcel;)V" />
-		<method name="onError(ILjava/lang/String;)V" />
-		<method name="onRequestContinued()V" />
-		<method name="onResult(Landroid/os/Bundle;)V" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/accounts/AccountManager" since="5">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="addAccount(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Landroid/os/Bundle;Landroid/app/Activity;Landroid/accounts/AccountManagerCallback;Landroid/os/Handler;)Landroid/accounts/AccountManagerFuture;" />
-		<method name="addAccountExplicitly(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;)Z" />
-		<method name="addOnAccountsUpdatedListener(Landroid/accounts/OnAccountsUpdateListener;Landroid/os/Handler;Z)V" />
-		<method name="blockingGetAuthToken(Landroid/accounts/Account;Ljava/lang/String;Z)Ljava/lang/String;" />
-		<method name="clearPassword(Landroid/accounts/Account;)V" />
-		<method name="confirmCredentials(Landroid/accounts/Account;Landroid/os/Bundle;Landroid/app/Activity;Landroid/accounts/AccountManagerCallback;Landroid/os/Handler;)Landroid/accounts/AccountManagerFuture;" />
-		<method name="editProperties(Ljava/lang/String;Landroid/app/Activity;Landroid/accounts/AccountManagerCallback;Landroid/os/Handler;)Landroid/accounts/AccountManagerFuture;" />
-		<method name="get(Landroid/content/Context;)Landroid/accounts/AccountManager;" />
-		<method name="getAccounts()[Landroid/accounts/Account;" />
-		<method name="getAccountsByType(Ljava/lang/String;)[Landroid/accounts/Account;" />
-		<method name="getAccountsByTypeAndFeatures(Ljava/lang/String;[Ljava/lang/String;Landroid/accounts/AccountManagerCallback;Landroid/os/Handler;)Landroid/accounts/AccountManagerFuture;" />
-		<method name="getAccountsByTypeForPackage(Ljava/lang/String;Ljava/lang/String;)[Landroid/accounts/Account;" since="18" />
-		<method name="getAuthToken(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;Landroid/app/Activity;Landroid/accounts/AccountManagerCallback;Landroid/os/Handler;)Landroid/accounts/AccountManagerFuture;" />
-		<method name="getAuthToken(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;ZLandroid/accounts/AccountManagerCallback;Landroid/os/Handler;)Landroid/accounts/AccountManagerFuture;" since="14" />
-		<method name="getAuthToken(Landroid/accounts/Account;Ljava/lang/String;ZLandroid/accounts/AccountManagerCallback;Landroid/os/Handler;)Landroid/accounts/AccountManagerFuture;" />
-		<method name="getAuthTokenByFeatures(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Landroid/app/Activity;Landroid/os/Bundle;Landroid/os/Bundle;Landroid/accounts/AccountManagerCallback;Landroid/os/Handler;)Landroid/accounts/AccountManagerFuture;" />
-		<method name="getAuthenticatorTypes()[Landroid/accounts/AuthenticatorDescription;" />
-		<method name="getPassword(Landroid/accounts/Account;)Ljava/lang/String;" />
-		<method name="getUserData(Landroid/accounts/Account;Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="hasFeatures(Landroid/accounts/Account;[Ljava/lang/String;Landroid/accounts/AccountManagerCallback;Landroid/os/Handler;)Landroid/accounts/AccountManagerFuture;" since="8" />
-		<method name="invalidateAuthToken(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="newChooseAccountIntent(Landroid/accounts/Account;Ljava/util/ArrayList;[Ljava/lang/String;ZLjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Landroid/os/Bundle;)Landroid/content/Intent;" since="14" />
-		<method name="peekAuthToken(Landroid/accounts/Account;Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="removeAccount(Landroid/accounts/Account;Landroid/accounts/AccountManagerCallback;Landroid/os/Handler;)Landroid/accounts/AccountManagerFuture;" />
-		<method name="removeOnAccountsUpdatedListener(Landroid/accounts/OnAccountsUpdateListener;)V" />
-		<method name="setAuthToken(Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="setPassword(Landroid/accounts/Account;Ljava/lang/String;)V" />
-		<method name="setUserData(Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="updateCredentials(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;Landroid/app/Activity;Landroid/accounts/AccountManagerCallback;Landroid/os/Handler;)Landroid/accounts/AccountManagerFuture;" />
-		<field name="ACTION_AUTHENTICATOR_INTENT" />
-		<field name="AUTHENTICATOR_ATTRIBUTES_NAME" />
-		<field name="AUTHENTICATOR_META_DATA_NAME" />
-		<field name="ERROR_CODE_BAD_ARGUMENTS" />
-		<field name="ERROR_CODE_BAD_AUTHENTICATION" since="18" />
-		<field name="ERROR_CODE_BAD_REQUEST" />
-		<field name="ERROR_CODE_CANCELED" />
-		<field name="ERROR_CODE_INVALID_RESPONSE" />
-		<field name="ERROR_CODE_NETWORK_ERROR" />
-		<field name="ERROR_CODE_REMOTE_EXCEPTION" />
-		<field name="ERROR_CODE_UNSUPPORTED_OPERATION" />
-		<field name="KEY_ACCOUNTS" />
-		<field name="KEY_ACCOUNT_AUTHENTICATOR_RESPONSE" />
-		<field name="KEY_ACCOUNT_MANAGER_RESPONSE" />
-		<field name="KEY_ACCOUNT_NAME" />
-		<field name="KEY_ACCOUNT_TYPE" />
-		<field name="KEY_ANDROID_PACKAGE_NAME" since="14" />
-		<field name="KEY_AUTHENTICATOR_TYPES" />
-		<field name="KEY_AUTHTOKEN" />
-		<field name="KEY_AUTH_FAILED_MESSAGE" />
-		<field name="KEY_AUTH_TOKEN_LABEL" />
-		<field name="KEY_BOOLEAN_RESULT" />
-		<field name="KEY_CALLER_PID" since="11" />
-		<field name="KEY_CALLER_UID" since="11" />
-		<field name="KEY_ERROR_CODE" />
-		<field name="KEY_ERROR_MESSAGE" />
-		<field name="KEY_INTENT" />
-		<field name="KEY_PASSWORD" />
-		<field name="KEY_USERDATA" />
-		<field name="LOGIN_ACCOUNTS_CHANGED_ACTION" />
-	</class>
-	<class name="android/accounts/AccountManagerCallback" since="5">
-		<extends name="java/lang/Object" />
-		<method name="run(Landroid/accounts/AccountManagerFuture;)V" />
-	</class>
-	<class name="android/accounts/AccountManagerFuture" since="5">
-		<extends name="java/lang/Object" />
-		<method name="cancel(Z)Z" />
-		<method name="getResult()Ljava/lang/Object;" />
-		<method name="getResult(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object;" />
-		<method name="isCancelled()Z" />
-		<method name="isDone()Z" />
-	</class>
-	<class name="android/accounts/AccountsException" since="5">
-		<extends name="java/lang/Exception" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="android/accounts/AuthenticatorDescription" since="5">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;IIII)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;IIIIZ)V" since="11" />
-		<method name="newKey(Ljava/lang/String;)Landroid/accounts/AuthenticatorDescription;" />
-		<field name="CREATOR" />
-		<field name="accountPreferencesId" />
-		<field name="customTokens" since="11" />
-		<field name="iconId" />
-		<field name="labelId" />
-		<field name="packageName" />
-		<field name="smallIconId" />
-		<field name="type" />
-	</class>
-	<class name="android/accounts/AuthenticatorException" since="5">
-		<extends name="android/accounts/AccountsException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="android/accounts/NetworkErrorException" since="5">
-		<extends name="android/accounts/AccountsException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="android/accounts/OnAccountsUpdateListener" since="5">
-		<extends name="java/lang/Object" />
-		<method name="onAccountsUpdated([Landroid/accounts/Account;)V" />
-	</class>
-	<class name="android/accounts/OperationCanceledException" since="5">
-		<extends name="android/accounts/AccountsException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="android/animation/Animator" since="11">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/Cloneable" />
-		<method name="&lt;init>()V" />
-		<method name="addListener(Landroid/animation/Animator$AnimatorListener;)V" />
-		<method name="addPauseListener(Landroid/animation/Animator$AnimatorPauseListener;)V" since="19" />
-		<method name="cancel()V" />
-		<method name="clone()Landroid/animation/Animator;" />
-		<method name="end()V" />
-		<method name="getDuration()J" />
-		<method name="getInterpolator()Landroid/animation/TimeInterpolator;" since="18" />
-		<method name="getListeners()Ljava/util/ArrayList;" />
-		<method name="getStartDelay()J" />
-		<method name="isPaused()Z" since="19" />
-		<method name="isRunning()Z" />
-		<method name="isStarted()Z" since="14" />
-		<method name="pause()V" since="19" />
-		<method name="removeAllListeners()V" />
-		<method name="removeListener(Landroid/animation/Animator$AnimatorListener;)V" />
-		<method name="removePauseListener(Landroid/animation/Animator$AnimatorPauseListener;)V" since="19" />
-		<method name="resume()V" since="19" />
-		<method name="setDuration(J)Landroid/animation/Animator;" />
-		<method name="setInterpolator(Landroid/animation/TimeInterpolator;)V" />
-		<method name="setStartDelay(J)V" />
-		<method name="setTarget(Ljava/lang/Object;)V" />
-		<method name="setupEndValues()V" />
-		<method name="setupStartValues()V" />
-		<method name="start()V" />
-	</class>
-	<class name="android/animation/Animator$AnimatorListener" since="11">
-		<extends name="java/lang/Object" />
-		<method name="onAnimationCancel(Landroid/animation/Animator;)V" />
-		<method name="onAnimationEnd(Landroid/animation/Animator;)V" />
-		<method name="onAnimationRepeat(Landroid/animation/Animator;)V" />
-		<method name="onAnimationStart(Landroid/animation/Animator;)V" />
-	</class>
-	<class name="android/animation/Animator$AnimatorPauseListener" since="19">
-		<extends name="java/lang/Object" />
-		<method name="onAnimationPause(Landroid/animation/Animator;)V" />
-		<method name="onAnimationResume(Landroid/animation/Animator;)V" />
-	</class>
-	<class name="android/animation/AnimatorInflater" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="loadAnimator(Landroid/content/Context;I)Landroid/animation/Animator;" />
-		<method name="loadStateListAnimator(Landroid/content/Context;I)Landroid/animation/StateListAnimator;" since="21" />
-	</class>
-	<class name="android/animation/AnimatorListenerAdapter" since="11">
-		<extends name="java/lang/Object" />
-		<implements name="android/animation/Animator$AnimatorListener" />
-		<implements name="android/animation/Animator$AnimatorPauseListener" since="19" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="android/animation/AnimatorSet" since="11">
-		<extends name="android/animation/Animator" />
-		<method name="&lt;init>()V" />
-		<method name="clone()Landroid/animation/AnimatorSet;" />
-		<method name="getChildAnimations()Ljava/util/ArrayList;" />
-		<method name="play(Landroid/animation/Animator;)Landroid/animation/AnimatorSet$Builder;" />
-		<method name="playSequentially(Ljava/util/List;)V" />
-		<method name="playSequentially([Landroid/animation/Animator;)V" />
-		<method name="playTogether(Ljava/util/Collection;)V" />
-		<method name="playTogether([Landroid/animation/Animator;)V" />
-		<method name="setDuration(J)Landroid/animation/AnimatorSet;" />
-	</class>
-	<class name="android/animation/AnimatorSet$Builder" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/animation/AnimatorSet;)V" />
-		<method name="after(J)Landroid/animation/AnimatorSet$Builder;" />
-		<method name="after(Landroid/animation/Animator;)Landroid/animation/AnimatorSet$Builder;" />
-		<method name="before(Landroid/animation/Animator;)Landroid/animation/AnimatorSet$Builder;" />
-		<method name="with(Landroid/animation/Animator;)Landroid/animation/AnimatorSet$Builder;" />
-	</class>
-	<class name="android/animation/ArgbEvaluator" since="11">
-		<extends name="java/lang/Object" />
-		<implements name="android/animation/TypeEvaluator" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="android/animation/BidirectionalTypeConverter" since="21">
-		<extends name="android/animation/TypeConverter" />
-		<method name="&lt;init>(Ljava/lang/Class;Ljava/lang/Class;)V" />
-		<method name="convertBack(Ljava/lang/Object;)Ljava/lang/Object;" />
-		<method name="invert()Landroid/animation/BidirectionalTypeConverter;" />
-	</class>
-	<class name="android/animation/FloatArrayEvaluator" since="21">
-		<extends name="java/lang/Object" />
-		<implements name="android/animation/TypeEvaluator" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>([F)V" />
-		<method name="evaluate(F[F[F)[F" />
-	</class>
-	<class name="android/animation/FloatEvaluator" since="11">
-		<extends name="java/lang/Object" />
-		<implements name="android/animation/TypeEvaluator" />
-		<method name="&lt;init>()V" />
-		<method name="evaluate(FLjava/lang/Number;Ljava/lang/Number;)Ljava/lang/Float;" since="14" />
-	</class>
-	<class name="android/animation/IntArrayEvaluator" since="21">
-		<extends name="java/lang/Object" />
-		<implements name="android/animation/TypeEvaluator" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>([I)V" />
-		<method name="evaluate(F[I[I)[I" />
-	</class>
-	<class name="android/animation/IntEvaluator" since="11">
-		<extends name="java/lang/Object" />
-		<implements name="android/animation/TypeEvaluator" />
-		<method name="&lt;init>()V" />
-		<method name="evaluate(FLjava/lang/Integer;Ljava/lang/Integer;)Ljava/lang/Integer;" since="14" />
-	</class>
-	<class name="android/animation/Keyframe" since="11">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/Cloneable" />
-		<method name="&lt;init>()V" />
-		<method name="clone()Landroid/animation/Keyframe;" />
-		<method name="getFraction()F" />
-		<method name="getInterpolator()Landroid/animation/TimeInterpolator;" />
-		<method name="getType()Ljava/lang/Class;" />
-		<method name="getValue()Ljava/lang/Object;" />
-		<method name="hasValue()Z" />
-		<method name="ofFloat(F)Landroid/animation/Keyframe;" />
-		<method name="ofFloat(FF)Landroid/animation/Keyframe;" />
-		<method name="ofInt(F)Landroid/animation/Keyframe;" />
-		<method name="ofInt(FI)Landroid/animation/Keyframe;" />
-		<method name="ofObject(F)Landroid/animation/Keyframe;" />
-		<method name="ofObject(FLjava/lang/Object;)Landroid/animation/Keyframe;" />
-		<method name="setFraction(F)V" />
-		<method name="setInterpolator(Landroid/animation/TimeInterpolator;)V" />
-		<method name="setValue(Ljava/lang/Object;)V" />
-	</class>
-	<class name="android/animation/LayoutTransition" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="addChild(Landroid/view/ViewGroup;Landroid/view/View;)V" />
-		<method name="addTransitionListener(Landroid/animation/LayoutTransition$TransitionListener;)V" />
-		<method name="disableTransitionType(I)V" since="16" />
-		<method name="enableTransitionType(I)V" since="16" />
-		<method name="getAnimator(I)Landroid/animation/Animator;" />
-		<method name="getDuration(I)J" />
-		<method name="getInterpolator(I)Landroid/animation/TimeInterpolator;" />
-		<method name="getStagger(I)J" />
-		<method name="getStartDelay(I)J" />
-		<method name="getTransitionListeners()Ljava/util/List;" />
-		<method name="hideChild(Landroid/view/ViewGroup;Landroid/view/View;)V" />
-		<method name="hideChild(Landroid/view/ViewGroup;Landroid/view/View;I)V" since="16" />
-		<method name="isChangingLayout()Z" />
-		<method name="isRunning()Z" />
-		<method name="isTransitionTypeEnabled(I)Z" since="16" />
-		<method name="removeChild(Landroid/view/ViewGroup;Landroid/view/View;)V" />
-		<method name="removeTransitionListener(Landroid/animation/LayoutTransition$TransitionListener;)V" />
-		<method name="setAnimateParentHierarchy(Z)V" since="14" />
-		<method name="setAnimator(ILandroid/animation/Animator;)V" />
-		<method name="setDuration(IJ)V" />
-		<method name="setDuration(J)V" />
-		<method name="setInterpolator(ILandroid/animation/TimeInterpolator;)V" />
-		<method name="setStagger(IJ)V" />
-		<method name="setStartDelay(IJ)V" />
-		<method name="showChild(Landroid/view/ViewGroup;Landroid/view/View;)V" />
-		<method name="showChild(Landroid/view/ViewGroup;Landroid/view/View;I)V" since="16" />
-		<field name="APPEARING" />
-		<field name="CHANGE_APPEARING" />
-		<field name="CHANGE_DISAPPEARING" />
-		<field name="CHANGING" since="16" />
-		<field name="DISAPPEARING" />
-	</class>
-	<class name="android/animation/LayoutTransition$TransitionListener" since="11">
-		<extends name="java/lang/Object" />
-		<method name="endTransition(Landroid/animation/LayoutTransition;Landroid/view/ViewGroup;Landroid/view/View;I)V" />
-		<method name="startTransition(Landroid/animation/LayoutTransition;Landroid/view/ViewGroup;Landroid/view/View;I)V" />
-	</class>
-	<class name="android/animation/ObjectAnimator" since="11">
-		<extends name="android/animation/ValueAnimator" />
-		<method name="&lt;init>()V" />
-		<method name="clone()Landroid/animation/ObjectAnimator;" />
-		<method name="getPropertyName()Ljava/lang/String;" />
-		<method name="getTarget()Ljava/lang/Object;" />
-		<method name="ofArgb(Ljava/lang/Object;Landroid/util/Property;[I)Landroid/animation/ObjectAnimator;" since="21" />
-		<method name="ofArgb(Ljava/lang/Object;Ljava/lang/String;[I)Landroid/animation/ObjectAnimator;" since="21" />
-		<method name="ofFloat(Ljava/lang/Object;Landroid/util/Property;Landroid/util/Property;Landroid/graphics/Path;)Landroid/animation/ObjectAnimator;" since="21" />
-		<method name="ofFloat(Ljava/lang/Object;Landroid/util/Property;[F)Landroid/animation/ObjectAnimator;" since="14" />
-		<method name="ofFloat(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;Landroid/graphics/Path;)Landroid/animation/ObjectAnimator;" since="21" />
-		<method name="ofFloat(Ljava/lang/Object;Ljava/lang/String;[F)Landroid/animation/ObjectAnimator;" />
-		<method name="ofInt(Ljava/lang/Object;Landroid/util/Property;Landroid/util/Property;Landroid/graphics/Path;)Landroid/animation/ObjectAnimator;" since="21" />
-		<method name="ofInt(Ljava/lang/Object;Landroid/util/Property;[I)Landroid/animation/ObjectAnimator;" since="14" />
-		<method name="ofInt(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;Landroid/graphics/Path;)Landroid/animation/ObjectAnimator;" since="21" />
-		<method name="ofInt(Ljava/lang/Object;Ljava/lang/String;[I)Landroid/animation/ObjectAnimator;" />
-		<method name="ofMultiFloat(Ljava/lang/Object;Ljava/lang/String;Landroid/animation/TypeConverter;Landroid/animation/TypeEvaluator;[Ljava/lang/Object;)Landroid/animation/ObjectAnimator;" since="21" />
-		<method name="ofMultiFloat(Ljava/lang/Object;Ljava/lang/String;Landroid/graphics/Path;)Landroid/animation/ObjectAnimator;" since="21" />
-		<method name="ofMultiFloat(Ljava/lang/Object;Ljava/lang/String;[[F)Landroid/animation/ObjectAnimator;" since="21" />
-		<method name="ofMultiInt(Ljava/lang/Object;Ljava/lang/String;Landroid/animation/TypeConverter;Landroid/animation/TypeEvaluator;[Ljava/lang/Object;)Landroid/animation/ObjectAnimator;" since="21" />
-		<method name="ofMultiInt(Ljava/lang/Object;Ljava/lang/String;Landroid/graphics/Path;)Landroid/animation/ObjectAnimator;" since="21" />
-		<method name="ofMultiInt(Ljava/lang/Object;Ljava/lang/String;[[I)Landroid/animation/ObjectAnimator;" since="21" />
-		<method name="ofObject(Ljava/lang/Object;Landroid/util/Property;Landroid/animation/TypeConverter;Landroid/animation/TypeEvaluator;[Ljava/lang/Object;)Landroid/animation/ObjectAnimator;" since="21" />
-		<method name="ofObject(Ljava/lang/Object;Landroid/util/Property;Landroid/animation/TypeConverter;Landroid/graphics/Path;)Landroid/animation/ObjectAnimator;" since="21" />
-		<method name="ofObject(Ljava/lang/Object;Landroid/util/Property;Landroid/animation/TypeEvaluator;[Ljava/lang/Object;)Landroid/animation/ObjectAnimator;" since="14" />
-		<method name="ofObject(Ljava/lang/Object;Ljava/lang/String;Landroid/animation/TypeConverter;Landroid/graphics/Path;)Landroid/animation/ObjectAnimator;" since="21" />
-		<method name="ofObject(Ljava/lang/Object;Ljava/lang/String;Landroid/animation/TypeEvaluator;[Ljava/lang/Object;)Landroid/animation/ObjectAnimator;" />
-		<method name="ofPropertyValuesHolder(Ljava/lang/Object;[Landroid/animation/PropertyValuesHolder;)Landroid/animation/ObjectAnimator;" />
-		<method name="setAutoCancel(Z)V" since="18" />
-		<method name="setDuration(J)Landroid/animation/ObjectAnimator;" />
-		<method name="setProperty(Landroid/util/Property;)V" since="14" />
-		<method name="setPropertyName(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/animation/PointFEvaluator" since="21">
-		<extends name="java/lang/Object" />
-		<implements name="android/animation/TypeEvaluator" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/graphics/PointF;)V" />
-		<method name="evaluate(FLandroid/graphics/PointF;Landroid/graphics/PointF;)Landroid/graphics/PointF;" />
-	</class>
-	<class name="android/animation/PropertyValuesHolder" since="11">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/Cloneable" />
-		<method name="&lt;init>()V" />
-		<method name="clone()Landroid/animation/PropertyValuesHolder;" />
-		<method name="getPropertyName()Ljava/lang/String;" />
-		<method name="ofFloat(Landroid/util/Property;[F)Landroid/animation/PropertyValuesHolder;" since="14" />
-		<method name="ofFloat(Ljava/lang/String;[F)Landroid/animation/PropertyValuesHolder;" />
-		<method name="ofInt(Landroid/util/Property;[I)Landroid/animation/PropertyValuesHolder;" since="14" />
-		<method name="ofInt(Ljava/lang/String;[I)Landroid/animation/PropertyValuesHolder;" />
-		<method name="ofKeyframe(Landroid/util/Property;[Landroid/animation/Keyframe;)Landroid/animation/PropertyValuesHolder;" since="14" />
-		<method name="ofKeyframe(Ljava/lang/String;[Landroid/animation/Keyframe;)Landroid/animation/PropertyValuesHolder;" />
-		<method name="ofMultiFloat(Ljava/lang/String;Landroid/animation/TypeConverter;Landroid/animation/TypeEvaluator;[Landroid/animation/Keyframe;)Landroid/animation/PropertyValuesHolder;" since="21" />
-		<method name="ofMultiFloat(Ljava/lang/String;Landroid/animation/TypeConverter;Landroid/animation/TypeEvaluator;[Ljava/lang/Object;)Landroid/animation/PropertyValuesHolder;" since="21" />
-		<method name="ofMultiFloat(Ljava/lang/String;Landroid/graphics/Path;)Landroid/animation/PropertyValuesHolder;" since="21" />
-		<method name="ofMultiFloat(Ljava/lang/String;[[F)Landroid/animation/PropertyValuesHolder;" since="21" />
-		<method name="ofMultiInt(Ljava/lang/String;Landroid/animation/TypeConverter;Landroid/animation/TypeEvaluator;[Landroid/animation/Keyframe;)Landroid/animation/PropertyValuesHolder;" since="21" />
-		<method name="ofMultiInt(Ljava/lang/String;Landroid/animation/TypeConverter;Landroid/animation/TypeEvaluator;[Ljava/lang/Object;)Landroid/animation/PropertyValuesHolder;" since="21" />
-		<method name="ofMultiInt(Ljava/lang/String;Landroid/graphics/Path;)Landroid/animation/PropertyValuesHolder;" since="21" />
-		<method name="ofMultiInt(Ljava/lang/String;[[I)Landroid/animation/PropertyValuesHolder;" since="21" />
-		<method name="ofObject(Landroid/util/Property;Landroid/animation/TypeConverter;Landroid/animation/TypeEvaluator;[Ljava/lang/Object;)Landroid/animation/PropertyValuesHolder;" since="21" />
-		<method name="ofObject(Landroid/util/Property;Landroid/animation/TypeConverter;Landroid/graphics/Path;)Landroid/animation/PropertyValuesHolder;" since="21" />
-		<method name="ofObject(Landroid/util/Property;Landroid/animation/TypeEvaluator;[Ljava/lang/Object;)Landroid/animation/PropertyValuesHolder;" since="14" />
-		<method name="ofObject(Ljava/lang/String;Landroid/animation/TypeConverter;Landroid/graphics/Path;)Landroid/animation/PropertyValuesHolder;" since="21" />
-		<method name="ofObject(Ljava/lang/String;Landroid/animation/TypeEvaluator;[Ljava/lang/Object;)Landroid/animation/PropertyValuesHolder;" />
-		<method name="setConverter(Landroid/animation/TypeConverter;)V" since="21" />
-		<method name="setEvaluator(Landroid/animation/TypeEvaluator;)V" />
-		<method name="setFloatValues([F)V" />
-		<method name="setIntValues([I)V" />
-		<method name="setKeyframes([Landroid/animation/Keyframe;)V" />
-		<method name="setObjectValues([Ljava/lang/Object;)V" />
-		<method name="setProperty(Landroid/util/Property;)V" since="14" />
-		<method name="setPropertyName(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/animation/RectEvaluator" since="18">
-		<extends name="java/lang/Object" />
-		<implements name="android/animation/TypeEvaluator" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/graphics/Rect;)V" since="21" />
-		<method name="evaluate(FLandroid/graphics/Rect;Landroid/graphics/Rect;)Landroid/graphics/Rect;" />
-	</class>
-	<class name="android/animation/StateListAnimator" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="addState([ILandroid/animation/Animator;)V" />
-		<method name="jumpToCurrentState()V" />
-	</class>
-	<class name="android/animation/TimeAnimator" since="16">
-		<extends name="android/animation/ValueAnimator" />
-		<method name="&lt;init>()V" />
-		<method name="setTimeListener(Landroid/animation/TimeAnimator$TimeListener;)V" />
-	</class>
-	<class name="android/animation/TimeAnimator$TimeListener" since="16">
-		<extends name="java/lang/Object" />
-		<method name="onTimeUpdate(Landroid/animation/TimeAnimator;JJ)V" />
-	</class>
-	<class name="android/animation/TimeInterpolator" since="11">
-		<extends name="java/lang/Object" />
-		<method name="getInterpolation(F)F" />
-	</class>
-	<class name="android/animation/TypeConverter" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/lang/Class;Ljava/lang/Class;)V" />
-		<method name="convert(Ljava/lang/Object;)Ljava/lang/Object;" />
-	</class>
-	<class name="android/animation/TypeEvaluator" since="11">
-		<extends name="java/lang/Object" />
-		<method name="evaluate(FLjava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;" />
-	</class>
-	<class name="android/animation/ValueAnimator" since="11">
-		<extends name="android/animation/Animator" />
-		<method name="&lt;init>()V" />
-		<method name="addUpdateListener(Landroid/animation/ValueAnimator$AnimatorUpdateListener;)V" />
-		<method name="clone()Landroid/animation/ValueAnimator;" />
-		<method name="getAnimatedFraction()F" since="12" />
-		<method name="getAnimatedValue()Ljava/lang/Object;" />
-		<method name="getAnimatedValue(Ljava/lang/String;)Ljava/lang/Object;" />
-		<method name="getCurrentPlayTime()J" />
-		<method name="getFrameDelay()J" />
-		<method name="getInterpolator()Landroid/animation/TimeInterpolator;" />
-		<method name="getRepeatCount()I" />
-		<method name="getRepeatMode()I" />
-		<method name="getValues()[Landroid/animation/PropertyValuesHolder;" />
-		<method name="ofArgb([I)Landroid/animation/ValueAnimator;" since="21" />
-		<method name="ofFloat([F)Landroid/animation/ValueAnimator;" />
-		<method name="ofInt([I)Landroid/animation/ValueAnimator;" />
-		<method name="ofObject(Landroid/animation/TypeEvaluator;[Ljava/lang/Object;)Landroid/animation/ValueAnimator;" />
-		<method name="ofPropertyValuesHolder([Landroid/animation/PropertyValuesHolder;)Landroid/animation/ValueAnimator;" />
-		<method name="removeAllUpdateListeners()V" />
-		<method name="removeUpdateListener(Landroid/animation/ValueAnimator$AnimatorUpdateListener;)V" />
-		<method name="reverse()V" />
-		<method name="setCurrentPlayTime(J)V" />
-		<method name="setDuration(J)Landroid/animation/ValueAnimator;" />
-		<method name="setEvaluator(Landroid/animation/TypeEvaluator;)V" />
-		<method name="setFloatValues([F)V" />
-		<method name="setFrameDelay(J)V" />
-		<method name="setIntValues([I)V" />
-		<method name="setObjectValues([Ljava/lang/Object;)V" />
-		<method name="setRepeatCount(I)V" />
-		<method name="setRepeatMode(I)V" />
-		<method name="setValues([Landroid/animation/PropertyValuesHolder;)V" />
-		<field name="INFINITE" />
-		<field name="RESTART" />
-		<field name="REVERSE" />
-	</class>
-	<class name="android/animation/ValueAnimator$AnimatorUpdateListener" since="11">
-		<extends name="java/lang/Object" />
-		<method name="onAnimationUpdate(Landroid/animation/ValueAnimator;)V" />
-	</class>
-	<class name="android/annotation/SuppressLint" since="16">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/annotation/Annotation" />
-		<method name="value()[Ljava/lang/String;" />
-	</class>
-	<class name="android/annotation/TargetApi" since="16">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/annotation/Annotation" />
-		<method name="value()I" />
-	</class>
-	<class name="android/app/ActionBar" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="addOnMenuVisibilityListener(Landroid/app/ActionBar$OnMenuVisibilityListener;)V" />
-		<method name="addTab(Landroid/app/ActionBar$Tab;)V" />
-		<method name="addTab(Landroid/app/ActionBar$Tab;I)V" />
-		<method name="addTab(Landroid/app/ActionBar$Tab;IZ)V" />
-		<method name="addTab(Landroid/app/ActionBar$Tab;Z)V" />
-		<method name="getCustomView()Landroid/view/View;" />
-		<method name="getDisplayOptions()I" />
-		<method name="getHeight()I" />
-		<method name="getHideOffset()I" since="21" />
-		<method name="getNavigationItemCount()I" />
-		<method name="getNavigationMode()I" />
-		<method name="getSelectedNavigationIndex()I" />
-		<method name="getSelectedTab()Landroid/app/ActionBar$Tab;" />
-		<method name="getSubtitle()Ljava/lang/CharSequence;" />
-		<method name="getTabAt(I)Landroid/app/ActionBar$Tab;" />
-		<method name="getTabCount()I" />
-		<method name="getThemedContext()Landroid/content/Context;" since="14" />
-		<method name="getTitle()Ljava/lang/CharSequence;" />
-		<method name="hide()V" />
-		<method name="isHideOnContentScrollEnabled()Z" since="21" />
-		<method name="isShowing()Z" />
-		<method name="newTab()Landroid/app/ActionBar$Tab;" />
-		<method name="removeAllTabs()V" />
-		<method name="removeOnMenuVisibilityListener(Landroid/app/ActionBar$OnMenuVisibilityListener;)V" />
-		<method name="removeTab(Landroid/app/ActionBar$Tab;)V" />
-		<method name="removeTabAt(I)V" />
-		<method name="selectTab(Landroid/app/ActionBar$Tab;)V" />
-		<method name="setBackgroundDrawable(Landroid/graphics/drawable/Drawable;)V" />
-		<method name="setCustomView(I)V" />
-		<method name="setCustomView(Landroid/view/View;)V" />
-		<method name="setCustomView(Landroid/view/View;Landroid/app/ActionBar$LayoutParams;)V" />
-		<method name="setDisplayHomeAsUpEnabled(Z)V" />
-		<method name="setDisplayOptions(I)V" />
-		<method name="setDisplayOptions(II)V" />
-		<method name="setDisplayShowCustomEnabled(Z)V" />
-		<method name="setDisplayShowHomeEnabled(Z)V" />
-		<method name="setDisplayShowTitleEnabled(Z)V" />
-		<method name="setDisplayUseLogoEnabled(Z)V" />
-		<method name="setHideOffset(I)V" since="21" />
-		<method name="setHideOnContentScrollEnabled(Z)V" since="21" />
-		<method name="setHomeActionContentDescription(I)V" since="18" />
-		<method name="setHomeActionContentDescription(Ljava/lang/CharSequence;)V" since="18" />
-		<method name="setHomeAsUpIndicator(I)V" since="18" />
-		<method name="setHomeAsUpIndicator(Landroid/graphics/drawable/Drawable;)V" since="18" />
-		<method name="setHomeButtonEnabled(Z)V" since="14" />
-		<method name="setIcon(I)V" since="14" />
-		<method name="setIcon(Landroid/graphics/drawable/Drawable;)V" since="14" />
-		<method name="setListNavigationCallbacks(Landroid/widget/SpinnerAdapter;Landroid/app/ActionBar$OnNavigationListener;)V" />
-		<method name="setLogo(I)V" since="14" />
-		<method name="setLogo(Landroid/graphics/drawable/Drawable;)V" since="14" />
-		<method name="setNavigationMode(I)V" />
-		<method name="setSelectedNavigationItem(I)V" />
-		<method name="setSplitBackgroundDrawable(Landroid/graphics/drawable/Drawable;)V" since="14" />
-		<method name="setStackedBackgroundDrawable(Landroid/graphics/drawable/Drawable;)V" since="14" />
-		<method name="setSubtitle(I)V" />
-		<method name="setSubtitle(Ljava/lang/CharSequence;)V" />
-		<method name="setTitle(I)V" />
-		<method name="setTitle(Ljava/lang/CharSequence;)V" />
-		<method name="show()V" />
-		<field name="DISPLAY_HOME_AS_UP" />
-		<field name="DISPLAY_SHOW_CUSTOM" />
-		<field name="DISPLAY_SHOW_HOME" />
-		<field name="DISPLAY_SHOW_TITLE" />
-		<field name="DISPLAY_USE_LOGO" />
-		<field name="NAVIGATION_MODE_LIST" />
-		<field name="NAVIGATION_MODE_STANDARD" />
-		<field name="NAVIGATION_MODE_TABS" />
-	</class>
-	<class name="android/app/ActionBar$LayoutParams" since="11">
-		<extends name="android/view/ViewGroup$MarginLayoutParams" />
-		<method name="&lt;init>(I)V" />
-		<method name="&lt;init>(II)V" />
-		<method name="&lt;init>(III)V" />
-		<method name="&lt;init>(Landroid/app/ActionBar$LayoutParams;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/view/ViewGroup$LayoutParams;)V" />
-		<method name="&lt;init>(Landroid/view/ViewGroup$MarginLayoutParams;)V" since="21" />
-		<field name="gravity" />
-	</class>
-	<class name="android/app/ActionBar$OnMenuVisibilityListener" since="11">
-		<extends name="java/lang/Object" />
-		<method name="onMenuVisibilityChanged(Z)V" />
-	</class>
-	<class name="android/app/ActionBar$OnNavigationListener" since="11">
-		<extends name="java/lang/Object" />
-		<method name="onNavigationItemSelected(IJ)Z" />
-	</class>
-	<class name="android/app/ActionBar$Tab" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getContentDescription()Ljava/lang/CharSequence;" since="14" />
-		<method name="getCustomView()Landroid/view/View;" />
-		<method name="getIcon()Landroid/graphics/drawable/Drawable;" />
-		<method name="getPosition()I" />
-		<method name="getTag()Ljava/lang/Object;" />
-		<method name="getText()Ljava/lang/CharSequence;" />
-		<method name="select()V" />
-		<method name="setContentDescription(I)Landroid/app/ActionBar$Tab;" since="14" />
-		<method name="setContentDescription(Ljava/lang/CharSequence;)Landroid/app/ActionBar$Tab;" since="14" />
-		<method name="setCustomView(I)Landroid/app/ActionBar$Tab;" />
-		<method name="setCustomView(Landroid/view/View;)Landroid/app/ActionBar$Tab;" />
-		<method name="setIcon(I)Landroid/app/ActionBar$Tab;" />
-		<method name="setIcon(Landroid/graphics/drawable/Drawable;)Landroid/app/ActionBar$Tab;" />
-		<method name="setTabListener(Landroid/app/ActionBar$TabListener;)Landroid/app/ActionBar$Tab;" />
-		<method name="setTag(Ljava/lang/Object;)Landroid/app/ActionBar$Tab;" />
-		<method name="setText(I)Landroid/app/ActionBar$Tab;" />
-		<method name="setText(Ljava/lang/CharSequence;)Landroid/app/ActionBar$Tab;" />
-		<field name="INVALID_POSITION" />
-	</class>
-	<class name="android/app/ActionBar$TabListener" since="11">
-		<extends name="java/lang/Object" />
-		<method name="onTabReselected(Landroid/app/ActionBar$Tab;Landroid/app/FragmentTransaction;)V" />
-		<method name="onTabSelected(Landroid/app/ActionBar$Tab;Landroid/app/FragmentTransaction;)V" />
-		<method name="onTabUnselected(Landroid/app/ActionBar$Tab;Landroid/app/FragmentTransaction;)V" />
-	</class>
-	<class name="android/app/Activity" since="1">
-		<extends name="android/view/ContextThemeWrapper" />
-		<implements name="android/content/ComponentCallbacks" />
-		<implements name="android/content/ComponentCallbacks2" since="14" />
-		<implements name="android/view/KeyEvent$Callback" />
-		<implements name="android/view/LayoutInflater$Factory" />
-		<implements name="android/view/LayoutInflater$Factory2" since="11" />
-		<implements name="android/view/View$OnCreateContextMenuListener" />
-		<implements name="android/view/Window$Callback" />
-		<method name="&lt;init>()V" />
-		<method name="addContentView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V" />
-		<method name="closeContextMenu()V" since="3" />
-		<method name="closeOptionsMenu()V" />
-		<method name="createPendingResult(ILandroid/content/Intent;I)Landroid/app/PendingIntent;" />
-		<method name="dismissDialog(I)V" />
-		<method name="dump(Ljava/lang/String;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V" since="11" />
-		<method name="findViewById(I)Landroid/view/View;" />
-		<method name="finish()V" />
-		<method name="finishActivity(I)V" />
-		<method name="finishActivityFromChild(Landroid/app/Activity;I)V" />
-		<method name="finishAffinity()V" since="16" />
-		<method name="finishAfterTransition()V" since="21" />
-		<method name="finishAndRemoveTask()V" since="21" />
-		<method name="finishFromChild(Landroid/app/Activity;)V" />
-		<method name="getActionBar()Landroid/app/ActionBar;" since="11" />
-		<method name="getApplication()Landroid/app/Application;" />
-		<method name="getCallingActivity()Landroid/content/ComponentName;" />
-		<method name="getCallingPackage()Ljava/lang/String;" />
-		<method name="getChangingConfigurations()I" />
-		<method name="getComponentName()Landroid/content/ComponentName;" />
-		<method name="getContentScene()Landroid/transition/Scene;" since="21" />
-		<method name="getContentTransitionManager()Landroid/transition/TransitionManager;" since="21" />
-		<method name="getCurrentFocus()Landroid/view/View;" />
-		<method name="getFragmentManager()Landroid/app/FragmentManager;" since="11" />
-		<method name="getInstanceCount()J" />
-		<method name="getIntent()Landroid/content/Intent;" />
-		<method name="getLastNonConfigurationInstance()Ljava/lang/Object;" />
-		<method name="getLayoutInflater()Landroid/view/LayoutInflater;" />
-		<method name="getLoaderManager()Landroid/app/LoaderManager;" since="11" />
-		<method name="getLocalClassName()Ljava/lang/String;" />
-		<method name="getMenuInflater()Landroid/view/MenuInflater;" />
-		<method name="getParent()Landroid/app/Activity;" />
-		<method name="getParentActivityIntent()Landroid/content/Intent;" since="16" />
-		<method name="getPreferences(I)Landroid/content/SharedPreferences;" />
-		<method name="getRequestedOrientation()I" />
-		<method name="getTaskId()I" />
-		<method name="getTitle()Ljava/lang/CharSequence;" />
-		<method name="getTitleColor()I" />
-		<method name="getVoiceInteractor()Landroid/app/VoiceInteractor;" since="21" />
-		<method name="getVolumeControlStream()I" />
-		<method name="getWindow()Landroid/view/Window;" />
-		<method name="getWindowManager()Landroid/view/WindowManager;" />
-		<method name="hasWindowFocus()Z" since="3" />
-		<method name="invalidateOptionsMenu()V" since="11" />
-		<method name="isChangingConfigurations()Z" since="11" />
-		<method name="isChild()Z" />
-		<method name="isDestroyed()Z" since="17" />
-		<method name="isFinishing()Z" />
-		<method name="isImmersive()Z" since="18" />
-		<method name="isTaskRoot()Z" />
-		<method name="isVoiceInteraction()Z" since="21" />
-		<method name="managedQuery(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;" />
-		<method name="moveTaskToBack(Z)Z" />
-		<method name="navigateUpTo(Landroid/content/Intent;)Z" since="16" />
-		<method name="navigateUpToFromChild(Landroid/app/Activity;Landroid/content/Intent;)Z" since="16" />
-		<method name="onActivityReenter(ILandroid/content/Intent;)V" since="21" />
-		<method name="onActivityResult(IILandroid/content/Intent;)V" />
-		<method name="onAttachFragment(Landroid/app/Fragment;)V" since="11" />
-		<method name="onBackPressed()V" since="5" />
-		<method name="onChildTitleChanged(Landroid/app/Activity;Ljava/lang/CharSequence;)V" />
-		<method name="onContextItemSelected(Landroid/view/MenuItem;)Z" />
-		<method name="onContextMenuClosed(Landroid/view/Menu;)V" />
-		<method name="onCreate(Landroid/os/Bundle;)V" />
-		<method name="onCreate(Landroid/os/Bundle;Landroid/os/PersistableBundle;)V" since="21" />
-		<method name="onCreateDescription()Ljava/lang/CharSequence;" />
-		<method name="onCreateDialog(I)Landroid/app/Dialog;" />
-		<method name="onCreateDialog(ILandroid/os/Bundle;)Landroid/app/Dialog;" since="8" />
-		<method name="onCreateNavigateUpTaskStack(Landroid/app/TaskStackBuilder;)V" since="16" />
-		<method name="onCreateOptionsMenu(Landroid/view/Menu;)Z" />
-		<method name="onCreateThumbnail(Landroid/graphics/Bitmap;Landroid/graphics/Canvas;)Z" />
-		<method name="onDestroy()V" />
-		<method name="onGenericMotionEvent(Landroid/view/MotionEvent;)Z" since="12" />
-		<method name="onKeyShortcut(ILandroid/view/KeyEvent;)Z" since="11" />
-		<method name="onNavigateUp()Z" since="16" />
-		<method name="onNavigateUpFromChild(Landroid/app/Activity;)Z" since="16" />
-		<method name="onNewIntent(Landroid/content/Intent;)V" />
-		<method name="onOptionsItemSelected(Landroid/view/MenuItem;)Z" />
-		<method name="onOptionsMenuClosed(Landroid/view/Menu;)V" />
-		<method name="onPause()V" />
-		<method name="onPostCreate(Landroid/os/Bundle;)V" />
-		<method name="onPostCreate(Landroid/os/Bundle;Landroid/os/PersistableBundle;)V" since="21" />
-		<method name="onPostResume()V" />
-		<method name="onPrepareDialog(ILandroid/app/Dialog;)V" />
-		<method name="onPrepareDialog(ILandroid/app/Dialog;Landroid/os/Bundle;)V" since="8" />
-		<method name="onPrepareNavigateUpTaskStack(Landroid/app/TaskStackBuilder;)V" since="16" />
-		<method name="onPrepareOptionsMenu(Landroid/view/Menu;)Z" />
-		<method name="onProvideAssistData(Landroid/os/Bundle;)V" since="18" />
-		<method name="onRestart()V" />
-		<method name="onRestoreInstanceState(Landroid/os/Bundle;)V" />
-		<method name="onRestoreInstanceState(Landroid/os/Bundle;Landroid/os/PersistableBundle;)V" since="21" />
-		<method name="onResume()V" />
-		<method name="onRetainNonConfigurationInstance()Ljava/lang/Object;" />
-		<method name="onSaveInstanceState(Landroid/os/Bundle;)V" />
-		<method name="onSaveInstanceState(Landroid/os/Bundle;Landroid/os/PersistableBundle;)V" since="21" />
-		<method name="onStart()V" />
-		<method name="onStop()V" />
-		<method name="onTitleChanged(Ljava/lang/CharSequence;I)V" />
-		<method name="onTouchEvent(Landroid/view/MotionEvent;)Z" />
-		<method name="onTrackballEvent(Landroid/view/MotionEvent;)Z" />
-		<method name="onUserInteraction()V" since="3" />
-		<method name="onUserLeaveHint()V" since="3" />
-		<method name="openContextMenu(Landroid/view/View;)V" />
-		<method name="openOptionsMenu()V" />
-		<method name="overridePendingTransition(II)V" since="5" />
-		<method name="postponeEnterTransition()V" since="21" />
-		<method name="recreate()V" since="11" />
-		<method name="registerForContextMenu(Landroid/view/View;)V" />
-		<method name="removeDialog(I)V" />
-		<method name="reportFullyDrawn()V" since="19" />
-		<method name="requestWindowFeature(I)Z" />
-		<method name="runOnUiThread(Ljava/lang/Runnable;)V" />
-		<method name="setActionBar(Landroid/widget/Toolbar;)V" since="21" />
-		<method name="setContentTransitionManager(Landroid/transition/TransitionManager;)V" since="21" />
-		<method name="setContentView(I)V" />
-		<method name="setContentView(Landroid/view/View;)V" />
-		<method name="setContentView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V" />
-		<method name="setDefaultKeyMode(I)V" />
-		<method name="setEnterSharedElementListener(Landroid/app/SharedElementListener;)V" since="21" />
-		<method name="setExitSharedElementListener(Landroid/app/SharedElementListener;)V" since="21" />
-		<method name="setFeatureDrawable(ILandroid/graphics/drawable/Drawable;)V" />
-		<method name="setFeatureDrawableAlpha(II)V" />
-		<method name="setFeatureDrawableResource(II)V" />
-		<method name="setFeatureDrawableUri(ILandroid/net/Uri;)V" />
-		<method name="setFinishOnTouchOutside(Z)V" since="11" />
-		<method name="setImmersive(Z)V" since="18" />
-		<method name="setIntent(Landroid/content/Intent;)V" />
-		<method name="setPersistent(Z)V" />
-		<method name="setProgress(I)V" />
-		<method name="setProgressBarIndeterminate(Z)V" />
-		<method name="setProgressBarIndeterminateVisibility(Z)V" />
-		<method name="setProgressBarVisibility(Z)V" />
-		<method name="setRequestedOrientation(I)V" />
-		<method name="setResult(I)V" />
-		<method name="setResult(ILandroid/content/Intent;)V" />
-		<method name="setSecondaryProgress(I)V" />
-		<method name="setTaskDescription(Landroid/app/ActivityManager$TaskDescription;)V" since="21" />
-		<method name="setTitle(I)V" />
-		<method name="setTitle(Ljava/lang/CharSequence;)V" />
-		<method name="setTitleColor(I)V" />
-		<method name="setVisible(Z)V" since="3" />
-		<method name="setVolumeControlStream(I)V" />
-		<method name="shouldUpRecreateTask(Landroid/content/Intent;)Z" since="16" />
-		<method name="showDialog(I)V" />
-		<method name="showDialog(ILandroid/os/Bundle;)Z" since="8" />
-		<method name="startActionMode(Landroid/view/ActionMode$Callback;)Landroid/view/ActionMode;" since="11" />
-		<method name="startActivityForResult(Landroid/content/Intent;I)V" />
-		<method name="startActivityForResult(Landroid/content/Intent;ILandroid/os/Bundle;)V" since="16" />
-		<method name="startActivityFromChild(Landroid/app/Activity;Landroid/content/Intent;I)V" />
-		<method name="startActivityFromChild(Landroid/app/Activity;Landroid/content/Intent;ILandroid/os/Bundle;)V" since="16" />
-		<method name="startActivityFromFragment(Landroid/app/Fragment;Landroid/content/Intent;I)V" since="11" />
-		<method name="startActivityFromFragment(Landroid/app/Fragment;Landroid/content/Intent;ILandroid/os/Bundle;)V" since="16" />
-		<method name="startActivityIfNeeded(Landroid/content/Intent;I)Z" />
-		<method name="startActivityIfNeeded(Landroid/content/Intent;ILandroid/os/Bundle;)Z" since="16" />
-		<method name="startIntentSenderForResult(Landroid/content/IntentSender;ILandroid/content/Intent;III)V" since="5" />
-		<method name="startIntentSenderForResult(Landroid/content/IntentSender;ILandroid/content/Intent;IIILandroid/os/Bundle;)V" since="16" />
-		<method name="startIntentSenderFromChild(Landroid/app/Activity;Landroid/content/IntentSender;ILandroid/content/Intent;III)V" since="5" />
-		<method name="startIntentSenderFromChild(Landroid/app/Activity;Landroid/content/IntentSender;ILandroid/content/Intent;IIILandroid/os/Bundle;)V" since="16" />
-		<method name="startLockTask()V" since="21" />
-		<method name="startManagingCursor(Landroid/database/Cursor;)V" />
-		<method name="startNextMatchingActivity(Landroid/content/Intent;)Z" />
-		<method name="startNextMatchingActivity(Landroid/content/Intent;Landroid/os/Bundle;)Z" since="16" />
-		<method name="startPostponedEnterTransition()V" since="21" />
-		<method name="startSearch(Ljava/lang/String;ZLandroid/os/Bundle;Z)V" />
-		<method name="stopLockTask()V" since="21" />
-		<method name="stopManagingCursor(Landroid/database/Cursor;)V" />
-		<method name="takeKeyEvents(Z)V" />
-		<method name="triggerSearch(Ljava/lang/String;Landroid/os/Bundle;)V" since="5" />
-		<method name="unregisterForContextMenu(Landroid/view/View;)V" />
-		<field name="DEFAULT_KEYS_DIALER" />
-		<field name="DEFAULT_KEYS_DISABLE" />
-		<field name="DEFAULT_KEYS_SEARCH_GLOBAL" />
-		<field name="DEFAULT_KEYS_SEARCH_LOCAL" />
-		<field name="DEFAULT_KEYS_SHORTCUT" />
-		<field name="FOCUSED_STATE_SET" />
-		<field name="RESULT_CANCELED" />
-		<field name="RESULT_FIRST_USER" />
-		<field name="RESULT_OK" />
-	</class>
-	<class name="android/app/ActivityGroup" since="1">
-		<extends name="android/app/Activity" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Z)V" />
-		<method name="getCurrentActivity()Landroid/app/Activity;" />
-		<method name="getLocalActivityManager()Landroid/app/LocalActivityManager;" />
-	</class>
-	<class name="android/app/ActivityManager" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="clearApplicationUserData()Z" since="19" />
-		<method name="dumpPackageState(Ljava/io/FileDescriptor;Ljava/lang/String;)V" since="19" />
-		<method name="getAppTasks()Ljava/util/List;" since="21" />
-		<method name="getDeviceConfigurationInfo()Landroid/content/pm/ConfigurationInfo;" since="3" />
-		<method name="getLargeMemoryClass()I" since="11" />
-		<method name="getLauncherLargeIconDensity()I" since="11" />
-		<method name="getLauncherLargeIconSize()I" since="11" />
-		<method name="getMemoryClass()I" since="5" />
-		<method name="getMemoryInfo(Landroid/app/ActivityManager$MemoryInfo;)V" />
-		<method name="getMyMemoryState(Landroid/app/ActivityManager$RunningAppProcessInfo;)V" since="16" />
-		<method name="getProcessMemoryInfo([I)[Landroid/os/Debug$MemoryInfo;" since="5" />
-		<method name="getProcessesInErrorState()Ljava/util/List;" />
-		<method name="getRecentTasks(II)Ljava/util/List;" />
-		<method name="getRunningAppProcesses()Ljava/util/List;" since="3" />
-		<method name="getRunningServiceControlPanel(Landroid/content/ComponentName;)Landroid/app/PendingIntent;" since="5" />
-		<method name="getRunningServices(I)Ljava/util/List;" />
-		<method name="getRunningTasks(I)Ljava/util/List;" />
-		<method name="isLowRamDevice()Z" since="19" />
-		<method name="isRunningInTestHarness()Z" since="11" />
-		<method name="isUserAMonkey()Z" since="8" />
-		<method name="killBackgroundProcesses(Ljava/lang/String;)V" since="8" />
-		<method name="moveTaskToFront(II)V" since="11" />
-		<method name="moveTaskToFront(IILandroid/os/Bundle;)V" since="16" />
-		<method name="restartPackage(Ljava/lang/String;)V" since="3" />
-		<field name="META_HOME_ALTERNATE" since="19" />
-		<field name="MOVE_TASK_NO_USER_ACTION" since="12" />
-		<field name="MOVE_TASK_WITH_HOME" since="11" />
-		<field name="RECENT_IGNORE_UNAVAILABLE" since="11" />
-		<field name="RECENT_WITH_EXCLUDED" />
-	</class>
-	<class name="android/app/ActivityManager$AppTask" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="finishAndRemoveTask()V" />
-		<method name="getTaskInfo()Landroid/app/ActivityManager$RecentTaskInfo;" />
-	</class>
-	<class name="android/app/ActivityManager$MemoryInfo" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="readFromParcel(Landroid/os/Parcel;)V" />
-		<field name="CREATOR" />
-		<field name="availMem" />
-		<field name="lowMemory" />
-		<field name="threshold" />
-		<field name="totalMem" since="16" />
-	</class>
-	<class name="android/app/ActivityManager$ProcessErrorStateInfo" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="readFromParcel(Landroid/os/Parcel;)V" />
-		<field name="CRASHED" />
-		<field name="CREATOR" />
-		<field name="NOT_RESPONDING" />
-		<field name="NO_ERROR" />
-		<field name="condition" />
-		<field name="crashData" />
-		<field name="longMsg" />
-		<field name="pid" />
-		<field name="processName" />
-		<field name="shortMsg" />
-		<field name="stackTrace" since="8" />
-		<field name="tag" />
-		<field name="uid" />
-	</class>
-	<class name="android/app/ActivityManager$RecentTaskInfo" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="readFromParcel(Landroid/os/Parcel;)V" />
-		<field name="CREATOR" />
-		<field name="baseIntent" />
-		<field name="description" since="11" />
-		<field name="id" />
-		<field name="origActivity" />
-		<field name="persistentId" since="12" />
-	</class>
-	<class name="android/app/ActivityManager$RunningAppProcessInfo" since="3">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;I[Ljava/lang/String;)V" />
-		<method name="readFromParcel(Landroid/os/Parcel;)V" />
-		<field name="CREATOR" />
-		<field name="IMPORTANCE_BACKGROUND" />
-		<field name="IMPORTANCE_EMPTY" />
-		<field name="IMPORTANCE_FOREGROUND" />
-		<field name="IMPORTANCE_PERCEPTIBLE" since="9" />
-		<field name="IMPORTANCE_SERVICE" />
-		<field name="IMPORTANCE_VISIBLE" />
-		<field name="REASON_PROVIDER_IN_USE" since="5" />
-		<field name="REASON_SERVICE_IN_USE" since="5" />
-		<field name="REASON_UNKNOWN" since="5" />
-		<field name="importance" />
-		<field name="importanceReasonCode" since="5" />
-		<field name="importanceReasonComponent" since="5" />
-		<field name="importanceReasonPid" since="5" />
-		<field name="lastTrimLevel" since="16" />
-		<field name="lru" />
-		<field name="pid" />
-		<field name="pkgList" />
-		<field name="processName" />
-		<field name="uid" since="5" />
-	</class>
-	<class name="android/app/ActivityManager$RunningServiceInfo" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="readFromParcel(Landroid/os/Parcel;)V" />
-		<field name="CREATOR" />
-		<field name="FLAG_FOREGROUND" since="5" />
-		<field name="FLAG_PERSISTENT_PROCESS" since="5" />
-		<field name="FLAG_STARTED" since="5" />
-		<field name="FLAG_SYSTEM_PROCESS" since="5" />
-		<field name="activeSince" />
-		<field name="clientCount" />
-		<field name="clientLabel" since="5" />
-		<field name="clientPackage" since="5" />
-		<field name="crashCount" />
-		<field name="flags" since="5" />
-		<field name="foreground" />
-		<field name="lastActivityTime" />
-		<field name="pid" />
-		<field name="process" />
-		<field name="restarting" />
-		<field name="service" />
-		<field name="started" />
-		<field name="uid" since="5" />
-	</class>
-	<class name="android/app/ActivityManager$RunningTaskInfo" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="readFromParcel(Landroid/os/Parcel;)V" />
-		<field name="CREATOR" />
-		<field name="baseActivity" />
-		<field name="description" />
-		<field name="id" />
-		<field name="numActivities" />
-		<field name="numRunning" />
-		<field name="thumbnail" />
-		<field name="topActivity" />
-	</class>
-	<class name="android/app/ActivityManager$TaskDescription" since="21">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/app/ActivityManager$TaskDescription;)V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Landroid/graphics/Bitmap;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Landroid/graphics/Bitmap;I)V" />
-		<method name="getIcon()Landroid/graphics/Bitmap;" />
-		<method name="getLabel()Ljava/lang/String;" />
-		<method name="getPrimaryColor()I" />
-		<method name="readFromParcel(Landroid/os/Parcel;)V" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/app/ActivityOptions" since="16">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="makeCustomAnimation(Landroid/content/Context;II)Landroid/app/ActivityOptions;" />
-		<method name="makeScaleUpAnimation(Landroid/view/View;IIII)Landroid/app/ActivityOptions;" />
-		<method name="makeSceneTransitionAnimation(Landroid/app/Activity;Landroid/view/View;Ljava/lang/String;)Landroid/app/ActivityOptions;" since="21" />
-		<method name="makeSceneTransitionAnimation(Landroid/app/Activity;[Landroid/util/Pair;)Landroid/app/ActivityOptions;" since="21" />
-		<method name="makeThumbnailScaleUpAnimation(Landroid/view/View;Landroid/graphics/Bitmap;II)Landroid/app/ActivityOptions;" />
-		<method name="toBundle()Landroid/os/Bundle;" />
-		<method name="update(Landroid/app/ActivityOptions;)V" />
-	</class>
-	<class name="android/app/AlarmManager" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="cancel(Landroid/app/PendingIntent;)V" />
-		<method name="set(IJLandroid/app/PendingIntent;)V" />
-		<method name="setExact(IJLandroid/app/PendingIntent;)V" since="19" />
-		<method name="setInexactRepeating(IJJLandroid/app/PendingIntent;)V" since="3" />
-		<method name="setRepeating(IJJLandroid/app/PendingIntent;)V" />
-		<method name="setTime(J)V" since="8" />
-		<method name="setTimeZone(Ljava/lang/String;)V" />
-		<method name="setWindow(IJJLandroid/app/PendingIntent;)V" since="19" />
-		<field name="ELAPSED_REALTIME" />
-		<field name="ELAPSED_REALTIME_WAKEUP" />
-		<field name="INTERVAL_DAY" since="3" />
-		<field name="INTERVAL_FIFTEEN_MINUTES" since="3" />
-		<field name="INTERVAL_HALF_DAY" since="3" />
-		<field name="INTERVAL_HALF_HOUR" since="3" />
-		<field name="INTERVAL_HOUR" since="3" />
-		<field name="RTC" />
-		<field name="RTC_WAKEUP" />
-	</class>
-	<class name="android/app/AlertDialog" since="1">
-		<extends name="android/app/Dialog" />
-		<implements name="android/content/DialogInterface" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;ZLandroid/content/DialogInterface$OnCancelListener;)V" />
-		<method name="getButton(I)Landroid/widget/Button;" since="3" />
-		<method name="getListView()Landroid/widget/ListView;" since="3" />
-		<method name="setButton(ILjava/lang/CharSequence;Landroid/content/DialogInterface$OnClickListener;)V" since="3" />
-		<method name="setButton(ILjava/lang/CharSequence;Landroid/os/Message;)V" since="3" />
-		<method name="setButton(Ljava/lang/CharSequence;Landroid/content/DialogInterface$OnClickListener;)V" />
-		<method name="setButton(Ljava/lang/CharSequence;Landroid/os/Message;)V" />
-		<method name="setButton2(Ljava/lang/CharSequence;Landroid/content/DialogInterface$OnClickListener;)V" />
-		<method name="setButton2(Ljava/lang/CharSequence;Landroid/os/Message;)V" />
-		<method name="setButton3(Ljava/lang/CharSequence;Landroid/content/DialogInterface$OnClickListener;)V" />
-		<method name="setButton3(Ljava/lang/CharSequence;Landroid/os/Message;)V" />
-		<method name="setCustomTitle(Landroid/view/View;)V" />
-		<method name="setIcon(I)V" />
-		<method name="setIcon(Landroid/graphics/drawable/Drawable;)V" />
-		<method name="setIconAttribute(I)V" since="11" />
-		<method name="setInverseBackgroundForced(Z)V" />
-		<method name="setMessage(Ljava/lang/CharSequence;)V" />
-		<method name="setView(Landroid/view/View;)V" />
-		<method name="setView(Landroid/view/View;IIII)V" since="3" />
-		<field name="THEME_DEVICE_DEFAULT_DARK" since="14" />
-		<field name="THEME_DEVICE_DEFAULT_LIGHT" since="14" />
-		<field name="THEME_HOLO_DARK" since="11" />
-		<field name="THEME_HOLO_LIGHT" since="11" />
-		<field name="THEME_TRADITIONAL" since="11" />
-	</class>
-	<class name="android/app/AlertDialog$Builder" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;I)V" since="11" />
-		<method name="create()Landroid/app/AlertDialog;" />
-		<method name="getContext()Landroid/content/Context;" since="11" />
-		<method name="setAdapter(Landroid/widget/ListAdapter;Landroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder;" />
-		<method name="setCancelable(Z)Landroid/app/AlertDialog$Builder;" />
-		<method name="setCursor(Landroid/database/Cursor;Landroid/content/DialogInterface$OnClickListener;Ljava/lang/String;)Landroid/app/AlertDialog$Builder;" />
-		<method name="setCustomTitle(Landroid/view/View;)Landroid/app/AlertDialog$Builder;" />
-		<method name="setIcon(I)Landroid/app/AlertDialog$Builder;" />
-		<method name="setIcon(Landroid/graphics/drawable/Drawable;)Landroid/app/AlertDialog$Builder;" />
-		<method name="setIconAttribute(I)Landroid/app/AlertDialog$Builder;" since="11" />
-		<method name="setInverseBackgroundForced(Z)Landroid/app/AlertDialog$Builder;" />
-		<method name="setItems(ILandroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder;" />
-		<method name="setItems([Ljava/lang/CharSequence;Landroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder;" />
-		<method name="setMessage(I)Landroid/app/AlertDialog$Builder;" />
-		<method name="setMessage(Ljava/lang/CharSequence;)Landroid/app/AlertDialog$Builder;" />
-		<method name="setMultiChoiceItems(I[ZLandroid/content/DialogInterface$OnMultiChoiceClickListener;)Landroid/app/AlertDialog$Builder;" />
-		<method name="setMultiChoiceItems(Landroid/database/Cursor;Ljava/lang/String;Ljava/lang/String;Landroid/content/DialogInterface$OnMultiChoiceClickListener;)Landroid/app/AlertDialog$Builder;" />
-		<method name="setMultiChoiceItems([Ljava/lang/CharSequence;[ZLandroid/content/DialogInterface$OnMultiChoiceClickListener;)Landroid/app/AlertDialog$Builder;" />
-		<method name="setNegativeButton(ILandroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder;" />
-		<method name="setNegativeButton(Ljava/lang/CharSequence;Landroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder;" />
-		<method name="setNeutralButton(ILandroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder;" />
-		<method name="setNeutralButton(Ljava/lang/CharSequence;Landroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder;" />
-		<method name="setOnCancelListener(Landroid/content/DialogInterface$OnCancelListener;)Landroid/app/AlertDialog$Builder;" />
-		<method name="setOnDismissListener(Landroid/content/DialogInterface$OnDismissListener;)Landroid/app/AlertDialog$Builder;" since="17" />
-		<method name="setOnItemSelectedListener(Landroid/widget/AdapterView$OnItemSelectedListener;)Landroid/app/AlertDialog$Builder;" />
-		<method name="setOnKeyListener(Landroid/content/DialogInterface$OnKeyListener;)Landroid/app/AlertDialog$Builder;" />
-		<method name="setPositiveButton(ILandroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder;" />
-		<method name="setPositiveButton(Ljava/lang/CharSequence;Landroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder;" />
-		<method name="setSingleChoiceItems(IILandroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder;" />
-		<method name="setSingleChoiceItems(Landroid/database/Cursor;ILjava/lang/String;Landroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder;" />
-		<method name="setSingleChoiceItems(Landroid/widget/ListAdapter;ILandroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder;" />
-		<method name="setSingleChoiceItems([Ljava/lang/CharSequence;ILandroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder;" />
-		<method name="setTitle(I)Landroid/app/AlertDialog$Builder;" />
-		<method name="setTitle(Ljava/lang/CharSequence;)Landroid/app/AlertDialog$Builder;" />
-		<method name="setView(I)Landroid/app/AlertDialog$Builder;" since="21" />
-		<method name="setView(Landroid/view/View;)Landroid/app/AlertDialog$Builder;" />
-		<method name="show()Landroid/app/AlertDialog;" />
-	</class>
-	<class name="android/app/AliasActivity" since="1">
-		<extends name="android/app/Activity" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="android/app/AppOpsManager" since="19">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="checkOp(Ljava/lang/String;ILjava/lang/String;)I" />
-		<method name="checkOpNoThrow(Ljava/lang/String;ILjava/lang/String;)I" />
-		<method name="checkPackage(ILjava/lang/String;)V" />
-		<method name="finishOp(Ljava/lang/String;ILjava/lang/String;)V" />
-		<method name="noteOp(Ljava/lang/String;ILjava/lang/String;)I" />
-		<method name="noteOpNoThrow(Ljava/lang/String;ILjava/lang/String;)I" />
-		<method name="startOp(Ljava/lang/String;ILjava/lang/String;)I" />
-		<method name="startOpNoThrow(Ljava/lang/String;ILjava/lang/String;)I" />
-		<method name="startWatchingMode(Ljava/lang/String;Ljava/lang/String;Landroid/app/AppOpsManager$OnOpChangedListener;)V" />
-		<method name="stopWatchingMode(Landroid/app/AppOpsManager$OnOpChangedListener;)V" />
-		<field name="MODE_ALLOWED" />
-		<field name="MODE_ERRORED" />
-		<field name="MODE_IGNORED" />
-		<field name="OPSTR_COARSE_LOCATION" />
-		<field name="OPSTR_FINE_LOCATION" />
-		<field name="OPSTR_MONITOR_HIGH_POWER_LOCATION" />
-		<field name="OPSTR_MONITOR_LOCATION" />
-	</class>
-	<class name="android/app/AppOpsManager$OnOpChangedListener" since="19">
-		<extends name="java/lang/Object" />
-		<method name="onOpChanged(Ljava/lang/String;Ljava/lang/String;)V" />
-	</class>
-	<class name="android/app/Application" since="1">
-		<extends name="android/content/ContextWrapper" />
-		<implements name="android/content/ComponentCallbacks" />
-		<implements name="android/content/ComponentCallbacks2" since="14" />
-		<method name="&lt;init>()V" />
-		<method name="onCreate()V" />
-		<method name="onTerminate()V" />
-		<method name="registerActivityLifecycleCallbacks(Landroid/app/Application$ActivityLifecycleCallbacks;)V" since="14" />
-		<method name="registerOnProvideAssistDataListener(Landroid/app/Application$OnProvideAssistDataListener;)V" since="18" />
-		<method name="unregisterActivityLifecycleCallbacks(Landroid/app/Application$ActivityLifecycleCallbacks;)V" since="14" />
-		<method name="unregisterOnProvideAssistDataListener(Landroid/app/Application$OnProvideAssistDataListener;)V" since="18" />
-	</class>
-	<class name="android/app/Application$ActivityLifecycleCallbacks" since="14">
-		<extends name="java/lang/Object" />
-		<method name="onActivityCreated(Landroid/app/Activity;Landroid/os/Bundle;)V" />
-		<method name="onActivityDestroyed(Landroid/app/Activity;)V" />
-		<method name="onActivityPaused(Landroid/app/Activity;)V" />
-		<method name="onActivityResumed(Landroid/app/Activity;)V" />
-		<method name="onActivitySaveInstanceState(Landroid/app/Activity;Landroid/os/Bundle;)V" />
-		<method name="onActivityStarted(Landroid/app/Activity;)V" />
-		<method name="onActivityStopped(Landroid/app/Activity;)V" />
-	</class>
-	<class name="android/app/Application$OnProvideAssistDataListener" since="18">
-		<extends name="java/lang/Object" />
-		<method name="onProvideAssistData(Landroid/app/Activity;Landroid/os/Bundle;)V" />
-	</class>
-	<class name="android/app/ApplicationErrorReport" since="14">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="dump(Landroid/util/Printer;Ljava/lang/String;)V" />
-		<method name="getErrorReportReceiver(Landroid/content/Context;Ljava/lang/String;I)Landroid/content/ComponentName;" />
-		<method name="readFromParcel(Landroid/os/Parcel;)V" />
-		<field name="CREATOR" />
-		<field name="TYPE_ANR" />
-		<field name="TYPE_BATTERY" />
-		<field name="TYPE_CRASH" />
-		<field name="TYPE_NONE" />
-		<field name="TYPE_RUNNING_SERVICE" />
-		<field name="anrInfo" />
-		<field name="batteryInfo" />
-		<field name="crashInfo" />
-		<field name="installerPackageName" />
-		<field name="packageName" />
-		<field name="processName" />
-		<field name="runningServiceInfo" />
-		<field name="systemApp" />
-		<field name="time" />
-		<field name="type" />
-	</class>
-	<class name="android/app/ApplicationErrorReport$AnrInfo" since="14">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/os/Parcel;)V" />
-		<method name="dump(Landroid/util/Printer;Ljava/lang/String;)V" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
-		<field name="activity" />
-		<field name="cause" />
-		<field name="info" />
-	</class>
-	<class name="android/app/ApplicationErrorReport$BatteryInfo" since="14">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/os/Parcel;)V" />
-		<method name="dump(Landroid/util/Printer;Ljava/lang/String;)V" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
-		<field name="checkinDetails" />
-		<field name="durationMicros" />
-		<field name="usageDetails" />
-		<field name="usagePercent" />
-	</class>
-	<class name="android/app/ApplicationErrorReport$CrashInfo" since="14">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/os/Parcel;)V" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
-		<method name="dump(Landroid/util/Printer;Ljava/lang/String;)V" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
-		<field name="exceptionClassName" />
-		<field name="exceptionMessage" />
-		<field name="stackTrace" />
-		<field name="throwClassName" />
-		<field name="throwFileName" />
-		<field name="throwLineNumber" />
-		<field name="throwMethodName" />
-	</class>
-	<class name="android/app/ApplicationErrorReport$RunningServiceInfo" since="14">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/os/Parcel;)V" />
-		<method name="dump(Landroid/util/Printer;Ljava/lang/String;)V" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
-		<field name="durationMillis" />
-		<field name="serviceDetails" />
-	</class>
-	<class name="android/app/DatePickerDialog" since="1">
-		<extends name="android/app/AlertDialog" />
-		<implements name="android/content/DialogInterface$OnClickListener" />
-		<implements name="android/widget/DatePicker$OnDateChangedListener" />
-		<method name="&lt;init>(Landroid/content/Context;ILandroid/app/DatePickerDialog$OnDateSetListener;III)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/app/DatePickerDialog$OnDateSetListener;III)V" />
-		<method name="getDatePicker()Landroid/widget/DatePicker;" since="11" />
-		<method name="updateDate(III)V" />
-	</class>
-	<class name="android/app/DatePickerDialog$OnDateSetListener" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onDateSet(Landroid/widget/DatePicker;III)V" />
-	</class>
-	<class name="android/app/Dialog" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/content/DialogInterface" />
-		<implements name="android/view/KeyEvent$Callback" />
-		<implements name="android/view/View$OnCreateContextMenuListener" />
-		<implements name="android/view/Window$Callback" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;ZLandroid/content/DialogInterface$OnCancelListener;)V" />
-		<method name="addContentView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V" />
-		<method name="closeOptionsMenu()V" />
-		<method name="create()V" since="21" />
-		<method name="findViewById(I)Landroid/view/View;" />
-		<method name="getActionBar()Landroid/app/ActionBar;" since="11" />
-		<method name="getContext()Landroid/content/Context;" />
-		<method name="getCurrentFocus()Landroid/view/View;" />
-		<method name="getLayoutInflater()Landroid/view/LayoutInflater;" />
-		<method name="getOwnerActivity()Landroid/app/Activity;" />
-		<method name="getVolumeControlStream()I" />
-		<method name="getWindow()Landroid/view/Window;" />
-		<method name="hide()V" />
-		<method name="invalidateOptionsMenu()V" since="11" />
-		<method name="isShowing()Z" />
-		<method name="onBackPressed()V" since="5" />
-		<method name="onContextItemSelected(Landroid/view/MenuItem;)Z" />
-		<method name="onContextMenuClosed(Landroid/view/Menu;)V" />
-		<method name="onCreate(Landroid/os/Bundle;)V" />
-		<method name="onCreateOptionsMenu(Landroid/view/Menu;)Z" />
-		<method name="onGenericMotionEvent(Landroid/view/MotionEvent;)Z" since="12" />
-		<method name="onKeyShortcut(ILandroid/view/KeyEvent;)Z" since="11" />
-		<method name="onOptionsItemSelected(Landroid/view/MenuItem;)Z" />
-		<method name="onOptionsMenuClosed(Landroid/view/Menu;)V" />
-		<method name="onPrepareOptionsMenu(Landroid/view/Menu;)Z" />
-		<method name="onRestoreInstanceState(Landroid/os/Bundle;)V" />
-		<method name="onSaveInstanceState()Landroid/os/Bundle;" />
-		<method name="onStart()V" />
-		<method name="onStop()V" />
-		<method name="onTouchEvent(Landroid/view/MotionEvent;)Z" />
-		<method name="onTrackballEvent(Landroid/view/MotionEvent;)Z" />
-		<method name="openContextMenu(Landroid/view/View;)V" />
-		<method name="openOptionsMenu()V" />
-		<method name="registerForContextMenu(Landroid/view/View;)V" />
-		<method name="requestWindowFeature(I)Z" />
-		<method name="setCancelMessage(Landroid/os/Message;)V" />
-		<method name="setCancelable(Z)V" />
-		<method name="setCanceledOnTouchOutside(Z)V" />
-		<method name="setContentView(I)V" />
-		<method name="setContentView(Landroid/view/View;)V" />
-		<method name="setContentView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V" />
-		<method name="setDismissMessage(Landroid/os/Message;)V" />
-		<method name="setFeatureDrawable(ILandroid/graphics/drawable/Drawable;)V" />
-		<method name="setFeatureDrawableAlpha(II)V" />
-		<method name="setFeatureDrawableResource(II)V" />
-		<method name="setFeatureDrawableUri(ILandroid/net/Uri;)V" />
-		<method name="setOnCancelListener(Landroid/content/DialogInterface$OnCancelListener;)V" />
-		<method name="setOnDismissListener(Landroid/content/DialogInterface$OnDismissListener;)V" />
-		<method name="setOnKeyListener(Landroid/content/DialogInterface$OnKeyListener;)V" />
-		<method name="setOnShowListener(Landroid/content/DialogInterface$OnShowListener;)V" since="8" />
-		<method name="setOwnerActivity(Landroid/app/Activity;)V" />
-		<method name="setTitle(I)V" />
-		<method name="setTitle(Ljava/lang/CharSequence;)V" />
-		<method name="setVolumeControlStream(I)V" />
-		<method name="show()V" />
-		<method name="takeKeyEvents(Z)V" />
-		<method name="unregisterForContextMenu(Landroid/view/View;)V" />
-	</class>
-	<class name="android/app/DialogFragment" since="11">
-		<extends name="android/app/Fragment" />
-		<implements name="android/content/DialogInterface$OnCancelListener" />
-		<implements name="android/content/DialogInterface$OnDismissListener" />
-		<method name="&lt;init>()V" />
-		<method name="dismiss()V" />
-		<method name="dismissAllowingStateLoss()V" since="12" />
-		<method name="getDialog()Landroid/app/Dialog;" />
-		<method name="getShowsDialog()Z" />
-		<method name="getTheme()I" />
-		<method name="isCancelable()Z" />
-		<method name="onCreateDialog(Landroid/os/Bundle;)Landroid/app/Dialog;" />
-		<method name="setCancelable(Z)V" />
-		<method name="setShowsDialog(Z)V" />
-		<method name="setStyle(II)V" />
-		<method name="show(Landroid/app/FragmentManager;Ljava/lang/String;)V" />
-		<method name="show(Landroid/app/FragmentTransaction;Ljava/lang/String;)I" />
-		<field name="STYLE_NORMAL" />
-		<field name="STYLE_NO_FRAME" />
-		<field name="STYLE_NO_INPUT" />
-		<field name="STYLE_NO_TITLE" />
-	</class>
-	<class name="android/app/DownloadManager" since="9">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="addCompletedDownload(Ljava/lang/String;Ljava/lang/String;ZLjava/lang/String;Ljava/lang/String;JZ)J" since="12" />
-		<method name="enqueue(Landroid/app/DownloadManager$Request;)J" />
-		<method name="getMaxBytesOverMobile(Landroid/content/Context;)Ljava/lang/Long;" since="11" />
-		<method name="getMimeTypeForDownloadedFile(J)Ljava/lang/String;" since="11" />
-		<method name="getRecommendedMaxBytesOverMobile(Landroid/content/Context;)Ljava/lang/Long;" since="11" />
-		<method name="getUriForDownloadedFile(J)Landroid/net/Uri;" since="11" />
-		<method name="openDownloadedFile(J)Landroid/os/ParcelFileDescriptor;" />
-		<method name="query(Landroid/app/DownloadManager$Query;)Landroid/database/Cursor;" />
-		<method name="remove([J)I" />
-		<field name="ACTION_DOWNLOAD_COMPLETE" />
-		<field name="ACTION_NOTIFICATION_CLICKED" />
-		<field name="ACTION_VIEW_DOWNLOADS" />
-		<field name="COLUMN_BYTES_DOWNLOADED_SO_FAR" />
-		<field name="COLUMN_DESCRIPTION" />
-		<field name="COLUMN_ID" />
-		<field name="COLUMN_LAST_MODIFIED_TIMESTAMP" />
-		<field name="COLUMN_LOCAL_FILENAME" since="11" />
-		<field name="COLUMN_LOCAL_URI" />
-		<field name="COLUMN_MEDIAPROVIDER_URI" />
-		<field name="COLUMN_MEDIA_TYPE" />
-		<field name="COLUMN_REASON" />
-		<field name="COLUMN_STATUS" />
-		<field name="COLUMN_TITLE" />
-		<field name="COLUMN_TOTAL_SIZE_BYTES" />
-		<field name="COLUMN_URI" />
-		<field name="ERROR_CANNOT_RESUME" />
-		<field name="ERROR_DEVICE_NOT_FOUND" />
-		<field name="ERROR_FILE_ALREADY_EXISTS" />
-		<field name="ERROR_FILE_ERROR" />
-		<field name="ERROR_HTTP_DATA_ERROR" />
-		<field name="ERROR_INSUFFICIENT_SPACE" />
-		<field name="ERROR_TOO_MANY_REDIRECTS" />
-		<field name="ERROR_UNHANDLED_HTTP_CODE" />
-		<field name="ERROR_UNKNOWN" />
-		<field name="EXTRA_DOWNLOAD_ID" />
-		<field name="EXTRA_NOTIFICATION_CLICK_DOWNLOAD_IDS" since="11" />
-		<field name="INTENT_EXTRAS_SORT_BY_SIZE" since="12" />
-		<field name="PAUSED_QUEUED_FOR_WIFI" />
-		<field name="PAUSED_UNKNOWN" />
-		<field name="PAUSED_WAITING_FOR_NETWORK" />
-		<field name="PAUSED_WAITING_TO_RETRY" />
-		<field name="STATUS_FAILED" />
-		<field name="STATUS_PAUSED" />
-		<field name="STATUS_PENDING" />
-		<field name="STATUS_RUNNING" />
-		<field name="STATUS_SUCCESSFUL" />
-	</class>
-	<class name="android/app/DownloadManager$Query" since="9">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="setFilterById([J)Landroid/app/DownloadManager$Query;" />
-		<method name="setFilterByStatus(I)Landroid/app/DownloadManager$Query;" />
-	</class>
-	<class name="android/app/DownloadManager$Request" since="9">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/net/Uri;)V" />
-		<method name="addRequestHeader(Ljava/lang/String;Ljava/lang/String;)Landroid/app/DownloadManager$Request;" />
-		<method name="allowScanningByMediaScanner()V" since="11" />
-		<method name="setAllowedNetworkTypes(I)Landroid/app/DownloadManager$Request;" />
-		<method name="setAllowedOverMetered(Z)Landroid/app/DownloadManager$Request;" since="16" />
-		<method name="setAllowedOverRoaming(Z)Landroid/app/DownloadManager$Request;" />
-		<method name="setDescription(Ljava/lang/CharSequence;)Landroid/app/DownloadManager$Request;" />
-		<method name="setDestinationInExternalFilesDir(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;)Landroid/app/DownloadManager$Request;" />
-		<method name="setDestinationInExternalPublicDir(Ljava/lang/String;Ljava/lang/String;)Landroid/app/DownloadManager$Request;" />
-		<method name="setDestinationUri(Landroid/net/Uri;)Landroid/app/DownloadManager$Request;" />
-		<method name="setMimeType(Ljava/lang/String;)Landroid/app/DownloadManager$Request;" />
-		<method name="setNotificationVisibility(I)Landroid/app/DownloadManager$Request;" since="11" />
-		<method name="setShowRunningNotification(Z)Landroid/app/DownloadManager$Request;" />
-		<method name="setTitle(Ljava/lang/CharSequence;)Landroid/app/DownloadManager$Request;" />
-		<method name="setVisibleInDownloadsUi(Z)Landroid/app/DownloadManager$Request;" />
-		<field name="NETWORK_MOBILE" />
-		<field name="NETWORK_WIFI" />
-		<field name="VISIBILITY_HIDDEN" since="11" />
-		<field name="VISIBILITY_VISIBLE" since="11" />
-		<field name="VISIBILITY_VISIBLE_NOTIFY_COMPLETED" since="11" />
-		<field name="VISIBILITY_VISIBLE_NOTIFY_ONLY_COMPLETION" since="12" />
-	</class>
-	<class name="android/app/ExpandableListActivity" since="1">
-		<extends name="android/app/Activity" />
-		<implements name="android/view/View$OnCreateContextMenuListener" />
-		<implements name="android/widget/ExpandableListView$OnChildClickListener" />
-		<implements name="android/widget/ExpandableListView$OnGroupCollapseListener" />
-		<implements name="android/widget/ExpandableListView$OnGroupExpandListener" />
-		<method name="&lt;init>()V" />
-		<method name="getExpandableListAdapter()Landroid/widget/ExpandableListAdapter;" />
-		<method name="getExpandableListView()Landroid/widget/ExpandableListView;" />
-		<method name="getSelectedId()J" />
-		<method name="getSelectedPosition()J" />
-		<method name="setListAdapter(Landroid/widget/ExpandableListAdapter;)V" />
-		<method name="setSelectedChild(IIZ)Z" />
-		<method name="setSelectedGroup(I)V" />
-	</class>
-	<class name="android/app/Fragment" since="11">
-		<extends name="java/lang/Object" />
-		<implements name="android/content/ComponentCallbacks" />
-		<implements name="android/content/ComponentCallbacks2" since="14" />
-		<implements name="android/view/View$OnCreateContextMenuListener" />
-		<method name="&lt;init>()V" />
-		<method name="dump(Ljava/lang/String;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V" />
-		<method name="getActivity()Landroid/app/Activity;" />
-		<method name="getArguments()Landroid/os/Bundle;" />
-		<method name="getChildFragmentManager()Landroid/app/FragmentManager;" since="17" />
-		<method name="getFragmentManager()Landroid/app/FragmentManager;" />
-		<method name="getId()I" />
-		<method name="getLoaderManager()Landroid/app/LoaderManager;" />
-		<method name="getParentFragment()Landroid/app/Fragment;" since="17" />
-		<method name="getResources()Landroid/content/res/Resources;" />
-		<method name="getRetainInstance()Z" />
-		<method name="getString(I)Ljava/lang/String;" />
-		<method name="getString(I[Ljava/lang/Object;)Ljava/lang/String;" />
-		<method name="getTag()Ljava/lang/String;" />
-		<method name="getTargetFragment()Landroid/app/Fragment;" />
-		<method name="getTargetRequestCode()I" />
-		<method name="getText(I)Ljava/lang/CharSequence;" />
-		<method name="getUserVisibleHint()Z" since="15" />
-		<method name="getView()Landroid/view/View;" />
-		<method name="instantiate(Landroid/content/Context;Ljava/lang/String;)Landroid/app/Fragment;" />
-		<method name="instantiate(Landroid/content/Context;Ljava/lang/String;Landroid/os/Bundle;)Landroid/app/Fragment;" />
-		<method name="isAdded()Z" />
-		<method name="isDetached()Z" since="13" />
-		<method name="isHidden()Z" />
-		<method name="isInLayout()Z" />
-		<method name="isRemoving()Z" />
-		<method name="isResumed()Z" />
-		<method name="isVisible()Z" />
-		<method name="onActivityCreated(Landroid/os/Bundle;)V" />
-		<method name="onActivityResult(IILandroid/content/Intent;)V" />
-		<method name="onAttach(Landroid/app/Activity;)V" />
-		<method name="onContextItemSelected(Landroid/view/MenuItem;)Z" />
-		<method name="onCreate(Landroid/os/Bundle;)V" />
-		<method name="onCreateAnimator(IZI)Landroid/animation/Animator;" />
-		<method name="onCreateOptionsMenu(Landroid/view/Menu;Landroid/view/MenuInflater;)V" />
-		<method name="onCreateView(Landroid/view/LayoutInflater;Landroid/view/ViewGroup;Landroid/os/Bundle;)Landroid/view/View;" />
-		<method name="onDestroy()V" />
-		<method name="onDestroyOptionsMenu()V" />
-		<method name="onDestroyView()V" />
-		<method name="onDetach()V" />
-		<method name="onHiddenChanged(Z)V" />
-		<method name="onInflate(Landroid/app/Activity;Landroid/util/AttributeSet;Landroid/os/Bundle;)V" since="12" />
-		<method name="onInflate(Landroid/util/AttributeSet;Landroid/os/Bundle;)V" />
-		<method name="onOptionsItemSelected(Landroid/view/MenuItem;)Z" />
-		<method name="onOptionsMenuClosed(Landroid/view/Menu;)V" />
-		<method name="onPause()V" />
-		<method name="onPrepareOptionsMenu(Landroid/view/Menu;)V" />
-		<method name="onResume()V" />
-		<method name="onSaveInstanceState(Landroid/os/Bundle;)V" />
-		<method name="onStart()V" />
-		<method name="onStop()V" />
-		<method name="onViewCreated(Landroid/view/View;Landroid/os/Bundle;)V" since="13" />
-		<method name="onViewStateRestored(Landroid/os/Bundle;)V" since="17" />
-		<method name="registerForContextMenu(Landroid/view/View;)V" />
-		<method name="setArguments(Landroid/os/Bundle;)V" />
-		<method name="setHasOptionsMenu(Z)V" />
-		<method name="setInitialSavedState(Landroid/app/Fragment$SavedState;)V" since="13" />
-		<method name="setMenuVisibility(Z)V" since="14" />
-		<method name="setRetainInstance(Z)V" />
-		<method name="setTargetFragment(Landroid/app/Fragment;I)V" />
-		<method name="setUserVisibleHint(Z)V" since="15" />
-		<method name="startActivity(Landroid/content/Intent;)V" />
-		<method name="startActivity(Landroid/content/Intent;Landroid/os/Bundle;)V" since="16" />
-		<method name="startActivityForResult(Landroid/content/Intent;I)V" />
-		<method name="startActivityForResult(Landroid/content/Intent;ILandroid/os/Bundle;)V" since="16" />
-		<method name="unregisterForContextMenu(Landroid/view/View;)V" />
-	</class>
-	<class name="android/app/Fragment$InstantiationException" since="11">
-		<extends name="android/util/AndroidRuntimeException" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Exception;)V" />
-	</class>
-	<class name="android/app/Fragment$SavedState" since="13">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/app/FragmentBreadCrumbs" since="11">
-		<extends name="android/view/ViewGroup" />
-		<implements name="android/app/FragmentManager$OnBackStackChangedListener" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="setActivity(Landroid/app/Activity;)V" />
-		<method name="setMaxVisible(I)V" />
-		<method name="setOnBreadCrumbClickListener(Landroid/app/FragmentBreadCrumbs$OnBreadCrumbClickListener;)V" since="12" />
-		<method name="setParentTitle(Ljava/lang/CharSequence;Ljava/lang/CharSequence;Landroid/view/View$OnClickListener;)V" />
-		<method name="setTitle(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)V" />
-	</class>
-	<class name="android/app/FragmentBreadCrumbs$OnBreadCrumbClickListener" since="12">
-		<extends name="java/lang/Object" />
-		<method name="onBreadCrumbClick(Landroid/app/FragmentManager$BackStackEntry;I)Z" />
-	</class>
-	<class name="android/app/FragmentManager" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="addOnBackStackChangedListener(Landroid/app/FragmentManager$OnBackStackChangedListener;)V" />
-		<method name="beginTransaction()Landroid/app/FragmentTransaction;" />
-		<method name="dump(Ljava/lang/String;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V" />
-		<method name="enableDebugLogging(Z)V" />
-		<method name="executePendingTransactions()Z" />
-		<method name="findFragmentById(I)Landroid/app/Fragment;" />
-		<method name="findFragmentByTag(Ljava/lang/String;)Landroid/app/Fragment;" />
-		<method name="getBackStackEntryAt(I)Landroid/app/FragmentManager$BackStackEntry;" />
-		<method name="getBackStackEntryCount()I" />
-		<method name="getFragment(Landroid/os/Bundle;Ljava/lang/String;)Landroid/app/Fragment;" />
-		<method name="invalidateOptionsMenu()V" since="14" />
-		<method name="isDestroyed()Z" since="17" />
-		<method name="popBackStack()V" />
-		<method name="popBackStack(II)V" />
-		<method name="popBackStack(Ljava/lang/String;I)V" />
-		<method name="popBackStackImmediate()Z" />
-		<method name="popBackStackImmediate(II)Z" />
-		<method name="popBackStackImmediate(Ljava/lang/String;I)Z" />
-		<method name="putFragment(Landroid/os/Bundle;Ljava/lang/String;Landroid/app/Fragment;)V" />
-		<method name="removeOnBackStackChangedListener(Landroid/app/FragmentManager$OnBackStackChangedListener;)V" />
-		<method name="saveFragmentInstanceState(Landroid/app/Fragment;)Landroid/app/Fragment$SavedState;" since="13" />
-		<field name="POP_BACK_STACK_INCLUSIVE" />
-	</class>
-	<class name="android/app/FragmentManager$BackStackEntry" since="11">
-		<extends name="java/lang/Object" />
-		<method name="getBreadCrumbShortTitle()Ljava/lang/CharSequence;" />
-		<method name="getBreadCrumbShortTitleRes()I" />
-		<method name="getBreadCrumbTitle()Ljava/lang/CharSequence;" />
-		<method name="getBreadCrumbTitleRes()I" />
-		<method name="getId()I" />
-		<method name="getName()Ljava/lang/String;" since="14" />
-	</class>
-	<class name="android/app/FragmentManager$OnBackStackChangedListener" since="11">
-		<extends name="java/lang/Object" />
-		<method name="onBackStackChanged()V" />
-	</class>
-	<class name="android/app/FragmentTransaction" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="add(ILandroid/app/Fragment;)Landroid/app/FragmentTransaction;" />
-		<method name="add(ILandroid/app/Fragment;Ljava/lang/String;)Landroid/app/FragmentTransaction;" />
-		<method name="add(Landroid/app/Fragment;Ljava/lang/String;)Landroid/app/FragmentTransaction;" />
-		<method name="addToBackStack(Ljava/lang/String;)Landroid/app/FragmentTransaction;" />
-		<method name="attach(Landroid/app/Fragment;)Landroid/app/FragmentTransaction;" since="13" />
-		<method name="commit()I" />
-		<method name="commitAllowingStateLoss()I" />
-		<method name="detach(Landroid/app/Fragment;)Landroid/app/FragmentTransaction;" since="13" />
-		<method name="disallowAddToBackStack()Landroid/app/FragmentTransaction;" />
-		<method name="hide(Landroid/app/Fragment;)Landroid/app/FragmentTransaction;" />
-		<method name="isAddToBackStackAllowed()Z" />
-		<method name="isEmpty()Z" />
-		<method name="remove(Landroid/app/Fragment;)Landroid/app/FragmentTransaction;" />
-		<method name="replace(ILandroid/app/Fragment;)Landroid/app/FragmentTransaction;" />
-		<method name="replace(ILandroid/app/Fragment;Ljava/lang/String;)Landroid/app/FragmentTransaction;" />
-		<method name="setBreadCrumbShortTitle(I)Landroid/app/FragmentTransaction;" />
-		<method name="setBreadCrumbShortTitle(Ljava/lang/CharSequence;)Landroid/app/FragmentTransaction;" />
-		<method name="setBreadCrumbTitle(I)Landroid/app/FragmentTransaction;" />
-		<method name="setBreadCrumbTitle(Ljava/lang/CharSequence;)Landroid/app/FragmentTransaction;" />
-		<method name="setCustomAnimations(II)Landroid/app/FragmentTransaction;" />
-		<method name="setCustomAnimations(IIII)Landroid/app/FragmentTransaction;" since="13" />
-		<method name="setTransition(I)Landroid/app/FragmentTransaction;" />
-		<method name="setTransitionStyle(I)Landroid/app/FragmentTransaction;" />
-		<method name="show(Landroid/app/Fragment;)Landroid/app/FragmentTransaction;" />
-		<field name="TRANSIT_ENTER_MASK" />
-		<field name="TRANSIT_EXIT_MASK" />
-		<field name="TRANSIT_FRAGMENT_CLOSE" />
-		<field name="TRANSIT_FRAGMENT_FADE" />
-		<field name="TRANSIT_FRAGMENT_OPEN" />
-		<field name="TRANSIT_NONE" />
-		<field name="TRANSIT_UNSET" />
-	</class>
-	<class name="android/app/Instrumentation" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="addMonitor(Landroid/app/Instrumentation$ActivityMonitor;)V" />
-		<method name="addMonitor(Landroid/content/IntentFilter;Landroid/app/Instrumentation$ActivityResult;Z)Landroid/app/Instrumentation$ActivityMonitor;" />
-		<method name="addMonitor(Ljava/lang/String;Landroid/app/Instrumentation$ActivityResult;Z)Landroid/app/Instrumentation$ActivityMonitor;" />
-		<method name="callActivityOnCreate(Landroid/app/Activity;Landroid/os/Bundle;)V" />
-		<method name="callActivityOnCreate(Landroid/app/Activity;Landroid/os/Bundle;Landroid/os/PersistableBundle;)V" since="21" />
-		<method name="callActivityOnDestroy(Landroid/app/Activity;)V" />
-		<method name="callActivityOnNewIntent(Landroid/app/Activity;Landroid/content/Intent;)V" />
-		<method name="callActivityOnPause(Landroid/app/Activity;)V" />
-		<method name="callActivityOnPostCreate(Landroid/app/Activity;Landroid/os/Bundle;)V" />
-		<method name="callActivityOnPostCreate(Landroid/app/Activity;Landroid/os/Bundle;Landroid/os/PersistableBundle;)V" since="21" />
-		<method name="callActivityOnRestart(Landroid/app/Activity;)V" />
-		<method name="callActivityOnRestoreInstanceState(Landroid/app/Activity;Landroid/os/Bundle;)V" />
-		<method name="callActivityOnRestoreInstanceState(Landroid/app/Activity;Landroid/os/Bundle;Landroid/os/PersistableBundle;)V" since="21" />
-		<method name="callActivityOnResume(Landroid/app/Activity;)V" />
-		<method name="callActivityOnSaveInstanceState(Landroid/app/Activity;Landroid/os/Bundle;)V" />
-		<method name="callActivityOnSaveInstanceState(Landroid/app/Activity;Landroid/os/Bundle;Landroid/os/PersistableBundle;)V" since="21" />
-		<method name="callActivityOnStart(Landroid/app/Activity;)V" />
-		<method name="callActivityOnStop(Landroid/app/Activity;)V" />
-		<method name="callActivityOnUserLeaving(Landroid/app/Activity;)V" since="3" />
-		<method name="callApplicationOnCreate(Landroid/app/Application;)V" />
-		<method name="checkMonitorHit(Landroid/app/Instrumentation$ActivityMonitor;I)Z" />
-		<method name="endPerformanceSnapshot()V" />
-		<method name="finish(ILandroid/os/Bundle;)V" />
-		<method name="getAllocCounts()Landroid/os/Bundle;" />
-		<method name="getBinderCounts()Landroid/os/Bundle;" />
-		<method name="getComponentName()Landroid/content/ComponentName;" />
-		<method name="getContext()Landroid/content/Context;" />
-		<method name="getTargetContext()Landroid/content/Context;" />
-		<method name="getUiAutomation()Landroid/app/UiAutomation;" since="18" />
-		<method name="invokeContextMenuAction(Landroid/app/Activity;II)Z" />
-		<method name="invokeMenuActionSync(Landroid/app/Activity;II)Z" />
-		<method name="isProfiling()Z" />
-		<method name="newActivity(Ljava/lang/Class;Landroid/content/Context;Landroid/os/IBinder;Landroid/app/Application;Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Ljava/lang/CharSequence;Landroid/app/Activity;Ljava/lang/String;Ljava/lang/Object;)Landroid/app/Activity;" />
-		<method name="newActivity(Ljava/lang/ClassLoader;Ljava/lang/String;Landroid/content/Intent;)Landroid/app/Activity;" />
-		<method name="newApplication(Ljava/lang/Class;Landroid/content/Context;)Landroid/app/Application;" />
-		<method name="newApplication(Ljava/lang/ClassLoader;Ljava/lang/String;Landroid/content/Context;)Landroid/app/Application;" />
-		<method name="onCreate(Landroid/os/Bundle;)V" />
-		<method name="onDestroy()V" />
-		<method name="onException(Ljava/lang/Object;Ljava/lang/Throwable;)Z" />
-		<method name="onStart()V" />
-		<method name="removeMonitor(Landroid/app/Instrumentation$ActivityMonitor;)V" />
-		<method name="runOnMainSync(Ljava/lang/Runnable;)V" />
-		<method name="sendCharacterSync(I)V" />
-		<method name="sendKeyDownUpSync(I)V" />
-		<method name="sendKeySync(Landroid/view/KeyEvent;)V" />
-		<method name="sendPointerSync(Landroid/view/MotionEvent;)V" />
-		<method name="sendStatus(ILandroid/os/Bundle;)V" />
-		<method name="sendStringSync(Ljava/lang/String;)V" />
-		<method name="sendTrackballEventSync(Landroid/view/MotionEvent;)V" />
-		<method name="setAutomaticPerformanceSnapshots()V" />
-		<method name="setInTouchMode(Z)V" />
-		<method name="start()V" />
-		<method name="startActivitySync(Landroid/content/Intent;)Landroid/app/Activity;" />
-		<method name="startAllocCounting()V" />
-		<method name="startPerformanceSnapshot()V" />
-		<method name="startProfiling()V" />
-		<method name="stopAllocCounting()V" />
-		<method name="stopProfiling()V" />
-		<method name="waitForIdle(Ljava/lang/Runnable;)V" />
-		<method name="waitForIdleSync()V" />
-		<method name="waitForMonitor(Landroid/app/Instrumentation$ActivityMonitor;)Landroid/app/Activity;" />
-		<method name="waitForMonitorWithTimeout(Landroid/app/Instrumentation$ActivityMonitor;J)Landroid/app/Activity;" />
-		<field name="REPORT_KEY_IDENTIFIER" />
-		<field name="REPORT_KEY_STREAMRESULT" />
-	</class>
-	<class name="android/app/Instrumentation$ActivityMonitor" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/content/IntentFilter;Landroid/app/Instrumentation$ActivityResult;Z)V" />
-		<method name="&lt;init>(Ljava/lang/String;Landroid/app/Instrumentation$ActivityResult;Z)V" />
-		<method name="getFilter()Landroid/content/IntentFilter;" />
-		<method name="getHits()I" />
-		<method name="getLastActivity()Landroid/app/Activity;" />
-		<method name="getResult()Landroid/app/Instrumentation$ActivityResult;" />
-		<method name="isBlocking()Z" />
-		<method name="waitForActivity()Landroid/app/Activity;" />
-		<method name="waitForActivityWithTimeout(J)Landroid/app/Activity;" />
-	</class>
-	<class name="android/app/Instrumentation$ActivityResult" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(ILandroid/content/Intent;)V" />
-		<method name="getResultCode()I" />
-		<method name="getResultData()Landroid/content/Intent;" />
-	</class>
-	<class name="android/app/IntentService" since="3">
-		<extends name="android/app/Service" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="onHandleIntent(Landroid/content/Intent;)V" />
-		<method name="setIntentRedelivery(Z)V" since="5" />
-	</class>
-	<class name="android/app/KeyguardManager" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="exitKeyguardSecurely(Landroid/app/KeyguardManager$OnKeyguardExitResult;)V" />
-		<method name="inKeyguardRestrictedInputMode()Z" />
-		<method name="isKeyguardLocked()Z" since="16" />
-		<method name="isKeyguardSecure()Z" since="16" />
-		<method name="newKeyguardLock(Ljava/lang/String;)Landroid/app/KeyguardManager$KeyguardLock;" />
-	</class>
-	<class name="android/app/KeyguardManager$KeyguardLock" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/app/KeyguardManager;)V" />
-		<method name="disableKeyguard()V" />
-		<method name="reenableKeyguard()V" />
-	</class>
-	<class name="android/app/KeyguardManager$OnKeyguardExitResult" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onKeyguardExitResult(Z)V" />
-	</class>
-	<class name="android/app/LauncherActivity" since="1">
-		<extends name="android/app/ListActivity" />
-		<method name="&lt;init>()V" />
-		<method name="getTargetIntent()Landroid/content/Intent;" />
-		<method name="intentForPosition(I)Landroid/content/Intent;" since="3" />
-		<method name="itemForPosition(I)Landroid/app/LauncherActivity$ListItem;" since="4" />
-		<method name="makeListItems()Ljava/util/List;" since="3" />
-		<method name="onQueryPackageManager(Landroid/content/Intent;)Ljava/util/List;" since="5" />
-		<method name="onSetContentView()V" since="5" />
-	</class>
-	<class name="android/app/LauncherActivity$IconResizer" since="3">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/app/LauncherActivity;)V" />
-		<method name="createIconThumbnail(Landroid/graphics/drawable/Drawable;)Landroid/graphics/drawable/Drawable;" />
-	</class>
-	<class name="android/app/LauncherActivity$ListItem" since="3">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="className" />
-		<field name="extras" />
-		<field name="icon" />
-		<field name="label" />
-		<field name="packageName" />
-		<field name="resolveInfo" since="4" />
-	</class>
-	<class name="android/app/ListActivity" since="1">
-		<extends name="android/app/Activity" />
-		<method name="&lt;init>()V" />
-		<method name="getListAdapter()Landroid/widget/ListAdapter;" />
-		<method name="getListView()Landroid/widget/ListView;" />
-		<method name="getSelectedItemId()J" />
-		<method name="getSelectedItemPosition()I" />
-		<method name="onListItemClick(Landroid/widget/ListView;Landroid/view/View;IJ)V" />
-		<method name="setListAdapter(Landroid/widget/ListAdapter;)V" />
-		<method name="setSelection(I)V" />
-	</class>
-	<class name="android/app/ListFragment" since="11">
-		<extends name="android/app/Fragment" />
-		<method name="&lt;init>()V" />
-		<method name="getListAdapter()Landroid/widget/ListAdapter;" />
-		<method name="getListView()Landroid/widget/ListView;" />
-		<method name="getSelectedItemId()J" />
-		<method name="getSelectedItemPosition()I" />
-		<method name="onListItemClick(Landroid/widget/ListView;Landroid/view/View;IJ)V" />
-		<method name="setEmptyText(Ljava/lang/CharSequence;)V" />
-		<method name="setListAdapter(Landroid/widget/ListAdapter;)V" />
-		<method name="setListShown(Z)V" />
-		<method name="setListShownNoAnimation(Z)V" />
-		<method name="setSelection(I)V" />
-	</class>
-	<class name="android/app/LoaderManager" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="destroyLoader(I)V" />
-		<method name="dump(Ljava/lang/String;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V" />
-		<method name="enableDebugLogging(Z)V" />
-		<method name="getLoader(I)Landroid/content/Loader;" />
-		<method name="initLoader(ILandroid/os/Bundle;Landroid/app/LoaderManager$LoaderCallbacks;)Landroid/content/Loader;" />
-		<method name="restartLoader(ILandroid/os/Bundle;Landroid/app/LoaderManager$LoaderCallbacks;)Landroid/content/Loader;" />
-	</class>
-	<class name="android/app/LoaderManager$LoaderCallbacks" since="11">
-		<extends name="java/lang/Object" />
-		<method name="onCreateLoader(ILandroid/os/Bundle;)Landroid/content/Loader;" />
-		<method name="onLoadFinished(Landroid/content/Loader;Ljava/lang/Object;)V" />
-		<method name="onLoaderReset(Landroid/content/Loader;)V" />
-	</class>
-	<class name="android/app/LocalActivityManager" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/app/Activity;Z)V" />
-		<method name="destroyActivity(Ljava/lang/String;Z)Landroid/view/Window;" />
-		<method name="dispatchCreate(Landroid/os/Bundle;)V" />
-		<method name="dispatchDestroy(Z)V" />
-		<method name="dispatchPause(Z)V" />
-		<method name="dispatchResume()V" />
-		<method name="dispatchStop()V" />
-		<method name="getActivity(Ljava/lang/String;)Landroid/app/Activity;" />
-		<method name="getCurrentActivity()Landroid/app/Activity;" />
-		<method name="getCurrentId()Ljava/lang/String;" />
-		<method name="removeAllActivities()V" />
-		<method name="saveInstanceState()Landroid/os/Bundle;" />
-		<method name="startActivity(Ljava/lang/String;Landroid/content/Intent;)Landroid/view/Window;" />
-	</class>
-	<class name="android/app/MediaRouteActionProvider" since="16">
-		<extends name="android/view/ActionProvider" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="setExtendedSettingsClickListener(Landroid/view/View$OnClickListener;)V" />
-		<method name="setRouteTypes(I)V" />
-	</class>
-	<class name="android/app/MediaRouteButton" since="16">
-		<extends name="android/view/View" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-		<method name="getRouteTypes()I" />
-		<method name="setExtendedSettingsClickListener(Landroid/view/View$OnClickListener;)V" />
-		<method name="setRouteTypes(I)V" />
-		<method name="showDialog()V" />
-	</class>
-	<class name="android/app/NativeActivity" since="9">
-		<extends name="android/app/Activity" />
-		<implements name="android/view/InputQueue$Callback" />
-		<implements name="android/view/SurfaceHolder$Callback2" />
-		<implements name="android/view/ViewTreeObserver$OnGlobalLayoutListener" />
-		<method name="&lt;init>()V" />
-		<field name="META_DATA_FUNC_NAME" />
-		<field name="META_DATA_LIB_NAME" />
-	</class>
-	<class name="android/app/Notification" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(ILjava/lang/CharSequence;J)V" />
-		<method name="&lt;init>(Landroid/os/Parcel;)V" />
-		<method name="clone()Landroid/app/Notification;" since="9" />
-		<method name="getGroup()Ljava/lang/String;" since="20" />
-		<method name="getSortKey()Ljava/lang/String;" since="20" />
-		<method name="setLatestEventInfo(Landroid/content/Context;Ljava/lang/CharSequence;Ljava/lang/CharSequence;Landroid/app/PendingIntent;)V" />
-		<field name="CATEGORY_ALARM" since="21" />
-		<field name="CATEGORY_CALL" since="21" />
-		<field name="CATEGORY_EMAIL" since="21" />
-		<field name="CATEGORY_ERROR" since="21" />
-		<field name="CATEGORY_EVENT" since="21" />
-		<field name="CATEGORY_MESSAGE" since="21" />
-		<field name="CATEGORY_PROGRESS" since="21" />
-		<field name="CATEGORY_PROMO" since="21" />
-		<field name="CATEGORY_RECOMMENDATION" since="21" />
-		<field name="CATEGORY_SERVICE" since="21" />
-		<field name="CATEGORY_SOCIAL" since="21" />
-		<field name="CATEGORY_STATUS" since="21" />
-		<field name="CATEGORY_SYSTEM" since="21" />
-		<field name="CATEGORY_TRANSPORT" since="21" />
-		<field name="COLOR_DEFAULT" since="21" />
-		<field name="CREATOR" />
-		<field name="DEFAULT_ALL" />
-		<field name="DEFAULT_LIGHTS" />
-		<field name="DEFAULT_SOUND" />
-		<field name="DEFAULT_VIBRATE" />
-		<field name="EXTRA_BACKGROUND_IMAGE_URI" since="21" />
-		<field name="EXTRA_INFO_TEXT" since="19" />
-		<field name="EXTRA_LARGE_ICON" since="19" />
-		<field name="EXTRA_LARGE_ICON_BIG" since="19" />
-		<field name="EXTRA_MEDIA_SESSION" since="21" />
-		<field name="EXTRA_PEOPLE" since="19" />
-		<field name="EXTRA_PICTURE" since="19" />
-		<field name="EXTRA_PROGRESS" since="19" />
-		<field name="EXTRA_PROGRESS_INDETERMINATE" since="19" />
-		<field name="EXTRA_PROGRESS_MAX" since="19" />
-		<field name="EXTRA_SHOW_CHRONOMETER" since="19" />
-		<field name="EXTRA_SHOW_WHEN" since="19" />
-		<field name="EXTRA_SMALL_ICON" since="19" />
-		<field name="EXTRA_SUB_TEXT" since="19" />
-		<field name="EXTRA_SUMMARY_TEXT" since="19" />
-		<field name="EXTRA_TEMPLATE" since="21" />
-		<field name="EXTRA_TEXT" since="19" />
-		<field name="EXTRA_TEXT_LINES" since="19" />
-		<field name="EXTRA_TITLE" since="19" />
-		<field name="EXTRA_TITLE_BIG" since="19" />
-		<field name="FLAG_AUTO_CANCEL" />
-		<field name="FLAG_FOREGROUND_SERVICE" since="5" />
-		<field name="FLAG_GROUP_SUMMARY" since="20" />
-		<field name="FLAG_HIGH_PRIORITY" since="11" />
-		<field name="FLAG_INSISTENT" />
-		<field name="FLAG_LOCAL_ONLY" since="20" />
-		<field name="FLAG_NO_CLEAR" />
-		<field name="FLAG_ONGOING_EVENT" />
-		<field name="FLAG_ONLY_ALERT_ONCE" />
-		<field name="FLAG_SHOW_LIGHTS" />
-		<field name="INTENT_CATEGORY_NOTIFICATION_PREFERENCES" since="21" />
-		<field name="PRIORITY_DEFAULT" since="16" />
-		<field name="PRIORITY_HIGH" since="16" />
-		<field name="PRIORITY_LOW" since="16" />
-		<field name="PRIORITY_MAX" since="16" />
-		<field name="PRIORITY_MIN" since="16" />
-		<field name="STREAM_DEFAULT" />
-		<field name="VISIBILITY_PRIVATE" since="21" />
-		<field name="VISIBILITY_PUBLIC" since="21" />
-		<field name="VISIBILITY_SECRET" since="21" />
-		<field name="actions" since="19" />
-		<field name="audioStreamType" />
-		<field name="bigContentView" since="16" />
-		<field name="category" since="21" />
-		<field name="color" since="21" />
-		<field name="contentIntent" />
-		<field name="contentView" />
-		<field name="defaults" />
-		<field name="deleteIntent" />
-		<field name="extras" since="19" />
-		<field name="flags" />
-		<field name="fullScreenIntent" since="9" />
-		<field name="icon" />
-		<field name="iconLevel" />
-		<field name="largeIcon" since="11" />
-		<field name="ledARGB" />
-		<field name="ledOffMS" />
-		<field name="ledOnMS" />
-		<field name="number" />
-		<field name="priority" since="16" />
-		<field name="publicVersion" since="21" />
-		<field name="sound" />
-		<field name="tickerText" />
-		<field name="tickerView" since="11" />
-		<field name="vibrate" />
-		<field name="visibility" since="21" />
-		<field name="when" />
-	</class>
-	<class name="android/app/Notification$Action" since="19">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>(ILjava/lang/CharSequence;Landroid/app/PendingIntent;)V" />
-		<method name="clone()Landroid/app/Notification$Action;" />
-		<method name="getExtras()Landroid/os/Bundle;" since="20" />
-		<method name="getRemoteInputs()[Landroid/app/RemoteInput;" since="20" />
-		<field name="CREATOR" />
-		<field name="actionIntent" />
-		<field name="icon" />
-		<field name="title" />
-	</class>
-	<class name="android/app/Notification$Action$Builder" since="20">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(ILjava/lang/CharSequence;Landroid/app/PendingIntent;)V" />
-		<method name="&lt;init>(Landroid/app/Notification$Action;)V" />
-		<method name="addExtras(Landroid/os/Bundle;)Landroid/app/Notification$Action$Builder;" />
-		<method name="addRemoteInput(Landroid/app/RemoteInput;)Landroid/app/Notification$Action$Builder;" />
-		<method name="build()Landroid/app/Notification$Action;" />
-		<method name="extend(Landroid/app/Notification$Action$Extender;)Landroid/app/Notification$Action$Builder;" />
-		<method name="getExtras()Landroid/os/Bundle;" />
-	</class>
-	<class name="android/app/Notification$Action$Extender" since="20">
-		<extends name="java/lang/Object" />
-		<method name="extend(Landroid/app/Notification$Action$Builder;)Landroid/app/Notification$Action$Builder;" />
-	</class>
-	<class name="android/app/Notification$Action$WearableExtender" since="20">
-		<extends name="java/lang/Object" />
-		<implements name="android/app/Notification$Action$Extender" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/app/Notification$Action;)V" />
-		<method name="clone()Landroid/app/Notification$Action$WearableExtender;" />
-		<method name="isAvailableOffline()Z" />
-		<method name="setAvailableOffline(Z)Landroid/app/Notification$Action$WearableExtender;" />
-	</class>
-	<class name="android/app/Notification$BigPictureStyle" since="16">
-		<extends name="android/app/Notification$Style" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/app/Notification$Builder;)V" />
-		<method name="bigLargeIcon(Landroid/graphics/Bitmap;)Landroid/app/Notification$BigPictureStyle;" />
-		<method name="bigPicture(Landroid/graphics/Bitmap;)Landroid/app/Notification$BigPictureStyle;" />
-		<method name="setBigContentTitle(Ljava/lang/CharSequence;)Landroid/app/Notification$BigPictureStyle;" />
-		<method name="setSummaryText(Ljava/lang/CharSequence;)Landroid/app/Notification$BigPictureStyle;" />
-	</class>
-	<class name="android/app/Notification$BigTextStyle" since="16">
-		<extends name="android/app/Notification$Style" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/app/Notification$Builder;)V" />
-		<method name="bigText(Ljava/lang/CharSequence;)Landroid/app/Notification$BigTextStyle;" />
-		<method name="setBigContentTitle(Ljava/lang/CharSequence;)Landroid/app/Notification$BigTextStyle;" />
-		<method name="setSummaryText(Ljava/lang/CharSequence;)Landroid/app/Notification$BigTextStyle;" />
-	</class>
-	<class name="android/app/Notification$Builder" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="addAction(ILjava/lang/CharSequence;Landroid/app/PendingIntent;)Landroid/app/Notification$Builder;" since="16" />
-		<method name="addAction(Landroid/app/Notification$Action;)Landroid/app/Notification$Builder;" since="20" />
-		<method name="addExtras(Landroid/os/Bundle;)Landroid/app/Notification$Builder;" since="20" />
-		<method name="addPerson(Ljava/lang/String;)Landroid/app/Notification$Builder;" since="21" />
-		<method name="build()Landroid/app/Notification;" since="16" />
-		<method name="extend(Landroid/app/Notification$Extender;)Landroid/app/Notification$Builder;" since="20" />
-		<method name="getExtras()Landroid/os/Bundle;" since="20" />
-		<method name="getNotification()Landroid/app/Notification;" />
-		<method name="setAutoCancel(Z)Landroid/app/Notification$Builder;" />
-		<method name="setCategory(Ljava/lang/String;)Landroid/app/Notification$Builder;" since="21" />
-		<method name="setColor(I)Landroid/app/Notification$Builder;" since="21" />
-		<method name="setContent(Landroid/widget/RemoteViews;)Landroid/app/Notification$Builder;" />
-		<method name="setContentInfo(Ljava/lang/CharSequence;)Landroid/app/Notification$Builder;" />
-		<method name="setContentIntent(Landroid/app/PendingIntent;)Landroid/app/Notification$Builder;" />
-		<method name="setContentText(Ljava/lang/CharSequence;)Landroid/app/Notification$Builder;" />
-		<method name="setContentTitle(Ljava/lang/CharSequence;)Landroid/app/Notification$Builder;" />
-		<method name="setDefaults(I)Landroid/app/Notification$Builder;" />
-		<method name="setDeleteIntent(Landroid/app/PendingIntent;)Landroid/app/Notification$Builder;" />
-		<method name="setExtras(Landroid/os/Bundle;)Landroid/app/Notification$Builder;" since="19" />
-		<method name="setFullScreenIntent(Landroid/app/PendingIntent;Z)Landroid/app/Notification$Builder;" />
-		<method name="setGroup(Ljava/lang/String;)Landroid/app/Notification$Builder;" since="20" />
-		<method name="setGroupSummary(Z)Landroid/app/Notification$Builder;" since="20" />
-		<method name="setLargeIcon(Landroid/graphics/Bitmap;)Landroid/app/Notification$Builder;" />
-		<method name="setLights(III)Landroid/app/Notification$Builder;" />
-		<method name="setLocalOnly(Z)Landroid/app/Notification$Builder;" since="20" />
-		<method name="setNumber(I)Landroid/app/Notification$Builder;" />
-		<method name="setOngoing(Z)Landroid/app/Notification$Builder;" />
-		<method name="setOnlyAlertOnce(Z)Landroid/app/Notification$Builder;" />
-		<method name="setPriority(I)Landroid/app/Notification$Builder;" since="16" />
-		<method name="setProgress(IIZ)Landroid/app/Notification$Builder;" since="14" />
-		<method name="setPublicVersion(Landroid/app/Notification;)Landroid/app/Notification$Builder;" since="21" />
-		<method name="setShowWhen(Z)Landroid/app/Notification$Builder;" since="17" />
-		<method name="setSmallIcon(I)Landroid/app/Notification$Builder;" />
-		<method name="setSmallIcon(II)Landroid/app/Notification$Builder;" />
-		<method name="setSortKey(Ljava/lang/String;)Landroid/app/Notification$Builder;" since="20" />
-		<method name="setSound(Landroid/net/Uri;)Landroid/app/Notification$Builder;" />
-		<method name="setSound(Landroid/net/Uri;I)Landroid/app/Notification$Builder;" />
-		<method name="setStyle(Landroid/app/Notification$Style;)Landroid/app/Notification$Builder;" since="16" />
-		<method name="setSubText(Ljava/lang/CharSequence;)Landroid/app/Notification$Builder;" since="16" />
-		<method name="setTicker(Ljava/lang/CharSequence;)Landroid/app/Notification$Builder;" />
-		<method name="setTicker(Ljava/lang/CharSequence;Landroid/widget/RemoteViews;)Landroid/app/Notification$Builder;" />
-		<method name="setUsesChronometer(Z)Landroid/app/Notification$Builder;" since="16" />
-		<method name="setVibrate([J)Landroid/app/Notification$Builder;" />
-		<method name="setVisibility(I)Landroid/app/Notification$Builder;" since="21" />
-		<method name="setWhen(J)Landroid/app/Notification$Builder;" />
-	</class>
-	<class name="android/app/Notification$Extender" since="20">
-		<extends name="java/lang/Object" />
-		<method name="extend(Landroid/app/Notification$Builder;)Landroid/app/Notification$Builder;" />
-	</class>
-	<class name="android/app/Notification$InboxStyle" since="16">
-		<extends name="android/app/Notification$Style" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/app/Notification$Builder;)V" />
-		<method name="addLine(Ljava/lang/CharSequence;)Landroid/app/Notification$InboxStyle;" />
-		<method name="setBigContentTitle(Ljava/lang/CharSequence;)Landroid/app/Notification$InboxStyle;" />
-		<method name="setSummaryText(Ljava/lang/CharSequence;)Landroid/app/Notification$InboxStyle;" />
-	</class>
-	<class name="android/app/Notification$MediaStyle" since="21">
-		<extends name="android/app/Notification$Style" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/app/Notification$Builder;)V" />
-		<method name="buildStyled(Landroid/app/Notification;)Landroid/app/Notification;" />
-		<method name="setMediaSession(Landroid/media/session/MediaSessionToken;)Landroid/app/Notification$MediaStyle;" />
-		<method name="setShowActionsInCompactView([I)Landroid/app/Notification$MediaStyle;" />
-	</class>
-	<class name="android/app/Notification$Style" since="16">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="build()Landroid/app/Notification;" />
-		<method name="checkBuilder()V" />
-		<method name="getStandardView(I)Landroid/widget/RemoteViews;" />
-		<method name="internalSetBigContentTitle(Ljava/lang/CharSequence;)V" />
-		<method name="internalSetSummaryText(Ljava/lang/CharSequence;)V" />
-		<method name="setBuilder(Landroid/app/Notification$Builder;)V" />
-		<field name="mBuilder" />
-	</class>
-	<class name="android/app/Notification$WearableExtender" since="20">
-		<extends name="java/lang/Object" />
-		<implements name="android/app/Notification$Extender" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/app/Notification;)V" />
-		<method name="addAction(Landroid/app/Notification$Action;)Landroid/app/Notification$WearableExtender;" />
-		<method name="addActions(Ljava/util/List;)Landroid/app/Notification$WearableExtender;" />
-		<method name="addPage(Landroid/app/Notification;)Landroid/app/Notification$WearableExtender;" />
-		<method name="addPages(Ljava/util/List;)Landroid/app/Notification$WearableExtender;" />
-		<method name="clearActions()Landroid/app/Notification$WearableExtender;" />
-		<method name="clearPages()Landroid/app/Notification$WearableExtender;" />
-		<method name="clone()Landroid/app/Notification$WearableExtender;" />
-		<method name="getActions()Ljava/util/List;" />
-		<method name="getBackground()Landroid/graphics/Bitmap;" />
-		<method name="getContentAction()I" />
-		<method name="getContentIcon()I" />
-		<method name="getContentIconGravity()I" />
-		<method name="getContentIntentAvailableOffline()Z" />
-		<method name="getCustomContentHeight()I" />
-		<method name="getCustomSizePreset()I" />
-		<method name="getDisplayIntent()Landroid/app/PendingIntent;" />
-		<method name="getGravity()I" />
-		<method name="getHintHideIcon()Z" />
-		<method name="getHintShowBackgroundOnly()Z" />
-		<method name="getPages()Ljava/util/List;" />
-		<method name="getStartScrollBottom()Z" />
-		<method name="setBackground(Landroid/graphics/Bitmap;)Landroid/app/Notification$WearableExtender;" />
-		<method name="setContentAction(I)Landroid/app/Notification$WearableExtender;" />
-		<method name="setContentIcon(I)Landroid/app/Notification$WearableExtender;" />
-		<method name="setContentIconGravity(I)Landroid/app/Notification$WearableExtender;" />
-		<method name="setContentIntentAvailableOffline(Z)Landroid/app/Notification$WearableExtender;" />
-		<method name="setCustomContentHeight(I)Landroid/app/Notification$WearableExtender;" />
-		<method name="setCustomSizePreset(I)Landroid/app/Notification$WearableExtender;" />
-		<method name="setDisplayIntent(Landroid/app/PendingIntent;)Landroid/app/Notification$WearableExtender;" />
-		<method name="setGravity(I)Landroid/app/Notification$WearableExtender;" />
-		<method name="setHintHideIcon(Z)Landroid/app/Notification$WearableExtender;" />
-		<method name="setHintShowBackgroundOnly(Z)Landroid/app/Notification$WearableExtender;" />
-		<method name="setStartScrollBottom(Z)Landroid/app/Notification$WearableExtender;" />
-		<field name="SIZE_DEFAULT" />
-		<field name="SIZE_FULL_SCREEN" />
-		<field name="SIZE_LARGE" />
-		<field name="SIZE_MEDIUM" />
-		<field name="SIZE_SMALL" />
-		<field name="SIZE_XSMALL" />
-		<field name="UNSET_ACTION_INDEX" />
-	</class>
-	<class name="android/app/NotificationManager" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="cancel(I)V" />
-		<method name="cancel(Ljava/lang/String;I)V" since="5" />
-		<method name="cancelAll()V" />
-		<method name="notify(ILandroid/app/Notification;)V" />
-		<method name="notify(Ljava/lang/String;ILandroid/app/Notification;)V" since="5" />
-	</class>
-	<class name="android/app/PendingIntent" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="cancel()V" />
-		<method name="getActivities(Landroid/content/Context;I[Landroid/content/Intent;I)Landroid/app/PendingIntent;" since="11" />
-		<method name="getActivities(Landroid/content/Context;I[Landroid/content/Intent;ILandroid/os/Bundle;)Landroid/app/PendingIntent;" since="16" />
-		<method name="getActivity(Landroid/content/Context;ILandroid/content/Intent;I)Landroid/app/PendingIntent;" />
-		<method name="getActivity(Landroid/content/Context;ILandroid/content/Intent;ILandroid/os/Bundle;)Landroid/app/PendingIntent;" since="16" />
-		<method name="getBroadcast(Landroid/content/Context;ILandroid/content/Intent;I)Landroid/app/PendingIntent;" />
-		<method name="getCreatorPackage()Ljava/lang/String;" since="17" />
-		<method name="getCreatorUid()I" since="17" />
-		<method name="getCreatorUserHandle()Landroid/os/UserHandle;" since="17" />
-		<method name="getIntentSender()Landroid/content/IntentSender;" since="4" />
-		<method name="getService(Landroid/content/Context;ILandroid/content/Intent;I)Landroid/app/PendingIntent;" />
-		<method name="getTargetPackage()Ljava/lang/String;" />
-		<method name="readPendingIntentOrNullFromParcel(Landroid/os/Parcel;)Landroid/app/PendingIntent;" />
-		<method name="send()V" />
-		<method name="send(I)V" />
-		<method name="send(ILandroid/app/PendingIntent$OnFinished;Landroid/os/Handler;)V" />
-		<method name="send(Landroid/content/Context;ILandroid/content/Intent;)V" />
-		<method name="send(Landroid/content/Context;ILandroid/content/Intent;Landroid/app/PendingIntent$OnFinished;Landroid/os/Handler;)V" />
-		<method name="send(Landroid/content/Context;ILandroid/content/Intent;Landroid/app/PendingIntent$OnFinished;Landroid/os/Handler;Ljava/lang/String;)V" since="14" />
-		<method name="writePendingIntentOrNullToParcel(Landroid/app/PendingIntent;Landroid/os/Parcel;)V" />
-		<field name="CREATOR" />
-		<field name="FLAG_CANCEL_CURRENT" />
-		<field name="FLAG_NO_CREATE" />
-		<field name="FLAG_ONE_SHOT" />
-		<field name="FLAG_UPDATE_CURRENT" since="3" />
-	</class>
-	<class name="android/app/PendingIntent$CanceledException" since="1">
-		<extends name="android/util/AndroidException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/Exception;)V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/app/PendingIntent$OnFinished" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onSendFinished(Landroid/app/PendingIntent;Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;)V" />
-	</class>
-	<class name="android/app/Presentation" since="17">
-		<extends name="android/app/Dialog" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/view/Display;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/view/Display;I)V" />
-		<method name="getDisplay()Landroid/view/Display;" />
-		<method name="getResources()Landroid/content/res/Resources;" />
-		<method name="onDisplayChanged()V" />
-		<method name="onDisplayRemoved()V" />
-	</class>
-	<class name="android/app/ProgressDialog" since="1">
-		<extends name="android/app/AlertDialog" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;I)V" />
-		<method name="getMax()I" />
-		<method name="getProgress()I" />
-		<method name="getSecondaryProgress()I" />
-		<method name="incrementProgressBy(I)V" />
-		<method name="incrementSecondaryProgressBy(I)V" />
-		<method name="isIndeterminate()Z" />
-		<method name="setIndeterminate(Z)V" />
-		<method name="setIndeterminateDrawable(Landroid/graphics/drawable/Drawable;)V" />
-		<method name="setMax(I)V" />
-		<method name="setProgress(I)V" />
-		<method name="setProgressDrawable(Landroid/graphics/drawable/Drawable;)V" />
-		<method name="setProgressNumberFormat(Ljava/lang/String;)V" since="11" />
-		<method name="setProgressPercentFormat(Ljava/text/NumberFormat;)V" since="11" />
-		<method name="setProgressStyle(I)V" />
-		<method name="setSecondaryProgress(I)V" />
-		<method name="show(Landroid/content/Context;Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Landroid/app/ProgressDialog;" />
-		<method name="show(Landroid/content/Context;Ljava/lang/CharSequence;Ljava/lang/CharSequence;Z)Landroid/app/ProgressDialog;" />
-		<method name="show(Landroid/content/Context;Ljava/lang/CharSequence;Ljava/lang/CharSequence;ZZ)Landroid/app/ProgressDialog;" />
-		<method name="show(Landroid/content/Context;Ljava/lang/CharSequence;Ljava/lang/CharSequence;ZZLandroid/content/DialogInterface$OnCancelListener;)Landroid/app/ProgressDialog;" />
-		<field name="STYLE_HORIZONTAL" />
-		<field name="STYLE_SPINNER" />
-	</class>
-	<class name="android/app/RemoteInput" since="20">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="addResultsToIntent([Landroid/app/RemoteInput;Landroid/content/Intent;Landroid/os/Bundle;)V" />
-		<method name="getAllowFreeFormInput()Z" />
-		<method name="getChoices()[Ljava/lang/CharSequence;" />
-		<method name="getExtras()Landroid/os/Bundle;" />
-		<method name="getLabel()Ljava/lang/CharSequence;" />
-		<method name="getResultKey()Ljava/lang/String;" />
-		<method name="getResultsFromIntent(Landroid/content/Intent;)Landroid/os/Bundle;" />
-		<field name="CREATOR" />
-		<field name="EXTRA_RESULTS_DATA" />
-		<field name="RESULTS_CLIP_LABEL" />
-	</class>
-	<class name="android/app/RemoteInput$Builder" since="20">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="addExtras(Landroid/os/Bundle;)Landroid/app/RemoteInput$Builder;" />
-		<method name="build()Landroid/app/RemoteInput;" />
-		<method name="getExtras()Landroid/os/Bundle;" />
-		<method name="setAllowFreeFormInput(Z)Landroid/app/RemoteInput$Builder;" />
-		<method name="setChoices([Ljava/lang/CharSequence;)Landroid/app/RemoteInput$Builder;" />
-		<method name="setLabel(Ljava/lang/CharSequence;)Landroid/app/RemoteInput$Builder;" />
-	</class>
-	<class name="android/app/SearchManager" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/content/DialogInterface$OnCancelListener" />
-		<implements name="android/content/DialogInterface$OnDismissListener" />
-		<method name="&lt;init>()V" />
-		<method name="getGlobalSearchActivity()Landroid/content/ComponentName;" since="16" />
-		<method name="getSearchableInfo(Landroid/content/ComponentName;)Landroid/app/SearchableInfo;" since="8" />
-		<method name="getSearchablesInGlobalSearch()Ljava/util/List;" since="8" />
-		<method name="setOnCancelListener(Landroid/app/SearchManager$OnCancelListener;)V" />
-		<method name="setOnDismissListener(Landroid/app/SearchManager$OnDismissListener;)V" />
-		<method name="startSearch(Ljava/lang/String;ZLandroid/content/ComponentName;Landroid/os/Bundle;Z)V" />
-		<method name="stopSearch()V" />
-		<method name="triggerSearch(Ljava/lang/String;Landroid/content/ComponentName;Landroid/os/Bundle;)V" since="5" />
-		<field name="ACTION_KEY" />
-		<field name="ACTION_MSG" />
-		<field name="APP_DATA" />
-		<field name="CURSOR_EXTRA_KEY_IN_PROGRESS" since="8" />
-		<field name="EXTRA_DATA_KEY" since="4" />
-		<field name="EXTRA_NEW_SEARCH" since="12" />
-		<field name="EXTRA_SELECT_QUERY" since="8" />
-		<field name="EXTRA_WEB_SEARCH_PENDINGINTENT" since="14" />
-		<field name="FLAG_QUERY_REFINEMENT" since="11" />
-		<field name="INTENT_ACTION_GLOBAL_SEARCH" since="8" />
-		<field name="INTENT_ACTION_SEARCHABLES_CHANGED" since="4" />
-		<field name="INTENT_ACTION_SEARCH_SETTINGS" since="8" />
-		<field name="INTENT_ACTION_SEARCH_SETTINGS_CHANGED" since="4" />
-		<field name="INTENT_ACTION_WEB_SEARCH_SETTINGS" since="4" />
-		<field name="INTENT_GLOBAL_SEARCH_ACTIVITY_CHANGED" since="16" />
-		<field name="MENU_KEY" />
-		<field name="MENU_KEYCODE" />
-		<field name="QUERY" />
-		<field name="SHORTCUT_MIME_TYPE" since="4" />
-		<field name="SUGGEST_COLUMN_AUDIO_CHANNEL_CONFIG" since="21" />
-		<field name="SUGGEST_COLUMN_CONTENT_TYPE" since="21" />
-		<field name="SUGGEST_COLUMN_DURATION" since="21" />
-		<field name="SUGGEST_COLUMN_FLAGS" since="11" />
-		<field name="SUGGEST_COLUMN_FORMAT" />
-		<field name="SUGGEST_COLUMN_ICON_1" />
-		<field name="SUGGEST_COLUMN_ICON_2" />
-		<field name="SUGGEST_COLUMN_INTENT_ACTION" />
-		<field name="SUGGEST_COLUMN_INTENT_DATA" />
-		<field name="SUGGEST_COLUMN_INTENT_DATA_ID" />
-		<field name="SUGGEST_COLUMN_INTENT_EXTRA_DATA" since="4" />
-		<field name="SUGGEST_COLUMN_IS_LIVE" since="21" />
-		<field name="SUGGEST_COLUMN_LAST_ACCESS_HINT" since="14" />
-		<field name="SUGGEST_COLUMN_PRODUCTION_YEAR" since="21" />
-		<field name="SUGGEST_COLUMN_PURCHASE_PRICE" since="21" />
-		<field name="SUGGEST_COLUMN_QUERY" />
-		<field name="SUGGEST_COLUMN_RATING_SCORE" since="21" />
-		<field name="SUGGEST_COLUMN_RATING_STYLE" since="21" />
-		<field name="SUGGEST_COLUMN_RENTAL_PRICE" since="21" />
-		<field name="SUGGEST_COLUMN_RESULT_CARD_IMAGE" since="21" />
-		<field name="SUGGEST_COLUMN_SHORTCUT_ID" since="4" />
-		<field name="SUGGEST_COLUMN_SPINNER_WHILE_REFRESHING" since="4" />
-		<field name="SUGGEST_COLUMN_TEXT_1" />
-		<field name="SUGGEST_COLUMN_TEXT_2" />
-		<field name="SUGGEST_COLUMN_TEXT_2_URL" since="8" />
-		<field name="SUGGEST_COLUMN_VIDEO_HEIGHT" since="21" />
-		<field name="SUGGEST_COLUMN_VIDEO_WIDTH" since="21" />
-		<field name="SUGGEST_MIME_TYPE" />
-		<field name="SUGGEST_NEVER_MAKE_SHORTCUT" since="4" />
-		<field name="SUGGEST_PARAMETER_LIMIT" since="5" />
-		<field name="SUGGEST_URI_PATH_QUERY" />
-		<field name="SUGGEST_URI_PATH_SHORTCUT" since="4" />
-		<field name="USER_QUERY" since="4" />
-	</class>
-	<class name="android/app/SearchManager$OnCancelListener" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onCancel()V" />
-	</class>
-	<class name="android/app/SearchManager$OnDismissListener" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onDismiss()V" />
-	</class>
-	<class name="android/app/SearchableInfo" since="8">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="autoUrlDetect()Z" />
-		<method name="getHintId()I" />
-		<method name="getImeOptions()I" />
-		<method name="getInputType()I" />
-		<method name="getSearchActivity()Landroid/content/ComponentName;" />
-		<method name="getSettingsDescriptionId()I" />
-		<method name="getSuggestAuthority()Ljava/lang/String;" />
-		<method name="getSuggestIntentAction()Ljava/lang/String;" />
-		<method name="getSuggestIntentData()Ljava/lang/String;" />
-		<method name="getSuggestPackage()Ljava/lang/String;" />
-		<method name="getSuggestPath()Ljava/lang/String;" />
-		<method name="getSuggestSelection()Ljava/lang/String;" />
-		<method name="getSuggestThreshold()I" />
-		<method name="getVoiceLanguageId()I" />
-		<method name="getVoiceLanguageModeId()I" />
-		<method name="getVoiceMaxResults()I" />
-		<method name="getVoicePromptTextId()I" />
-		<method name="getVoiceSearchEnabled()Z" />
-		<method name="getVoiceSearchLaunchRecognizer()Z" />
-		<method name="getVoiceSearchLaunchWebSearch()Z" />
-		<method name="queryAfterZeroResults()Z" />
-		<method name="shouldIncludeInGlobalSearch()Z" />
-		<method name="shouldRewriteQueryFromData()Z" />
-		<method name="shouldRewriteQueryFromText()Z" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/app/Service" since="1">
-		<extends name="android/content/ContextWrapper" />
-		<implements name="android/content/ComponentCallbacks" />
-		<implements name="android/content/ComponentCallbacks2" since="14" />
-		<method name="&lt;init>()V" />
-		<method name="dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V" />
-		<method name="getApplication()Landroid/app/Application;" />
-		<method name="onBind(Landroid/content/Intent;)Landroid/os/IBinder;" />
-		<method name="onCreate()V" />
-		<method name="onDestroy()V" />
-		<method name="onRebind(Landroid/content/Intent;)V" />
-		<method name="onStart(Landroid/content/Intent;I)V" />
-		<method name="onStartCommand(Landroid/content/Intent;II)I" since="5" />
-		<method name="onTaskRemoved(Landroid/content/Intent;)V" since="14" />
-		<method name="onUnbind(Landroid/content/Intent;)Z" />
-		<method name="setForeground(Z)V" />
-		<method name="startForeground(ILandroid/app/Notification;)V" since="5" />
-		<method name="stopForeground(Z)V" since="5" />
-		<method name="stopSelf()V" />
-		<method name="stopSelf(I)V" />
-		<method name="stopSelfResult(I)Z" />
-		<field name="START_CONTINUATION_MASK" since="5" />
-		<field name="START_FLAG_REDELIVERY" since="5" />
-		<field name="START_FLAG_RETRY" since="5" />
-		<field name="START_NOT_STICKY" since="5" />
-		<field name="START_REDELIVER_INTENT" since="5" />
-		<field name="START_STICKY" since="5" />
-		<field name="START_STICKY_COMPATIBILITY" since="5" />
-	</class>
-	<class name="android/app/SharedElementListener" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="handleRejectedSharedElements(Ljava/util/List;)V" />
-		<method name="remapSharedElements(Ljava/util/List;Ljava/util/Map;)V" />
-		<method name="setSharedElementEnd(Ljava/util/List;Ljava/util/List;Ljava/util/List;)V" />
-		<method name="setSharedElementStart(Ljava/util/List;Ljava/util/List;Ljava/util/List;)V" />
-	</class>
-	<class name="android/app/TabActivity" since="1">
-		<extends name="android/app/ActivityGroup" />
-		<method name="&lt;init>()V" />
-		<method name="getTabHost()Landroid/widget/TabHost;" />
-		<method name="getTabWidget()Landroid/widget/TabWidget;" />
-		<method name="setDefaultTab(I)V" />
-		<method name="setDefaultTab(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/app/TaskStackBuilder" since="16">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="addNextIntent(Landroid/content/Intent;)Landroid/app/TaskStackBuilder;" />
-		<method name="addNextIntentWithParentStack(Landroid/content/Intent;)Landroid/app/TaskStackBuilder;" />
-		<method name="addParentStack(Landroid/app/Activity;)Landroid/app/TaskStackBuilder;" />
-		<method name="addParentStack(Landroid/content/ComponentName;)Landroid/app/TaskStackBuilder;" />
-		<method name="addParentStack(Ljava/lang/Class;)Landroid/app/TaskStackBuilder;" />
-		<method name="create(Landroid/content/Context;)Landroid/app/TaskStackBuilder;" />
-		<method name="editIntentAt(I)Landroid/content/Intent;" />
-		<method name="getIntentCount()I" />
-		<method name="getIntents()[Landroid/content/Intent;" />
-		<method name="getPendingIntent(II)Landroid/app/PendingIntent;" />
-		<method name="getPendingIntent(IILandroid/os/Bundle;)Landroid/app/PendingIntent;" />
-		<method name="startActivities()V" />
-		<method name="startActivities(Landroid/os/Bundle;)V" />
-	</class>
-	<class name="android/app/TimePickerDialog" since="1">
-		<extends name="android/app/AlertDialog" />
-		<implements name="android/content/DialogInterface$OnClickListener" />
-		<implements name="android/widget/TimePicker$OnTimeChangedListener" />
-		<method name="&lt;init>(Landroid/content/Context;ILandroid/app/TimePickerDialog$OnTimeSetListener;IIZ)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/app/TimePickerDialog$OnTimeSetListener;IIZ)V" />
-		<method name="updateTime(II)V" />
-	</class>
-	<class name="android/app/TimePickerDialog$OnTimeSetListener" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onTimeSet(Landroid/widget/TimePicker;II)V" />
-	</class>
-	<class name="android/app/UiAutomation" since="18">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="clearWindowAnimationFrameStats()V" since="21" />
-		<method name="clearWindowContentFrameStats(I)Z" since="21" />
-		<method name="executeAndWaitForEvent(Ljava/lang/Runnable;Landroid/app/UiAutomation$AccessibilityEventFilter;J)Landroid/view/accessibility/AccessibilityEvent;" />
-		<method name="executeShellCommand(Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;" since="21" />
-		<method name="findFocus(I)Landroid/view/accessibility/AccessibilityNodeInfo;" since="21" />
-		<method name="getRootInActiveWindow()Landroid/view/accessibility/AccessibilityNodeInfo;" />
-		<method name="getServiceInfo()Landroid/accessibilityservice/AccessibilityServiceInfo;" />
-		<method name="getWindowAnimationFrameStats()Landroid/view/WindowAnimationFrameStats;" since="21" />
-		<method name="getWindowContentFrameStats(I)Landroid/view/WindowContentFrameStats;" since="21" />
-		<method name="getWindows()Ljava/util/List;" since="21" />
-		<method name="injectInputEvent(Landroid/view/InputEvent;Z)Z" />
-		<method name="performGlobalAction(I)Z" />
-		<method name="setOnAccessibilityEventListener(Landroid/app/UiAutomation$OnAccessibilityEventListener;)V" />
-		<method name="setRotation(I)Z" />
-		<method name="setRunAsMonkey(Z)V" />
-		<method name="setServiceInfo(Landroid/accessibilityservice/AccessibilityServiceInfo;)V" />
-		<method name="takeScreenshot()Landroid/graphics/Bitmap;" />
-		<method name="waitForIdle(JJ)V" />
-		<field name="ROTATION_FREEZE_0" />
-		<field name="ROTATION_FREEZE_180" />
-		<field name="ROTATION_FREEZE_270" />
-		<field name="ROTATION_FREEZE_90" />
-		<field name="ROTATION_FREEZE_CURRENT" />
-		<field name="ROTATION_UNFREEZE" />
-	</class>
-	<class name="android/app/UiAutomation$AccessibilityEventFilter" since="18">
-		<extends name="java/lang/Object" />
-		<method name="accept(Landroid/view/accessibility/AccessibilityEvent;)Z" />
-	</class>
-	<class name="android/app/UiAutomation$OnAccessibilityEventListener" since="18">
-		<extends name="java/lang/Object" />
-		<method name="onAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;)V" />
-	</class>
-	<class name="android/app/UiModeManager" since="8">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="disableCarMode(I)V" />
-		<method name="enableCarMode(I)V" />
-		<method name="getCurrentModeType()I" />
-		<method name="getNightMode()I" />
-		<method name="setNightMode(I)V" />
-		<field name="ACTION_ENTER_CAR_MODE" />
-		<field name="ACTION_ENTER_DESK_MODE" />
-		<field name="ACTION_EXIT_CAR_MODE" />
-		<field name="ACTION_EXIT_DESK_MODE" />
-		<field name="DISABLE_CAR_MODE_GO_HOME" />
-		<field name="ENABLE_CAR_MODE_GO_CAR_HOME" />
-		<field name="MODE_NIGHT_AUTO" />
-		<field name="MODE_NIGHT_NO" />
-		<field name="MODE_NIGHT_YES" />
-	</class>
-	<class name="android/app/VoiceInteractor" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="submitRequest(Landroid/app/VoiceInteractor$Request;)Z" />
-		<method name="supportsCommands([Ljava/lang/String;)[Z" />
-	</class>
-	<class name="android/app/VoiceInteractor$AbortVoiceRequest" since="21">
-		<extends name="android/app/VoiceInteractor$Request" />
-		<method name="&lt;init>(Ljava/lang/CharSequence;Landroid/os/Bundle;)V" />
-		<method name="onAbortResult(Landroid/os/Bundle;)V" />
-	</class>
-	<class name="android/app/VoiceInteractor$CommandRequest" since="21">
-		<extends name="android/app/VoiceInteractor$Request" />
-		<method name="&lt;init>(Ljava/lang/String;Landroid/os/Bundle;)V" />
-		<method name="onCommandResult(Landroid/os/Bundle;)V" />
-	</class>
-	<class name="android/app/VoiceInteractor$ConfirmationRequest" since="21">
-		<extends name="android/app/VoiceInteractor$Request" />
-		<method name="&lt;init>(Ljava/lang/CharSequence;Landroid/os/Bundle;)V" />
-		<method name="onConfirmationResult(ZLandroid/os/Bundle;)V" />
-	</class>
-	<class name="android/app/VoiceInteractor$Request" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="cancel()V" />
-		<method name="getActivity()Landroid/app/Activity;" />
-		<method name="getContext()Landroid/content/Context;" />
-		<method name="onAttached(Landroid/app/Activity;)V" />
-		<method name="onCancel()V" />
-		<method name="onDetached()V" />
-	</class>
-	<class name="android/app/WallpaperInfo" since="7">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/content/pm/ResolveInfo;)V" />
-		<method name="dump(Landroid/util/Printer;Ljava/lang/String;)V" />
-		<method name="getComponent()Landroid/content/ComponentName;" />
-		<method name="getPackageName()Ljava/lang/String;" />
-		<method name="getServiceInfo()Landroid/content/pm/ServiceInfo;" />
-		<method name="getServiceName()Ljava/lang/String;" />
-		<method name="getSettingsActivity()Ljava/lang/String;" />
-		<method name="loadAuthor(Landroid/content/pm/PackageManager;)Ljava/lang/CharSequence;" />
-		<method name="loadDescription(Landroid/content/pm/PackageManager;)Ljava/lang/CharSequence;" />
-		<method name="loadIcon(Landroid/content/pm/PackageManager;)Landroid/graphics/drawable/Drawable;" />
-		<method name="loadLabel(Landroid/content/pm/PackageManager;)Ljava/lang/CharSequence;" />
-		<method name="loadThumbnail(Landroid/content/pm/PackageManager;)Landroid/graphics/drawable/Drawable;" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/app/WallpaperManager" since="5">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="clear()V" />
-		<method name="clearWallpaperOffsets(Landroid/os/IBinder;)V" />
-		<method name="forgetLoadedWallpaper()V" since="14" />
-		<method name="getBuiltInDrawable()Landroid/graphics/drawable/Drawable;" since="19" />
-		<method name="getBuiltInDrawable(IIZFF)Landroid/graphics/drawable/Drawable;" since="19" />
-		<method name="getCropAndSetWallpaperIntent(Landroid/net/Uri;)Landroid/content/Intent;" since="19" />
-		<method name="getDesiredMinimumHeight()I" />
-		<method name="getDesiredMinimumWidth()I" />
-		<method name="getDrawable()Landroid/graphics/drawable/Drawable;" />
-		<method name="getFastDrawable()Landroid/graphics/drawable/Drawable;" />
-		<method name="getInstance(Landroid/content/Context;)Landroid/app/WallpaperManager;" />
-		<method name="getWallpaperInfo()Landroid/app/WallpaperInfo;" since="7" />
-		<method name="hasResourceWallpaper(I)Z" since="17" />
-		<method name="peekDrawable()Landroid/graphics/drawable/Drawable;" />
-		<method name="peekFastDrawable()Landroid/graphics/drawable/Drawable;" />
-		<method name="sendWallpaperCommand(Landroid/os/IBinder;Ljava/lang/String;IIILandroid/os/Bundle;)V" since="7" />
-		<method name="setBitmap(Landroid/graphics/Bitmap;)V" />
-		<method name="setResource(I)V" />
-		<method name="setStream(Ljava/io/InputStream;)V" />
-		<method name="setWallpaperOffsetSteps(FF)V" since="7" />
-		<method name="setWallpaperOffsets(Landroid/os/IBinder;FF)V" />
-		<method name="suggestDesiredDimensions(II)V" />
-		<field name="ACTION_CHANGE_LIVE_WALLPAPER" since="16" />
-		<field name="ACTION_CROP_AND_SET_WALLPAPER" since="19" />
-		<field name="ACTION_LIVE_WALLPAPER_CHOOSER" since="7" />
-		<field name="COMMAND_DROP" since="7" />
-		<field name="COMMAND_SECONDARY_TAP" since="11" />
-		<field name="COMMAND_TAP" since="7" />
-		<field name="EXTRA_LIVE_WALLPAPER_COMPONENT" since="16" />
-		<field name="WALLPAPER_PREVIEW_META_DATA" since="11" />
-	</class>
-	<class name="android/app/admin/DeviceAdminInfo" since="8">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/content/pm/ResolveInfo;)V" />
-		<method name="dump(Landroid/util/Printer;Ljava/lang/String;)V" />
-		<method name="getActivityInfo()Landroid/content/pm/ActivityInfo;" />
-		<method name="getComponent()Landroid/content/ComponentName;" />
-		<method name="getPackageName()Ljava/lang/String;" />
-		<method name="getReceiverName()Ljava/lang/String;" />
-		<method name="getTagForPolicy(I)Ljava/lang/String;" />
-		<method name="isVisible()Z" />
-		<method name="loadDescription(Landroid/content/pm/PackageManager;)Ljava/lang/CharSequence;" />
-		<method name="loadIcon(Landroid/content/pm/PackageManager;)Landroid/graphics/drawable/Drawable;" />
-		<method name="loadLabel(Landroid/content/pm/PackageManager;)Ljava/lang/CharSequence;" />
-		<method name="usesPolicy(I)Z" />
-		<field name="CREATOR" />
-		<field name="USES_ENCRYPTED_STORAGE" since="11" />
-		<field name="USES_POLICY_DISABLE_CAMERA" since="14" />
-		<field name="USES_POLICY_DISABLE_KEYGUARD_FEATURES" since="17" />
-		<field name="USES_POLICY_EXPIRE_PASSWORD" since="11" />
-		<field name="USES_POLICY_FORCE_LOCK" />
-		<field name="USES_POLICY_LIMIT_PASSWORD" />
-		<field name="USES_POLICY_RESET_PASSWORD" />
-		<field name="USES_POLICY_WATCH_LOGIN" />
-		<field name="USES_POLICY_WIPE_DATA" />
-	</class>
-	<class name="android/app/admin/DeviceAdminReceiver" since="8">
-		<extends name="android/content/BroadcastReceiver" />
-		<method name="&lt;init>()V" />
-		<method name="getManager(Landroid/content/Context;)Landroid/app/admin/DevicePolicyManager;" />
-		<method name="getWho(Landroid/content/Context;)Landroid/content/ComponentName;" />
-		<method name="onDisableRequested(Landroid/content/Context;Landroid/content/Intent;)Ljava/lang/CharSequence;" />
-		<method name="onDisabled(Landroid/content/Context;Landroid/content/Intent;)V" />
-		<method name="onEnabled(Landroid/content/Context;Landroid/content/Intent;)V" />
-		<method name="onPasswordChanged(Landroid/content/Context;Landroid/content/Intent;)V" />
-		<method name="onPasswordExpiring(Landroid/content/Context;Landroid/content/Intent;)V" since="11" />
-		<method name="onPasswordFailed(Landroid/content/Context;Landroid/content/Intent;)V" />
-		<method name="onPasswordSucceeded(Landroid/content/Context;Landroid/content/Intent;)V" />
-		<method name="onProfileProvisioningComplete(Landroid/content/Context;Landroid/content/Intent;)V" since="21" />
-		<field name="ACTION_DEVICE_ADMIN_DISABLED" />
-		<field name="ACTION_DEVICE_ADMIN_DISABLE_REQUESTED" />
-		<field name="ACTION_DEVICE_ADMIN_ENABLED" />
-		<field name="ACTION_PASSWORD_CHANGED" />
-		<field name="ACTION_PASSWORD_EXPIRING" since="11" />
-		<field name="ACTION_PASSWORD_FAILED" />
-		<field name="ACTION_PASSWORD_SUCCEEDED" />
-		<field name="ACTION_PROFILE_PROVISIONING_COMPLETE" since="21" />
-		<field name="DEVICE_ADMIN_META_DATA" />
-		<field name="EXTRA_DISABLE_WARNING" />
-	</class>
-	<class name="android/app/admin/DevicePolicyManager" since="8">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="addForwardingIntentFilter(Landroid/content/ComponentName;Landroid/content/IntentFilter;I)V" since="21" />
-		<method name="addPersistentPreferredActivity(Landroid/content/ComponentName;Landroid/content/IntentFilter;Landroid/content/ComponentName;)V" since="21" />
-		<method name="addUserRestriction(Landroid/content/ComponentName;Ljava/lang/String;)V" since="21" />
-		<method name="clearForwardingIntentFilters(Landroid/content/ComponentName;)V" since="21" />
-		<method name="clearPackagePersistentPreferredActivities(Landroid/content/ComponentName;Ljava/lang/String;)V" since="21" />
-		<method name="clearUserRestriction(Landroid/content/ComponentName;Ljava/lang/String;)V" since="21" />
-		<method name="createUser(Landroid/content/ComponentName;Ljava/lang/String;)Landroid/os/UserHandle;" since="21" />
-		<method name="enableSystemApp(Landroid/content/ComponentName;Landroid/content/Intent;)I" since="21" />
-		<method name="enableSystemApp(Landroid/content/ComponentName;Ljava/lang/String;)V" since="21" />
-		<method name="getAccountTypesWithManagementDisabled()[Ljava/lang/String;" since="21" />
-		<method name="getActiveAdmins()Ljava/util/List;" />
-		<method name="getApplicationRestrictions(Landroid/content/ComponentName;Ljava/lang/String;)Landroid/os/Bundle;" since="21" />
-		<method name="getCameraDisabled(Landroid/content/ComponentName;)Z" since="14" />
-		<method name="getCurrentFailedPasswordAttempts()I" />
-		<method name="getKeyguardDisabledFeatures(Landroid/content/ComponentName;)I" since="17" />
-		<method name="getMaximumFailedPasswordsForWipe(Landroid/content/ComponentName;)I" />
-		<method name="getMaximumTimeToLock(Landroid/content/ComponentName;)J" />
-		<method name="getPasswordExpiration(Landroid/content/ComponentName;)J" since="11" />
-		<method name="getPasswordExpirationTimeout(Landroid/content/ComponentName;)J" since="11" />
-		<method name="getPasswordHistoryLength(Landroid/content/ComponentName;)I" since="11" />
-		<method name="getPasswordMaximumLength(I)I" />
-		<method name="getPasswordMinimumLength(Landroid/content/ComponentName;)I" />
-		<method name="getPasswordMinimumLetters(Landroid/content/ComponentName;)I" since="11" />
-		<method name="getPasswordMinimumLowerCase(Landroid/content/ComponentName;)I" since="11" />
-		<method name="getPasswordMinimumNonLetter(Landroid/content/ComponentName;)I" since="11" />
-		<method name="getPasswordMinimumNumeric(Landroid/content/ComponentName;)I" since="11" />
-		<method name="getPasswordMinimumSymbols(Landroid/content/ComponentName;)I" since="11" />
-		<method name="getPasswordMinimumUpperCase(Landroid/content/ComponentName;)I" since="11" />
-		<method name="getPasswordQuality(Landroid/content/ComponentName;)I" />
-		<method name="getStorageEncryption(Landroid/content/ComponentName;)Z" since="11" />
-		<method name="getStorageEncryptionStatus()I" since="11" />
-		<method name="hasGrantedPolicy(Landroid/content/ComponentName;I)Z" since="11" />
-		<method name="isActivePasswordSufficient()Z" />
-		<method name="isAdminActive(Landroid/content/ComponentName;)Z" />
-		<method name="isApplicationBlocked(Landroid/content/ComponentName;Ljava/lang/String;)Z" since="21" />
-		<method name="isDeviceOwnerApp(Ljava/lang/String;)Z" since="18" />
-		<method name="isLockTaskPermitted(Landroid/content/ComponentName;)Z" since="21" />
-		<method name="isProfileOwnerApp(Ljava/lang/String;)Z" since="21" />
-		<method name="lockNow()V" />
-		<method name="removeActiveAdmin(Landroid/content/ComponentName;)V" />
-		<method name="removeUser(Landroid/content/ComponentName;Landroid/os/UserHandle;)Z" since="21" />
-		<method name="resetPassword(Ljava/lang/String;I)Z" />
-		<method name="setAccountManagementDisabled(Landroid/content/ComponentName;Ljava/lang/String;Z)V" since="21" />
-		<method name="setApplicationBlocked(Landroid/content/ComponentName;Ljava/lang/String;Z)Z" since="21" />
-		<method name="setApplicationRestrictions(Landroid/content/ComponentName;Ljava/lang/String;Landroid/os/Bundle;)V" since="21" />
-		<method name="setApplicationsBlocked(Landroid/content/ComponentName;Landroid/content/Intent;Z)I" since="21" />
-		<method name="setCameraDisabled(Landroid/content/ComponentName;Z)V" since="14" />
-		<method name="setGlobalSetting(Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;)V" since="21" />
-		<method name="setKeyguardDisabledFeatures(Landroid/content/ComponentName;I)V" since="17" />
-		<method name="setLockTaskComponents([Landroid/content/ComponentName;)V" since="21" />
-		<method name="setMaximumFailedPasswordsForWipe(Landroid/content/ComponentName;I)V" />
-		<method name="setMaximumTimeToLock(Landroid/content/ComponentName;J)V" />
-		<method name="setPasswordExpirationTimeout(Landroid/content/ComponentName;J)V" since="11" />
-		<method name="setPasswordHistoryLength(Landroid/content/ComponentName;I)V" since="11" />
-		<method name="setPasswordMinimumLength(Landroid/content/ComponentName;I)V" />
-		<method name="setPasswordMinimumLetters(Landroid/content/ComponentName;I)V" since="11" />
-		<method name="setPasswordMinimumLowerCase(Landroid/content/ComponentName;I)V" since="11" />
-		<method name="setPasswordMinimumNonLetter(Landroid/content/ComponentName;I)V" since="11" />
-		<method name="setPasswordMinimumNumeric(Landroid/content/ComponentName;I)V" since="11" />
-		<method name="setPasswordMinimumSymbols(Landroid/content/ComponentName;I)V" since="11" />
-		<method name="setPasswordMinimumUpperCase(Landroid/content/ComponentName;I)V" since="11" />
-		<method name="setPasswordQuality(Landroid/content/ComponentName;I)V" />
-		<method name="setProfileEnabled(Landroid/content/ComponentName;)V" since="21" />
-		<method name="setSecureSetting(Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;)V" since="21" />
-		<method name="setStorageEncryption(Landroid/content/ComponentName;Z)I" since="11" />
-		<method name="wipeData(I)V" />
-		<field name="ACTION_ADD_DEVICE_ADMIN" />
-		<field name="ACTION_PROVISION_MANAGED_PROFILE" since="21" />
-		<field name="ACTION_SET_NEW_PASSWORD" />
-		<field name="ACTION_START_ENCRYPTION" since="11" />
-		<field name="ENCRYPTION_STATUS_ACTIVATING" since="11" />
-		<field name="ENCRYPTION_STATUS_ACTIVE" since="11" />
-		<field name="ENCRYPTION_STATUS_INACTIVE" since="11" />
-		<field name="ENCRYPTION_STATUS_UNSUPPORTED" since="11" />
-		<field name="EXTRA_ADD_EXPLANATION" />
-		<field name="EXTRA_DEVICE_ADMIN" />
-		<field name="EXTRA_PROVISIONING_DEFAULT_MANAGED_PROFILE_NAME" since="21" />
-		<field name="EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME" since="21" />
-		<field name="FLAG_TO_MANAGED_PROFILE" since="21" />
-		<field name="FLAG_TO_PRIMARY_USER" since="21" />
-		<field name="KEYGUARD_DISABLE_FEATURES_ALL" since="17" />
-		<field name="KEYGUARD_DISABLE_FEATURES_NONE" since="17" />
-		<field name="KEYGUARD_DISABLE_SECURE_CAMERA" since="17" />
-		<field name="KEYGUARD_DISABLE_SECURE_NOTIFICATIONS" since="21" />
-		<field name="KEYGUARD_DISABLE_TRUST_AGENTS" since="21" />
-		<field name="KEYGUARD_DISABLE_UNREDACTED_NOTIFICATIONS" since="21" />
-		<field name="KEYGUARD_DISABLE_WIDGETS_ALL" since="17" />
-		<field name="PASSWORD_QUALITY_ALPHABETIC" />
-		<field name="PASSWORD_QUALITY_ALPHANUMERIC" />
-		<field name="PASSWORD_QUALITY_BIOMETRIC_WEAK" since="14" />
-		<field name="PASSWORD_QUALITY_COMPLEX" since="11" />
-		<field name="PASSWORD_QUALITY_NUMERIC" />
-		<field name="PASSWORD_QUALITY_SOMETHING" />
-		<field name="PASSWORD_QUALITY_UNSPECIFIED" />
-		<field name="RESET_PASSWORD_REQUIRE_ENTRY" />
-		<field name="WIPE_EXTERNAL_STORAGE" since="9" />
-	</class>
-	<class name="android/app/backup/BackupAgent" since="8">
-		<extends name="android/content/ContextWrapper" />
-		<method name="&lt;init>()V" />
-		<method name="fullBackupFile(Ljava/io/File;Landroid/app/backup/FullBackupDataOutput;)V" since="14" />
-		<method name="onBackup(Landroid/os/ParcelFileDescriptor;Landroid/app/backup/BackupDataOutput;Landroid/os/ParcelFileDescriptor;)V" />
-		<method name="onCreate()V" />
-		<method name="onDestroy()V" />
-		<method name="onFullBackup(Landroid/app/backup/FullBackupDataOutput;)V" since="14" />
-		<method name="onRestore(Landroid/app/backup/BackupDataInput;ILandroid/os/ParcelFileDescriptor;)V" />
-		<method name="onRestoreFile(Landroid/os/ParcelFileDescriptor;JLjava/io/File;IJJ)V" since="14" />
-		<field name="TYPE_DIRECTORY" since="14" />
-		<field name="TYPE_FILE" since="14" />
-	</class>
-	<class name="android/app/backup/BackupAgentHelper" since="8">
-		<extends name="android/app/backup/BackupAgent" />
-		<method name="&lt;init>()V" />
-		<method name="addHelper(Ljava/lang/String;Landroid/app/backup/BackupHelper;)V" />
-	</class>
-	<class name="android/app/backup/BackupDataInput" since="8">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getDataSize()I" />
-		<method name="getKey()Ljava/lang/String;" />
-		<method name="readEntityData([BII)I" />
-		<method name="readNextHeader()Z" />
-		<method name="skipEntityData()V" />
-	</class>
-	<class name="android/app/backup/BackupDataInputStream" since="8">
-		<extends name="java/io/InputStream" />
-		<method name="&lt;init>()V" />
-		<method name="getKey()Ljava/lang/String;" />
-		<method name="size()I" />
-	</class>
-	<class name="android/app/backup/BackupDataOutput" since="8">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="writeEntityData([BI)I" />
-		<method name="writeEntityHeader(Ljava/lang/String;I)I" />
-	</class>
-	<class name="android/app/backup/BackupHelper" since="8">
-		<extends name="java/lang/Object" />
-		<method name="performBackup(Landroid/os/ParcelFileDescriptor;Landroid/app/backup/BackupDataOutput;Landroid/os/ParcelFileDescriptor;)V" />
-		<method name="restoreEntity(Landroid/app/backup/BackupDataInputStream;)V" />
-		<method name="writeNewStateDescription(Landroid/os/ParcelFileDescriptor;)V" />
-	</class>
-	<class name="android/app/backup/BackupManager" since="8">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="dataChanged()V" />
-		<method name="dataChanged(Ljava/lang/String;)V" />
-		<method name="requestRestore(Landroid/app/backup/RestoreObserver;)I" />
-	</class>
-	<class name="android/app/backup/FileBackupHelper" since="8">
-		<extends name="android/app/backup/FileBackupHelperBase" />
-		<implements name="android/app/backup/BackupHelper" />
-		<method name="&lt;init>(Landroid/content/Context;[Ljava/lang/String;)V" />
-	</class>
-	<class name="android/app/backup/FileBackupHelperBase" since="8">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="writeNewStateDescription(Landroid/os/ParcelFileDescriptor;)V" />
-	</class>
-	<class name="android/app/backup/FullBackupDataOutput" since="14">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="android/app/backup/RestoreObserver" since="8">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="onUpdate(ILjava/lang/String;)V" />
-		<method name="restoreFinished(I)V" />
-		<method name="restoreStarting(I)V" />
-	</class>
-	<class name="android/app/backup/SharedPreferencesBackupHelper" since="8">
-		<extends name="android/app/backup/FileBackupHelperBase" />
-		<implements name="android/app/backup/BackupHelper" />
-		<method name="&lt;init>(Landroid/content/Context;[Ljava/lang/String;)V" />
-	</class>
-	<class name="android/app/job/JobInfo" since="21">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="getBackoffPolicy()I" />
-		<method name="getExtras()Landroid/os/PersistableBundle;" />
-		<method name="getId()I" />
-		<method name="getInitialBackoffMillis()J" />
-		<method name="getIntervalMillis()J" />
-		<method name="getMaxExecutionDelayMillis()J" />
-		<method name="getMinLatencyMillis()J" />
-		<method name="getNetworkCapabilities()I" />
-		<method name="getService()Landroid/content/ComponentName;" />
-		<method name="isPeriodic()Z" />
-		<method name="isRequireCharging()Z" />
-		<method name="isRequireDeviceIdle()Z" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/app/job/JobInfo$BackoffPolicy" since="21">
-		<extends name="java/lang/Object" />
-		<field name="EXPONENTIAL" />
-		<field name="LINEAR" />
-	</class>
-	<class name="android/app/job/JobInfo$Builder" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(ILandroid/content/ComponentName;)V" />
-		<method name="build()Landroid/app/job/JobInfo;" />
-		<method name="setBackoffCriteria(JI)Landroid/app/job/JobInfo$Builder;" />
-		<method name="setExtras(Landroid/os/PersistableBundle;)Landroid/app/job/JobInfo$Builder;" />
-		<method name="setMinimumLatency(J)Landroid/app/job/JobInfo$Builder;" />
-		<method name="setOverrideDeadline(J)Landroid/app/job/JobInfo$Builder;" />
-		<method name="setPeriodic(J)Landroid/app/job/JobInfo$Builder;" />
-		<method name="setRequiredNetworkCapabilities(I)Landroid/app/job/JobInfo$Builder;" />
-		<method name="setRequiresCharging(Z)Landroid/app/job/JobInfo$Builder;" />
-		<method name="setRequiresDeviceIdle(Z)Landroid/app/job/JobInfo$Builder;" />
-	</class>
-	<class name="android/app/job/JobInfo$NetworkType" since="21">
-		<extends name="java/lang/Object" />
-		<field name="ANY" />
-		<field name="NONE" />
-		<field name="UNMETERED" />
-	</class>
-	<class name="android/app/job/JobParameters" since="21">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="getExtras()Landroid/os/PersistableBundle;" />
-		<method name="getJobId()I" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/app/job/JobScheduler" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="cancel(I)V" />
-		<method name="cancelAll()V" />
-		<method name="getAllPendingJobs()Ljava/util/List;" />
-		<method name="schedule(Landroid/app/job/JobInfo;)I" />
-		<field name="RESULT_FAILURE" />
-		<field name="RESULT_SUCCESS" />
-	</class>
-	<class name="android/app/job/JobService" since="21">
-		<extends name="android/app/Service" />
-		<method name="&lt;init>()V" />
-		<method name="jobFinished(Landroid/app/job/JobParameters;Z)V" />
-		<method name="onStartJob(Landroid/app/job/JobParameters;)Z" />
-		<method name="onStopJob(Landroid/app/job/JobParameters;)Z" />
-		<field name="PERMISSION_BIND" />
-	</class>
-	<class name="android/appwidget/AppWidgetHost" since="3">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/content/Context;I)V" />
-		<method name="allocateAppWidgetId()I" />
-		<method name="clearViews()V" since="11" />
-		<method name="createView(Landroid/content/Context;ILandroid/appwidget/AppWidgetProviderInfo;)Landroid/appwidget/AppWidgetHostView;" />
-		<method name="deleteAllHosts()V" />
-		<method name="deleteAppWidgetId(I)V" />
-		<method name="deleteHost()V" />
-		<method name="onCreateView(Landroid/content/Context;ILandroid/appwidget/AppWidgetProviderInfo;)Landroid/appwidget/AppWidgetHostView;" />
-		<method name="onProviderChanged(ILandroid/appwidget/AppWidgetProviderInfo;)V" />
-		<method name="onProvidersChanged()V" since="17" />
-		<method name="startListening()V" />
-		<method name="stopListening()V" />
-	</class>
-	<class name="android/appwidget/AppWidgetHostView" since="3">
-		<extends name="android/widget/FrameLayout" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;II)V" />
-		<method name="getAppWidgetId()I" />
-		<method name="getAppWidgetInfo()Landroid/appwidget/AppWidgetProviderInfo;" />
-		<method name="getDefaultPaddingForWidget(Landroid/content/Context;Landroid/content/ComponentName;Landroid/graphics/Rect;)Landroid/graphics/Rect;" since="15" />
-		<method name="getDefaultView()Landroid/view/View;" />
-		<method name="getErrorView()Landroid/view/View;" />
-		<method name="prepareView(Landroid/view/View;)V" />
-		<method name="setAppWidget(ILandroid/appwidget/AppWidgetProviderInfo;)V" />
-		<method name="updateAppWidget(Landroid/widget/RemoteViews;)V" />
-		<method name="updateAppWidgetOptions(Landroid/os/Bundle;)V" since="16" />
-		<method name="updateAppWidgetSize(Landroid/os/Bundle;IIII)V" since="16" />
-	</class>
-	<class name="android/appwidget/AppWidgetManager" since="3">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="bindAppWidgetId(ILandroid/content/ComponentName;)V" />
-		<method name="bindAppWidgetIdIfAllowed(ILandroid/content/ComponentName;)Z" since="16" />
-		<method name="bindAppWidgetIdIfAllowed(ILandroid/content/ComponentName;Landroid/os/Bundle;)Z" since="17" />
-		<method name="getAppWidgetIds(Landroid/content/ComponentName;)[I" />
-		<method name="getAppWidgetInfo(I)Landroid/appwidget/AppWidgetProviderInfo;" />
-		<method name="getAppWidgetOptions(I)Landroid/os/Bundle;" since="16" />
-		<method name="getInstalledProviders()Ljava/util/List;" />
-		<method name="getInstance(Landroid/content/Context;)Landroid/appwidget/AppWidgetManager;" />
-		<method name="notifyAppWidgetViewDataChanged(II)V" since="11" />
-		<method name="notifyAppWidgetViewDataChanged([II)V" since="11" />
-		<method name="partiallyUpdateAppWidget(ILandroid/widget/RemoteViews;)V" since="11" />
-		<method name="partiallyUpdateAppWidget([ILandroid/widget/RemoteViews;)V" since="11" />
-		<method name="updateAppWidget(ILandroid/widget/RemoteViews;)V" />
-		<method name="updateAppWidget(Landroid/content/ComponentName;Landroid/widget/RemoteViews;)V" />
-		<method name="updateAppWidget([ILandroid/widget/RemoteViews;)V" />
-		<method name="updateAppWidgetOptions(ILandroid/os/Bundle;)V" since="16" />
-		<field name="ACTION_APPWIDGET_BIND" since="16" />
-		<field name="ACTION_APPWIDGET_CONFIGURE" />
-		<field name="ACTION_APPWIDGET_DELETED" />
-		<field name="ACTION_APPWIDGET_DISABLED" />
-		<field name="ACTION_APPWIDGET_ENABLED" />
-		<field name="ACTION_APPWIDGET_HOST_RESTORED" since="21" />
-		<field name="ACTION_APPWIDGET_OPTIONS_CHANGED" since="16" />
-		<field name="ACTION_APPWIDGET_PICK" />
-		<field name="ACTION_APPWIDGET_RESTORED" since="21" />
-		<field name="ACTION_APPWIDGET_UPDATE" />
-		<field name="EXTRA_APPWIDGET_ID" />
-		<field name="EXTRA_APPWIDGET_IDS" />
-		<field name="EXTRA_APPWIDGET_OLD_IDS" since="21" />
-		<field name="EXTRA_APPWIDGET_OPTIONS" since="16" />
-		<field name="EXTRA_APPWIDGET_PROVIDER" since="16" />
-		<field name="EXTRA_CUSTOM_EXTRAS" />
-		<field name="EXTRA_CUSTOM_INFO" />
-		<field name="EXTRA_HOST_ID" since="21" />
-		<field name="INVALID_APPWIDGET_ID" />
-		<field name="META_DATA_APPWIDGET_PROVIDER" />
-		<field name="OPTION_APPWIDGET_HOST_CATEGORY" since="17" />
-		<field name="OPTION_APPWIDGET_MAX_HEIGHT" since="16" />
-		<field name="OPTION_APPWIDGET_MAX_WIDTH" since="16" />
-		<field name="OPTION_APPWIDGET_MIN_HEIGHT" since="16" />
-		<field name="OPTION_APPWIDGET_MIN_WIDTH" since="16" />
-	</class>
-	<class name="android/appwidget/AppWidgetProvider" since="3">
-		<extends name="android/content/BroadcastReceiver" />
-		<method name="&lt;init>()V" />
-		<method name="onAppWidgetOptionsChanged(Landroid/content/Context;Landroid/appwidget/AppWidgetManager;ILandroid/os/Bundle;)V" since="16" />
-		<method name="onDeleted(Landroid/content/Context;[I)V" />
-		<method name="onDisabled(Landroid/content/Context;)V" />
-		<method name="onEnabled(Landroid/content/Context;)V" />
-		<method name="onRestored(Landroid/content/Context;[I[I)V" since="21" />
-		<method name="onUpdate(Landroid/content/Context;Landroid/appwidget/AppWidgetManager;[I)V" />
-	</class>
-	<class name="android/appwidget/AppWidgetProviderInfo" since="3">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/os/Parcel;)V" />
-		<method name="clone()Landroid/appwidget/AppWidgetProviderInfo;" since="17" />
-		<field name="CREATOR" />
-		<field name="RESIZE_BOTH" since="12" />
-		<field name="RESIZE_HORIZONTAL" since="12" />
-		<field name="RESIZE_NONE" since="12" />
-		<field name="RESIZE_VERTICAL" since="12" />
-		<field name="WIDGET_CATEGORY_HOME_SCREEN" since="17" />
-		<field name="WIDGET_CATEGORY_KEYGUARD" since="17" />
-		<field name="WIDGET_CATEGORY_RECENTS" since="21" />
-		<field name="autoAdvanceViewId" since="11" />
-		<field name="configure" />
-		<field name="icon" />
-		<field name="initialKeyguardLayout" since="17" />
-		<field name="initialLayout" />
-		<field name="label" />
-		<field name="minHeight" />
-		<field name="minResizeHeight" since="14" />
-		<field name="minResizeWidth" since="14" />
-		<field name="minWidth" />
-		<field name="previewImage" since="11" />
-		<field name="provider" />
-		<field name="resizeMode" since="12" />
-		<field name="updatePeriodMillis" />
-		<field name="widgetCategory" since="17" />
-	</class>
-	<class name="android/bluetooth/BluetoothA2dp" since="11">
-		<extends name="java/lang/Object" />
-		<implements name="android/bluetooth/BluetoothProfile" />
-		<method name="&lt;init>()V" />
-		<method name="isA2dpPlaying(Landroid/bluetooth/BluetoothDevice;)Z" />
-		<field name="ACTION_CONNECTION_STATE_CHANGED" />
-		<field name="ACTION_PLAYING_STATE_CHANGED" />
-		<field name="STATE_NOT_PLAYING" />
-		<field name="STATE_PLAYING" />
-	</class>
-	<class name="android/bluetooth/BluetoothAdapter" since="5">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="cancelDiscovery()Z" />
-		<method name="checkBluetoothAddress(Ljava/lang/String;)Z" />
-		<method name="closeProfileProxy(ILandroid/bluetooth/BluetoothProfile;)V" since="11" />
-		<method name="disable()Z" />
-		<method name="enable()Z" />
-		<method name="getAddress()Ljava/lang/String;" />
-		<method name="getBluetoothLeAdvertiser()Landroid/bluetooth/le/BluetoothLeAdvertiser;" since="21" />
-		<method name="getBluetoothLeScanner()Landroid/bluetooth/le/BluetoothLeScanner;" since="21" />
-		<method name="getBondedDevices()Ljava/util/Set;" />
-		<method name="getDefaultAdapter()Landroid/bluetooth/BluetoothAdapter;" />
-		<method name="getName()Ljava/lang/String;" />
-		<method name="getProfileConnectionState(I)I" since="14" />
-		<method name="getProfileProxy(Landroid/content/Context;Landroid/bluetooth/BluetoothProfile$ServiceListener;I)Z" since="11" />
-		<method name="getRemoteDevice(Ljava/lang/String;)Landroid/bluetooth/BluetoothDevice;" />
-		<method name="getRemoteDevice([B)Landroid/bluetooth/BluetoothDevice;" since="16" />
-		<method name="getScanMode()I" />
-		<method name="getState()I" />
-		<method name="isDiscovering()Z" />
-		<method name="isEnabled()Z" />
-		<method name="listenUsingInsecureRfcommWithServiceRecord(Ljava/lang/String;Ljava/util/UUID;)Landroid/bluetooth/BluetoothServerSocket;" since="10" />
-		<method name="listenUsingRfcommWithServiceRecord(Ljava/lang/String;Ljava/util/UUID;)Landroid/bluetooth/BluetoothServerSocket;" />
-		<method name="setName(Ljava/lang/String;)Z" />
-		<method name="startDiscovery()Z" />
-		<method name="startLeScan(Landroid/bluetooth/BluetoothAdapter$LeScanCallback;)Z" since="18" />
-		<method name="startLeScan([Ljava/util/UUID;Landroid/bluetooth/BluetoothAdapter$LeScanCallback;)Z" since="18" />
-		<method name="stopLeScan(Landroid/bluetooth/BluetoothAdapter$LeScanCallback;)V" since="18" />
-		<field name="ACTION_CONNECTION_STATE_CHANGED" since="11" />
-		<field name="ACTION_DISCOVERY_FINISHED" />
-		<field name="ACTION_DISCOVERY_STARTED" />
-		<field name="ACTION_LOCAL_NAME_CHANGED" />
-		<field name="ACTION_REQUEST_DISCOVERABLE" />
-		<field name="ACTION_REQUEST_ENABLE" />
-		<field name="ACTION_SCAN_MODE_CHANGED" />
-		<field name="ACTION_STATE_CHANGED" />
-		<field name="ERROR" />
-		<field name="EXTRA_CONNECTION_STATE" since="11" />
-		<field name="EXTRA_DISCOVERABLE_DURATION" />
-		<field name="EXTRA_LOCAL_NAME" />
-		<field name="EXTRA_PREVIOUS_CONNECTION_STATE" since="11" />
-		<field name="EXTRA_PREVIOUS_SCAN_MODE" />
-		<field name="EXTRA_PREVIOUS_STATE" />
-		<field name="EXTRA_SCAN_MODE" />
-		<field name="EXTRA_STATE" />
-		<field name="SCAN_MODE_CONNECTABLE" />
-		<field name="SCAN_MODE_CONNECTABLE_DISCOVERABLE" />
-		<field name="SCAN_MODE_NONE" />
-		<field name="STATE_CONNECTED" since="11" />
-		<field name="STATE_CONNECTING" since="11" />
-		<field name="STATE_DISCONNECTED" since="11" />
-		<field name="STATE_DISCONNECTING" since="11" />
-		<field name="STATE_OFF" />
-		<field name="STATE_ON" />
-		<field name="STATE_TURNING_OFF" />
-		<field name="STATE_TURNING_ON" />
-	</class>
-	<class name="android/bluetooth/BluetoothAdapter$LeScanCallback" since="18">
-		<extends name="java/lang/Object" />
-		<method name="onLeScan(Landroid/bluetooth/BluetoothDevice;I[B)V" />
-	</class>
-	<class name="android/bluetooth/BluetoothAssignedNumbers" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="AAMP_OF_AMERICA" since="19" />
-		<field name="ACCEL_SEMICONDUCTOR" />
-		<field name="ACE_SENSOR" since="19" />
-		<field name="ADIDAS" since="19" />
-		<field name="ADVANCED_PANMOBIL_SYSTEMS" since="19" />
-		<field name="AIROHA_TECHNOLOGY" since="19" />
-		<field name="ALCATEL" />
-		<field name="ALPWISE" since="19" />
-		<field name="AMICCOM_ELECTRONICS" since="19" />
-		<field name="APLIX" since="19" />
-		<field name="APPLE" />
-		<field name="APT_LICENSING" />
-		<field name="ARCHOS" since="19" />
-		<field name="ARP_DEVICES" since="19" />
-		<field name="ATHEROS_COMMUNICATIONS" />
-		<field name="ATMEL" />
-		<field name="AUSTCO_COMMUNICATION_SYSTEMS" since="19" />
-		<field name="AUTONET_MOBILE" since="19" />
-		<field name="AVAGO" />
-		<field name="AVM_BERLIN" />
-		<field name="A_AND_D_ENGINEERING" since="19" />
-		<field name="A_AND_R_CAMBRIDGE" since="19" />
-		<field name="BANDSPEED" />
-		<field name="BAND_XI_INTERNATIONAL" since="19" />
-		<field name="BDE_TECHNOLOGY" since="19" />
-		<field name="BEATS_ELECTRONICS" since="19" />
-		<field name="BEAUTIFUL_ENTERPRISE" since="19" />
-		<field name="BEKEY" since="19" />
-		<field name="BELKIN_INTERNATIONAL" />
-		<field name="BINAURIC" since="19" />
-		<field name="BIOSENTRONICS" since="19" />
-		<field name="BLUEGIGA" />
-		<field name="BLUERADIOS" since="19" />
-		<field name="BLUETOOTH_SIG" />
-		<field name="BLUETREK_TECHNOLOGIES" since="19" />
-		<field name="BOSE" since="19" />
-		<field name="BRIARTEK" since="19" />
-		<field name="BROADCOM" />
-		<field name="CAEN_RFID" since="19" />
-		<field name="CAMBRIDGE_SILICON_RADIO" />
-		<field name="CATC" />
-		<field name="CINETIX" since="19" />
-		<field name="CLARINOX_TECHNOLOGIES" since="19" />
-		<field name="COLORFY" since="19" />
-		<field name="COMMIL" />
-		<field name="CONEXANT_SYSTEMS" />
-		<field name="CONNECTBLUE" since="19" />
-		<field name="CONTINENTAL_AUTOMOTIVE" />
-		<field name="CONWISE_TECHNOLOGY" />
-		<field name="CREATIVE_TECHNOLOGY" since="19" />
-		<field name="C_TECHNOLOGIES" />
-		<field name="DANLERS" since="19" />
-		<field name="DELORME_PUBLISHING_COMPANY" since="19" />
-		<field name="DEXCOM" since="19" />
-		<field name="DIALOG_SEMICONDUCTOR" since="19" />
-		<field name="DIGIANSWER" />
-		<field name="ECLIPSE" />
-		<field name="ECOTEST" since="19" />
-		<field name="ELGATO_SYSTEMS" since="19" />
-		<field name="EM_MICROELECTRONIC_MARIN" />
-		<field name="EQUINOX_AG" since="19" />
-		<field name="ERICSSON_TECHNOLOGY" />
-		<field name="EVLUMA" since="19" />
-		<field name="FREE2MOVE" />
-		<field name="FUNAI_ELECTRIC" since="19" />
-		<field name="GARMIN_INTERNATIONAL" since="19" />
-		<field name="GCT_SEMICONDUCTOR" />
-		<field name="GELO" since="19" />
-		<field name="GENEQ" since="19" />
-		<field name="GENERAL_MOTORS" since="19" />
-		<field name="GENNUM" />
-		<field name="GEOFORCE" since="19" />
-		<field name="GIBSON_GUITARS" since="19" />
-		<field name="GN_NETCOM" since="19" />
-		<field name="GN_RESOUND" since="19" />
-		<field name="GOOGLE" since="19" />
-		<field name="GREEN_THROTTLE_GAMES" since="19" />
-		<field name="GROUP_SENSE" since="19" />
-		<field name="HANLYNN_TECHNOLOGIES" since="19" />
-		<field name="HARMAN_INTERNATIONAL" />
-		<field name="HEWLETT_PACKARD" since="19" />
-		<field name="HITACHI" />
-		<field name="HOSIDEN" since="19" />
-		<field name="IBM" />
-		<field name="INFINEON_TECHNOLOGIES" />
-		<field name="INGENIEUR_SYSTEMGRUPPE_ZAHN" since="19" />
-		<field name="INTEGRATED_SILICON_SOLUTION" />
-		<field name="INTEGRATED_SYSTEM_SOLUTION" />
-		<field name="INTEL" />
-		<field name="INVENTEL" />
-		<field name="IPEXTREME" />
-		<field name="I_TECH_DYNAMIC_GLOBAL_DISTRIBUTION" since="19" />
-		<field name="JAWBONE" since="19" />
-		<field name="JIANGSU_TOPPOWER_AUTOMOTIVE_ELECTRONICS" since="19" />
-		<field name="JOHNSON_CONTROLS" since="19" />
-		<field name="J_AND_M" />
-		<field name="KAWANTECH" since="19" />
-		<field name="KC_TECHNOLOGY" />
-		<field name="KENSINGTON_COMPUTER_PRODUCTS_GROUP" since="19" />
-		<field name="LAIRD_TECHNOLOGIES" since="19" />
-		<field name="LESSWIRE" since="19" />
-		<field name="LG_ELECTRONICS" since="19" />
-		<field name="LINAK" since="19" />
-		<field name="LUCENT" />
-		<field name="LUDUS_HELSINKI" since="19" />
-		<field name="MACRONIX" />
-		<field name="MAGNETI_MARELLI" since="19" />
-		<field name="MANSELLA" />
-		<field name="MARVELL" />
-		<field name="MATSUSHITA_ELECTRIC" />
-		<field name="MC10" since="19" />
-		<field name="MEDIATEK" />
-		<field name="MESO_INTERNATIONAL" since="19" />
-		<field name="META_WATCH" since="19" />
-		<field name="MEWTEL_TECHNOLOGY" />
-		<field name="MICOMMAND" since="19" />
-		<field name="MICROCHIP_TECHNOLOGY" since="19" />
-		<field name="MICROSOFT" />
-		<field name="MINDTREE" since="19" />
-		<field name="MISFIT_WEARABLES" since="19" />
-		<field name="MITEL_SEMICONDUCTOR" />
-		<field name="MITSUBISHI_ELECTRIC" />
-		<field name="MOBILIAN_CORPORATION" />
-		<field name="MONSTER" since="19" />
-		<field name="MOTOROLA" />
-		<field name="MSTAR_SEMICONDUCTOR" since="19" />
-		<field name="MUZIK" since="19" />
-		<field name="NEC" />
-		<field name="NEC_LIGHTING" since="19" />
-		<field name="NEWLOGIC" />
-		<field name="NIKE" since="19" />
-		<field name="NINE_SOLUTIONS" since="19" />
-		<field name="NOKIA_MOBILE_PHONES" />
-		<field name="NORDIC_SEMICONDUCTOR" />
-		<field name="NORWOOD_SYSTEMS" />
-		<field name="ODM_TECHNOLOGY" since="19" />
-		<field name="OMEGAWAVE" since="19" />
-		<field name="ONSET_COMPUTER" since="19" />
-		<field name="OPEN_INTERFACE" />
-		<field name="OTL_DYNAMICS" since="19" />
-		<field name="PANDA_OCEAN" since="19" />
-		<field name="PARROT" />
-		<field name="PARTHUS_TECHNOLOGIES" />
-		<field name="PASSIF_SEMICONDUCTOR" since="19" />
-		<field name="PETER_SYSTEMTECHNIK" since="19" />
-		<field name="PHILIPS_SEMICONDUCTORS" />
-		<field name="PLANTRONICS" />
-		<field name="POLAR_ELECTRO" since="19" />
-		<field name="POLAR_ELECTRO_EUROPE" since="19" />
-		<field name="PROCTER_AND_GAMBLE" since="19" />
-		<field name="QUALCOMM" />
-		<field name="QUALCOMM_CONNECTED_EXPERIENCES" since="19" />
-		<field name="QUALCOMM_INNOVATION_CENTER" since="19" />
-		<field name="QUALCOMM_LABS" since="19" />
-		<field name="QUALCOMM_TECHNOLOGIES" since="19" />
-		<field name="QUINTIC" since="19" />
-		<field name="QUUPPA" since="19" />
-		<field name="RALINK_TECHNOLOGY" />
-		<field name="RDA_MICROELECTRONICS" since="19" />
-		<field name="REALTEK_SEMICONDUCTOR" />
-		<field name="RED_M" />
-		<field name="RENESAS_TECHNOLOGY" />
-		<field name="RESEARCH_IN_MOTION" />
-		<field name="RF_MICRO_DEVICES" />
-		<field name="RIVIERAWAVES" />
-		<field name="ROHDE_AND_SCHWARZ" />
-		<field name="RTX_TELECOM" />
-		<field name="SAMSUNG_ELECTRONICS" since="19" />
-		<field name="SARIS_CYCLING_GROUP" since="19" />
-		<field name="SEERS_TECHNOLOGY" since="19" />
-		<field name="SEIKO_EPSON" />
-		<field name="SELFLY" since="19" />
-		<field name="SEMILINK" since="19" />
-		<field name="SENNHEISER_COMMUNICATIONS" since="19" />
-		<field name="SHANGHAI_SUPER_SMART_ELECTRONICS" since="19" />
-		<field name="SHENZHEN_EXCELSECU_DATA_TECHNOLOGY" since="19" />
-		<field name="SIGNIA_TECHNOLOGIES" />
-		<field name="SILICON_WAVE" />
-		<field name="SIRF_TECHNOLOGY" />
-		<field name="SOCKET_MOBILE" />
-		<field name="SONY_ERICSSON" />
-		<field name="SOUND_ID" since="19" />
-		<field name="SPORTS_TRACKING_TECHNOLOGIES" since="19" />
-		<field name="SR_MEDIZINELEKTRONIK" since="19" />
-		<field name="STACCATO_COMMUNICATIONS" />
-		<field name="STALMART_TECHNOLOGY" since="19" />
-		<field name="STARKEY_LABORATORIES" since="19" />
-		<field name="STOLLMAN_E_PLUS_V" since="19" />
-		<field name="STONESTREET_ONE" />
-		<field name="ST_MICROELECTRONICS" />
-		<field name="SUMMIT_DATA_COMMUNICATIONS" since="19" />
-		<field name="SUUNTO" since="19" />
-		<field name="SWIRL_NETWORKS" since="19" />
-		<field name="SYMBOL_TECHNOLOGIES" />
-		<field name="SYNOPSYS" />
-		<field name="SYSTEMS_AND_CHIPS" />
-		<field name="S_POWER_ELECTRONICS" since="19" />
-		<field name="TAIXINGBANG_TECHNOLOGY" since="19" />
-		<field name="TENOVIS" />
-		<field name="TERAX" />
-		<field name="TEXAS_INSTRUMENTS" />
-		<field name="THINKOPTICS" since="19" />
-		<field name="THREECOM" />
-		<field name="THREE_DIJOY" />
-		<field name="THREE_DSP" />
-		<field name="TIMEKEEPING_SYSTEMS" since="19" />
-		<field name="TIMEX_GROUP_USA" since="19" />
-		<field name="TOPCORN_POSITIONING_SYSTEMS" since="19" />
-		<field name="TOSHIBA" />
-		<field name="TRANSILICA" />
-		<field name="TRELAB" since="19" />
-		<field name="TTPCOM" />
-		<field name="TXTR" since="19" />
-		<field name="TZERO_TECHNOLOGIES" />
-		<field name="UNIVERSAL_ELECTRONICS" since="19" />
-		<field name="VERTU" since="19" />
-		<field name="VISTEON" since="19" />
-		<field name="VIZIO" />
-		<field name="VOYETRA_TURTLE_BEACH" since="19" />
-		<field name="WAVEPLUS_TECHNOLOGY" />
-		<field name="WICENTRIC" />
-		<field name="WIDCOMM" />
-		<field name="WUXI_VIMICRO" since="19" />
-		<field name="ZEEVO" />
-		<field name="ZER01_TV" since="19" />
-		<field name="ZOMM" since="19" />
-		<field name="ZSCAN_SOFTWARE" since="19" />
-	</class>
-	<class name="android/bluetooth/BluetoothClass" since="5">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="getDeviceClass()I" />
-		<method name="getMajorDeviceClass()I" />
-		<method name="hasService(I)Z" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/bluetooth/BluetoothClass$Device" since="5">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="AUDIO_VIDEO_CAMCORDER" />
-		<field name="AUDIO_VIDEO_CAR_AUDIO" />
-		<field name="AUDIO_VIDEO_HANDSFREE" />
-		<field name="AUDIO_VIDEO_HEADPHONES" />
-		<field name="AUDIO_VIDEO_HIFI_AUDIO" />
-		<field name="AUDIO_VIDEO_LOUDSPEAKER" />
-		<field name="AUDIO_VIDEO_MICROPHONE" />
-		<field name="AUDIO_VIDEO_PORTABLE_AUDIO" />
-		<field name="AUDIO_VIDEO_SET_TOP_BOX" />
-		<field name="AUDIO_VIDEO_UNCATEGORIZED" />
-		<field name="AUDIO_VIDEO_VCR" />
-		<field name="AUDIO_VIDEO_VIDEO_CAMERA" />
-		<field name="AUDIO_VIDEO_VIDEO_CONFERENCING" />
-		<field name="AUDIO_VIDEO_VIDEO_DISPLAY_AND_LOUDSPEAKER" />
-		<field name="AUDIO_VIDEO_VIDEO_GAMING_TOY" />
-		<field name="AUDIO_VIDEO_VIDEO_MONITOR" />
-		<field name="AUDIO_VIDEO_WEARABLE_HEADSET" />
-		<field name="COMPUTER_DESKTOP" />
-		<field name="COMPUTER_HANDHELD_PC_PDA" />
-		<field name="COMPUTER_LAPTOP" />
-		<field name="COMPUTER_PALM_SIZE_PC_PDA" />
-		<field name="COMPUTER_SERVER" />
-		<field name="COMPUTER_UNCATEGORIZED" />
-		<field name="COMPUTER_WEARABLE" />
-		<field name="HEALTH_BLOOD_PRESSURE" />
-		<field name="HEALTH_DATA_DISPLAY" />
-		<field name="HEALTH_GLUCOSE" />
-		<field name="HEALTH_PULSE_OXIMETER" />
-		<field name="HEALTH_PULSE_RATE" />
-		<field name="HEALTH_THERMOMETER" />
-		<field name="HEALTH_UNCATEGORIZED" />
-		<field name="HEALTH_WEIGHING" />
-		<field name="PHONE_CELLULAR" />
-		<field name="PHONE_CORDLESS" />
-		<field name="PHONE_ISDN" />
-		<field name="PHONE_MODEM_OR_GATEWAY" />
-		<field name="PHONE_SMART" />
-		<field name="PHONE_UNCATEGORIZED" />
-		<field name="TOY_CONTROLLER" />
-		<field name="TOY_DOLL_ACTION_FIGURE" />
-		<field name="TOY_GAME" />
-		<field name="TOY_ROBOT" />
-		<field name="TOY_UNCATEGORIZED" />
-		<field name="TOY_VEHICLE" />
-		<field name="WEARABLE_GLASSES" />
-		<field name="WEARABLE_HELMET" />
-		<field name="WEARABLE_JACKET" />
-		<field name="WEARABLE_PAGER" />
-		<field name="WEARABLE_UNCATEGORIZED" />
-		<field name="WEARABLE_WRIST_WATCH" />
-	</class>
-	<class name="android/bluetooth/BluetoothClass$Device$Major" since="5">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="AUDIO_VIDEO" />
-		<field name="COMPUTER" />
-		<field name="HEALTH" />
-		<field name="IMAGING" />
-		<field name="MISC" />
-		<field name="NETWORKING" />
-		<field name="PERIPHERAL" />
-		<field name="PHONE" />
-		<field name="TOY" />
-		<field name="UNCATEGORIZED" />
-		<field name="WEARABLE" />
-	</class>
-	<class name="android/bluetooth/BluetoothClass$Service" since="5">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="AUDIO" />
-		<field name="CAPTURE" />
-		<field name="INFORMATION" />
-		<field name="LIMITED_DISCOVERABILITY" />
-		<field name="NETWORKING" />
-		<field name="OBJECT_TRANSFER" />
-		<field name="POSITIONING" />
-		<field name="RENDER" />
-		<field name="TELEPHONY" />
-	</class>
-	<class name="android/bluetooth/BluetoothDevice" since="5">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="connectGatt(Landroid/content/Context;ZLandroid/bluetooth/BluetoothGattCallback;)Landroid/bluetooth/BluetoothGatt;" since="18" />
-		<method name="createBond()Z" since="19" />
-		<method name="createInsecureRfcommSocketToServiceRecord(Ljava/util/UUID;)Landroid/bluetooth/BluetoothSocket;" since="10" />
-		<method name="createRfcommSocketToServiceRecord(Ljava/util/UUID;)Landroid/bluetooth/BluetoothSocket;" />
-		<method name="fetchUuidsWithSdp()Z" since="15" />
-		<method name="getAddress()Ljava/lang/String;" />
-		<method name="getBluetoothClass()Landroid/bluetooth/BluetoothClass;" />
-		<method name="getBondState()I" />
-		<method name="getName()Ljava/lang/String;" />
-		<method name="getType()I" since="18" />
-		<method name="getUuids()[Landroid/os/ParcelUuid;" since="15" />
-		<method name="setPairingConfirmation(Z)Z" since="19" />
-		<method name="setPin([B)Z" since="19" />
-		<field name="ACTION_ACL_CONNECTED" />
-		<field name="ACTION_ACL_DISCONNECTED" />
-		<field name="ACTION_ACL_DISCONNECT_REQUESTED" />
-		<field name="ACTION_BOND_STATE_CHANGED" />
-		<field name="ACTION_CLASS_CHANGED" />
-		<field name="ACTION_FOUND" />
-		<field name="ACTION_NAME_CHANGED" />
-		<field name="ACTION_PAIRING_REQUEST" since="19" />
-		<field name="ACTION_UUID" since="15" />
-		<field name="BOND_BONDED" />
-		<field name="BOND_BONDING" />
-		<field name="BOND_NONE" />
-		<field name="CREATOR" />
-		<field name="DEVICE_TYPE_CLASSIC" since="18" />
-		<field name="DEVICE_TYPE_DUAL" since="18" />
-		<field name="DEVICE_TYPE_LE" since="18" />
-		<field name="DEVICE_TYPE_UNKNOWN" since="18" />
-		<field name="ERROR" />
-		<field name="EXTRA_BOND_STATE" />
-		<field name="EXTRA_CLASS" />
-		<field name="EXTRA_DEVICE" />
-		<field name="EXTRA_NAME" />
-		<field name="EXTRA_PAIRING_KEY" since="19" />
-		<field name="EXTRA_PAIRING_VARIANT" since="19" />
-		<field name="EXTRA_PREVIOUS_BOND_STATE" />
-		<field name="EXTRA_RSSI" />
-		<field name="EXTRA_UUID" since="15" />
-		<field name="PAIRING_VARIANT_PASSKEY_CONFIRMATION" since="19" />
-		<field name="PAIRING_VARIANT_PIN" since="19" />
-	</class>
-	<class name="android/bluetooth/BluetoothGatt" since="18">
-		<extends name="java/lang/Object" />
-		<implements name="android/bluetooth/BluetoothProfile" />
-		<method name="&lt;init>()V" />
-		<method name="abortReliableWrite()V" since="19" />
-		<method name="abortReliableWrite(Landroid/bluetooth/BluetoothDevice;)V" />
-		<method name="beginReliableWrite()Z" />
-		<method name="close()V" />
-		<method name="connect()Z" />
-		<method name="disconnect()V" />
-		<method name="discoverServices()Z" />
-		<method name="executeReliableWrite()Z" />
-		<method name="getDevice()Landroid/bluetooth/BluetoothDevice;" />
-		<method name="getService(Ljava/util/UUID;)Landroid/bluetooth/BluetoothGattService;" />
-		<method name="getServices()Ljava/util/List;" />
-		<method name="readCharacteristic(Landroid/bluetooth/BluetoothGattCharacteristic;)Z" />
-		<method name="readDescriptor(Landroid/bluetooth/BluetoothGattDescriptor;)Z" />
-		<method name="readRemoteRssi()Z" />
-		<method name="setCharacteristicNotification(Landroid/bluetooth/BluetoothGattCharacteristic;Z)Z" />
-		<method name="writeCharacteristic(Landroid/bluetooth/BluetoothGattCharacteristic;)Z" />
-		<method name="writeDescriptor(Landroid/bluetooth/BluetoothGattDescriptor;)Z" />
-		<field name="GATT_FAILURE" />
-		<field name="GATT_INSUFFICIENT_AUTHENTICATION" />
-		<field name="GATT_INSUFFICIENT_ENCRYPTION" />
-		<field name="GATT_INVALID_ATTRIBUTE_LENGTH" />
-		<field name="GATT_INVALID_OFFSET" />
-		<field name="GATT_READ_NOT_PERMITTED" />
-		<field name="GATT_REQUEST_NOT_SUPPORTED" />
-		<field name="GATT_SUCCESS" />
-		<field name="GATT_WRITE_NOT_PERMITTED" />
-	</class>
-	<class name="android/bluetooth/BluetoothGattCallback" since="18">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="onCharacteristicChanged(Landroid/bluetooth/BluetoothGatt;Landroid/bluetooth/BluetoothGattCharacteristic;)V" />
-		<method name="onCharacteristicRead(Landroid/bluetooth/BluetoothGatt;Landroid/bluetooth/BluetoothGattCharacteristic;I)V" />
-		<method name="onCharacteristicWrite(Landroid/bluetooth/BluetoothGatt;Landroid/bluetooth/BluetoothGattCharacteristic;I)V" />
-		<method name="onConnectionStateChange(Landroid/bluetooth/BluetoothGatt;II)V" />
-		<method name="onDescriptorRead(Landroid/bluetooth/BluetoothGatt;Landroid/bluetooth/BluetoothGattDescriptor;I)V" />
-		<method name="onDescriptorWrite(Landroid/bluetooth/BluetoothGatt;Landroid/bluetooth/BluetoothGattDescriptor;I)V" />
-		<method name="onReadRemoteRssi(Landroid/bluetooth/BluetoothGatt;II)V" />
-		<method name="onReliableWriteCompleted(Landroid/bluetooth/BluetoothGatt;I)V" />
-		<method name="onServicesDiscovered(Landroid/bluetooth/BluetoothGatt;I)V" />
-	</class>
-	<class name="android/bluetooth/BluetoothGattCharacteristic" since="18">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/util/UUID;II)V" />
-		<method name="addDescriptor(Landroid/bluetooth/BluetoothGattDescriptor;)Z" />
-		<method name="getDescriptor(Ljava/util/UUID;)Landroid/bluetooth/BluetoothGattDescriptor;" />
-		<method name="getDescriptors()Ljava/util/List;" />
-		<method name="getFloatValue(II)Ljava/lang/Float;" />
-		<method name="getInstanceId()I" />
-		<method name="getIntValue(II)Ljava/lang/Integer;" />
-		<method name="getPermissions()I" />
-		<method name="getProperties()I" />
-		<method name="getService()Landroid/bluetooth/BluetoothGattService;" />
-		<method name="getStringValue(I)Ljava/lang/String;" />
-		<method name="getUuid()Ljava/util/UUID;" />
-		<method name="getValue()[B" />
-		<method name="getWriteType()I" />
-		<method name="setValue(III)Z" />
-		<method name="setValue(IIII)Z" />
-		<method name="setValue(Ljava/lang/String;)Z" />
-		<method name="setValue([B)Z" />
-		<method name="setWriteType(I)V" />
-		<field name="FORMAT_FLOAT" />
-		<field name="FORMAT_SFLOAT" />
-		<field name="FORMAT_SINT16" />
-		<field name="FORMAT_SINT32" />
-		<field name="FORMAT_SINT8" />
-		<field name="FORMAT_UINT16" />
-		<field name="FORMAT_UINT32" />
-		<field name="FORMAT_UINT8" />
-		<field name="PERMISSION_READ" />
-		<field name="PERMISSION_READ_ENCRYPTED" />
-		<field name="PERMISSION_READ_ENCRYPTED_MITM" />
-		<field name="PERMISSION_WRITE" />
-		<field name="PERMISSION_WRITE_ENCRYPTED" />
-		<field name="PERMISSION_WRITE_ENCRYPTED_MITM" />
-		<field name="PERMISSION_WRITE_SIGNED" />
-		<field name="PERMISSION_WRITE_SIGNED_MITM" />
-		<field name="PROPERTY_BROADCAST" />
-		<field name="PROPERTY_EXTENDED_PROPS" />
-		<field name="PROPERTY_INDICATE" />
-		<field name="PROPERTY_NOTIFY" />
-		<field name="PROPERTY_READ" />
-		<field name="PROPERTY_SIGNED_WRITE" />
-		<field name="PROPERTY_WRITE" />
-		<field name="PROPERTY_WRITE_NO_RESPONSE" />
-		<field name="WRITE_TYPE_DEFAULT" />
-		<field name="WRITE_TYPE_NO_RESPONSE" />
-		<field name="WRITE_TYPE_SIGNED" />
-		<field name="mDescriptors" />
-	</class>
-	<class name="android/bluetooth/BluetoothGattDescriptor" since="18">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/util/UUID;I)V" />
-		<method name="getCharacteristic()Landroid/bluetooth/BluetoothGattCharacteristic;" />
-		<method name="getPermissions()I" />
-		<method name="getUuid()Ljava/util/UUID;" />
-		<method name="getValue()[B" />
-		<method name="setValue([B)Z" />
-		<field name="DISABLE_NOTIFICATION_VALUE" />
-		<field name="ENABLE_INDICATION_VALUE" />
-		<field name="ENABLE_NOTIFICATION_VALUE" />
-		<field name="PERMISSION_READ" />
-		<field name="PERMISSION_READ_ENCRYPTED" />
-		<field name="PERMISSION_READ_ENCRYPTED_MITM" />
-		<field name="PERMISSION_WRITE" />
-		<field name="PERMISSION_WRITE_ENCRYPTED" />
-		<field name="PERMISSION_WRITE_ENCRYPTED_MITM" />
-		<field name="PERMISSION_WRITE_SIGNED" />
-		<field name="PERMISSION_WRITE_SIGNED_MITM" />
-	</class>
-	<class name="android/bluetooth/BluetoothGattServer" since="18">
-		<extends name="java/lang/Object" />
-		<implements name="android/bluetooth/BluetoothProfile" />
-		<method name="&lt;init>()V" />
-		<method name="addService(Landroid/bluetooth/BluetoothGattService;)Z" />
-		<method name="cancelConnection(Landroid/bluetooth/BluetoothDevice;)V" />
-		<method name="clearServices()V" />
-		<method name="close()V" />
-		<method name="connect(Landroid/bluetooth/BluetoothDevice;Z)Z" />
-		<method name="getService(Ljava/util/UUID;)Landroid/bluetooth/BluetoothGattService;" />
-		<method name="getServices()Ljava/util/List;" />
-		<method name="notifyCharacteristicChanged(Landroid/bluetooth/BluetoothDevice;Landroid/bluetooth/BluetoothGattCharacteristic;Z)Z" />
-		<method name="removeService(Landroid/bluetooth/BluetoothGattService;)Z" />
-		<method name="sendResponse(Landroid/bluetooth/BluetoothDevice;III[B)Z" />
-	</class>
-	<class name="android/bluetooth/BluetoothGattServerCallback" since="18">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="onCharacteristicReadRequest(Landroid/bluetooth/BluetoothDevice;IILandroid/bluetooth/BluetoothGattCharacteristic;)V" />
-		<method name="onCharacteristicWriteRequest(Landroid/bluetooth/BluetoothDevice;ILandroid/bluetooth/BluetoothGattCharacteristic;ZZI[B)V" />
-		<method name="onConnectionStateChange(Landroid/bluetooth/BluetoothDevice;II)V" />
-		<method name="onDescriptorReadRequest(Landroid/bluetooth/BluetoothDevice;IILandroid/bluetooth/BluetoothGattDescriptor;)V" />
-		<method name="onDescriptorWriteRequest(Landroid/bluetooth/BluetoothDevice;ILandroid/bluetooth/BluetoothGattDescriptor;ZZI[B)V" />
-		<method name="onExecuteWrite(Landroid/bluetooth/BluetoothDevice;IZ)V" />
-		<method name="onServiceAdded(ILandroid/bluetooth/BluetoothGattService;)V" />
-	</class>
-	<class name="android/bluetooth/BluetoothGattService" since="18">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/util/UUID;I)V" />
-		<method name="addCharacteristic(Landroid/bluetooth/BluetoothGattCharacteristic;)Z" />
-		<method name="addService(Landroid/bluetooth/BluetoothGattService;)Z" />
-		<method name="getCharacteristic(Ljava/util/UUID;)Landroid/bluetooth/BluetoothGattCharacteristic;" />
-		<method name="getCharacteristics()Ljava/util/List;" />
-		<method name="getIncludedServices()Ljava/util/List;" />
-		<method name="getInstanceId()I" />
-		<method name="getType()I" />
-		<method name="getUuid()Ljava/util/UUID;" />
-		<field name="SERVICE_TYPE_PRIMARY" />
-		<field name="SERVICE_TYPE_SECONDARY" />
-		<field name="mCharacteristics" />
-		<field name="mIncludedServices" />
-	</class>
-	<class name="android/bluetooth/BluetoothHeadset" since="11">
-		<extends name="java/lang/Object" />
-		<implements name="android/bluetooth/BluetoothProfile" />
-		<method name="&lt;init>()V" />
-		<method name="isAudioConnected(Landroid/bluetooth/BluetoothDevice;)Z" />
-		<method name="sendVendorSpecificResultCode(Landroid/bluetooth/BluetoothDevice;Ljava/lang/String;Ljava/lang/String;)Z" since="19" />
-		<method name="startVoiceRecognition(Landroid/bluetooth/BluetoothDevice;)Z" />
-		<method name="stopVoiceRecognition(Landroid/bluetooth/BluetoothDevice;)Z" />
-		<field name="ACTION_AUDIO_STATE_CHANGED" />
-		<field name="ACTION_CONNECTION_STATE_CHANGED" />
-		<field name="ACTION_VENDOR_SPECIFIC_HEADSET_EVENT" />
-		<field name="AT_CMD_TYPE_ACTION" />
-		<field name="AT_CMD_TYPE_BASIC" />
-		<field name="AT_CMD_TYPE_READ" />
-		<field name="AT_CMD_TYPE_SET" />
-		<field name="AT_CMD_TYPE_TEST" />
-		<field name="EXTRA_VENDOR_SPECIFIC_HEADSET_EVENT_ARGS" />
-		<field name="EXTRA_VENDOR_SPECIFIC_HEADSET_EVENT_CMD" />
-		<field name="EXTRA_VENDOR_SPECIFIC_HEADSET_EVENT_CMD_TYPE" />
-		<field name="STATE_AUDIO_CONNECTED" />
-		<field name="STATE_AUDIO_CONNECTING" />
-		<field name="STATE_AUDIO_DISCONNECTED" />
-		<field name="VENDOR_RESULT_CODE_COMMAND_ANDROID" since="19" />
-		<field name="VENDOR_SPECIFIC_HEADSET_EVENT_COMPANY_ID_CATEGORY" />
-	</class>
-	<class name="android/bluetooth/BluetoothHealth" since="14">
-		<extends name="java/lang/Object" />
-		<implements name="android/bluetooth/BluetoothProfile" />
-		<method name="&lt;init>()V" />
-		<method name="connectChannelToSource(Landroid/bluetooth/BluetoothDevice;Landroid/bluetooth/BluetoothHealthAppConfiguration;)Z" />
-		<method name="disconnectChannel(Landroid/bluetooth/BluetoothDevice;Landroid/bluetooth/BluetoothHealthAppConfiguration;I)Z" />
-		<method name="getMainChannelFd(Landroid/bluetooth/BluetoothDevice;Landroid/bluetooth/BluetoothHealthAppConfiguration;)Landroid/os/ParcelFileDescriptor;" />
-		<method name="registerSinkAppConfiguration(Ljava/lang/String;ILandroid/bluetooth/BluetoothHealthCallback;)Z" />
-		<method name="unregisterAppConfiguration(Landroid/bluetooth/BluetoothHealthAppConfiguration;)Z" />
-		<field name="APP_CONFIG_REGISTRATION_FAILURE" />
-		<field name="APP_CONFIG_REGISTRATION_SUCCESS" />
-		<field name="APP_CONFIG_UNREGISTRATION_FAILURE" />
-		<field name="APP_CONFIG_UNREGISTRATION_SUCCESS" />
-		<field name="CHANNEL_TYPE_RELIABLE" />
-		<field name="CHANNEL_TYPE_STREAMING" />
-		<field name="SINK_ROLE" />
-		<field name="SOURCE_ROLE" />
-		<field name="STATE_CHANNEL_CONNECTED" />
-		<field name="STATE_CHANNEL_CONNECTING" />
-		<field name="STATE_CHANNEL_DISCONNECTED" />
-		<field name="STATE_CHANNEL_DISCONNECTING" />
-	</class>
-	<class name="android/bluetooth/BluetoothHealthAppConfiguration" since="14">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="getDataType()I" />
-		<method name="getName()Ljava/lang/String;" />
-		<method name="getRole()I" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/bluetooth/BluetoothHealthCallback" since="14">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="onHealthAppConfigurationStatusChange(Landroid/bluetooth/BluetoothHealthAppConfiguration;I)V" />
-		<method name="onHealthChannelStateChange(Landroid/bluetooth/BluetoothHealthAppConfiguration;Landroid/bluetooth/BluetoothDevice;IILandroid/os/ParcelFileDescriptor;I)V" />
-	</class>
-	<class name="android/bluetooth/BluetoothManager" since="18">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getAdapter()Landroid/bluetooth/BluetoothAdapter;" />
-		<method name="getConnectedDevices(I)Ljava/util/List;" />
-		<method name="getConnectionState(Landroid/bluetooth/BluetoothDevice;I)I" />
-		<method name="getDevicesMatchingConnectionStates(I[I)Ljava/util/List;" />
-		<method name="openGattServer(Landroid/content/Context;Landroid/bluetooth/BluetoothGattServerCallback;)Landroid/bluetooth/BluetoothGattServer;" />
-	</class>
-	<class name="android/bluetooth/BluetoothProfile" since="11">
-		<extends name="java/lang/Object" />
-		<method name="getConnectedDevices()Ljava/util/List;" />
-		<method name="getConnectionState(Landroid/bluetooth/BluetoothDevice;)I" />
-		<method name="getDevicesMatchingConnectionStates([I)Ljava/util/List;" />
-		<field name="A2DP" />
-		<field name="EXTRA_PREVIOUS_STATE" />
-		<field name="EXTRA_STATE" />
-		<field name="GATT" since="18" />
-		<field name="GATT_SERVER" since="18" />
-		<field name="HEADSET" />
-		<field name="HEALTH" since="14" />
-		<field name="STATE_CONNECTED" />
-		<field name="STATE_CONNECTING" />
-		<field name="STATE_DISCONNECTED" />
-		<field name="STATE_DISCONNECTING" />
-	</class>
-	<class name="android/bluetooth/BluetoothProfile$ServiceListener" since="11">
-		<extends name="java/lang/Object" />
-		<method name="onServiceConnected(ILandroid/bluetooth/BluetoothProfile;)V" />
-		<method name="onServiceDisconnected(I)V" />
-	</class>
-	<class name="android/bluetooth/BluetoothServerSocket" since="5">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Closeable" />
-		<method name="&lt;init>()V" />
-		<method name="accept()Landroid/bluetooth/BluetoothSocket;" />
-		<method name="accept(I)Landroid/bluetooth/BluetoothSocket;" />
-	</class>
-	<class name="android/bluetooth/BluetoothSocket" since="5">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Closeable" />
-		<method name="&lt;init>()V" />
-		<method name="connect()V" />
-		<method name="getInputStream()Ljava/io/InputStream;" />
-		<method name="getOutputStream()Ljava/io/OutputStream;" />
-		<method name="getRemoteDevice()Landroid/bluetooth/BluetoothDevice;" />
-		<method name="isConnected()Z" since="14" />
-	</class>
-	<class name="android/bluetooth/le/AdvertiseCallback" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="onFailure(I)V" />
-		<method name="onSuccess(Landroid/bluetooth/le/AdvertiseSettings;)V" />
-		<field name="ADVERTISE_FAILED_ALREADY_STARTED" />
-		<field name="ADVERTISE_FAILED_CONTROLLER_FAILURE" />
-		<field name="ADVERTISE_FAILED_NOT_STARTED" />
-		<field name="ADVERTISE_FAILED_SERVICE_UNKNOWN" />
-		<field name="ADVERTISE_FAILED_TOO_MANY_ADVERTISERS" />
-	</class>
-	<class name="android/bluetooth/le/AdvertiseSettings" since="21">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="getMode()I" />
-		<method name="getTxPowerLevel()I" />
-		<method name="getType()I" />
-		<field name="ADVERTISE_MODE_BALANCED" />
-		<field name="ADVERTISE_MODE_LOW_LATENCY" />
-		<field name="ADVERTISE_MODE_LOW_POWER" />
-		<field name="ADVERTISE_TX_POWER_HIGH" />
-		<field name="ADVERTISE_TX_POWER_LOW" />
-		<field name="ADVERTISE_TX_POWER_MEDIUM" />
-		<field name="ADVERTISE_TX_POWER_ULTRA_LOW" />
-		<field name="ADVERTISE_TYPE_CONNECTABLE" />
-		<field name="ADVERTISE_TYPE_NON_CONNECTABLE" />
-		<field name="ADVERTISE_TYPE_SCANNABLE" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/bluetooth/le/AdvertiseSettings$Builder" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="build()Landroid/bluetooth/le/AdvertiseSettings;" />
-		<method name="setAdvertiseMode(I)Landroid/bluetooth/le/AdvertiseSettings$Builder;" />
-		<method name="setTxPowerLevel(I)Landroid/bluetooth/le/AdvertiseSettings$Builder;" />
-		<method name="setType(I)Landroid/bluetooth/le/AdvertiseSettings$Builder;" />
-	</class>
-	<class name="android/bluetooth/le/AdvertisementData" since="21">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="getIncludeTxPowerLevel()Z" />
-		<method name="getManufacturerId()I" />
-		<method name="getManufacturerSpecificData()[B" />
-		<method name="getServiceData()[B" />
-		<method name="getServiceDataUuid()Landroid/os/ParcelUuid;" />
-		<method name="getServiceUuids()Ljava/util/List;" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/bluetooth/le/AdvertisementData$Builder" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="build()Landroid/bluetooth/le/AdvertisementData;" />
-		<method name="setIncludeTxPowerLevel(Z)Landroid/bluetooth/le/AdvertisementData$Builder;" />
-		<method name="setManufacturerData(I[B)Landroid/bluetooth/le/AdvertisementData$Builder;" />
-		<method name="setServiceData(Landroid/os/ParcelUuid;[B)Landroid/bluetooth/le/AdvertisementData$Builder;" />
-		<method name="setServiceUuids(Ljava/util/List;)Landroid/bluetooth/le/AdvertisementData$Builder;" />
-	</class>
-	<class name="android/bluetooth/le/BluetoothLeAdvertiser" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="startAdvertising(Landroid/bluetooth/le/AdvertiseSettings;Landroid/bluetooth/le/AdvertisementData;Landroid/bluetooth/le/AdvertiseCallback;)V" />
-		<method name="startAdvertising(Landroid/bluetooth/le/AdvertiseSettings;Landroid/bluetooth/le/AdvertisementData;Landroid/bluetooth/le/AdvertisementData;Landroid/bluetooth/le/AdvertiseCallback;)V" />
-		<method name="stopAdvertising(Landroid/bluetooth/le/AdvertiseCallback;)V" />
-	</class>
-	<class name="android/bluetooth/le/BluetoothLeScanner" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="startScan(Ljava/util/List;Landroid/bluetooth/le/ScanSettings;Landroid/bluetooth/le/ScanCallback;)V" />
-		<method name="stopScan(Landroid/bluetooth/le/ScanCallback;)V" />
-	</class>
-	<class name="android/bluetooth/le/ScanCallback" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="onAdvertisementUpdate(Landroid/bluetooth/le/ScanResult;)V" />
-		<method name="onScanFailed(I)V" />
-		<field name="SCAN_FAILED_ALREADY_STARTED" />
-		<field name="SCAN_FAILED_APPLICATION_REGISTRATION_FAILED" />
-		<field name="SCAN_FAILED_CONTROLLER_FAILURE" />
-		<field name="SCAN_FAILED_GATT_SERVICE_FAILURE" />
-	</class>
-	<class name="android/bluetooth/le/ScanFilter" since="21">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="getDeviceAddress()Ljava/lang/String;" />
-		<method name="getLocalName()Ljava/lang/String;" />
-		<method name="getManufacturerData()[B" />
-		<method name="getManufacturerDataMask()[B" />
-		<method name="getManufacturerId()I" />
-		<method name="getMaxRssi()I" />
-		<method name="getMinRssi()I" />
-		<method name="getServiceData()[B" />
-		<method name="getServiceDataMask()[B" />
-		<method name="getServiceUuid()Landroid/os/ParcelUuid;" />
-		<method name="getServiceUuidMask()Landroid/os/ParcelUuid;" />
-		<method name="matches(Landroid/bluetooth/le/ScanResult;)Z" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/bluetooth/le/ScanFilter$Builder" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="build()Landroid/bluetooth/le/ScanFilter;" />
-		<method name="setMacAddress(Ljava/lang/String;)Landroid/bluetooth/le/ScanFilter$Builder;" />
-		<method name="setManufacturerData(I[B)Landroid/bluetooth/le/ScanFilter$Builder;" />
-		<method name="setManufacturerData(I[B[B)Landroid/bluetooth/le/ScanFilter$Builder;" />
-		<method name="setName(Ljava/lang/String;)Landroid/bluetooth/le/ScanFilter$Builder;" />
-		<method name="setRssiRange(II)Landroid/bluetooth/le/ScanFilter$Builder;" />
-		<method name="setServiceData([B)Landroid/bluetooth/le/ScanFilter$Builder;" />
-		<method name="setServiceData([B[B)Landroid/bluetooth/le/ScanFilter$Builder;" />
-		<method name="setServiceUuid(Landroid/os/ParcelUuid;)Landroid/bluetooth/le/ScanFilter$Builder;" />
-		<method name="setServiceUuid(Landroid/os/ParcelUuid;Landroid/os/ParcelUuid;)Landroid/bluetooth/le/ScanFilter$Builder;" />
-	</class>
-	<class name="android/bluetooth/le/ScanRecord" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getAdvertiseFlags()I" />
-		<method name="getLocalName()Ljava/lang/String;" />
-		<method name="getManufacturerId()I" />
-		<method name="getManufacturerSpecificData()[B" />
-		<method name="getServiceData()[B" />
-		<method name="getServiceDataUuid()Landroid/os/ParcelUuid;" />
-		<method name="getServiceUuids()Ljava/util/List;" />
-		<method name="getTxPowerLevel()I" />
-		<method name="parseFromBytes([B)Landroid/bluetooth/le/ScanRecord;" />
-	</class>
-	<class name="android/bluetooth/le/ScanResult" since="21">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="getDevice()Landroid/bluetooth/BluetoothDevice;" />
-		<method name="getRssi()I" />
-		<method name="getScanRecord()[B" />
-		<method name="getTimestampNanos()J" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/bluetooth/le/ScanSettings" since="21">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="getCallbackType()I" />
-		<method name="getReportDelayNanos()J" />
-		<method name="getScanMode()I" />
-		<method name="getScanResultType()I" />
-		<field name="CALLBACK_TYPE_ON_UPDATE" />
-		<field name="CREATOR" />
-		<field name="SCAN_MODE_BALANCED" />
-		<field name="SCAN_MODE_LOW_LATENCY" />
-		<field name="SCAN_MODE_LOW_POWER" />
-		<field name="SCAN_RESULT_TYPE_FULL" />
-	</class>
-	<class name="android/bluetooth/le/ScanSettings$Builder" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="build()Landroid/bluetooth/le/ScanSettings;" />
-		<method name="setCallbackType(I)Landroid/bluetooth/le/ScanSettings$Builder;" />
-		<method name="setReportDelayNanos(J)Landroid/bluetooth/le/ScanSettings$Builder;" />
-		<method name="setScanMode(I)Landroid/bluetooth/le/ScanSettings$Builder;" />
-	</class>
-	<class name="android/content/AbstractThreadedSyncAdapter" since="5">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/content/Context;Z)V" />
-		<method name="&lt;init>(Landroid/content/Context;ZZ)V" since="11" />
-		<method name="getContext()Landroid/content/Context;" />
-		<method name="getSyncAdapterBinder()Landroid/os/IBinder;" />
-		<method name="onPerformSync(Landroid/accounts/Account;Landroid/os/Bundle;Ljava/lang/String;Landroid/content/ContentProviderClient;Landroid/content/SyncResult;)V" />
-		<method name="onSyncCanceled()V" since="8" />
-		<method name="onSyncCanceled(Ljava/lang/Thread;)V" since="11" />
-		<field name="LOG_SYNC_DETAILS" />
-	</class>
-	<class name="android/content/ActivityNotFoundException" since="1">
-		<extends name="java/lang/RuntimeException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/content/AsyncQueryHandler" since="1">
-		<extends name="android/os/Handler" />
-		<method name="&lt;init>(Landroid/content/ContentResolver;)V" />
-		<method name="cancelOperation(I)V" />
-		<method name="createHandler(Landroid/os/Looper;)Landroid/os/Handler;" />
-		<method name="onDeleteComplete(ILjava/lang/Object;I)V" />
-		<method name="onInsertComplete(ILjava/lang/Object;Landroid/net/Uri;)V" />
-		<method name="onQueryComplete(ILjava/lang/Object;Landroid/database/Cursor;)V" />
-		<method name="onUpdateComplete(ILjava/lang/Object;I)V" />
-		<method name="startDelete(ILjava/lang/Object;Landroid/net/Uri;Ljava/lang/String;[Ljava/lang/String;)V" />
-		<method name="startInsert(ILjava/lang/Object;Landroid/net/Uri;Landroid/content/ContentValues;)V" />
-		<method name="startQuery(ILjava/lang/Object;Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="startUpdate(ILjava/lang/Object;Landroid/net/Uri;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;)V" />
-	</class>
-	<class name="android/content/AsyncQueryHandler$WorkerArgs" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="cookie" />
-		<field name="handler" />
-		<field name="orderBy" />
-		<field name="projection" />
-		<field name="result" />
-		<field name="selection" />
-		<field name="selectionArgs" />
-		<field name="uri" />
-		<field name="values" />
-	</class>
-	<class name="android/content/AsyncQueryHandler$WorkerHandler" since="1">
-		<extends name="android/os/Handler" />
-		<method name="&lt;init>(Landroid/content/AsyncQueryHandler;Landroid/os/Looper;)V" />
-	</class>
-	<class name="android/content/AsyncTaskLoader" since="11">
-		<extends name="android/content/Loader" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="cancelLoad()Z" />
-		<method name="cancelLoadInBackground()V" since="16" />
-		<method name="isLoadInBackgroundCanceled()Z" since="16" />
-		<method name="loadInBackground()Ljava/lang/Object;" />
-		<method name="onCanceled(Ljava/lang/Object;)V" />
-		<method name="onLoadInBackground()Ljava/lang/Object;" />
-		<method name="setUpdateThrottle(J)V" />
-	</class>
-	<class name="android/content/BroadcastReceiver" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="abortBroadcast()V" />
-		<method name="clearAbortBroadcast()V" />
-		<method name="getAbortBroadcast()Z" />
-		<method name="getDebugUnregister()Z" />
-		<method name="getResultCode()I" />
-		<method name="getResultData()Ljava/lang/String;" />
-		<method name="getResultExtras(Z)Landroid/os/Bundle;" />
-		<method name="goAsync()Landroid/content/BroadcastReceiver$PendingResult;" since="11" />
-		<method name="isInitialStickyBroadcast()Z" since="5" />
-		<method name="isOrderedBroadcast()Z" since="5" />
-		<method name="onReceive(Landroid/content/Context;Landroid/content/Intent;)V" />
-		<method name="peekService(Landroid/content/Context;Landroid/content/Intent;)Landroid/os/IBinder;" since="3" />
-		<method name="setDebugUnregister(Z)V" />
-		<method name="setOrderedHint(Z)V" />
-		<method name="setResult(ILjava/lang/String;Landroid/os/Bundle;)V" />
-		<method name="setResultCode(I)V" />
-		<method name="setResultData(Ljava/lang/String;)V" />
-		<method name="setResultExtras(Landroid/os/Bundle;)V" />
-	</class>
-	<class name="android/content/BroadcastReceiver$PendingResult" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="abortBroadcast()V" />
-		<method name="clearAbortBroadcast()V" />
-		<method name="finish()V" />
-		<method name="getAbortBroadcast()Z" />
-		<method name="getResultCode()I" />
-		<method name="getResultData()Ljava/lang/String;" />
-		<method name="getResultExtras(Z)Landroid/os/Bundle;" />
-		<method name="setResult(ILjava/lang/String;Landroid/os/Bundle;)V" />
-		<method name="setResultCode(I)V" />
-		<method name="setResultData(Ljava/lang/String;)V" />
-		<method name="setResultExtras(Landroid/os/Bundle;)V" />
-	</class>
-	<class name="android/content/ClipData" since="11">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>(Landroid/content/ClipData;)V" since="16" />
-		<method name="&lt;init>(Landroid/content/ClipDescription;Landroid/content/ClipData$Item;)V" />
-		<method name="&lt;init>(Ljava/lang/CharSequence;[Ljava/lang/String;Landroid/content/ClipData$Item;)V" />
-		<method name="addItem(Landroid/content/ClipData$Item;)V" />
-		<method name="getDescription()Landroid/content/ClipDescription;" />
-		<method name="getItemAt(I)Landroid/content/ClipData$Item;" />
-		<method name="getItemCount()I" />
-		<method name="newHtmlText(Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/String;)Landroid/content/ClipData;" since="16" />
-		<method name="newIntent(Ljava/lang/CharSequence;Landroid/content/Intent;)Landroid/content/ClipData;" />
-		<method name="newPlainText(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Landroid/content/ClipData;" />
-		<method name="newRawUri(Ljava/lang/CharSequence;Landroid/net/Uri;)Landroid/content/ClipData;" />
-		<method name="newUri(Landroid/content/ContentResolver;Ljava/lang/CharSequence;Landroid/net/Uri;)Landroid/content/ClipData;" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/content/ClipData$Item" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/content/Intent;)V" />
-		<method name="&lt;init>(Landroid/net/Uri;)V" />
-		<method name="&lt;init>(Ljava/lang/CharSequence;)V" />
-		<method name="&lt;init>(Ljava/lang/CharSequence;Landroid/content/Intent;Landroid/net/Uri;)V" />
-		<method name="&lt;init>(Ljava/lang/CharSequence;Ljava/lang/String;)V" since="16" />
-		<method name="&lt;init>(Ljava/lang/CharSequence;Ljava/lang/String;Landroid/content/Intent;Landroid/net/Uri;)V" since="16" />
-		<method name="coerceToHtmlText(Landroid/content/Context;)Ljava/lang/String;" since="16" />
-		<method name="coerceToStyledText(Landroid/content/Context;)Ljava/lang/CharSequence;" since="16" />
-		<method name="coerceToText(Landroid/content/Context;)Ljava/lang/CharSequence;" />
-		<method name="getHtmlText()Ljava/lang/String;" since="16" />
-		<method name="getIntent()Landroid/content/Intent;" />
-		<method name="getText()Ljava/lang/CharSequence;" />
-		<method name="getUri()Landroid/net/Uri;" />
-	</class>
-	<class name="android/content/ClipDescription" since="11">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>(Landroid/content/ClipDescription;)V" />
-		<method name="&lt;init>(Ljava/lang/CharSequence;[Ljava/lang/String;)V" />
-		<method name="compareMimeTypes(Ljava/lang/String;Ljava/lang/String;)Z" />
-		<method name="filterMimeTypes(Ljava/lang/String;)[Ljava/lang/String;" />
-		<method name="getLabel()Ljava/lang/CharSequence;" />
-		<method name="getMimeType(I)Ljava/lang/String;" />
-		<method name="getMimeTypeCount()I" />
-		<method name="hasMimeType(Ljava/lang/String;)Z" />
-		<field name="CREATOR" />
-		<field name="MIMETYPE_TEXT_HTML" since="16" />
-		<field name="MIMETYPE_TEXT_INTENT" />
-		<field name="MIMETYPE_TEXT_PLAIN" />
-		<field name="MIMETYPE_TEXT_URILIST" />
-	</class>
-	<class name="android/content/ClipboardManager" since="11">
-		<extends name="android/text/ClipboardManager" />
-		<method name="&lt;init>()V" />
-		<method name="addPrimaryClipChangedListener(Landroid/content/ClipboardManager$OnPrimaryClipChangedListener;)V" />
-		<method name="getPrimaryClip()Landroid/content/ClipData;" />
-		<method name="getPrimaryClipDescription()Landroid/content/ClipDescription;" />
-		<method name="hasPrimaryClip()Z" />
-		<method name="removePrimaryClipChangedListener(Landroid/content/ClipboardManager$OnPrimaryClipChangedListener;)V" />
-		<method name="setPrimaryClip(Landroid/content/ClipData;)V" />
-	</class>
-	<class name="android/content/ClipboardManager$OnPrimaryClipChangedListener" since="11">
-		<extends name="java/lang/Object" />
-		<method name="onPrimaryClipChanged()V" />
-	</class>
-	<class name="android/content/ComponentCallbacks" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onConfigurationChanged(Landroid/content/res/Configuration;)V" />
-		<method name="onLowMemory()V" />
-	</class>
-	<class name="android/content/ComponentCallbacks2" since="14">
-		<extends name="java/lang/Object" />
-		<implements name="android/content/ComponentCallbacks" />
-		<method name="onTrimMemory(I)V" />
-		<field name="TRIM_MEMORY_BACKGROUND" />
-		<field name="TRIM_MEMORY_COMPLETE" />
-		<field name="TRIM_MEMORY_MODERATE" />
-		<field name="TRIM_MEMORY_RUNNING_CRITICAL" since="16" />
-		<field name="TRIM_MEMORY_RUNNING_LOW" since="16" />
-		<field name="TRIM_MEMORY_RUNNING_MODERATE" since="16" />
-		<field name="TRIM_MEMORY_UI_HIDDEN" />
-	</class>
-	<class name="android/content/ComponentName" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<implements name="java/lang/Cloneable" since="8" />
-		<implements name="java/lang/Comparable" since="4" />
-		<method name="&lt;init>(Landroid/content/Context;Ljava/lang/Class;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Ljava/lang/String;)V" />
-		<method name="&lt;init>(Landroid/os/Parcel;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="clone()Landroid/content/ComponentName;" since="8" />
-		<method name="compareTo(Landroid/content/ComponentName;)I" since="4" />
-		<method name="flattenToShortString()Ljava/lang/String;" />
-		<method name="flattenToString()Ljava/lang/String;" />
-		<method name="getClassName()Ljava/lang/String;" />
-		<method name="getPackageName()Ljava/lang/String;" />
-		<method name="getShortClassName()Ljava/lang/String;" />
-		<method name="readFromParcel(Landroid/os/Parcel;)Landroid/content/ComponentName;" />
-		<method name="toShortString()Ljava/lang/String;" />
-		<method name="unflattenFromString(Ljava/lang/String;)Landroid/content/ComponentName;" />
-		<method name="writeToParcel(Landroid/content/ComponentName;Landroid/os/Parcel;)V" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/content/ContentProvider" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/content/ComponentCallbacks" />
-		<implements name="android/content/ComponentCallbacks2" since="14" />
-		<method name="&lt;init>()V" />
-		<method name="applyBatch(Ljava/util/ArrayList;)[Landroid/content/ContentProviderResult;" since="5" />
-		<method name="attachInfo(Landroid/content/Context;Landroid/content/pm/ProviderInfo;)V" />
-		<method name="bulkInsert(Landroid/net/Uri;[Landroid/content/ContentValues;)I" />
-		<method name="call(Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;)Landroid/os/Bundle;" since="11" />
-		<method name="canonicalize(Landroid/net/Uri;)Landroid/net/Uri;" since="19" />
-		<method name="delete(Landroid/net/Uri;Ljava/lang/String;[Ljava/lang/String;)I" />
-		<method name="dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V" since="18" />
-		<method name="getCallingPackage()Ljava/lang/String;" since="19" />
-		<method name="getContext()Landroid/content/Context;" />
-		<method name="getPathPermissions()[Landroid/content/pm/PathPermission;" since="4" />
-		<method name="getReadPermission()Ljava/lang/String;" />
-		<method name="getStreamTypes(Landroid/net/Uri;Ljava/lang/String;)[Ljava/lang/String;" since="11" />
-		<method name="getType(Landroid/net/Uri;)Ljava/lang/String;" />
-		<method name="getWritePermission()Ljava/lang/String;" />
-		<method name="insert(Landroid/net/Uri;Landroid/content/ContentValues;)Landroid/net/Uri;" />
-		<method name="isTemporary()Z" />
-		<method name="onCreate()Z" />
-		<method name="openAssetFile(Landroid/net/Uri;Ljava/lang/String;)Landroid/content/res/AssetFileDescriptor;" since="3" />
-		<method name="openAssetFile(Landroid/net/Uri;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/content/res/AssetFileDescriptor;" since="19" />
-		<method name="openFile(Landroid/net/Uri;Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;" />
-		<method name="openFile(Landroid/net/Uri;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/os/ParcelFileDescriptor;" since="19" />
-		<method name="openFileHelper(Landroid/net/Uri;Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;" />
-		<method name="openPipeHelper(Landroid/net/Uri;Ljava/lang/String;Landroid/os/Bundle;Ljava/lang/Object;Landroid/content/ContentProvider$PipeDataWriter;)Landroid/os/ParcelFileDescriptor;" since="11" />
-		<method name="openTypedAssetFile(Landroid/net/Uri;Ljava/lang/String;Landroid/os/Bundle;)Landroid/content/res/AssetFileDescriptor;" since="11" />
-		<method name="openTypedAssetFile(Landroid/net/Uri;Ljava/lang/String;Landroid/os/Bundle;Landroid/os/CancellationSignal;)Landroid/content/res/AssetFileDescriptor;" since="19" />
-		<method name="query(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;" />
-		<method name="query(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/database/Cursor;" since="16" />
-		<method name="setPathPermissions([Landroid/content/pm/PathPermission;)V" since="4" />
-		<method name="setReadPermission(Ljava/lang/String;)V" />
-		<method name="setWritePermission(Ljava/lang/String;)V" />
-		<method name="shutdown()V" since="11" />
-		<method name="uncanonicalize(Landroid/net/Uri;)Landroid/net/Uri;" since="19" />
-		<method name="update(Landroid/net/Uri;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;)I" />
-	</class>
-	<class name="android/content/ContentProvider$PipeDataWriter" since="11">
-		<extends name="java/lang/Object" />
-		<method name="writeDataToPipe(Landroid/os/ParcelFileDescriptor;Landroid/net/Uri;Ljava/lang/String;Landroid/os/Bundle;Ljava/lang/Object;)V" />
-	</class>
-	<class name="android/content/ContentProviderClient" since="5">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="applyBatch(Ljava/util/ArrayList;)[Landroid/content/ContentProviderResult;" />
-		<method name="bulkInsert(Landroid/net/Uri;[Landroid/content/ContentValues;)I" />
-		<method name="call(Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;)Landroid/os/Bundle;" since="17" />
-		<method name="canonicalize(Landroid/net/Uri;)Landroid/net/Uri;" since="19" />
-		<method name="delete(Landroid/net/Uri;Ljava/lang/String;[Ljava/lang/String;)I" />
-		<method name="getLocalContentProvider()Landroid/content/ContentProvider;" />
-		<method name="getStreamTypes(Landroid/net/Uri;Ljava/lang/String;)[Ljava/lang/String;" since="11" />
-		<method name="getType(Landroid/net/Uri;)Ljava/lang/String;" />
-		<method name="insert(Landroid/net/Uri;Landroid/content/ContentValues;)Landroid/net/Uri;" />
-		<method name="openAssetFile(Landroid/net/Uri;Ljava/lang/String;)Landroid/content/res/AssetFileDescriptor;" />
-		<method name="openAssetFile(Landroid/net/Uri;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/content/res/AssetFileDescriptor;" since="19" />
-		<method name="openFile(Landroid/net/Uri;Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;" />
-		<method name="openFile(Landroid/net/Uri;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/os/ParcelFileDescriptor;" since="19" />
-		<method name="openTypedAssetFileDescriptor(Landroid/net/Uri;Ljava/lang/String;Landroid/os/Bundle;)Landroid/content/res/AssetFileDescriptor;" since="11" />
-		<method name="openTypedAssetFileDescriptor(Landroid/net/Uri;Ljava/lang/String;Landroid/os/Bundle;Landroid/os/CancellationSignal;)Landroid/content/res/AssetFileDescriptor;" since="19" />
-		<method name="query(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;" />
-		<method name="query(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/database/Cursor;" since="16" />
-		<method name="release()Z" />
-		<method name="uncanonicalize(Landroid/net/Uri;)Landroid/net/Uri;" since="19" />
-		<method name="update(Landroid/net/Uri;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;)I" />
-	</class>
-	<class name="android/content/ContentProviderOperation" since="5">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="apply(Landroid/content/ContentProvider;[Landroid/content/ContentProviderResult;I)Landroid/content/ContentProviderResult;" />
-		<method name="getUri()Landroid/net/Uri;" />
-		<method name="isReadOperation()Z" />
-		<method name="isWriteOperation()Z" />
-		<method name="isYieldAllowed()Z" />
-		<method name="newAssertQuery(Landroid/net/Uri;)Landroid/content/ContentProviderOperation$Builder;" />
-		<method name="newDelete(Landroid/net/Uri;)Landroid/content/ContentProviderOperation$Builder;" />
-		<method name="newInsert(Landroid/net/Uri;)Landroid/content/ContentProviderOperation$Builder;" />
-		<method name="newUpdate(Landroid/net/Uri;)Landroid/content/ContentProviderOperation$Builder;" />
-		<method name="resolveSelectionArgsBackReferences([Landroid/content/ContentProviderResult;I)[Ljava/lang/String;" />
-		<method name="resolveValueBackReferences([Landroid/content/ContentProviderResult;I)Landroid/content/ContentValues;" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/content/ContentProviderOperation$Builder" since="5">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="build()Landroid/content/ContentProviderOperation;" />
-		<method name="withExpectedCount(I)Landroid/content/ContentProviderOperation$Builder;" />
-		<method name="withSelection(Ljava/lang/String;[Ljava/lang/String;)Landroid/content/ContentProviderOperation$Builder;" />
-		<method name="withSelectionBackReference(II)Landroid/content/ContentProviderOperation$Builder;" />
-		<method name="withValue(Ljava/lang/String;Ljava/lang/Object;)Landroid/content/ContentProviderOperation$Builder;" />
-		<method name="withValueBackReference(Ljava/lang/String;I)Landroid/content/ContentProviderOperation$Builder;" />
-		<method name="withValueBackReferences(Landroid/content/ContentValues;)Landroid/content/ContentProviderOperation$Builder;" />
-		<method name="withValues(Landroid/content/ContentValues;)Landroid/content/ContentProviderOperation$Builder;" />
-		<method name="withYieldAllowed(Z)Landroid/content/ContentProviderOperation$Builder;" />
-	</class>
-	<class name="android/content/ContentProviderResult" since="5">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>(I)V" />
-		<method name="&lt;init>(Landroid/net/Uri;)V" />
-		<method name="&lt;init>(Landroid/os/Parcel;)V" />
-		<field name="CREATOR" />
-		<field name="count" />
-		<field name="uri" />
-	</class>
-	<class name="android/content/ContentQueryMap" since="1">
-		<extends name="java/util/Observable" />
-		<method name="&lt;init>(Landroid/database/Cursor;Ljava/lang/String;ZLandroid/os/Handler;)V" />
-		<method name="close()V" />
-		<method name="getRows()Ljava/util/Map;" />
-		<method name="getValues(Ljava/lang/String;)Landroid/content/ContentValues;" />
-		<method name="requery()V" />
-		<method name="setKeepUpdated(Z)V" />
-	</class>
-	<class name="android/content/ContentResolver" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="acquireContentProviderClient(Landroid/net/Uri;)Landroid/content/ContentProviderClient;" since="5" />
-		<method name="acquireContentProviderClient(Ljava/lang/String;)Landroid/content/ContentProviderClient;" since="5" />
-		<method name="acquireUnstableContentProviderClient(Landroid/net/Uri;)Landroid/content/ContentProviderClient;" since="16" />
-		<method name="acquireUnstableContentProviderClient(Ljava/lang/String;)Landroid/content/ContentProviderClient;" since="16" />
-		<method name="addPeriodicSync(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;J)V" since="8" />
-		<method name="addStatusChangeListener(ILandroid/content/SyncStatusObserver;)Ljava/lang/Object;" since="5" />
-		<method name="applyBatch(Ljava/lang/String;Ljava/util/ArrayList;)[Landroid/content/ContentProviderResult;" since="5" />
-		<method name="bulkInsert(Landroid/net/Uri;[Landroid/content/ContentValues;)I" />
-		<method name="call(Landroid/net/Uri;Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;)Landroid/os/Bundle;" since="11" />
-		<method name="cancelSync(Landroid/accounts/Account;Ljava/lang/String;)V" since="5" />
-		<method name="cancelSync(Landroid/content/SyncRequest;)V" since="21" />
-		<method name="cancelSync(Landroid/net/Uri;)V" />
-		<method name="canonicalize(Landroid/net/Uri;)Landroid/net/Uri;" since="19" />
-		<method name="delete(Landroid/net/Uri;Ljava/lang/String;[Ljava/lang/String;)I" />
-		<method name="getCurrentSync()Landroid/content/SyncInfo;" since="8" />
-		<method name="getCurrentSyncs()Ljava/util/List;" since="11" />
-		<method name="getIsSyncable(Landroid/accounts/Account;Ljava/lang/String;)I" since="5" />
-		<method name="getMasterSyncAutomatically()Z" since="5" />
-		<method name="getOutgoingPersistedUriPermissions()Ljava/util/List;" since="19" />
-		<method name="getPeriodicSyncs(Landroid/accounts/Account;Ljava/lang/String;)Ljava/util/List;" since="8" />
-		<method name="getPersistedUriPermissions()Ljava/util/List;" since="19" />
-		<method name="getStreamTypes(Landroid/net/Uri;Ljava/lang/String;)[Ljava/lang/String;" since="11" />
-		<method name="getSyncAdapterTypes()[Landroid/content/SyncAdapterType;" since="5" />
-		<method name="getSyncAutomatically(Landroid/accounts/Account;Ljava/lang/String;)Z" since="5" />
-		<method name="getType(Landroid/net/Uri;)Ljava/lang/String;" />
-		<method name="insert(Landroid/net/Uri;Landroid/content/ContentValues;)Landroid/net/Uri;" />
-		<method name="isSyncActive(Landroid/accounts/Account;Ljava/lang/String;)Z" since="5" />
-		<method name="isSyncPending(Landroid/accounts/Account;Ljava/lang/String;)Z" since="5" />
-		<method name="notifyChange(Landroid/net/Uri;Landroid/database/ContentObserver;)V" />
-		<method name="notifyChange(Landroid/net/Uri;Landroid/database/ContentObserver;Z)V" />
-		<method name="openAssetFileDescriptor(Landroid/net/Uri;Ljava/lang/String;)Landroid/content/res/AssetFileDescriptor;" since="3" />
-		<method name="openAssetFileDescriptor(Landroid/net/Uri;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/content/res/AssetFileDescriptor;" since="19" />
-		<method name="openFileDescriptor(Landroid/net/Uri;Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;" />
-		<method name="openFileDescriptor(Landroid/net/Uri;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/os/ParcelFileDescriptor;" since="19" />
-		<method name="openInputStream(Landroid/net/Uri;)Ljava/io/InputStream;" />
-		<method name="openOutputStream(Landroid/net/Uri;)Ljava/io/OutputStream;" />
-		<method name="openOutputStream(Landroid/net/Uri;Ljava/lang/String;)Ljava/io/OutputStream;" since="3" />
-		<method name="openTypedAssetFileDescriptor(Landroid/net/Uri;Ljava/lang/String;Landroid/os/Bundle;)Landroid/content/res/AssetFileDescriptor;" since="11" />
-		<method name="openTypedAssetFileDescriptor(Landroid/net/Uri;Ljava/lang/String;Landroid/os/Bundle;Landroid/os/CancellationSignal;)Landroid/content/res/AssetFileDescriptor;" since="19" />
-		<method name="query(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;" />
-		<method name="query(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/database/Cursor;" since="16" />
-		<method name="registerContentObserver(Landroid/net/Uri;ZLandroid/database/ContentObserver;)V" />
-		<method name="releasePersistableUriPermission(Landroid/net/Uri;I)V" since="19" />
-		<method name="removePeriodicSync(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;)V" since="8" />
-		<method name="removeStatusChangeListener(Ljava/lang/Object;)V" since="5" />
-		<method name="requestSync(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;)V" since="5" />
-		<method name="requestSync(Landroid/content/SyncRequest;)V" since="19" />
-		<method name="setIsSyncable(Landroid/accounts/Account;Ljava/lang/String;I)V" since="5" />
-		<method name="setMasterSyncAutomatically(Z)V" since="5" />
-		<method name="setSyncAutomatically(Landroid/accounts/Account;Ljava/lang/String;Z)V" since="5" />
-		<method name="startSync(Landroid/net/Uri;Landroid/os/Bundle;)V" />
-		<method name="takePersistableUriPermission(Landroid/net/Uri;I)V" since="19" />
-		<method name="uncanonicalize(Landroid/net/Uri;)Landroid/net/Uri;" since="19" />
-		<method name="unregisterContentObserver(Landroid/database/ContentObserver;)V" />
-		<method name="update(Landroid/net/Uri;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;)I" />
-		<method name="validateSyncExtrasBundle(Landroid/os/Bundle;)V" />
-		<field name="ANY_CURSOR_ITEM_TYPE" since="21" />
-		<field name="CURSOR_DIR_BASE_TYPE" />
-		<field name="CURSOR_ITEM_BASE_TYPE" />
-		<field name="SCHEME_ANDROID_RESOURCE" />
-		<field name="SCHEME_CONTENT" />
-		<field name="SCHEME_FILE" />
-		<field name="SYNC_EXTRAS_ACCOUNT" />
-		<field name="SYNC_EXTRAS_DISCARD_LOCAL_DELETIONS" />
-		<field name="SYNC_EXTRAS_DO_NOT_RETRY" since="8" />
-		<field name="SYNC_EXTRAS_EXPEDITED" />
-		<field name="SYNC_EXTRAS_FORCE" />
-		<field name="SYNC_EXTRAS_IGNORE_BACKOFF" since="8" />
-		<field name="SYNC_EXTRAS_IGNORE_SETTINGS" since="8" />
-		<field name="SYNC_EXTRAS_INITIALIZE" since="5" />
-		<field name="SYNC_EXTRAS_MANUAL" since="5" />
-		<field name="SYNC_EXTRAS_OVERRIDE_TOO_MANY_DELETIONS" />
-		<field name="SYNC_EXTRAS_UPLOAD" />
-		<field name="SYNC_OBSERVER_TYPE_ACTIVE" since="8" />
-		<field name="SYNC_OBSERVER_TYPE_PENDING" since="8" />
-		<field name="SYNC_OBSERVER_TYPE_SETTINGS" since="8" />
-	</class>
-	<class name="android/content/ContentUris" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="appendId(Landroid/net/Uri$Builder;J)Landroid/net/Uri$Builder;" />
-		<method name="parseId(Landroid/net/Uri;)J" />
-		<method name="withAppendedId(Landroid/net/Uri;J)Landroid/net/Uri;" />
-	</class>
-	<class name="android/content/ContentValues" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(I)V" />
-		<method name="&lt;init>(Landroid/content/ContentValues;)V" />
-		<method name="clear()V" />
-		<method name="containsKey(Ljava/lang/String;)Z" />
-		<method name="get(Ljava/lang/String;)Ljava/lang/Object;" />
-		<method name="getAsBoolean(Ljava/lang/String;)Ljava/lang/Boolean;" />
-		<method name="getAsByte(Ljava/lang/String;)Ljava/lang/Byte;" />
-		<method name="getAsByteArray(Ljava/lang/String;)[B" />
-		<method name="getAsDouble(Ljava/lang/String;)Ljava/lang/Double;" />
-		<method name="getAsFloat(Ljava/lang/String;)Ljava/lang/Float;" />
-		<method name="getAsInteger(Ljava/lang/String;)Ljava/lang/Integer;" />
-		<method name="getAsLong(Ljava/lang/String;)Ljava/lang/Long;" />
-		<method name="getAsShort(Ljava/lang/String;)Ljava/lang/Short;" />
-		<method name="getAsString(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="keySet()Ljava/util/Set;" since="11" />
-		<method name="put(Ljava/lang/String;Ljava/lang/Boolean;)V" />
-		<method name="put(Ljava/lang/String;Ljava/lang/Byte;)V" />
-		<method name="put(Ljava/lang/String;Ljava/lang/Double;)V" />
-		<method name="put(Ljava/lang/String;Ljava/lang/Float;)V" />
-		<method name="put(Ljava/lang/String;Ljava/lang/Integer;)V" />
-		<method name="put(Ljava/lang/String;Ljava/lang/Long;)V" />
-		<method name="put(Ljava/lang/String;Ljava/lang/Short;)V" />
-		<method name="put(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="put(Ljava/lang/String;[B)V" />
-		<method name="putAll(Landroid/content/ContentValues;)V" />
-		<method name="putNull(Ljava/lang/String;)V" />
-		<method name="remove(Ljava/lang/String;)V" />
-		<method name="size()I" />
-		<method name="valueSet()Ljava/util/Set;" />
-		<field name="CREATOR" />
-		<field name="TAG" />
-	</class>
-	<class name="android/content/Context" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="bindService(Landroid/content/Intent;Landroid/content/ServiceConnection;I)Z" />
-		<method name="checkCallingOrSelfPermission(Ljava/lang/String;)I" />
-		<method name="checkCallingOrSelfUriPermission(Landroid/net/Uri;I)I" />
-		<method name="checkCallingPermission(Ljava/lang/String;)I" />
-		<method name="checkCallingUriPermission(Landroid/net/Uri;I)I" />
-		<method name="checkPermission(Ljava/lang/String;II)I" />
-		<method name="checkUriPermission(Landroid/net/Uri;III)I" />
-		<method name="checkUriPermission(Landroid/net/Uri;Ljava/lang/String;Ljava/lang/String;III)I" />
-		<method name="clearWallpaper()V" />
-		<method name="createConfigurationContext(Landroid/content/res/Configuration;)Landroid/content/Context;" since="17" />
-		<method name="createDisplayContext(Landroid/view/Display;)Landroid/content/Context;" since="17" />
-		<method name="createPackageContext(Ljava/lang/String;I)Landroid/content/Context;" />
-		<method name="databaseList()[Ljava/lang/String;" />
-		<method name="deleteDatabase(Ljava/lang/String;)Z" />
-		<method name="deleteFile(Ljava/lang/String;)Z" />
-		<method name="enforceCallingOrSelfPermission(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="enforceCallingOrSelfUriPermission(Landroid/net/Uri;ILjava/lang/String;)V" />
-		<method name="enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="enforceCallingUriPermission(Landroid/net/Uri;ILjava/lang/String;)V" />
-		<method name="enforcePermission(Ljava/lang/String;IILjava/lang/String;)V" />
-		<method name="enforceUriPermission(Landroid/net/Uri;IIILjava/lang/String;)V" />
-		<method name="enforceUriPermission(Landroid/net/Uri;Ljava/lang/String;Ljava/lang/String;IIILjava/lang/String;)V" />
-		<method name="fileList()[Ljava/lang/String;" />
-		<method name="getApplicationContext()Landroid/content/Context;" />
-		<method name="getApplicationInfo()Landroid/content/pm/ApplicationInfo;" since="4" />
-		<method name="getAssets()Landroid/content/res/AssetManager;" />
-		<method name="getCacheDir()Ljava/io/File;" />
-		<method name="getClassLoader()Ljava/lang/ClassLoader;" />
-		<method name="getContentResolver()Landroid/content/ContentResolver;" />
-		<method name="getDatabasePath(Ljava/lang/String;)Ljava/io/File;" />
-		<method name="getDir(Ljava/lang/String;I)Ljava/io/File;" />
-		<method name="getDrawable(I)Landroid/graphics/drawable/Drawable;" since="21" />
-		<method name="getExternalCacheDir()Ljava/io/File;" since="8" />
-		<method name="getExternalCacheDirs()[Ljava/io/File;" since="19" />
-		<method name="getExternalFilesDir(Ljava/lang/String;)Ljava/io/File;" since="8" />
-		<method name="getExternalFilesDirs(Ljava/lang/String;)[Ljava/io/File;" since="19" />
-		<method name="getExternalMediaDirs()[Ljava/io/File;" since="21" />
-		<method name="getFileStreamPath(Ljava/lang/String;)Ljava/io/File;" />
-		<method name="getFilesDir()Ljava/io/File;" />
-		<method name="getMainLooper()Landroid/os/Looper;" />
-		<method name="getObbDir()Ljava/io/File;" since="11" />
-		<method name="getObbDirs()[Ljava/io/File;" since="19" />
-		<method name="getPackageCodePath()Ljava/lang/String;" since="8" />
-		<method name="getPackageManager()Landroid/content/pm/PackageManager;" />
-		<method name="getPackageName()Ljava/lang/String;" />
-		<method name="getPackageResourcePath()Ljava/lang/String;" since="8" />
-		<method name="getResources()Landroid/content/res/Resources;" />
-		<method name="getSharedPreferences(Ljava/lang/String;I)Landroid/content/SharedPreferences;" />
-		<method name="getString(I)Ljava/lang/String;" />
-		<method name="getString(I[Ljava/lang/Object;)Ljava/lang/String;" />
-		<method name="getSystemService(Ljava/lang/String;)Ljava/lang/Object;" />
-		<method name="getText(I)Ljava/lang/CharSequence;" />
-		<method name="getTheme()Landroid/content/res/Resources$Theme;" />
-		<method name="getWallpaper()Landroid/graphics/drawable/Drawable;" />
-		<method name="getWallpaperDesiredMinimumHeight()I" />
-		<method name="getWallpaperDesiredMinimumWidth()I" />
-		<method name="grantUriPermission(Ljava/lang/String;Landroid/net/Uri;I)V" />
-		<method name="isRestricted()Z" since="4" />
-		<method name="obtainStyledAttributes(I[I)Landroid/content/res/TypedArray;" />
-		<method name="obtainStyledAttributes(Landroid/util/AttributeSet;[I)Landroid/content/res/TypedArray;" />
-		<method name="obtainStyledAttributes(Landroid/util/AttributeSet;[III)Landroid/content/res/TypedArray;" />
-		<method name="obtainStyledAttributes([I)Landroid/content/res/TypedArray;" />
-		<method name="openFileInput(Ljava/lang/String;)Ljava/io/FileInputStream;" />
-		<method name="openFileOutput(Ljava/lang/String;I)Ljava/io/FileOutputStream;" />
-		<method name="openOrCreateDatabase(Ljava/lang/String;ILandroid/database/sqlite/SQLiteDatabase$CursorFactory;)Landroid/database/sqlite/SQLiteDatabase;" />
-		<method name="openOrCreateDatabase(Ljava/lang/String;ILandroid/database/sqlite/SQLiteDatabase$CursorFactory;Landroid/database/DatabaseErrorHandler;)Landroid/database/sqlite/SQLiteDatabase;" since="11" />
-		<method name="peekWallpaper()Landroid/graphics/drawable/Drawable;" />
-		<method name="registerComponentCallbacks(Landroid/content/ComponentCallbacks;)V" since="14" />
-		<method name="registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)Landroid/content/Intent;" />
-		<method name="registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;Ljava/lang/String;Landroid/os/Handler;)Landroid/content/Intent;" />
-		<method name="removeStickyBroadcast(Landroid/content/Intent;)V" />
-		<method name="removeStickyBroadcastAsUser(Landroid/content/Intent;Landroid/os/UserHandle;)V" since="17" />
-		<method name="revokeUriPermission(Landroid/net/Uri;I)V" />
-		<method name="sendBroadcast(Landroid/content/Intent;)V" />
-		<method name="sendBroadcast(Landroid/content/Intent;Ljava/lang/String;)V" />
-		<method name="sendBroadcastAsUser(Landroid/content/Intent;Landroid/os/UserHandle;)V" since="17" />
-		<method name="sendBroadcastAsUser(Landroid/content/Intent;Landroid/os/UserHandle;Ljava/lang/String;)V" since="17" />
-		<method name="sendOrderedBroadcast(Landroid/content/Intent;Ljava/lang/String;)V" />
-		<method name="sendOrderedBroadcast(Landroid/content/Intent;Ljava/lang/String;Landroid/content/BroadcastReceiver;Landroid/os/Handler;ILjava/lang/String;Landroid/os/Bundle;)V" />
-		<method name="sendOrderedBroadcastAsUser(Landroid/content/Intent;Landroid/os/UserHandle;Ljava/lang/String;Landroid/content/BroadcastReceiver;Landroid/os/Handler;ILjava/lang/String;Landroid/os/Bundle;)V" since="17" />
-		<method name="sendStickyBroadcast(Landroid/content/Intent;)V" />
-		<method name="sendStickyBroadcastAsUser(Landroid/content/Intent;Landroid/os/UserHandle;)V" since="17" />
-		<method name="sendStickyOrderedBroadcast(Landroid/content/Intent;Landroid/content/BroadcastReceiver;Landroid/os/Handler;ILjava/lang/String;Landroid/os/Bundle;)V" since="5" />
-		<method name="sendStickyOrderedBroadcastAsUser(Landroid/content/Intent;Landroid/os/UserHandle;Landroid/content/BroadcastReceiver;Landroid/os/Handler;ILjava/lang/String;Landroid/os/Bundle;)V" since="17" />
-		<method name="setTheme(I)V" />
-		<method name="setWallpaper(Landroid/graphics/Bitmap;)V" />
-		<method name="setWallpaper(Ljava/io/InputStream;)V" />
-		<method name="startActivities([Landroid/content/Intent;)V" since="11" />
-		<method name="startActivities([Landroid/content/Intent;Landroid/os/Bundle;)V" since="16" />
-		<method name="startActivity(Landroid/content/Intent;)V" />
-		<method name="startActivity(Landroid/content/Intent;Landroid/os/Bundle;)V" since="16" />
-		<method name="startInstrumentation(Landroid/content/ComponentName;Ljava/lang/String;Landroid/os/Bundle;)Z" />
-		<method name="startIntentSender(Landroid/content/IntentSender;Landroid/content/Intent;III)V" since="5" />
-		<method name="startIntentSender(Landroid/content/IntentSender;Landroid/content/Intent;IIILandroid/os/Bundle;)V" since="16" />
-		<method name="startService(Landroid/content/Intent;)Landroid/content/ComponentName;" />
-		<method name="stopService(Landroid/content/Intent;)Z" />
-		<method name="unbindService(Landroid/content/ServiceConnection;)V" />
-		<method name="unregisterComponentCallbacks(Landroid/content/ComponentCallbacks;)V" since="14" />
-		<method name="unregisterReceiver(Landroid/content/BroadcastReceiver;)V" />
-		<field name="ACCESSIBILITY_SERVICE" since="4" />
-		<field name="ACCOUNT_SERVICE" since="5" />
-		<field name="ACTIVITY_SERVICE" />
-		<field name="ALARM_SERVICE" />
-		<field name="APP_OPS_SERVICE" since="19" />
-		<field name="AUDIO_SERVICE" />
-		<field name="BATTERY_SERVICE" since="21" />
-		<field name="BIND_ABOVE_CLIENT" since="14" />
-		<field name="BIND_ADJUST_WITH_ACTIVITY" since="14" />
-		<field name="BIND_ALLOW_OOM_MANAGEMENT" since="14" />
-		<field name="BIND_AUTO_CREATE" />
-		<field name="BIND_DEBUG_UNBIND" />
-		<field name="BIND_IMPORTANT" since="14" />
-		<field name="BIND_NOT_FOREGROUND" since="8" />
-		<field name="BIND_WAIVE_PRIORITY" since="14" />
-		<field name="BLUETOOTH_SERVICE" since="18" />
-		<field name="CAMERA_SERVICE" since="21" />
-		<field name="CAPTIONING_SERVICE" since="19" />
-		<field name="CLIPBOARD_SERVICE" />
-		<field name="CONNECTIVITY_SERVICE" />
-		<field name="CONSUMER_IR_SERVICE" since="19" />
-		<field name="CONTEXT_IGNORE_SECURITY" />
-		<field name="CONTEXT_INCLUDE_CODE" />
-		<field name="CONTEXT_RESTRICTED" since="4" />
-		<field name="DEVICE_POLICY_SERVICE" since="8" />
-		<field name="DISPLAY_SERVICE" since="17" />
-		<field name="DOWNLOAD_SERVICE" since="9" />
-		<field name="DROPBOX_SERVICE" since="8" />
-		<field name="INPUT_METHOD_SERVICE" since="3" />
-		<field name="INPUT_SERVICE" since="16" />
-		<field name="JOB_SCHEDULER_SERVICE" since="21" />
-		<field name="KEYGUARD_SERVICE" />
-		<field name="LAUNCHER_APPS_SERVICE" since="21" />
-		<field name="LAYOUT_INFLATER_SERVICE" />
-		<field name="LOCATION_SERVICE" />
-		<field name="MEDIA_ROUTER_SERVICE" since="16" />
-		<field name="MEDIA_SESSION_SERVICE" since="21" />
-		<field name="MODE_APPEND" />
-		<field name="MODE_ENABLE_WRITE_AHEAD_LOGGING" since="16" />
-		<field name="MODE_MULTI_PROCESS" since="11" />
-		<field name="MODE_PRIVATE" />
-		<field name="MODE_WORLD_READABLE" />
-		<field name="MODE_WORLD_WRITEABLE" />
-		<field name="NFC_SERVICE" since="10" />
-		<field name="NOTIFICATION_SERVICE" />
-		<field name="NSD_SERVICE" since="16" />
-		<field name="POWER_SERVICE" />
-		<field name="PRINT_SERVICE" since="19" />
-		<field name="SEARCH_SERVICE" />
-		<field name="SENSOR_SERVICE" />
-		<field name="STORAGE_SERVICE" since="9" />
-		<field name="TELEPHONY_SERVICE" />
-		<field name="TEXT_SERVICES_MANAGER_SERVICE" since="14" />
-		<field name="TV_INPUT_SERVICE" since="21" />
-		<field name="UI_MODE_SERVICE" since="8" />
-		<field name="USB_SERVICE" since="12" />
-		<field name="USER_SERVICE" since="17" />
-		<field name="VIBRATOR_SERVICE" />
-		<field name="WALLPAPER_SERVICE" />
-		<field name="WIFI_P2P_SERVICE" since="14" />
-		<field name="WIFI_SERVICE" />
-		<field name="WINDOW_SERVICE" />
-	</class>
-	<class name="android/content/ContextWrapper" since="1">
-		<extends name="android/content/Context" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="attachBaseContext(Landroid/content/Context;)V" />
-		<method name="getBaseContext()Landroid/content/Context;" />
-		<method name="getPackageCodePath()Ljava/lang/String;" />
-		<method name="getPackageResourcePath()Ljava/lang/String;" />
-	</class>
-	<class name="android/content/CursorLoader" since="11">
-		<extends name="android/content/AsyncTaskLoader" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="deliverResult(Landroid/database/Cursor;)V" />
-		<method name="getProjection()[Ljava/lang/String;" />
-		<method name="getSelection()Ljava/lang/String;" />
-		<method name="getSelectionArgs()[Ljava/lang/String;" />
-		<method name="getSortOrder()Ljava/lang/String;" />
-		<method name="getUri()Landroid/net/Uri;" />
-		<method name="loadInBackground()Landroid/database/Cursor;" />
-		<method name="onCanceled(Landroid/database/Cursor;)V" />
-		<method name="setProjection([Ljava/lang/String;)V" />
-		<method name="setSelection(Ljava/lang/String;)V" />
-		<method name="setSelectionArgs([Ljava/lang/String;)V" />
-		<method name="setSortOrder(Ljava/lang/String;)V" />
-		<method name="setUri(Landroid/net/Uri;)V" />
-	</class>
-	<class name="android/content/DialogInterface" since="1">
-		<extends name="java/lang/Object" />
-		<method name="cancel()V" />
-		<method name="dismiss()V" />
-		<field name="BUTTON1" />
-		<field name="BUTTON2" />
-		<field name="BUTTON3" />
-		<field name="BUTTON_NEGATIVE" since="3" />
-		<field name="BUTTON_NEUTRAL" since="3" />
-		<field name="BUTTON_POSITIVE" since="3" />
-	</class>
-	<class name="android/content/DialogInterface$OnCancelListener" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onCancel(Landroid/content/DialogInterface;)V" />
-	</class>
-	<class name="android/content/DialogInterface$OnClickListener" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onClick(Landroid/content/DialogInterface;I)V" />
-	</class>
-	<class name="android/content/DialogInterface$OnDismissListener" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onDismiss(Landroid/content/DialogInterface;)V" />
-	</class>
-	<class name="android/content/DialogInterface$OnKeyListener" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onKey(Landroid/content/DialogInterface;ILandroid/view/KeyEvent;)Z" />
-	</class>
-	<class name="android/content/DialogInterface$OnMultiChoiceClickListener" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onClick(Landroid/content/DialogInterface;IZ)V" />
-	</class>
-	<class name="android/content/DialogInterface$OnShowListener" since="8">
-		<extends name="java/lang/Object" />
-		<method name="onShow(Landroid/content/DialogInterface;)V" />
-	</class>
-	<class name="android/content/Entity" since="8">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/content/ContentValues;)V" />
-		<method name="addSubValue(Landroid/net/Uri;Landroid/content/ContentValues;)V" />
-		<method name="getEntityValues()Landroid/content/ContentValues;" />
-		<method name="getSubValues()Ljava/util/ArrayList;" />
-	</class>
-	<class name="android/content/Entity$NamedContentValues" since="8">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/net/Uri;Landroid/content/ContentValues;)V" />
-		<field name="uri" />
-		<field name="values" />
-	</class>
-	<class name="android/content/EntityIterator" since="8">
-		<extends name="java/lang/Object" />
-		<implements name="java/util/Iterator" />
-		<method name="close()V" />
-		<method name="reset()V" />
-	</class>
-	<class name="android/content/Intent" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<implements name="java/lang/Cloneable" since="8" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/content/Context;Ljava/lang/Class;)V" />
-		<method name="&lt;init>(Landroid/content/Intent;)V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Landroid/net/Uri;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Landroid/net/Uri;Landroid/content/Context;Ljava/lang/Class;)V" />
-		<method name="addCategory(Ljava/lang/String;)Landroid/content/Intent;" />
-		<method name="addFlags(I)Landroid/content/Intent;" />
-		<method name="cloneFilter()Landroid/content/Intent;" />
-		<method name="createChooser(Landroid/content/Intent;Ljava/lang/CharSequence;)Landroid/content/Intent;" />
-		<method name="fillIn(Landroid/content/Intent;I)I" />
-		<method name="filterEquals(Landroid/content/Intent;)Z" />
-		<method name="filterHashCode()I" />
-		<method name="getAction()Ljava/lang/String;" />
-		<method name="getBooleanArrayExtra(Ljava/lang/String;)[Z" />
-		<method name="getBooleanExtra(Ljava/lang/String;Z)Z" />
-		<method name="getBundleExtra(Ljava/lang/String;)Landroid/os/Bundle;" />
-		<method name="getByteArrayExtra(Ljava/lang/String;)[B" />
-		<method name="getByteExtra(Ljava/lang/String;B)B" />
-		<method name="getCategories()Ljava/util/Set;" />
-		<method name="getCharArrayExtra(Ljava/lang/String;)[C" />
-		<method name="getCharExtra(Ljava/lang/String;C)C" />
-		<method name="getCharSequenceArrayExtra(Ljava/lang/String;)[Ljava/lang/CharSequence;" since="8" />
-		<method name="getCharSequenceArrayListExtra(Ljava/lang/String;)Ljava/util/ArrayList;" since="8" />
-		<method name="getCharSequenceExtra(Ljava/lang/String;)Ljava/lang/CharSequence;" />
-		<method name="getClipData()Landroid/content/ClipData;" since="16" />
-		<method name="getComponent()Landroid/content/ComponentName;" />
-		<method name="getData()Landroid/net/Uri;" />
-		<method name="getDataString()Ljava/lang/String;" />
-		<method name="getDoubleArrayExtra(Ljava/lang/String;)[D" />
-		<method name="getDoubleExtra(Ljava/lang/String;D)D" />
-		<method name="getExtras()Landroid/os/Bundle;" />
-		<method name="getFlags()I" />
-		<method name="getFloatArrayExtra(Ljava/lang/String;)[F" />
-		<method name="getFloatExtra(Ljava/lang/String;F)F" />
-		<method name="getIntArrayExtra(Ljava/lang/String;)[I" />
-		<method name="getIntExtra(Ljava/lang/String;I)I" />
-		<method name="getIntegerArrayListExtra(Ljava/lang/String;)Ljava/util/ArrayList;" />
-		<method name="getIntent(Ljava/lang/String;)Landroid/content/Intent;" />
-		<method name="getIntentOld(Ljava/lang/String;)Landroid/content/Intent;" />
-		<method name="getLongArrayExtra(Ljava/lang/String;)[J" />
-		<method name="getLongExtra(Ljava/lang/String;J)J" />
-		<method name="getPackage()Ljava/lang/String;" since="4" />
-		<method name="getParcelableArrayExtra(Ljava/lang/String;)[Landroid/os/Parcelable;" />
-		<method name="getParcelableArrayListExtra(Ljava/lang/String;)Ljava/util/ArrayList;" />
-		<method name="getParcelableExtra(Ljava/lang/String;)Landroid/os/Parcelable;" />
-		<method name="getScheme()Ljava/lang/String;" />
-		<method name="getSelector()Landroid/content/Intent;" since="15" />
-		<method name="getSerializableExtra(Ljava/lang/String;)Ljava/io/Serializable;" />
-		<method name="getShortArrayExtra(Ljava/lang/String;)[S" />
-		<method name="getShortExtra(Ljava/lang/String;S)S" />
-		<method name="getSourceBounds()Landroid/graphics/Rect;" since="7" />
-		<method name="getStringArrayExtra(Ljava/lang/String;)[Ljava/lang/String;" />
-		<method name="getStringArrayListExtra(Ljava/lang/String;)Ljava/util/ArrayList;" />
-		<method name="getStringExtra(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="getType()Ljava/lang/String;" />
-		<method name="hasCategory(Ljava/lang/String;)Z" />
-		<method name="hasExtra(Ljava/lang/String;)Z" />
-		<method name="hasFileDescriptors()Z" />
-		<method name="makeMainActivity(Landroid/content/ComponentName;)Landroid/content/Intent;" since="11" />
-		<method name="makeMainSelectorActivity(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;" since="15" />
-		<method name="makeRestartActivityTask(Landroid/content/ComponentName;)Landroid/content/Intent;" since="11" />
-		<method name="normalizeMimeType(Ljava/lang/String;)Ljava/lang/String;" since="16" />
-		<method name="parseIntent(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;)Landroid/content/Intent;" />
-		<method name="parseUri(Ljava/lang/String;I)Landroid/content/Intent;" since="4" />
-		<method name="putCharSequenceArrayListExtra(Ljava/lang/String;Ljava/util/ArrayList;)Landroid/content/Intent;" since="8" />
-		<method name="putExtra(Ljava/lang/String;B)Landroid/content/Intent;" />
-		<method name="putExtra(Ljava/lang/String;C)Landroid/content/Intent;" />
-		<method name="putExtra(Ljava/lang/String;D)Landroid/content/Intent;" />
-		<method name="putExtra(Ljava/lang/String;F)Landroid/content/Intent;" />
-		<method name="putExtra(Ljava/lang/String;I)Landroid/content/Intent;" />
-		<method name="putExtra(Ljava/lang/String;J)Landroid/content/Intent;" />
-		<method name="putExtra(Ljava/lang/String;Landroid/os/Bundle;)Landroid/content/Intent;" />
-		<method name="putExtra(Ljava/lang/String;Landroid/os/Parcelable;)Landroid/content/Intent;" />
-		<method name="putExtra(Ljava/lang/String;Ljava/io/Serializable;)Landroid/content/Intent;" />
-		<method name="putExtra(Ljava/lang/String;Ljava/lang/CharSequence;)Landroid/content/Intent;" />
-		<method name="putExtra(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;" />
-		<method name="putExtra(Ljava/lang/String;S)Landroid/content/Intent;" />
-		<method name="putExtra(Ljava/lang/String;Z)Landroid/content/Intent;" />
-		<method name="putExtra(Ljava/lang/String;[B)Landroid/content/Intent;" />
-		<method name="putExtra(Ljava/lang/String;[C)Landroid/content/Intent;" />
-		<method name="putExtra(Ljava/lang/String;[D)Landroid/content/Intent;" />
-		<method name="putExtra(Ljava/lang/String;[F)Landroid/content/Intent;" />
-		<method name="putExtra(Ljava/lang/String;[I)Landroid/content/Intent;" />
-		<method name="putExtra(Ljava/lang/String;[J)Landroid/content/Intent;" />
-		<method name="putExtra(Ljava/lang/String;[Landroid/os/Parcelable;)Landroid/content/Intent;" />
-		<method name="putExtra(Ljava/lang/String;[Ljava/lang/CharSequence;)Landroid/content/Intent;" since="8" />
-		<method name="putExtra(Ljava/lang/String;[Ljava/lang/String;)Landroid/content/Intent;" />
-		<method name="putExtra(Ljava/lang/String;[S)Landroid/content/Intent;" />
-		<method name="putExtra(Ljava/lang/String;[Z)Landroid/content/Intent;" />
-		<method name="putExtras(Landroid/content/Intent;)Landroid/content/Intent;" />
-		<method name="putExtras(Landroid/os/Bundle;)Landroid/content/Intent;" />
-		<method name="putIntegerArrayListExtra(Ljava/lang/String;Ljava/util/ArrayList;)Landroid/content/Intent;" />
-		<method name="putParcelableArrayListExtra(Ljava/lang/String;Ljava/util/ArrayList;)Landroid/content/Intent;" />
-		<method name="putStringArrayListExtra(Ljava/lang/String;Ljava/util/ArrayList;)Landroid/content/Intent;" />
-		<method name="readFromParcel(Landroid/os/Parcel;)V" />
-		<method name="removeCategory(Ljava/lang/String;)V" />
-		<method name="removeExtra(Ljava/lang/String;)V" />
-		<method name="replaceExtras(Landroid/content/Intent;)Landroid/content/Intent;" since="3" />
-		<method name="replaceExtras(Landroid/os/Bundle;)Landroid/content/Intent;" since="3" />
-		<method name="resolveActivity(Landroid/content/pm/PackageManager;)Landroid/content/ComponentName;" />
-		<method name="resolveActivityInfo(Landroid/content/pm/PackageManager;I)Landroid/content/pm/ActivityInfo;" />
-		<method name="resolveType(Landroid/content/ContentResolver;)Ljava/lang/String;" />
-		<method name="resolveType(Landroid/content/Context;)Ljava/lang/String;" />
-		<method name="resolveTypeIfNeeded(Landroid/content/ContentResolver;)Ljava/lang/String;" />
-		<method name="setAction(Ljava/lang/String;)Landroid/content/Intent;" />
-		<method name="setClass(Landroid/content/Context;Ljava/lang/Class;)Landroid/content/Intent;" />
-		<method name="setClassName(Landroid/content/Context;Ljava/lang/String;)Landroid/content/Intent;" />
-		<method name="setClassName(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;" />
-		<method name="setClipData(Landroid/content/ClipData;)V" since="16" />
-		<method name="setComponent(Landroid/content/ComponentName;)Landroid/content/Intent;" />
-		<method name="setData(Landroid/net/Uri;)Landroid/content/Intent;" />
-		<method name="setDataAndNormalize(Landroid/net/Uri;)Landroid/content/Intent;" since="16" />
-		<method name="setDataAndType(Landroid/net/Uri;Ljava/lang/String;)Landroid/content/Intent;" />
-		<method name="setDataAndTypeAndNormalize(Landroid/net/Uri;Ljava/lang/String;)Landroid/content/Intent;" since="16" />
-		<method name="setExtrasClassLoader(Ljava/lang/ClassLoader;)V" />
-		<method name="setFlags(I)Landroid/content/Intent;" />
-		<method name="setPackage(Ljava/lang/String;)Landroid/content/Intent;" since="4" />
-		<method name="setSelector(Landroid/content/Intent;)V" since="15" />
-		<method name="setSourceBounds(Landroid/graphics/Rect;)V" since="7" />
-		<method name="setType(Ljava/lang/String;)Landroid/content/Intent;" />
-		<method name="setTypeAndNormalize(Ljava/lang/String;)Landroid/content/Intent;" since="16" />
-		<method name="toURI()Ljava/lang/String;" />
-		<method name="toUri(I)Ljava/lang/String;" since="4" />
-		<field name="ACTION_AIRPLANE_MODE_CHANGED" />
-		<field name="ACTION_ALL_APPS" />
-		<field name="ACTION_ANSWER" />
-		<field name="ACTION_APPLICATION_RESTRICTIONS_CHANGED" since="21" />
-		<field name="ACTION_APP_ERROR" since="14" />
-		<field name="ACTION_ASSIST" since="16" />
-		<field name="ACTION_ATTACH_DATA" />
-		<field name="ACTION_BATTERY_CHANGED" />
-		<field name="ACTION_BATTERY_LOW" />
-		<field name="ACTION_BATTERY_OKAY" since="4" />
-		<field name="ACTION_BOOT_COMPLETED" />
-		<field name="ACTION_BUG_REPORT" />
-		<field name="ACTION_CALL" />
-		<field name="ACTION_CALL_BUTTON" />
-		<field name="ACTION_CAMERA_BUTTON" />
-		<field name="ACTION_CHOOSER" />
-		<field name="ACTION_CLOSE_SYSTEM_DIALOGS" />
-		<field name="ACTION_CONFIGURATION_CHANGED" />
-		<field name="ACTION_CREATE_DOCUMENT" since="19" />
-		<field name="ACTION_CREATE_SHORTCUT" />
-		<field name="ACTION_DATE_CHANGED" />
-		<field name="ACTION_DEFAULT" />
-		<field name="ACTION_DELETE" />
-		<field name="ACTION_DEVICE_STORAGE_LOW" />
-		<field name="ACTION_DEVICE_STORAGE_OK" />
-		<field name="ACTION_DIAL" />
-		<field name="ACTION_DOCK_EVENT" since="5" />
-		<field name="ACTION_DREAMING_STARTED" since="17" />
-		<field name="ACTION_DREAMING_STOPPED" since="17" />
-		<field name="ACTION_EDIT" />
-		<field name="ACTION_EXTERNAL_APPLICATIONS_AVAILABLE" since="8" />
-		<field name="ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE" since="8" />
-		<field name="ACTION_FACTORY_TEST" />
-		<field name="ACTION_GET_CONTENT" />
-		<field name="ACTION_GET_RESTRICTION_ENTRIES" since="18" />
-		<field name="ACTION_GTALK_SERVICE_CONNECTED" />
-		<field name="ACTION_GTALK_SERVICE_DISCONNECTED" />
-		<field name="ACTION_HEADSET_PLUG" />
-		<field name="ACTION_INPUT_METHOD_CHANGED" since="3" />
-		<field name="ACTION_INSERT" />
-		<field name="ACTION_INSERT_OR_EDIT" />
-		<field name="ACTION_INSTALL_PACKAGE" since="14" />
-		<field name="ACTION_LOCALE_CHANGED" since="7" />
-		<field name="ACTION_MAIN" />
-		<field name="ACTION_MANAGED_PROFILE_ADDED" since="21" />
-		<field name="ACTION_MANAGED_PROFILE_REMOVED" since="21" />
-		<field name="ACTION_MANAGE_NETWORK_USAGE" since="14" />
-		<field name="ACTION_MANAGE_PACKAGE_STORAGE" />
-		<field name="ACTION_MEDIA_BAD_REMOVAL" />
-		<field name="ACTION_MEDIA_BUTTON" />
-		<field name="ACTION_MEDIA_CHECKING" since="3" />
-		<field name="ACTION_MEDIA_EJECT" />
-		<field name="ACTION_MEDIA_MOUNTED" />
-		<field name="ACTION_MEDIA_NOFS" since="3" />
-		<field name="ACTION_MEDIA_REMOVED" />
-		<field name="ACTION_MEDIA_SCANNER_FINISHED" />
-		<field name="ACTION_MEDIA_SCANNER_SCAN_FILE" />
-		<field name="ACTION_MEDIA_SCANNER_STARTED" />
-		<field name="ACTION_MEDIA_SHARED" />
-		<field name="ACTION_MEDIA_UNMOUNTABLE" />
-		<field name="ACTION_MEDIA_UNMOUNTED" />
-		<field name="ACTION_MY_PACKAGE_REPLACED" since="12" />
-		<field name="ACTION_NEW_OUTGOING_CALL" />
-		<field name="ACTION_OPEN_DOCUMENT" since="19" />
-		<field name="ACTION_OPEN_DOCUMENT_TREE" since="21" />
-		<field name="ACTION_PACKAGE_ADDED" />
-		<field name="ACTION_PACKAGE_CHANGED" />
-		<field name="ACTION_PACKAGE_DATA_CLEARED" since="3" />
-		<field name="ACTION_PACKAGE_FIRST_LAUNCH" since="12" />
-		<field name="ACTION_PACKAGE_FULLY_REMOVED" since="14" />
-		<field name="ACTION_PACKAGE_INSTALL" />
-		<field name="ACTION_PACKAGE_NEEDS_VERIFICATION" since="14" />
-		<field name="ACTION_PACKAGE_REMOVED" />
-		<field name="ACTION_PACKAGE_REPLACED" since="3" />
-		<field name="ACTION_PACKAGE_RESTARTED" />
-		<field name="ACTION_PACKAGE_VERIFIED" since="17" />
-		<field name="ACTION_PASTE" since="11" />
-		<field name="ACTION_PICK" />
-		<field name="ACTION_PICK_ACTIVITY" />
-		<field name="ACTION_POWER_CONNECTED" since="4" />
-		<field name="ACTION_POWER_DISCONNECTED" since="4" />
-		<field name="ACTION_POWER_USAGE_SUMMARY" since="4" />
-		<field name="ACTION_PROVIDER_CHANGED" />
-		<field name="ACTION_QUICK_CLOCK" since="17" />
-		<field name="ACTION_REBOOT" />
-		<field name="ACTION_RUN" />
-		<field name="ACTION_SCREEN_OFF" />
-		<field name="ACTION_SCREEN_ON" />
-		<field name="ACTION_SEARCH" />
-		<field name="ACTION_SEARCH_LONG_PRESS" since="3" />
-		<field name="ACTION_SEND" />
-		<field name="ACTION_SENDTO" />
-		<field name="ACTION_SEND_MULTIPLE" since="4" />
-		<field name="ACTION_SET_WALLPAPER" />
-		<field name="ACTION_SHUTDOWN" since="4" />
-		<field name="ACTION_SYNC" />
-		<field name="ACTION_SYSTEM_TUTORIAL" since="3" />
-		<field name="ACTION_TIMEZONE_CHANGED" />
-		<field name="ACTION_TIME_CHANGED" />
-		<field name="ACTION_TIME_TICK" />
-		<field name="ACTION_UID_REMOVED" />
-		<field name="ACTION_UMS_CONNECTED" />
-		<field name="ACTION_UMS_DISCONNECTED" />
-		<field name="ACTION_UNINSTALL_PACKAGE" since="14" />
-		<field name="ACTION_USER_BACKGROUND" since="17" />
-		<field name="ACTION_USER_FOREGROUND" since="17" />
-		<field name="ACTION_USER_INITIALIZE" since="17" />
-		<field name="ACTION_USER_PRESENT" since="3" />
-		<field name="ACTION_VIEW" />
-		<field name="ACTION_VOICE_COMMAND" />
-		<field name="ACTION_WALLPAPER_CHANGED" />
-		<field name="ACTION_WEB_SEARCH" />
-		<field name="CATEGORY_ALTERNATIVE" />
-		<field name="CATEGORY_APP_BROWSER" since="15" />
-		<field name="CATEGORY_APP_CALCULATOR" since="15" />
-		<field name="CATEGORY_APP_CALENDAR" since="15" />
-		<field name="CATEGORY_APP_CONTACTS" since="15" />
-		<field name="CATEGORY_APP_EMAIL" since="15" />
-		<field name="CATEGORY_APP_GALLERY" since="15" />
-		<field name="CATEGORY_APP_MAPS" since="15" />
-		<field name="CATEGORY_APP_MARKET" since="11" />
-		<field name="CATEGORY_APP_MESSAGING" since="15" />
-		<field name="CATEGORY_APP_MUSIC" since="15" />
-		<field name="CATEGORY_BROWSABLE" />
-		<field name="CATEGORY_CAR_DOCK" since="5" />
-		<field name="CATEGORY_CAR_MODE" since="8" />
-		<field name="CATEGORY_DEFAULT" />
-		<field name="CATEGORY_DESK_DOCK" since="5" />
-		<field name="CATEGORY_DEVELOPMENT_PREFERENCE" />
-		<field name="CATEGORY_EMBED" />
-		<field name="CATEGORY_FRAMEWORK_INSTRUMENTATION_TEST" />
-		<field name="CATEGORY_GADGET" />
-		<field name="CATEGORY_HE_DESK_DOCK" since="11" />
-		<field name="CATEGORY_HOME" />
-		<field name="CATEGORY_INFO" since="3" />
-		<field name="CATEGORY_LAUNCHER" />
-		<field name="CATEGORY_LEANBACK_LAUNCHER" since="21" />
-		<field name="CATEGORY_LE_DESK_DOCK" since="11" />
-		<field name="CATEGORY_MONKEY" />
-		<field name="CATEGORY_OPENABLE" />
-		<field name="CATEGORY_PREFERENCE" />
-		<field name="CATEGORY_SAMPLE_CODE" />
-		<field name="CATEGORY_SELECTED_ALTERNATIVE" />
-		<field name="CATEGORY_TAB" />
-		<field name="CATEGORY_TEST" />
-		<field name="CATEGORY_UNIT_TEST" />
-		<field name="CATEGORY_VOICE" since="21" />
-		<field name="CREATOR" />
-		<field name="EXTRA_ALARM_COUNT" />
-		<field name="EXTRA_ALLOW_MULTIPLE" since="18" />
-		<field name="EXTRA_ALLOW_REPLACE" since="14" />
-		<field name="EXTRA_ASSIST_CONTEXT" since="18" />
-		<field name="EXTRA_ASSIST_PACKAGE" since="18" />
-		<field name="EXTRA_BCC" />
-		<field name="EXTRA_BUG_REPORT" since="14" />
-		<field name="EXTRA_CC" />
-		<field name="EXTRA_CHANGED_COMPONENT_NAME" since="5" />
-		<field name="EXTRA_CHANGED_COMPONENT_NAME_LIST" since="7" />
-		<field name="EXTRA_CHANGED_PACKAGE_LIST" since="8" />
-		<field name="EXTRA_CHANGED_UID_LIST" since="8" />
-		<field name="EXTRA_DATA_REMOVED" since="3" />
-		<field name="EXTRA_DOCK_STATE" since="5" />
-		<field name="EXTRA_DOCK_STATE_CAR" since="5" />
-		<field name="EXTRA_DOCK_STATE_DESK" since="5" />
-		<field name="EXTRA_DOCK_STATE_HE_DESK" since="11" />
-		<field name="EXTRA_DOCK_STATE_LE_DESK" since="11" />
-		<field name="EXTRA_DOCK_STATE_UNDOCKED" since="5" />
-		<field name="EXTRA_DONT_KILL_APP" />
-		<field name="EXTRA_EMAIL" />
-		<field name="EXTRA_HTML_TEXT" since="16" />
-		<field name="EXTRA_INITIAL_INTENTS" since="5" />
-		<field name="EXTRA_INSTALLER_PACKAGE_NAME" since="14" />
-		<field name="EXTRA_INTENT" />
-		<field name="EXTRA_KEY_EVENT" />
-		<field name="EXTRA_LOCAL_ONLY" since="11" />
-		<field name="EXTRA_MIME_TYPES" since="19" />
-		<field name="EXTRA_NOT_UNKNOWN_SOURCE" since="14" />
-		<field name="EXTRA_ORIGINATING_URI" since="17" />
-		<field name="EXTRA_PHONE_NUMBER" />
-		<field name="EXTRA_REFERRER" since="17" />
-		<field name="EXTRA_REMOTE_INTENT_TOKEN" since="5" />
-		<field name="EXTRA_REPLACING" since="3" />
-		<field name="EXTRA_RESTRICTIONS_BUNDLE" since="18" />
-		<field name="EXTRA_RESTRICTIONS_INTENT" since="18" />
-		<field name="EXTRA_RESTRICTIONS_LIST" since="18" />
-		<field name="EXTRA_RETURN_RESULT" since="14" />
-		<field name="EXTRA_SHORTCUT_ICON" />
-		<field name="EXTRA_SHORTCUT_ICON_RESOURCE" />
-		<field name="EXTRA_SHORTCUT_INTENT" />
-		<field name="EXTRA_SHORTCUT_NAME" />
-		<field name="EXTRA_SHUTDOWN_USERSPACE_ONLY" since="19" />
-		<field name="EXTRA_STREAM" />
-		<field name="EXTRA_SUBJECT" />
-		<field name="EXTRA_TEMPLATE" />
-		<field name="EXTRA_TEXT" />
-		<field name="EXTRA_TITLE" />
-		<field name="EXTRA_UID" />
-		<field name="EXTRA_USER" since="21" />
-		<field name="FILL_IN_ACTION" />
-		<field name="FILL_IN_CATEGORIES" />
-		<field name="FILL_IN_CLIP_DATA" since="16" />
-		<field name="FILL_IN_COMPONENT" />
-		<field name="FILL_IN_DATA" />
-		<field name="FILL_IN_PACKAGE" since="4" />
-		<field name="FILL_IN_SELECTOR" since="15" />
-		<field name="FILL_IN_SOURCE_BOUNDS" since="7" />
-		<field name="FLAG_ACTIVITY_AUTO_REMOVE_FROM_RECENTS" since="21" />
-		<field name="FLAG_ACTIVITY_BROUGHT_TO_FRONT" />
-		<field name="FLAG_ACTIVITY_CLEAR_TASK" since="11" />
-		<field name="FLAG_ACTIVITY_CLEAR_TOP" />
-		<field name="FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET" since="3" />
-		<field name="FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS" />
-		<field name="FLAG_ACTIVITY_FORWARD_RESULT" />
-		<field name="FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY" />
-		<field name="FLAG_ACTIVITY_MULTIPLE_TASK" />
-		<field name="FLAG_ACTIVITY_NEW_DOCUMENT" since="21" />
-		<field name="FLAG_ACTIVITY_NEW_TASK" />
-		<field name="FLAG_ACTIVITY_NO_ANIMATION" since="5" />
-		<field name="FLAG_ACTIVITY_NO_HISTORY" />
-		<field name="FLAG_ACTIVITY_NO_USER_ACTION" since="3" />
-		<field name="FLAG_ACTIVITY_PREVIOUS_IS_TOP" />
-		<field name="FLAG_ACTIVITY_REORDER_TO_FRONT" since="3" />
-		<field name="FLAG_ACTIVITY_RESET_TASK_IF_NEEDED" />
-		<field name="FLAG_ACTIVITY_SINGLE_TOP" />
-		<field name="FLAG_ACTIVITY_TASK_ON_HOME" since="11" />
-		<field name="FLAG_DEBUG_LOG_RESOLUTION" />
-		<field name="FLAG_EXCLUDE_STOPPED_PACKAGES" since="12" />
-		<field name="FLAG_FROM_BACKGROUND" />
-		<field name="FLAG_GRANT_PERSISTABLE_URI_PERMISSION" since="19" />
-		<field name="FLAG_GRANT_PREFIX_URI_PERMISSION" since="21" />
-		<field name="FLAG_GRANT_READ_URI_PERMISSION" />
-		<field name="FLAG_GRANT_WRITE_URI_PERMISSION" />
-		<field name="FLAG_INCLUDE_STOPPED_PACKAGES" since="12" />
-		<field name="FLAG_RECEIVER_FOREGROUND" since="16" />
-		<field name="FLAG_RECEIVER_NO_ABORT" since="19" />
-		<field name="FLAG_RECEIVER_REGISTERED_ONLY" />
-		<field name="FLAG_RECEIVER_REPLACE_PENDING" since="8" />
-		<field name="METADATA_DOCK_HOME" since="5" />
-		<field name="URI_INTENT_SCHEME" since="4" />
-	</class>
-	<class name="android/content/Intent$FilterComparison" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/content/Intent;)V" />
-		<method name="getIntent()Landroid/content/Intent;" />
-	</class>
-	<class name="android/content/Intent$ShortcutIconResource" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="fromContext(Landroid/content/Context;I)Landroid/content/Intent$ShortcutIconResource;" />
-		<field name="CREATOR" />
-		<field name="packageName" />
-		<field name="resourceName" />
-	</class>
-	<class name="android/content/IntentFilter" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/content/IntentFilter;)V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="actionsIterator()Ljava/util/Iterator;" />
-		<method name="addAction(Ljava/lang/String;)V" />
-		<method name="addCategory(Ljava/lang/String;)V" />
-		<method name="addDataAuthority(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="addDataPath(Ljava/lang/String;I)V" />
-		<method name="addDataScheme(Ljava/lang/String;)V" />
-		<method name="addDataSchemeSpecificPart(Ljava/lang/String;I)V" since="19" />
-		<method name="addDataType(Ljava/lang/String;)V" />
-		<method name="authoritiesIterator()Ljava/util/Iterator;" />
-		<method name="categoriesIterator()Ljava/util/Iterator;" />
-		<method name="countActions()I" />
-		<method name="countCategories()I" />
-		<method name="countDataAuthorities()I" />
-		<method name="countDataPaths()I" />
-		<method name="countDataSchemeSpecificParts()I" since="19" />
-		<method name="countDataSchemes()I" />
-		<method name="countDataTypes()I" />
-		<method name="create(Ljava/lang/String;Ljava/lang/String;)Landroid/content/IntentFilter;" />
-		<method name="dump(Landroid/util/Printer;Ljava/lang/String;)V" />
-		<method name="getAction(I)Ljava/lang/String;" />
-		<method name="getCategory(I)Ljava/lang/String;" />
-		<method name="getDataAuthority(I)Landroid/content/IntentFilter$AuthorityEntry;" />
-		<method name="getDataPath(I)Landroid/os/PatternMatcher;" />
-		<method name="getDataScheme(I)Ljava/lang/String;" />
-		<method name="getDataSchemeSpecificPart(I)Landroid/os/PatternMatcher;" since="19" />
-		<method name="getDataType(I)Ljava/lang/String;" />
-		<method name="getPriority()I" />
-		<method name="hasAction(Ljava/lang/String;)Z" />
-		<method name="hasCategory(Ljava/lang/String;)Z" />
-		<method name="hasDataAuthority(Landroid/net/Uri;)Z" />
-		<method name="hasDataPath(Ljava/lang/String;)Z" />
-		<method name="hasDataScheme(Ljava/lang/String;)Z" />
-		<method name="hasDataSchemeSpecificPart(Ljava/lang/String;)Z" since="19" />
-		<method name="hasDataType(Ljava/lang/String;)Z" />
-		<method name="match(Landroid/content/ContentResolver;Landroid/content/Intent;ZLjava/lang/String;)I" />
-		<method name="match(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/net/Uri;Ljava/util/Set;Ljava/lang/String;)I" />
-		<method name="matchAction(Ljava/lang/String;)Z" />
-		<method name="matchCategories(Ljava/util/Set;)Ljava/lang/String;" />
-		<method name="matchData(Ljava/lang/String;Ljava/lang/String;Landroid/net/Uri;)I" />
-		<method name="matchDataAuthority(Landroid/net/Uri;)I" />
-		<method name="pathsIterator()Ljava/util/Iterator;" />
-		<method name="readFromXml(Lorg/xmlpull/v1/XmlPullParser;)V" />
-		<method name="schemeSpecificPartsIterator()Ljava/util/Iterator;" since="19" />
-		<method name="schemesIterator()Ljava/util/Iterator;" />
-		<method name="setPriority(I)V" />
-		<method name="typesIterator()Ljava/util/Iterator;" />
-		<method name="writeToXml(Lorg/xmlpull/v1/XmlSerializer;)V" />
-		<field name="CREATOR" />
-		<field name="MATCH_ADJUSTMENT_MASK" />
-		<field name="MATCH_ADJUSTMENT_NORMAL" />
-		<field name="MATCH_CATEGORY_EMPTY" />
-		<field name="MATCH_CATEGORY_HOST" />
-		<field name="MATCH_CATEGORY_MASK" />
-		<field name="MATCH_CATEGORY_PATH" />
-		<field name="MATCH_CATEGORY_PORT" />
-		<field name="MATCH_CATEGORY_SCHEME" />
-		<field name="MATCH_CATEGORY_SCHEME_SPECIFIC_PART" since="19" />
-		<field name="MATCH_CATEGORY_TYPE" />
-		<field name="NO_MATCH_ACTION" />
-		<field name="NO_MATCH_CATEGORY" />
-		<field name="NO_MATCH_DATA" />
-		<field name="NO_MATCH_TYPE" />
-		<field name="SYSTEM_HIGH_PRIORITY" />
-		<field name="SYSTEM_LOW_PRIORITY" />
-	</class>
-	<class name="android/content/IntentFilter$AuthorityEntry" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="getHost()Ljava/lang/String;" />
-		<method name="getPort()I" />
-		<method name="match(Landroid/net/Uri;)I" />
-	</class>
-	<class name="android/content/IntentFilter$MalformedMimeTypeException" since="1">
-		<extends name="android/util/AndroidException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/content/IntentSender" since="4">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="getCreatorPackage()Ljava/lang/String;" since="17" />
-		<method name="getCreatorUid()I" since="17" />
-		<method name="getCreatorUserHandle()Landroid/os/UserHandle;" since="17" />
-		<method name="getTargetPackage()Ljava/lang/String;" since="9" />
-		<method name="readIntentSenderOrNullFromParcel(Landroid/os/Parcel;)Landroid/content/IntentSender;" />
-		<method name="sendIntent(Landroid/content/Context;ILandroid/content/Intent;Landroid/content/IntentSender$OnFinished;Landroid/os/Handler;)V" />
-		<method name="sendIntent(Landroid/content/Context;ILandroid/content/Intent;Landroid/content/IntentSender$OnFinished;Landroid/os/Handler;Ljava/lang/String;)V" since="14" />
-		<method name="writeIntentSenderOrNullToParcel(Landroid/content/IntentSender;Landroid/os/Parcel;)V" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/content/IntentSender$OnFinished" since="4">
-		<extends name="java/lang/Object" />
-		<method name="onSendFinished(Landroid/content/IntentSender;Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;)V" />
-	</class>
-	<class name="android/content/IntentSender$SendIntentException" since="4">
-		<extends name="android/util/AndroidException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/Exception;)V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/content/Loader" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="abandon()V" />
-		<method name="cancelLoad()Z" since="16" />
-		<method name="commitContentChanged()V" since="18" />
-		<method name="dataToString(Ljava/lang/Object;)Ljava/lang/String;" />
-		<method name="deliverCancellation()V" since="16" />
-		<method name="deliverResult(Ljava/lang/Object;)V" />
-		<method name="dump(Ljava/lang/String;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V" />
-		<method name="forceLoad()V" />
-		<method name="getContext()Landroid/content/Context;" />
-		<method name="getId()I" />
-		<method name="isAbandoned()Z" />
-		<method name="isReset()Z" />
-		<method name="isStarted()Z" />
-		<method name="onAbandon()V" />
-		<method name="onCancelLoad()Z" since="16" />
-		<method name="onContentChanged()V" />
-		<method name="onForceLoad()V" />
-		<method name="onReset()V" />
-		<method name="onStartLoading()V" />
-		<method name="onStopLoading()V" />
-		<method name="registerListener(ILandroid/content/Loader$OnLoadCompleteListener;)V" />
-		<method name="registerOnLoadCanceledListener(Landroid/content/Loader$OnLoadCanceledListener;)V" since="16" />
-		<method name="reset()V" />
-		<method name="rollbackContentChanged()V" since="18" />
-		<method name="startLoading()V" />
-		<method name="stopLoading()V" />
-		<method name="takeContentChanged()Z" />
-		<method name="unregisterListener(Landroid/content/Loader$OnLoadCompleteListener;)V" />
-		<method name="unregisterOnLoadCanceledListener(Landroid/content/Loader$OnLoadCanceledListener;)V" since="16" />
-	</class>
-	<class name="android/content/Loader$ForceLoadContentObserver" since="11">
-		<extends name="android/database/ContentObserver" />
-		<method name="&lt;init>(Landroid/content/Loader;)V" />
-	</class>
-	<class name="android/content/Loader$OnLoadCanceledListener" since="16">
-		<extends name="java/lang/Object" />
-		<method name="onLoadCanceled(Landroid/content/Loader;)V" />
-	</class>
-	<class name="android/content/Loader$OnLoadCompleteListener" since="11">
-		<extends name="java/lang/Object" />
-		<method name="onLoadComplete(Landroid/content/Loader;Ljava/lang/Object;)V" />
-	</class>
-	<class name="android/content/MutableContextWrapper" since="1">
-		<extends name="android/content/ContextWrapper" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="setBaseContext(Landroid/content/Context;)V" />
-	</class>
-	<class name="android/content/OperationApplicationException" since="5">
-		<extends name="java/lang/Exception" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(I)V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;I)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
-		<method name="getNumSuccessfulYieldPoints()I" />
-	</class>
-	<class name="android/content/PeriodicSync" since="8">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;J)V" />
-		<field name="CREATOR" />
-		<field name="account" />
-		<field name="authority" />
-		<field name="extras" />
-		<field name="period" />
-	</class>
-	<class name="android/content/ReceiverCallNotAllowedException" since="1">
-		<extends name="android/util/AndroidRuntimeException" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/content/RestrictionEntry" since="18">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>(Landroid/os/Parcel;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Z)V" />
-		<method name="&lt;init>(Ljava/lang/String;[Ljava/lang/String;)V" />
-		<method name="getAllSelectedStrings()[Ljava/lang/String;" />
-		<method name="getChoiceEntries()[Ljava/lang/String;" />
-		<method name="getChoiceValues()[Ljava/lang/String;" />
-		<method name="getDescription()Ljava/lang/String;" />
-		<method name="getKey()Ljava/lang/String;" />
-		<method name="getSelectedState()Z" />
-		<method name="getSelectedString()Ljava/lang/String;" />
-		<method name="getTitle()Ljava/lang/String;" />
-		<method name="getType()I" />
-		<method name="setAllSelectedStrings([Ljava/lang/String;)V" />
-		<method name="setChoiceEntries(Landroid/content/Context;I)V" />
-		<method name="setChoiceEntries([Ljava/lang/String;)V" />
-		<method name="setChoiceValues(Landroid/content/Context;I)V" />
-		<method name="setChoiceValues([Ljava/lang/String;)V" />
-		<method name="setDescription(Ljava/lang/String;)V" />
-		<method name="setSelectedState(Z)V" />
-		<method name="setSelectedString(Ljava/lang/String;)V" />
-		<method name="setTitle(Ljava/lang/String;)V" />
-		<method name="setType(I)V" />
-		<field name="CREATOR" />
-		<field name="TYPE_BOOLEAN" />
-		<field name="TYPE_CHOICE" />
-		<field name="TYPE_MULTI_SELECT" />
-		<field name="TYPE_NULL" />
-	</class>
-	<class name="android/content/SearchRecentSuggestionsProvider" since="1">
-		<extends name="android/content/ContentProvider" />
-		<method name="&lt;init>()V" />
-		<method name="setupSuggestions(Ljava/lang/String;I)V" />
-		<field name="DATABASE_MODE_2LINES" />
-		<field name="DATABASE_MODE_QUERIES" />
-	</class>
-	<class name="android/content/ServiceConnection" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V" />
-		<method name="onServiceDisconnected(Landroid/content/ComponentName;)V" />
-	</class>
-	<class name="android/content/SharedPreferences" since="1">
-		<extends name="java/lang/Object" />
-		<method name="contains(Ljava/lang/String;)Z" />
-		<method name="edit()Landroid/content/SharedPreferences$Editor;" />
-		<method name="getAll()Ljava/util/Map;" />
-		<method name="getBoolean(Ljava/lang/String;Z)Z" />
-		<method name="getFloat(Ljava/lang/String;F)F" />
-		<method name="getInt(Ljava/lang/String;I)I" />
-		<method name="getLong(Ljava/lang/String;J)J" />
-		<method name="getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="getStringSet(Ljava/lang/String;Ljava/util/Set;)Ljava/util/Set;" since="11" />
-		<method name="registerOnSharedPreferenceChangeListener(Landroid/content/SharedPreferences$OnSharedPreferenceChangeListener;)V" />
-		<method name="unregisterOnSharedPreferenceChangeListener(Landroid/content/SharedPreferences$OnSharedPreferenceChangeListener;)V" />
-	</class>
-	<class name="android/content/SharedPreferences$Editor" since="1">
-		<extends name="java/lang/Object" />
-		<method name="apply()V" since="9" />
-		<method name="clear()Landroid/content/SharedPreferences$Editor;" />
-		<method name="commit()Z" />
-		<method name="putBoolean(Ljava/lang/String;Z)Landroid/content/SharedPreferences$Editor;" />
-		<method name="putFloat(Ljava/lang/String;F)Landroid/content/SharedPreferences$Editor;" />
-		<method name="putInt(Ljava/lang/String;I)Landroid/content/SharedPreferences$Editor;" />
-		<method name="putLong(Ljava/lang/String;J)Landroid/content/SharedPreferences$Editor;" />
-		<method name="putString(Ljava/lang/String;Ljava/lang/String;)Landroid/content/SharedPreferences$Editor;" />
-		<method name="putStringSet(Ljava/lang/String;Ljava/util/Set;)Landroid/content/SharedPreferences$Editor;" since="11" />
-		<method name="remove(Ljava/lang/String;)Landroid/content/SharedPreferences$Editor;" />
-	</class>
-	<class name="android/content/SharedPreferences$OnSharedPreferenceChangeListener" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onSharedPreferenceChanged(Landroid/content/SharedPreferences;Ljava/lang/String;)V" />
-	</class>
-	<class name="android/content/SyncAdapterType" since="5">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>(Landroid/os/Parcel;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;ZZ)V" />
-		<method name="allowParallelSyncs()Z" since="11" />
-		<method name="getSettingsActivity()Ljava/lang/String;" since="14" />
-		<method name="isAlwaysSyncable()Z" since="11" />
-		<method name="isUserVisible()Z" />
-		<method name="newKey(Ljava/lang/String;Ljava/lang/String;)Landroid/content/SyncAdapterType;" />
-		<method name="supportsUploading()Z" />
-		<field name="CREATOR" />
-		<field name="accountType" />
-		<field name="authority" />
-		<field name="isKey" />
-	</class>
-	<class name="android/content/SyncContext" since="5">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getSyncContextBinder()Landroid/os/IBinder;" />
-		<method name="onFinished(Landroid/content/SyncResult;)V" />
-	</class>
-	<class name="android/content/SyncInfo" since="8">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" since="11" />
-		<method name="&lt;init>()V" />
-		<field name="account" />
-		<field name="authority" />
-		<field name="startTime" />
-	</class>
-	<class name="android/content/SyncRequest" since="19">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/content/SyncRequest$Builder" since="19">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="build()Landroid/content/SyncRequest;" />
-		<method name="setDisallowMetered(Z)Landroid/content/SyncRequest$Builder;" />
-		<method name="setExpedited(Z)Landroid/content/SyncRequest$Builder;" />
-		<method name="setExtras(Landroid/os/Bundle;)Landroid/content/SyncRequest$Builder;" />
-		<method name="setIgnoreBackoff(Z)Landroid/content/SyncRequest$Builder;" />
-		<method name="setIgnoreSettings(Z)Landroid/content/SyncRequest$Builder;" />
-		<method name="setManual(Z)Landroid/content/SyncRequest$Builder;" />
-		<method name="setNoRetry(Z)Landroid/content/SyncRequest$Builder;" />
-		<method name="setSyncAdapter(Landroid/accounts/Account;Ljava/lang/String;)Landroid/content/SyncRequest$Builder;" />
-		<method name="syncOnce()Landroid/content/SyncRequest$Builder;" />
-		<method name="syncPeriodic(JJ)Landroid/content/SyncRequest$Builder;" />
-	</class>
-	<class name="android/content/SyncResult" since="5">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="clear()V" />
-		<method name="hasError()Z" />
-		<method name="hasHardError()Z" />
-		<method name="hasSoftError()Z" />
-		<method name="madeSomeProgress()Z" />
-		<method name="toDebugString()Ljava/lang/String;" />
-		<field name="ALREADY_IN_PROGRESS" />
-		<field name="CREATOR" />
-		<field name="databaseError" />
-		<field name="delayUntil" since="8" />
-		<field name="fullSyncRequested" />
-		<field name="moreRecordsToGet" />
-		<field name="partialSyncUnavailable" />
-		<field name="stats" />
-		<field name="syncAlreadyInProgress" />
-		<field name="tooManyDeletions" />
-		<field name="tooManyRetries" />
-	</class>
-	<class name="android/content/SyncStats" since="5">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/os/Parcel;)V" />
-		<method name="clear()V" />
-		<field name="CREATOR" />
-		<field name="numAuthExceptions" />
-		<field name="numConflictDetectedExceptions" />
-		<field name="numDeletes" />
-		<field name="numEntries" />
-		<field name="numInserts" />
-		<field name="numIoExceptions" />
-		<field name="numParseExceptions" />
-		<field name="numSkippedEntries" />
-		<field name="numUpdates" />
-	</class>
-	<class name="android/content/SyncStatusObserver" since="5">
-		<extends name="java/lang/Object" />
-		<method name="onStatusChanged(I)V" />
-	</class>
-	<class name="android/content/UriMatcher" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(I)V" />
-		<method name="addURI(Ljava/lang/String;Ljava/lang/String;I)V" />
-		<method name="match(Landroid/net/Uri;)I" />
-		<field name="NO_MATCH" />
-	</class>
-	<class name="android/content/UriPermission" since="19">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="getPersistedTime()J" />
-		<method name="getUri()Landroid/net/Uri;" />
-		<method name="isReadPermission()Z" />
-		<method name="isWritePermission()Z" />
-		<field name="CREATOR" />
-		<field name="INVALID_TIME" />
-	</class>
-	<class name="android/content/pm/ActivityInfo" since="1">
-		<extends name="android/content/pm/ComponentInfo" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/content/pm/ActivityInfo;)V" />
-		<method name="dump(Landroid/util/Printer;Ljava/lang/String;)V" />
-		<method name="getThemeResource()I" />
-		<field name="CONFIG_DENSITY" since="17" />
-		<field name="CONFIG_FONT_SCALE" />
-		<field name="CONFIG_KEYBOARD" />
-		<field name="CONFIG_KEYBOARD_HIDDEN" />
-		<field name="CONFIG_LAYOUT_DIRECTION" since="17" />
-		<field name="CONFIG_LOCALE" />
-		<field name="CONFIG_MCC" />
-		<field name="CONFIG_MNC" />
-		<field name="CONFIG_NAVIGATION" />
-		<field name="CONFIG_ORIENTATION" />
-		<field name="CONFIG_SCREEN_LAYOUT" since="4" />
-		<field name="CONFIG_SCREEN_SIZE" since="13" />
-		<field name="CONFIG_SMALLEST_SCREEN_SIZE" since="13" />
-		<field name="CONFIG_TOUCHSCREEN" />
-		<field name="CONFIG_UI_MODE" since="8" />
-		<field name="CREATOR" />
-		<field name="DOCUMENT_LAUNCH_ALWAYS" since="21" />
-		<field name="DOCUMENT_LAUNCH_INTO_EXISTING" since="21" />
-		<field name="DOCUMENT_LAUNCH_NEVER" since="21" />
-		<field name="DOCUMENT_LAUNCH_NONE" since="21" />
-		<field name="FLAG_ALLOW_TASK_REPARENTING" />
-		<field name="FLAG_ALWAYS_RETAIN_TASK_STATE" />
-		<field name="FLAG_AUTO_REMOVE_FROM_RECENTS" since="21" />
-		<field name="FLAG_CLEAR_TASK_ON_LAUNCH" />
-		<field name="FLAG_EXCLUDE_FROM_RECENTS" />
-		<field name="FLAG_FINISH_ON_CLOSE_SYSTEM_DIALOGS" since="5" />
-		<field name="FLAG_FINISH_ON_TASK_LAUNCH" />
-		<field name="FLAG_HARDWARE_ACCELERATED" since="11" />
-		<field name="FLAG_IMMERSIVE" since="18" />
-		<field name="FLAG_MULTIPROCESS" />
-		<field name="FLAG_NO_HISTORY" since="3" />
-		<field name="FLAG_PERSISTABLE" since="21" />
-		<field name="FLAG_SINGLE_USER" since="17" />
-		<field name="FLAG_STATE_NOT_NEEDED" />
-		<field name="LAUNCH_MULTIPLE" />
-		<field name="LAUNCH_SINGLE_INSTANCE" />
-		<field name="LAUNCH_SINGLE_TASK" />
-		<field name="LAUNCH_SINGLE_TOP" />
-		<field name="SCREEN_ORIENTATION_BEHIND" />
-		<field name="SCREEN_ORIENTATION_FULL_SENSOR" since="9" />
-		<field name="SCREEN_ORIENTATION_FULL_USER" since="18" />
-		<field name="SCREEN_ORIENTATION_LANDSCAPE" />
-		<field name="SCREEN_ORIENTATION_LOCKED" since="18" />
-		<field name="SCREEN_ORIENTATION_NOSENSOR" />
-		<field name="SCREEN_ORIENTATION_PORTRAIT" />
-		<field name="SCREEN_ORIENTATION_REVERSE_LANDSCAPE" since="9" />
-		<field name="SCREEN_ORIENTATION_REVERSE_PORTRAIT" since="9" />
-		<field name="SCREEN_ORIENTATION_SENSOR" />
-		<field name="SCREEN_ORIENTATION_SENSOR_LANDSCAPE" since="9" />
-		<field name="SCREEN_ORIENTATION_SENSOR_PORTRAIT" since="9" />
-		<field name="SCREEN_ORIENTATION_UNSPECIFIED" />
-		<field name="SCREEN_ORIENTATION_USER" />
-		<field name="SCREEN_ORIENTATION_USER_LANDSCAPE" since="18" />
-		<field name="SCREEN_ORIENTATION_USER_PORTRAIT" since="18" />
-		<field name="UIOPTION_SPLIT_ACTION_BAR_WHEN_NARROW" since="14" />
-		<field name="configChanges" />
-		<field name="documentLaunchMode" since="21" />
-		<field name="flags" />
-		<field name="launchMode" />
-		<field name="maxRecents" since="21" />
-		<field name="parentActivityName" since="16" />
-		<field name="permission" />
-		<field name="screenOrientation" />
-		<field name="softInputMode" since="3" />
-		<field name="targetActivity" />
-		<field name="taskAffinity" />
-		<field name="theme" />
-		<field name="uiOptions" since="14" />
-	</class>
-	<class name="android/content/pm/ApplicationInfo" since="1">
-		<extends name="android/content/pm/PackageItemInfo" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/content/pm/ApplicationInfo;)V" />
-		<method name="dump(Landroid/util/Printer;Ljava/lang/String;)V" />
-		<method name="loadDescription(Landroid/content/pm/PackageManager;)Ljava/lang/CharSequence;" />
-		<field name="CREATOR" />
-		<field name="FLAG_ALLOW_BACKUP" since="8" />
-		<field name="FLAG_ALLOW_CLEAR_USER_DATA" />
-		<field name="FLAG_ALLOW_TASK_REPARENTING" />
-		<field name="FLAG_DEBUGGABLE" />
-		<field name="FLAG_EXTERNAL_STORAGE" since="8" />
-		<field name="FLAG_FACTORY_TEST" />
-		<field name="FLAG_HAS_CODE" />
-		<field name="FLAG_INSTALLED" since="17" />
-		<field name="FLAG_IS_DATA_ONLY" since="17" />
-		<field name="FLAG_IS_GAME" since="21" />
-		<field name="FLAG_KILL_AFTER_RESTORE" since="8" />
-		<field name="FLAG_LARGE_HEAP" since="11" />
-		<field name="FLAG_PERSISTENT" />
-		<field name="FLAG_RESIZEABLE_FOR_SCREENS" since="4" />
-		<field name="FLAG_RESTORE_ANY_VERSION" since="8" />
-		<field name="FLAG_STOPPED" since="12" />
-		<field name="FLAG_SUPPORTS_LARGE_SCREENS" since="4" />
-		<field name="FLAG_SUPPORTS_NORMAL_SCREENS" since="4" />
-		<field name="FLAG_SUPPORTS_RTL" since="17" />
-		<field name="FLAG_SUPPORTS_SCREEN_DENSITIES" since="4" />
-		<field name="FLAG_SUPPORTS_SMALL_SCREENS" since="4" />
-		<field name="FLAG_SUPPORTS_XLARGE_SCREENS" since="11" />
-		<field name="FLAG_SYSTEM" />
-		<field name="FLAG_TEST_ONLY" since="4" />
-		<field name="FLAG_UPDATED_SYSTEM_APP" since="4" />
-		<field name="FLAG_VM_SAFE_MODE" since="8" />
-		<field name="backupAgentName" since="8" />
-		<field name="className" />
-		<field name="compatibleWidthLimitDp" since="13" />
-		<field name="dataDir" />
-		<field name="descriptionRes" />
-		<field name="enabled" />
-		<field name="flags" />
-		<field name="largestWidthLimitDp" since="13" />
-		<field name="manageSpaceActivityName" />
-		<field name="nativeLibraryDir" since="9" />
-		<field name="permission" />
-		<field name="processName" />
-		<field name="publicSourceDir" />
-		<field name="requiresSmallestWidthDp" since="13" />
-		<field name="sharedLibraryFiles" />
-		<field name="sourceDir" />
-		<field name="targetSdkVersion" since="4" />
-		<field name="taskAffinity" />
-		<field name="theme" />
-		<field name="uiOptions" since="14" />
-		<field name="uid" />
-	</class>
-	<class name="android/content/pm/ApplicationInfo$DisplayNameComparator" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/util/Comparator" />
-		<method name="&lt;init>(Landroid/content/pm/PackageManager;)V" />
-		<method name="compare(Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;)I" />
-	</class>
-	<class name="android/content/pm/ComponentInfo" since="1">
-		<extends name="android/content/pm/PackageItemInfo" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/content/pm/ComponentInfo;)V" />
-		<method name="&lt;init>(Landroid/os/Parcel;)V" />
-		<method name="getBannerResource()I" since="20" />
-		<method name="getIconResource()I" />
-		<method name="getLogoResource()I" since="19" />
-		<method name="isEnabled()Z" since="11" />
-		<field name="applicationInfo" />
-		<field name="descriptionRes" since="8" />
-		<field name="enabled" />
-		<field name="exported" />
-		<field name="processName" />
-	</class>
-	<class name="android/content/pm/ConfigurationInfo" since="3">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/content/pm/ConfigurationInfo;)V" />
-		<method name="getGlEsVersion()Ljava/lang/String;" since="4" />
-		<field name="CREATOR" />
-		<field name="GL_ES_VERSION_UNDEFINED" since="4" />
-		<field name="INPUT_FEATURE_FIVE_WAY_NAV" />
-		<field name="INPUT_FEATURE_HARD_KEYBOARD" />
-		<field name="reqGlEsVersion" since="4" />
-		<field name="reqInputFeatures" />
-		<field name="reqKeyboardType" />
-		<field name="reqNavigation" />
-		<field name="reqTouchScreen" />
-	</class>
-	<class name="android/content/pm/FeatureInfo" since="5">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/content/pm/FeatureInfo;)V" />
-		<method name="getGlEsVersion()Ljava/lang/String;" />
-		<field name="CREATOR" />
-		<field name="FLAG_REQUIRED" />
-		<field name="GL_ES_VERSION_UNDEFINED" />
-		<field name="flags" />
-		<field name="name" />
-		<field name="reqGlEsVersion" />
-	</class>
-	<class name="android/content/pm/IPackageInstallObserver" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/IInterface" />
-		<method name="packageInstalled(Ljava/lang/String;I)V" />
-	</class>
-	<class name="android/content/pm/IPackageInstallObserver$Stub" since="1">
-		<extends name="android/os/Binder" />
-		<implements name="android/content/pm/IPackageInstallObserver" />
-		<method name="&lt;init>()V" />
-		<method name="asInterface(Landroid/os/IBinder;)Landroid/content/pm/IPackageInstallObserver;" />
-	</class>
-	<class name="android/content/pm/InstrumentationInfo" since="1">
-		<extends name="android/content/pm/PackageItemInfo" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/content/pm/InstrumentationInfo;)V" />
-		<field name="CREATOR" />
-		<field name="dataDir" />
-		<field name="functionalTest" />
-		<field name="handleProfiling" />
-		<field name="publicSourceDir" />
-		<field name="sourceDir" />
-		<field name="targetPackage" />
-	</class>
-	<class name="android/content/pm/LabeledIntent" since="5">
-		<extends name="android/content/Intent" />
-		<method name="&lt;init>(Landroid/content/Intent;Ljava/lang/String;II)V" />
-		<method name="&lt;init>(Landroid/content/Intent;Ljava/lang/String;Ljava/lang/CharSequence;I)V" />
-		<method name="&lt;init>(Ljava/lang/String;II)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/CharSequence;I)V" />
-		<method name="getIconResource()I" />
-		<method name="getLabelResource()I" />
-		<method name="getNonLocalizedLabel()Ljava/lang/CharSequence;" />
-		<method name="getSourcePackage()Ljava/lang/String;" />
-		<method name="loadIcon(Landroid/content/pm/PackageManager;)Landroid/graphics/drawable/Drawable;" />
-		<method name="loadLabel(Landroid/content/pm/PackageManager;)Ljava/lang/CharSequence;" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/content/pm/LauncherActivityInfo" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getApplicationInfo()Landroid/content/pm/ApplicationInfo;" />
-		<method name="getBadgedIcon(I)Landroid/graphics/drawable/Drawable;" />
-		<method name="getComponentName()Landroid/content/ComponentName;" />
-		<method name="getFirstInstallTime()J" />
-		<method name="getIcon(I)Landroid/graphics/drawable/Drawable;" />
-		<method name="getLabel()Ljava/lang/CharSequence;" />
-		<method name="getName()Ljava/lang/String;" />
-		<method name="getUser()Landroid/os/UserHandle;" />
-	</class>
-	<class name="android/content/pm/LauncherApps" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="addOnAppsChangedListener(Landroid/content/pm/LauncherApps$OnAppsChangedListener;)V" />
-		<method name="getActivityList(Ljava/lang/String;Landroid/os/UserHandle;)Ljava/util/List;" />
-		<method name="isActivityEnabledForProfile(Landroid/content/ComponentName;Landroid/os/UserHandle;)Z" />
-		<method name="isPackageEnabledForProfile(Ljava/lang/String;Landroid/os/UserHandle;)Z" />
-		<method name="removeOnAppsChangedListener(Landroid/content/pm/LauncherApps$OnAppsChangedListener;)V" />
-		<method name="resolveActivity(Landroid/content/Intent;Landroid/os/UserHandle;)Landroid/content/pm/LauncherActivityInfo;" />
-		<method name="startActivityForProfile(Landroid/content/ComponentName;Landroid/os/UserHandle;Landroid/graphics/Rect;Landroid/os/Bundle;)V" />
-	</class>
-	<class name="android/content/pm/LauncherApps$OnAppsChangedListener" since="21">
-		<extends name="java/lang/Object" />
-		<method name="onPackageAdded(Landroid/os/UserHandle;Ljava/lang/String;)V" />
-		<method name="onPackageChanged(Landroid/os/UserHandle;Ljava/lang/String;)V" />
-		<method name="onPackageRemoved(Landroid/os/UserHandle;Ljava/lang/String;)V" />
-		<method name="onPackagesAvailable(Landroid/os/UserHandle;[Ljava/lang/String;Z)V" />
-		<method name="onPackagesUnavailable(Landroid/os/UserHandle;[Ljava/lang/String;Z)V" />
-	</class>
-	<class name="android/content/pm/PackageInfo" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<field name="CREATOR" />
-		<field name="REQUESTED_PERMISSION_GRANTED" since="16" />
-		<field name="REQUESTED_PERMISSION_REQUIRED" since="16" />
-		<field name="activities" />
-		<field name="applicationInfo" />
-		<field name="configPreferences" since="3" />
-		<field name="firstInstallTime" since="9" />
-		<field name="gids" />
-		<field name="instrumentation" />
-		<field name="lastUpdateTime" since="9" />
-		<field name="packageName" />
-		<field name="permissions" />
-		<field name="providers" />
-		<field name="receivers" />
-		<field name="reqFeatures" since="5" />
-		<field name="requestedPermissions" />
-		<field name="requestedPermissionsFlags" since="16" />
-		<field name="services" />
-		<field name="sharedUserId" since="3" />
-		<field name="sharedUserLabel" since="3" />
-		<field name="signatures" />
-		<field name="versionCode" />
-		<field name="versionName" />
-	</class>
-	<class name="android/content/pm/PackageItemInfo" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/content/pm/PackageItemInfo;)V" />
-		<method name="&lt;init>(Landroid/os/Parcel;)V" />
-		<method name="dumpBack(Landroid/util/Printer;Ljava/lang/String;)V" />
-		<method name="dumpFront(Landroid/util/Printer;Ljava/lang/String;)V" />
-		<method name="loadBanner(Landroid/content/pm/PackageManager;)Landroid/graphics/drawable/Drawable;" since="20" />
-		<method name="loadIcon(Landroid/content/pm/PackageManager;)Landroid/graphics/drawable/Drawable;" />
-		<method name="loadLabel(Landroid/content/pm/PackageManager;)Ljava/lang/CharSequence;" />
-		<method name="loadLogo(Landroid/content/pm/PackageManager;)Landroid/graphics/drawable/Drawable;" since="9" />
-		<method name="loadXmlMetaData(Landroid/content/pm/PackageManager;Ljava/lang/String;)Landroid/content/res/XmlResourceParser;" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
-		<field name="banner" since="20" />
-		<field name="icon" />
-		<field name="labelRes" />
-		<field name="logo" since="9" />
-		<field name="metaData" />
-		<field name="name" />
-		<field name="nonLocalizedLabel" />
-		<field name="packageName" />
-	</class>
-	<class name="android/content/pm/PackageItemInfo$DisplayNameComparator" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/util/Comparator" />
-		<method name="&lt;init>(Landroid/content/pm/PackageManager;)V" />
-		<method name="compare(Landroid/content/pm/PackageItemInfo;Landroid/content/pm/PackageItemInfo;)I" />
-	</class>
-	<class name="android/content/pm/PackageManager" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="addPackageToPreferred(Ljava/lang/String;)V" />
-		<method name="addPermission(Landroid/content/pm/PermissionInfo;)Z" />
-		<method name="addPermissionAsync(Landroid/content/pm/PermissionInfo;)Z" since="8" />
-		<method name="addPreferredActivity(Landroid/content/IntentFilter;I[Landroid/content/ComponentName;Landroid/content/ComponentName;)V" />
-		<method name="canonicalToCurrentPackageNames([Ljava/lang/String;)[Ljava/lang/String;" since="8" />
-		<method name="checkPermission(Ljava/lang/String;Ljava/lang/String;)I" />
-		<method name="checkSignatures(II)I" since="5" />
-		<method name="checkSignatures(Ljava/lang/String;Ljava/lang/String;)I" />
-		<method name="clearPackagePreferredActivities(Ljava/lang/String;)V" />
-		<method name="currentToCanonicalPackageNames([Ljava/lang/String;)[Ljava/lang/String;" since="8" />
-		<method name="extendVerificationTimeout(IIJ)V" since="17" />
-		<method name="getActivityBanner(Landroid/content/ComponentName;)Landroid/graphics/drawable/Drawable;" since="20" />
-		<method name="getActivityBanner(Landroid/content/Intent;)Landroid/graphics/drawable/Drawable;" since="20" />
-		<method name="getActivityIcon(Landroid/content/ComponentName;)Landroid/graphics/drawable/Drawable;" />
-		<method name="getActivityIcon(Landroid/content/Intent;)Landroid/graphics/drawable/Drawable;" />
-		<method name="getActivityInfo(Landroid/content/ComponentName;I)Landroid/content/pm/ActivityInfo;" />
-		<method name="getActivityLogo(Landroid/content/ComponentName;)Landroid/graphics/drawable/Drawable;" since="9" />
-		<method name="getActivityLogo(Landroid/content/Intent;)Landroid/graphics/drawable/Drawable;" since="9" />
-		<method name="getAllPermissionGroups(I)Ljava/util/List;" />
-		<method name="getApplicationBanner(Landroid/content/pm/ApplicationInfo;)Landroid/graphics/drawable/Drawable;" since="20" />
-		<method name="getApplicationBanner(Ljava/lang/String;)Landroid/graphics/drawable/Drawable;" since="20" />
-		<method name="getApplicationEnabledSetting(Ljava/lang/String;)I" />
-		<method name="getApplicationIcon(Landroid/content/pm/ApplicationInfo;)Landroid/graphics/drawable/Drawable;" />
-		<method name="getApplicationIcon(Ljava/lang/String;)Landroid/graphics/drawable/Drawable;" />
-		<method name="getApplicationInfo(Ljava/lang/String;I)Landroid/content/pm/ApplicationInfo;" />
-		<method name="getApplicationLabel(Landroid/content/pm/ApplicationInfo;)Ljava/lang/CharSequence;" />
-		<method name="getApplicationLogo(Landroid/content/pm/ApplicationInfo;)Landroid/graphics/drawable/Drawable;" since="9" />
-		<method name="getApplicationLogo(Ljava/lang/String;)Landroid/graphics/drawable/Drawable;" since="9" />
-		<method name="getComponentEnabledSetting(Landroid/content/ComponentName;)I" />
-		<method name="getDefaultActivityIcon()Landroid/graphics/drawable/Drawable;" />
-		<method name="getDrawable(Ljava/lang/String;ILandroid/content/pm/ApplicationInfo;)Landroid/graphics/drawable/Drawable;" />
-		<method name="getInstalledApplications(I)Ljava/util/List;" />
-		<method name="getInstalledPackages(I)Ljava/util/List;" />
-		<method name="getInstallerPackageName(Ljava/lang/String;)Ljava/lang/String;" since="5" />
-		<method name="getInstrumentationInfo(Landroid/content/ComponentName;I)Landroid/content/pm/InstrumentationInfo;" />
-		<method name="getLaunchIntentForPackage(Ljava/lang/String;)Landroid/content/Intent;" since="3" />
-		<method name="getLeanbackLaunchIntentForPackage(Ljava/lang/String;)Landroid/content/Intent;" since="21" />
-		<method name="getNameForUid(I)Ljava/lang/String;" />
-		<method name="getPackageArchiveInfo(Ljava/lang/String;I)Landroid/content/pm/PackageInfo;" />
-		<method name="getPackageGids(Ljava/lang/String;)[I" />
-		<method name="getPackageInfo(Ljava/lang/String;I)Landroid/content/pm/PackageInfo;" />
-		<method name="getPackagesForUid(I)[Ljava/lang/String;" />
-		<method name="getPackagesHoldingPermissions([Ljava/lang/String;I)Ljava/util/List;" since="18" />
-		<method name="getPermissionGroupInfo(Ljava/lang/String;I)Landroid/content/pm/PermissionGroupInfo;" />
-		<method name="getPermissionInfo(Ljava/lang/String;I)Landroid/content/pm/PermissionInfo;" />
-		<method name="getPreferredActivities(Ljava/util/List;Ljava/util/List;Ljava/lang/String;)I" />
-		<method name="getPreferredPackages(I)Ljava/util/List;" />
-		<method name="getProviderInfo(Landroid/content/ComponentName;I)Landroid/content/pm/ProviderInfo;" since="9" />
-		<method name="getReceiverInfo(Landroid/content/ComponentName;I)Landroid/content/pm/ActivityInfo;" />
-		<method name="getResourcesForActivity(Landroid/content/ComponentName;)Landroid/content/res/Resources;" />
-		<method name="getResourcesForApplication(Landroid/content/pm/ApplicationInfo;)Landroid/content/res/Resources;" />
-		<method name="getResourcesForApplication(Ljava/lang/String;)Landroid/content/res/Resources;" />
-		<method name="getServiceInfo(Landroid/content/ComponentName;I)Landroid/content/pm/ServiceInfo;" />
-		<method name="getSystemAvailableFeatures()[Landroid/content/pm/FeatureInfo;" since="5" />
-		<method name="getSystemSharedLibraryNames()[Ljava/lang/String;" since="3" />
-		<method name="getText(Ljava/lang/String;ILandroid/content/pm/ApplicationInfo;)Ljava/lang/CharSequence;" />
-		<method name="getXml(Ljava/lang/String;ILandroid/content/pm/ApplicationInfo;)Landroid/content/res/XmlResourceParser;" />
-		<method name="hasSystemFeature(Ljava/lang/String;)Z" since="5" />
-		<method name="installPackage(Landroid/net/Uri;)V" />
-		<method name="installPackage(Landroid/net/Uri;Landroid/content/pm/IPackageInstallObserver;I)V" />
-		<method name="isSafeMode()Z" since="3" />
-		<method name="queryBroadcastReceivers(Landroid/content/Intent;I)Ljava/util/List;" />
-		<method name="queryContentProviders(Ljava/lang/String;II)Ljava/util/List;" />
-		<method name="queryInstrumentation(Ljava/lang/String;I)Ljava/util/List;" />
-		<method name="queryIntentActivities(Landroid/content/Intent;I)Ljava/util/List;" />
-		<method name="queryIntentActivityOptions(Landroid/content/ComponentName;[Landroid/content/Intent;Landroid/content/Intent;I)Ljava/util/List;" />
-		<method name="queryIntentContentProviders(Landroid/content/Intent;I)Ljava/util/List;" since="19" />
-		<method name="queryIntentServices(Landroid/content/Intent;I)Ljava/util/List;" />
-		<method name="queryPermissionsByGroup(Ljava/lang/String;I)Ljava/util/List;" />
-		<method name="removePackageFromPreferred(Ljava/lang/String;)V" />
-		<method name="removePermission(Ljava/lang/String;)V" />
-		<method name="resolveActivity(Landroid/content/Intent;I)Landroid/content/pm/ResolveInfo;" />
-		<method name="resolveContentProvider(Ljava/lang/String;I)Landroid/content/pm/ProviderInfo;" />
-		<method name="resolveService(Landroid/content/Intent;I)Landroid/content/pm/ResolveInfo;" />
-		<method name="setApplicationEnabledSetting(Ljava/lang/String;II)V" />
-		<method name="setComponentEnabledSetting(Landroid/content/ComponentName;II)V" />
-		<method name="setInstallerPackageName(Ljava/lang/String;Ljava/lang/String;)V" since="11" />
-		<method name="verifyPendingInstall(II)V" since="14" />
-		<field name="COMPONENT_ENABLED_STATE_DEFAULT" />
-		<field name="COMPONENT_ENABLED_STATE_DISABLED" />
-		<field name="COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED" since="18" />
-		<field name="COMPONENT_ENABLED_STATE_DISABLED_USER" since="14" />
-		<field name="COMPONENT_ENABLED_STATE_ENABLED" />
-		<field name="DONT_KILL_APP" />
-		<field name="EXTRA_VERIFICATION_ID" since="14" />
-		<field name="EXTRA_VERIFICATION_RESULT" since="17" />
-		<field name="FEATURE_APP_WIDGETS" since="18" />
-		<field name="FEATURE_AUDIO_LOW_LATENCY" since="9" />
-		<field name="FEATURE_BACKUP" since="20" />
-		<field name="FEATURE_BLUETOOTH" since="8" />
-		<field name="FEATURE_BLUETOOTH_LE" since="18" />
-		<field name="FEATURE_CAMERA" since="7" />
-		<field name="FEATURE_CAMERA_ANY" since="17" />
-		<field name="FEATURE_CAMERA_AUTOFOCUS" since="7" />
-		<field name="FEATURE_CAMERA_EXTERNAL" since="20" />
-		<field name="FEATURE_CAMERA_FLASH" since="7" />
-		<field name="FEATURE_CAMERA_FRONT" since="9" />
-		<field name="FEATURE_CONSUMER_IR" since="19" />
-		<field name="FEATURE_DEVICE_ADMIN" since="19" />
-		<field name="FEATURE_FAKETOUCH" since="11" />
-		<field name="FEATURE_FAKETOUCH_MULTITOUCH_DISTINCT" since="13" />
-		<field name="FEATURE_FAKETOUCH_MULTITOUCH_JAZZHAND" since="13" />
-		<field name="FEATURE_HOME_SCREEN" since="18" />
-		<field name="FEATURE_INPUT_METHODS" since="18" />
-		<field name="FEATURE_LEANBACK" since="21" />
-		<field name="FEATURE_LIVE_WALLPAPER" since="7" />
-		<field name="FEATURE_LOCATION" since="8" />
-		<field name="FEATURE_LOCATION_GPS" since="8" />
-		<field name="FEATURE_LOCATION_NETWORK" since="8" />
-		<field name="FEATURE_MANAGED_PROFILES" since="21" />
-		<field name="FEATURE_MICROPHONE" since="8" />
-		<field name="FEATURE_NFC" since="9" />
-		<field name="FEATURE_NFC_HOST_CARD_EMULATION" since="19" />
-		<field name="FEATURE_PRINTING" since="20" />
-		<field name="FEATURE_SCREEN_LANDSCAPE" since="13" />
-		<field name="FEATURE_SCREEN_PORTRAIT" since="13" />
-		<field name="FEATURE_SENSOR_ACCELEROMETER" since="8" />
-		<field name="FEATURE_SENSOR_BAROMETER" since="9" />
-		<field name="FEATURE_SENSOR_COMPASS" since="8" />
-		<field name="FEATURE_SENSOR_GYROSCOPE" since="9" />
-		<field name="FEATURE_SENSOR_HEART_RATE" since="20" />
-		<field name="FEATURE_SENSOR_LIGHT" since="7" />
-		<field name="FEATURE_SENSOR_PROXIMITY" since="7" />
-		<field name="FEATURE_SENSOR_STEP_COUNTER" since="19" />
-		<field name="FEATURE_SENSOR_STEP_DETECTOR" since="19" />
-		<field name="FEATURE_SIP" since="9" />
-		<field name="FEATURE_SIP_VOIP" since="9" />
-		<field name="FEATURE_TELEPHONY" since="7" />
-		<field name="FEATURE_TELEPHONY_CDMA" since="7" />
-		<field name="FEATURE_TELEPHONY_GSM" since="7" />
-		<field name="FEATURE_TELEVISION" since="16" />
-		<field name="FEATURE_TOUCHSCREEN" since="8" />
-		<field name="FEATURE_TOUCHSCREEN_MULTITOUCH" since="7" />
-		<field name="FEATURE_TOUCHSCREEN_MULTITOUCH_DISTINCT" since="8" />
-		<field name="FEATURE_TOUCHSCREEN_MULTITOUCH_JAZZHAND" since="9" />
-		<field name="FEATURE_USB_ACCESSORY" since="12" />
-		<field name="FEATURE_USB_HOST" since="12" />
-		<field name="FEATURE_WATCH" since="20" />
-		<field name="FEATURE_WEBVIEW" since="20" />
-		<field name="FEATURE_WIFI" since="8" />
-		<field name="FEATURE_WIFI_DIRECT" since="14" />
-		<field name="FORWARD_LOCK_PACKAGE" />
-		<field name="GET_ACTIVITIES" />
-		<field name="GET_CONFIGURATIONS" since="3" />
-		<field name="GET_DISABLED_COMPONENTS" />
-		<field name="GET_DISABLED_UNTIL_USED_COMPONENTS" since="18" />
-		<field name="GET_GIDS" />
-		<field name="GET_INSTRUMENTATION" />
-		<field name="GET_INTENT_FILTERS" />
-		<field name="GET_META_DATA" />
-		<field name="GET_PERMISSIONS" />
-		<field name="GET_PROVIDERS" />
-		<field name="GET_RECEIVERS" />
-		<field name="GET_RESOLVED_FILTER" />
-		<field name="GET_SERVICES" />
-		<field name="GET_SHARED_LIBRARY_FILES" />
-		<field name="GET_SIGNATURES" />
-		<field name="GET_UNINSTALLED_PACKAGES" since="3" />
-		<field name="GET_URI_PERMISSION_PATTERNS" />
-		<field name="INSTALL_FAILED_ALREADY_EXISTS" />
-		<field name="INSTALL_FAILED_CONFLICTING_PROVIDER" since="3" />
-		<field name="INSTALL_FAILED_DEXOPT" />
-		<field name="INSTALL_FAILED_DUPLICATE_PACKAGE" />
-		<field name="INSTALL_FAILED_INSUFFICIENT_STORAGE" />
-		<field name="INSTALL_FAILED_INVALID_APK" />
-		<field name="INSTALL_FAILED_INVALID_URI" />
-		<field name="INSTALL_FAILED_MISSING_SHARED_LIBRARY" />
-		<field name="INSTALL_FAILED_NO_SHARED_USER" />
-		<field name="INSTALL_FAILED_OLDER_SDK" />
-		<field name="INSTALL_FAILED_REPLACE_COULDNT_DELETE" />
-		<field name="INSTALL_FAILED_SHARED_USER_INCOMPATIBLE" />
-		<field name="INSTALL_FAILED_UPDATE_INCOMPATIBLE" />
-		<field name="INSTALL_PARSE_FAILED_BAD_MANIFEST" />
-		<field name="INSTALL_PARSE_FAILED_BAD_PACKAGE_NAME" />
-		<field name="INSTALL_PARSE_FAILED_BAD_SHARED_USER_ID" />
-		<field name="INSTALL_PARSE_FAILED_CERTIFICATE_ENCODING" />
-		<field name="INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES" />
-		<field name="INSTALL_PARSE_FAILED_MANIFEST_EMPTY" />
-		<field name="INSTALL_PARSE_FAILED_MANIFEST_MALFORMED" />
-		<field name="INSTALL_PARSE_FAILED_NOT_APK" />
-		<field name="INSTALL_PARSE_FAILED_NO_CERTIFICATES" />
-		<field name="INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION" />
-		<field name="INSTALL_SUCCEEDED" />
-		<field name="MATCH_DEFAULT_ONLY" />
-		<field name="MAXIMUM_VERIFICATION_TIMEOUT" since="17" />
-		<field name="PERMISSION_DENIED" />
-		<field name="PERMISSION_GRANTED" />
-		<field name="PKG_INSTALL_COMPLETE" />
-		<field name="PKG_INSTALL_INCOMPLETE" />
-		<field name="REPLACE_EXISTING_PACKAGE" />
-		<field name="SIGNATURE_FIRST_NOT_SIGNED" />
-		<field name="SIGNATURE_MATCH" />
-		<field name="SIGNATURE_NEITHER_SIGNED" />
-		<field name="SIGNATURE_NO_MATCH" />
-		<field name="SIGNATURE_SECOND_NOT_SIGNED" />
-		<field name="SIGNATURE_UNKNOWN_PACKAGE" />
-		<field name="VERIFICATION_ALLOW" since="14" />
-		<field name="VERIFICATION_REJECT" since="14" />
-	</class>
-	<class name="android/content/pm/PackageManager$NameNotFoundException" since="1">
-		<extends name="android/util/AndroidException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/content/pm/PackageStats" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>(Landroid/content/pm/PackageStats;)V" />
-		<method name="&lt;init>(Landroid/os/Parcel;)V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<field name="CREATOR" />
-		<field name="cacheSize" />
-		<field name="codeSize" />
-		<field name="dataSize" />
-		<field name="externalCacheSize" since="11" />
-		<field name="externalCodeSize" since="14" />
-		<field name="externalDataSize" since="11" />
-		<field name="externalMediaSize" since="11" />
-		<field name="externalObbSize" since="11" />
-		<field name="packageName" />
-	</class>
-	<class name="android/content/pm/PathPermission" since="4">
-		<extends name="android/os/PatternMatcher" />
-		<method name="&lt;init>(Landroid/os/Parcel;)V" />
-		<method name="&lt;init>(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V" />
-		<method name="getReadPermission()Ljava/lang/String;" />
-		<method name="getWritePermission()Ljava/lang/String;" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/content/pm/PermissionGroupInfo" since="1">
-		<extends name="android/content/pm/PackageItemInfo" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/content/pm/PermissionGroupInfo;)V" />
-		<method name="loadDescription(Landroid/content/pm/PackageManager;)Ljava/lang/CharSequence;" />
-		<field name="CREATOR" />
-		<field name="FLAG_PERSONAL_INFO" since="17" />
-		<field name="descriptionRes" />
-		<field name="flags" since="17" />
-		<field name="nonLocalizedDescription" />
-		<field name="priority" since="17" />
-	</class>
-	<class name="android/content/pm/PermissionInfo" since="1">
-		<extends name="android/content/pm/PackageItemInfo" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/content/pm/PermissionInfo;)V" />
-		<method name="loadDescription(Landroid/content/pm/PackageManager;)Ljava/lang/CharSequence;" />
-		<field name="CREATOR" />
-		<field name="FLAG_COSTS_MONEY" since="17" />
-		<field name="PROTECTION_DANGEROUS" />
-		<field name="PROTECTION_FLAG_DEVELOPMENT" since="16" />
-		<field name="PROTECTION_FLAG_SYSTEM" since="16" />
-		<field name="PROTECTION_MASK_BASE" since="16" />
-		<field name="PROTECTION_MASK_FLAGS" since="16" />
-		<field name="PROTECTION_NORMAL" />
-		<field name="PROTECTION_SIGNATURE" />
-		<field name="PROTECTION_SIGNATURE_OR_SYSTEM" />
-		<field name="descriptionRes" />
-		<field name="flags" since="17" />
-		<field name="group" />
-		<field name="nonLocalizedDescription" />
-		<field name="protectionLevel" />
-	</class>
-	<class name="android/content/pm/ProviderInfo" since="1">
-		<extends name="android/content/pm/ComponentInfo" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/content/pm/ProviderInfo;)V" />
-		<method name="dump(Landroid/util/Printer;Ljava/lang/String;)V" since="19" />
-		<field name="CREATOR" />
-		<field name="FLAG_SINGLE_USER" since="17" />
-		<field name="authority" />
-		<field name="flags" since="17" />
-		<field name="grantUriPermissions" />
-		<field name="initOrder" />
-		<field name="isSyncable" />
-		<field name="multiprocess" />
-		<field name="pathPermissions" since="4" />
-		<field name="readPermission" />
-		<field name="uriPermissionPatterns" />
-		<field name="writePermission" />
-	</class>
-	<class name="android/content/pm/ResolveInfo" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/content/pm/ResolveInfo;)V" since="17" />
-		<method name="dump(Landroid/util/Printer;Ljava/lang/String;)V" />
-		<method name="getIconResource()I" />
-		<method name="loadIcon(Landroid/content/pm/PackageManager;)Landroid/graphics/drawable/Drawable;" />
-		<method name="loadLabel(Landroid/content/pm/PackageManager;)Ljava/lang/CharSequence;" />
-		<field name="CREATOR" />
-		<field name="activityInfo" />
-		<field name="filter" />
-		<field name="icon" />
-		<field name="isDefault" />
-		<field name="labelRes" />
-		<field name="match" />
-		<field name="nonLocalizedLabel" />
-		<field name="preferredOrder" />
-		<field name="priority" />
-		<field name="providerInfo" since="19" />
-		<field name="resolvePackageName" since="5" />
-		<field name="serviceInfo" />
-		<field name="specificIndex" />
-	</class>
-	<class name="android/content/pm/ResolveInfo$DisplayNameComparator" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/util/Comparator" />
-		<method name="&lt;init>(Landroid/content/pm/PackageManager;)V" />
-		<method name="compare(Landroid/content/pm/ResolveInfo;Landroid/content/pm/ResolveInfo;)I" />
-	</class>
-	<class name="android/content/pm/ServiceInfo" since="1">
-		<extends name="android/content/pm/ComponentInfo" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/content/pm/ServiceInfo;)V" />
-		<method name="dump(Landroid/util/Printer;Ljava/lang/String;)V" since="5" />
-		<field name="CREATOR" />
-		<field name="FLAG_ISOLATED_PROCESS" since="16" />
-		<field name="FLAG_SINGLE_USER" since="17" />
-		<field name="FLAG_STOP_WITH_TASK" since="14" />
-		<field name="flags" since="14" />
-		<field name="permission" />
-	</class>
-	<class name="android/content/pm/Signature" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>([B)V" />
-		<method name="toByteArray()[B" />
-		<method name="toChars()[C" />
-		<method name="toChars([C[I)[C" />
-		<method name="toCharsString()Ljava/lang/String;" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/content/res/AssetFileDescriptor" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" since="3" />
-		<implements name="java/io/Closeable" since="19" />
-		<method name="&lt;init>(Landroid/os/ParcelFileDescriptor;JJ)V" />
-		<method name="&lt;init>(Landroid/os/ParcelFileDescriptor;JJLandroid/os/Bundle;)V" since="19" />
-		<method name="close()V" />
-		<method name="createInputStream()Ljava/io/FileInputStream;" since="3" />
-		<method name="createOutputStream()Ljava/io/FileOutputStream;" since="3" />
-		<method name="getDeclaredLength()J" since="3" />
-		<method name="getExtras()Landroid/os/Bundle;" since="19" />
-		<method name="getFileDescriptor()Ljava/io/FileDescriptor;" />
-		<method name="getLength()J" />
-		<method name="getParcelFileDescriptor()Landroid/os/ParcelFileDescriptor;" />
-		<method name="getStartOffset()J" />
-		<field name="CREATOR" since="3" />
-		<field name="UNKNOWN_LENGTH" since="3" />
-	</class>
-	<class name="android/content/res/AssetFileDescriptor$AutoCloseInputStream" since="3">
-		<extends name="android/os/ParcelFileDescriptor$AutoCloseInputStream" />
-		<method name="&lt;init>(Landroid/content/res/AssetFileDescriptor;)V" />
-	</class>
-	<class name="android/content/res/AssetFileDescriptor$AutoCloseOutputStream" since="3">
-		<extends name="android/os/ParcelFileDescriptor$AutoCloseOutputStream" />
-		<method name="&lt;init>(Landroid/content/res/AssetFileDescriptor;)V" />
-	</class>
-	<class name="android/content/res/AssetManager" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="close()V" />
-		<method name="getLocales()[Ljava/lang/String;" />
-		<method name="list(Ljava/lang/String;)[Ljava/lang/String;" />
-		<method name="open(Ljava/lang/String;)Ljava/io/InputStream;" />
-		<method name="open(Ljava/lang/String;I)Ljava/io/InputStream;" />
-		<method name="openFd(Ljava/lang/String;)Landroid/content/res/AssetFileDescriptor;" />
-		<method name="openNonAssetFd(ILjava/lang/String;)Landroid/content/res/AssetFileDescriptor;" />
-		<method name="openNonAssetFd(Ljava/lang/String;)Landroid/content/res/AssetFileDescriptor;" />
-		<method name="openXmlResourceParser(ILjava/lang/String;)Landroid/content/res/XmlResourceParser;" />
-		<method name="openXmlResourceParser(Ljava/lang/String;)Landroid/content/res/XmlResourceParser;" />
-		<field name="ACCESS_BUFFER" />
-		<field name="ACCESS_RANDOM" />
-		<field name="ACCESS_STREAMING" />
-		<field name="ACCESS_UNKNOWN" />
-	</class>
-	<class name="android/content/res/AssetManager$AssetInputStream" since="1">
-		<extends name="java/io/InputStream" />
-		<method name="&lt;init>(Landroid/content/res/AssetManager;)V" />
-		<method name="getAssetInt()I" />
-	</class>
-	<class name="android/content/res/ColorStateList" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>([[I[I)V" />
-		<method name="createFromXml(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;)Landroid/content/res/ColorStateList;" />
-		<method name="getColorForState([II)I" />
-		<method name="getDefaultColor()I" />
-		<method name="isOpaque()Z" since="21" />
-		<method name="isStateful()Z" />
-		<method name="valueOf(I)Landroid/content/res/ColorStateList;" />
-		<method name="withAlpha(I)Landroid/content/res/ColorStateList;" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/content/res/Configuration" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<implements name="java/lang/Comparable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/content/res/Configuration;)V" />
-		<method name="compareTo(Landroid/content/res/Configuration;)I" />
-		<method name="diff(Landroid/content/res/Configuration;)I" />
-		<method name="equals(Landroid/content/res/Configuration;)Z" />
-		<method name="getLayoutDirection()I" since="17" />
-		<method name="isLayoutSizeAtLeast(I)Z" since="11" />
-		<method name="needNewResources(II)Z" />
-		<method name="readFromParcel(Landroid/os/Parcel;)V" since="8" />
-		<method name="setLayoutDirection(Ljava/util/Locale;)V" since="17" />
-		<method name="setLocale(Ljava/util/Locale;)V" since="17" />
-		<method name="setTo(Landroid/content/res/Configuration;)V" since="8" />
-		<method name="setToDefaults()V" />
-		<method name="updateFrom(Landroid/content/res/Configuration;)I" />
-		<field name="CREATOR" />
-		<field name="DENSITY_DPI_UNDEFINED" since="17" />
-		<field name="HARDKEYBOARDHIDDEN_NO" since="3" />
-		<field name="HARDKEYBOARDHIDDEN_UNDEFINED" since="3" />
-		<field name="HARDKEYBOARDHIDDEN_YES" since="3" />
-		<field name="KEYBOARDHIDDEN_NO" />
-		<field name="KEYBOARDHIDDEN_UNDEFINED" />
-		<field name="KEYBOARDHIDDEN_YES" />
-		<field name="KEYBOARD_12KEY" />
-		<field name="KEYBOARD_NOKEYS" />
-		<field name="KEYBOARD_QWERTY" />
-		<field name="KEYBOARD_UNDEFINED" />
-		<field name="MNC_ZERO" since="19" />
-		<field name="NAVIGATIONHIDDEN_NO" since="5" />
-		<field name="NAVIGATIONHIDDEN_UNDEFINED" since="5" />
-		<field name="NAVIGATIONHIDDEN_YES" since="5" />
-		<field name="NAVIGATION_DPAD" />
-		<field name="NAVIGATION_NONAV" />
-		<field name="NAVIGATION_TRACKBALL" />
-		<field name="NAVIGATION_UNDEFINED" />
-		<field name="NAVIGATION_WHEEL" />
-		<field name="ORIENTATION_LANDSCAPE" />
-		<field name="ORIENTATION_PORTRAIT" />
-		<field name="ORIENTATION_SQUARE" />
-		<field name="ORIENTATION_UNDEFINED" />
-		<field name="SCREENLAYOUT_LAYOUTDIR_LTR" since="17" />
-		<field name="SCREENLAYOUT_LAYOUTDIR_MASK" since="17" />
-		<field name="SCREENLAYOUT_LAYOUTDIR_RTL" since="17" />
-		<field name="SCREENLAYOUT_LAYOUTDIR_SHIFT" since="17" />
-		<field name="SCREENLAYOUT_LAYOUTDIR_UNDEFINED" since="17" />
-		<field name="SCREENLAYOUT_LONG_MASK" since="4" />
-		<field name="SCREENLAYOUT_LONG_NO" since="4" />
-		<field name="SCREENLAYOUT_LONG_UNDEFINED" since="4" />
-		<field name="SCREENLAYOUT_LONG_YES" since="4" />
-		<field name="SCREENLAYOUT_SIZE_LARGE" since="4" />
-		<field name="SCREENLAYOUT_SIZE_MASK" since="4" />
-		<field name="SCREENLAYOUT_SIZE_NORMAL" since="4" />
-		<field name="SCREENLAYOUT_SIZE_SMALL" since="4" />
-		<field name="SCREENLAYOUT_SIZE_UNDEFINED" since="4" />
-		<field name="SCREENLAYOUT_SIZE_XLARGE" since="9" />
-		<field name="SCREENLAYOUT_UNDEFINED" since="17" />
-		<field name="SCREEN_HEIGHT_DP_UNDEFINED" since="13" />
-		<field name="SCREEN_WIDTH_DP_UNDEFINED" since="13" />
-		<field name="SMALLEST_SCREEN_WIDTH_DP_UNDEFINED" since="13" />
-		<field name="TOUCHSCREEN_FINGER" />
-		<field name="TOUCHSCREEN_NOTOUCH" />
-		<field name="TOUCHSCREEN_STYLUS" />
-		<field name="TOUCHSCREEN_UNDEFINED" />
-		<field name="UI_MODE_NIGHT_MASK" since="8" />
-		<field name="UI_MODE_NIGHT_NO" since="8" />
-		<field name="UI_MODE_NIGHT_UNDEFINED" since="8" />
-		<field name="UI_MODE_NIGHT_YES" since="8" />
-		<field name="UI_MODE_TYPE_APPLIANCE" since="16" />
-		<field name="UI_MODE_TYPE_CAR" since="8" />
-		<field name="UI_MODE_TYPE_DESK" since="8" />
-		<field name="UI_MODE_TYPE_MASK" since="8" />
-		<field name="UI_MODE_TYPE_NORMAL" since="8" />
-		<field name="UI_MODE_TYPE_TELEVISION" since="13" />
-		<field name="UI_MODE_TYPE_UNDEFINED" since="8" />
-		<field name="UI_MODE_TYPE_WATCH" since="20" />
-		<field name="densityDpi" since="17" />
-		<field name="fontScale" />
-		<field name="hardKeyboardHidden" since="3" />
-		<field name="keyboard" />
-		<field name="keyboardHidden" />
-		<field name="locale" />
-		<field name="mcc" />
-		<field name="mnc" />
-		<field name="navigation" />
-		<field name="navigationHidden" since="5" />
-		<field name="orientation" />
-		<field name="screenHeightDp" since="13" />
-		<field name="screenLayout" since="4" />
-		<field name="screenWidthDp" since="13" />
-		<field name="smallestScreenWidthDp" since="13" />
-		<field name="touchscreen" />
-		<field name="uiMode" since="8" />
-	</class>
-	<class name="android/content/res/ObbInfo" since="9">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<field name="CREATOR" />
-		<field name="OBB_OVERLAY" />
-		<field name="filename" />
-		<field name="flags" />
-		<field name="packageName" />
-		<field name="version" />
-	</class>
-	<class name="android/content/res/ObbScanner" since="9">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getObbInfo(Ljava/lang/String;)Landroid/content/res/ObbInfo;" />
-	</class>
-	<class name="android/content/res/Resources" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/content/res/AssetManager;Landroid/util/DisplayMetrics;Landroid/content/res/Configuration;)V" />
-		<method name="finishPreloading()V" />
-		<method name="flushLayoutCache()V" />
-		<method name="getAnimation(I)Landroid/content/res/XmlResourceParser;" />
-		<method name="getAssets()Landroid/content/res/AssetManager;" />
-		<method name="getBoolean(I)Z" since="3" />
-		<method name="getColor(I)I" />
-		<method name="getColorStateList(I)Landroid/content/res/ColorStateList;" />
-		<method name="getConfiguration()Landroid/content/res/Configuration;" />
-		<method name="getDimension(I)F" />
-		<method name="getDimensionPixelOffset(I)I" />
-		<method name="getDimensionPixelSize(I)I" />
-		<method name="getDisplayMetrics()Landroid/util/DisplayMetrics;" />
-		<method name="getDrawable(I)Landroid/graphics/drawable/Drawable;" />
-		<method name="getDrawable(ILandroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable;" since="21" />
-		<method name="getDrawableForDensity(II)Landroid/graphics/drawable/Drawable;" since="15" />
-		<method name="getDrawableForDensity(IILandroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable;" since="21" />
-		<method name="getFraction(III)F" since="3" />
-		<method name="getIdentifier(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I" />
-		<method name="getIntArray(I)[I" />
-		<method name="getInteger(I)I" />
-		<method name="getLayout(I)Landroid/content/res/XmlResourceParser;" />
-		<method name="getMovie(I)Landroid/graphics/Movie;" />
-		<method name="getQuantityString(II)Ljava/lang/String;" />
-		<method name="getQuantityString(II[Ljava/lang/Object;)Ljava/lang/String;" />
-		<method name="getQuantityText(II)Ljava/lang/CharSequence;" />
-		<method name="getResourceEntryName(I)Ljava/lang/String;" />
-		<method name="getResourceName(I)Ljava/lang/String;" />
-		<method name="getResourcePackageName(I)Ljava/lang/String;" />
-		<method name="getResourceTypeName(I)Ljava/lang/String;" />
-		<method name="getString(I)Ljava/lang/String;" />
-		<method name="getString(I[Ljava/lang/Object;)Ljava/lang/String;" />
-		<method name="getStringArray(I)[Ljava/lang/String;" />
-		<method name="getSystem()Landroid/content/res/Resources;" />
-		<method name="getText(I)Ljava/lang/CharSequence;" />
-		<method name="getText(ILjava/lang/CharSequence;)Ljava/lang/CharSequence;" />
-		<method name="getTextArray(I)[Ljava/lang/CharSequence;" />
-		<method name="getValue(ILandroid/util/TypedValue;Z)V" />
-		<method name="getValue(Ljava/lang/String;Landroid/util/TypedValue;Z)V" />
-		<method name="getValueForDensity(IILandroid/util/TypedValue;Z)V" since="15" />
-		<method name="getXml(I)Landroid/content/res/XmlResourceParser;" />
-		<method name="newTheme()Landroid/content/res/Resources$Theme;" />
-		<method name="obtainAttributes(Landroid/util/AttributeSet;[I)Landroid/content/res/TypedArray;" />
-		<method name="obtainTypedArray(I)Landroid/content/res/TypedArray;" />
-		<method name="openRawResource(I)Ljava/io/InputStream;" />
-		<method name="openRawResource(ILandroid/util/TypedValue;)Ljava/io/InputStream;" since="3" />
-		<method name="openRawResourceFd(I)Landroid/content/res/AssetFileDescriptor;" />
-		<method name="parseBundleExtra(Ljava/lang/String;Landroid/util/AttributeSet;Landroid/os/Bundle;)V" since="3" />
-		<method name="parseBundleExtras(Landroid/content/res/XmlResourceParser;Landroid/os/Bundle;)V" since="3" />
-		<method name="updateConfiguration(Landroid/content/res/Configuration;Landroid/util/DisplayMetrics;)V" />
-	</class>
-	<class name="android/content/res/Resources$NotFoundException" since="1">
-		<extends name="java/lang/RuntimeException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/content/res/Resources$Theme" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/content/res/Resources;)V" />
-		<method name="applyStyle(IZ)V" />
-		<method name="dump(ILjava/lang/String;Ljava/lang/String;)V" />
-		<method name="getDrawable(I)Landroid/graphics/drawable/Drawable;" since="21" />
-		<method name="getResources()Landroid/content/res/Resources;" since="21" />
-		<method name="obtainStyledAttributes(I[I)Landroid/content/res/TypedArray;" />
-		<method name="obtainStyledAttributes(Landroid/util/AttributeSet;[III)Landroid/content/res/TypedArray;" />
-		<method name="obtainStyledAttributes([I)Landroid/content/res/TypedArray;" />
-		<method name="resolveAttribute(ILandroid/util/TypedValue;Z)Z" />
-		<method name="setTo(Landroid/content/res/Resources$Theme;)V" />
-	</class>
-	<class name="android/content/res/TypedArray" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getBoolean(IZ)Z" />
-		<method name="getColor(II)I" />
-		<method name="getColorStateList(I)Landroid/content/res/ColorStateList;" />
-		<method name="getDimension(IF)F" />
-		<method name="getDimensionPixelOffset(II)I" />
-		<method name="getDimensionPixelSize(II)I" />
-		<method name="getDrawable(I)Landroid/graphics/drawable/Drawable;" />
-		<method name="getFloat(IF)F" />
-		<method name="getFraction(IIIF)F" />
-		<method name="getIndex(I)I" />
-		<method name="getIndexCount()I" />
-		<method name="getInt(II)I" />
-		<method name="getInteger(II)I" />
-		<method name="getLayoutDimension(II)I" since="3" />
-		<method name="getLayoutDimension(ILjava/lang/String;)I" />
-		<method name="getNonResourceString(I)Ljava/lang/String;" />
-		<method name="getPositionDescription()Ljava/lang/String;" />
-		<method name="getResourceId(II)I" />
-		<method name="getResources()Landroid/content/res/Resources;" />
-		<method name="getString(I)Ljava/lang/String;" />
-		<method name="getText(I)Ljava/lang/CharSequence;" />
-		<method name="getTextArray(I)[Ljava/lang/CharSequence;" />
-		<method name="getType(I)I" since="21" />
-		<method name="getValue(ILandroid/util/TypedValue;)Z" />
-		<method name="hasValue(I)Z" />
-		<method name="length()I" />
-		<method name="peekValue(I)Landroid/util/TypedValue;" />
-		<method name="recycle()V" />
-	</class>
-	<class name="android/content/res/XmlResourceParser" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/util/AttributeSet" />
-		<implements name="java/lang/AutoCloseable" since="19" />
-		<implements name="org/xmlpull/v1/XmlPullParser" />
-		<method name="close()V" />
-	</class>
-	<class name="android/database/AbstractCursor" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/database/CrossProcessCursor" />
-		<method name="&lt;init>()V" />
-		<method name="checkPosition()V" />
-		<method name="getNotificationUri()Landroid/net/Uri;" since="11" />
-		<method name="getUpdatedField(I)Ljava/lang/Object;" />
-		<method name="isFieldUpdated(I)Z" />
-		<method name="onChange(Z)V" />
-		<field name="mClosed" />
-		<field name="mContentResolver" />
-		<field name="mCurrentRowID" />
-		<field name="mPos" />
-		<field name="mRowIdColumnIndex" />
-		<field name="mUpdatedRows" />
-	</class>
-	<class name="android/database/AbstractCursor$SelfContentObserver" since="1">
-		<extends name="android/database/ContentObserver" />
-		<method name="&lt;init>(Landroid/database/AbstractCursor;)V" />
-	</class>
-	<class name="android/database/AbstractWindowedCursor" since="1">
-		<extends name="android/database/AbstractCursor" />
-		<method name="&lt;init>()V" />
-		<method name="hasWindow()Z" />
-		<method name="isBlob(I)Z" />
-		<method name="isFloat(I)Z" since="5" />
-		<method name="isLong(I)Z" since="5" />
-		<method name="isString(I)Z" since="5" />
-		<method name="setWindow(Landroid/database/CursorWindow;)V" />
-		<field name="mWindow" />
-	</class>
-	<class name="android/database/CharArrayBuffer" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(I)V" />
-		<method name="&lt;init>([C)V" />
-		<field name="data" />
-		<field name="sizeCopied" />
-	</class>
-	<class name="android/database/ContentObservable" since="1">
-		<extends name="android/database/Observable" />
-		<method name="&lt;init>()V" />
-		<method name="dispatchChange(Z)V" />
-		<method name="dispatchChange(ZLandroid/net/Uri;)V" since="16" />
-		<method name="notifyChange(Z)V" />
-		<method name="registerObserver(Landroid/database/ContentObserver;)V" />
-	</class>
-	<class name="android/database/ContentObserver" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/os/Handler;)V" />
-		<method name="deliverSelfNotifications()Z" />
-		<method name="dispatchChange(Z)V" />
-		<method name="dispatchChange(ZLandroid/net/Uri;)V" since="16" />
-		<method name="onChange(Z)V" />
-		<method name="onChange(ZLandroid/net/Uri;)V" since="16" />
-	</class>
-	<class name="android/database/CrossProcessCursor" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/database/Cursor" />
-		<method name="fillWindow(ILandroid/database/CursorWindow;)V" />
-		<method name="getWindow()Landroid/database/CursorWindow;" />
-		<method name="onMove(II)Z" />
-	</class>
-	<class name="android/database/CrossProcessCursorWrapper" since="15">
-		<extends name="android/database/CursorWrapper" />
-		<implements name="android/database/CrossProcessCursor" />
-		<method name="&lt;init>(Landroid/database/Cursor;)V" />
-	</class>
-	<class name="android/database/Cursor" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Closeable" since="16" />
-		<method name="close()V" />
-		<method name="copyStringToBuffer(ILandroid/database/CharArrayBuffer;)V" />
-		<method name="deactivate()V" />
-		<method name="getBlob(I)[B" />
-		<method name="getColumnCount()I" />
-		<method name="getColumnIndex(Ljava/lang/String;)I" />
-		<method name="getColumnIndexOrThrow(Ljava/lang/String;)I" />
-		<method name="getColumnName(I)Ljava/lang/String;" />
-		<method name="getColumnNames()[Ljava/lang/String;" />
-		<method name="getCount()I" />
-		<method name="getDouble(I)D" />
-		<method name="getExtras()Landroid/os/Bundle;" />
-		<method name="getFloat(I)F" />
-		<method name="getInt(I)I" />
-		<method name="getLong(I)J" />
-		<method name="getNotificationUri()Landroid/net/Uri;" since="19" />
-		<method name="getPosition()I" />
-		<method name="getShort(I)S" />
-		<method name="getString(I)Ljava/lang/String;" />
-		<method name="getType(I)I" since="11" />
-		<method name="getWantsAllOnMoveCalls()Z" />
-		<method name="isAfterLast()Z" />
-		<method name="isBeforeFirst()Z" />
-		<method name="isClosed()Z" />
-		<method name="isFirst()Z" />
-		<method name="isLast()Z" />
-		<method name="isNull(I)Z" />
-		<method name="move(I)Z" />
-		<method name="moveToFirst()Z" />
-		<method name="moveToLast()Z" />
-		<method name="moveToNext()Z" />
-		<method name="moveToPosition(I)Z" />
-		<method name="moveToPrevious()Z" />
-		<method name="registerContentObserver(Landroid/database/ContentObserver;)V" />
-		<method name="registerDataSetObserver(Landroid/database/DataSetObserver;)V" />
-		<method name="requery()Z" />
-		<method name="respond(Landroid/os/Bundle;)Landroid/os/Bundle;" />
-		<method name="setNotificationUri(Landroid/content/ContentResolver;Landroid/net/Uri;)V" />
-		<method name="unregisterContentObserver(Landroid/database/ContentObserver;)V" />
-		<method name="unregisterDataSetObserver(Landroid/database/DataSetObserver;)V" />
-		<field name="FIELD_TYPE_BLOB" since="11" />
-		<field name="FIELD_TYPE_FLOAT" since="11" />
-		<field name="FIELD_TYPE_INTEGER" since="11" />
-		<field name="FIELD_TYPE_NULL" since="11" />
-		<field name="FIELD_TYPE_STRING" since="11" />
-	</class>
-	<class name="android/database/CursorIndexOutOfBoundsException" since="1">
-		<extends name="java/lang/IndexOutOfBoundsException" />
-		<method name="&lt;init>(II)V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/database/CursorJoiner" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/Iterable" />
-		<implements name="java/util/Iterator" />
-		<method name="&lt;init>(Landroid/database/Cursor;[Ljava/lang/String;Landroid/database/Cursor;[Ljava/lang/String;)V" />
-		<method name="next()Landroid/database/CursorJoiner$Result;" />
-	</class>
-	<class name="android/database/CursorJoiner$Result" since="1">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Landroid/database/CursorJoiner$Result;" />
-		<method name="values()[Landroid/database/CursorJoiner$Result;" />
-		<field name="BOTH" />
-		<field name="LEFT" />
-		<field name="RIGHT" />
-	</class>
-	<class name="android/database/CursorWindow" since="1">
-		<extends name="android/database/sqlite/SQLiteClosable" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>(Ljava/lang/String;)V" since="15" />
-		<method name="&lt;init>(Z)V" />
-		<method name="allocRow()Z" />
-		<method name="clear()V" />
-		<method name="close()V" />
-		<method name="copyStringToBuffer(IILandroid/database/CharArrayBuffer;)V" />
-		<method name="freeLastRow()V" />
-		<method name="getBlob(II)[B" />
-		<method name="getDouble(II)D" />
-		<method name="getFloat(II)F" />
-		<method name="getInt(II)I" />
-		<method name="getLong(II)J" />
-		<method name="getNumRows()I" />
-		<method name="getShort(II)S" />
-		<method name="getStartPosition()I" />
-		<method name="getString(II)Ljava/lang/String;" />
-		<method name="getType(II)I" since="11" />
-		<method name="isBlob(II)Z" />
-		<method name="isFloat(II)Z" since="5" />
-		<method name="isLong(II)Z" since="5" />
-		<method name="isNull(II)Z" />
-		<method name="isString(II)Z" since="5" />
-		<method name="newFromParcel(Landroid/os/Parcel;)Landroid/database/CursorWindow;" />
-		<method name="putBlob([BII)Z" />
-		<method name="putDouble(DII)Z" />
-		<method name="putLong(JII)Z" />
-		<method name="putNull(II)Z" />
-		<method name="putString(Ljava/lang/String;II)Z" />
-		<method name="setNumColumns(I)Z" />
-		<method name="setStartPosition(I)V" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/database/CursorWrapper" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/database/Cursor" />
-		<method name="&lt;init>(Landroid/database/Cursor;)V" />
-		<method name="getWrappedCursor()Landroid/database/Cursor;" since="11" />
-	</class>
-	<class name="android/database/DataSetObservable" since="1">
-		<extends name="android/database/Observable" />
-		<method name="&lt;init>()V" />
-		<method name="notifyChanged()V" />
-		<method name="notifyInvalidated()V" />
-	</class>
-	<class name="android/database/DataSetObserver" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="onChanged()V" />
-		<method name="onInvalidated()V" />
-	</class>
-	<class name="android/database/DatabaseErrorHandler" since="11">
-		<extends name="java/lang/Object" />
-		<method name="onCorruption(Landroid/database/sqlite/SQLiteDatabase;)V" />
-	</class>
-	<class name="android/database/DatabaseUtils" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="appendEscapedSQLString(Ljava/lang/StringBuilder;Ljava/lang/String;)V" />
-		<method name="appendSelectionArgs([Ljava/lang/String;[Ljava/lang/String;)[Ljava/lang/String;" since="11" />
-		<method name="appendValueToSql(Ljava/lang/StringBuilder;Ljava/lang/Object;)V" />
-		<method name="bindObjectToProgram(Landroid/database/sqlite/SQLiteProgram;ILjava/lang/Object;)V" />
-		<method name="blobFileDescriptorForQuery(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;[Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;" since="11" />
-		<method name="blobFileDescriptorForQuery(Landroid/database/sqlite/SQLiteStatement;[Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;" since="11" />
-		<method name="concatenateWhere(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" since="11" />
-		<method name="createDbFromSqlStatements(Landroid/content/Context;Ljava/lang/String;ILjava/lang/String;)V" />
-		<method name="cursorDoubleToContentValues(Landroid/database/Cursor;Ljava/lang/String;Landroid/content/ContentValues;Ljava/lang/String;)V" />
-		<method name="cursorDoubleToContentValuesIfPresent(Landroid/database/Cursor;Landroid/content/ContentValues;Ljava/lang/String;)V" since="8" />
-		<method name="cursorDoubleToCursorValues(Landroid/database/Cursor;Ljava/lang/String;Landroid/content/ContentValues;)V" />
-		<method name="cursorFloatToContentValuesIfPresent(Landroid/database/Cursor;Landroid/content/ContentValues;Ljava/lang/String;)V" since="8" />
-		<method name="cursorIntToContentValues(Landroid/database/Cursor;Ljava/lang/String;Landroid/content/ContentValues;)V" />
-		<method name="cursorIntToContentValues(Landroid/database/Cursor;Ljava/lang/String;Landroid/content/ContentValues;Ljava/lang/String;)V" />
-		<method name="cursorIntToContentValuesIfPresent(Landroid/database/Cursor;Landroid/content/ContentValues;Ljava/lang/String;)V" since="8" />
-		<method name="cursorLongToContentValues(Landroid/database/Cursor;Ljava/lang/String;Landroid/content/ContentValues;)V" />
-		<method name="cursorLongToContentValues(Landroid/database/Cursor;Ljava/lang/String;Landroid/content/ContentValues;Ljava/lang/String;)V" />
-		<method name="cursorLongToContentValuesIfPresent(Landroid/database/Cursor;Landroid/content/ContentValues;Ljava/lang/String;)V" since="8" />
-		<method name="cursorRowToContentValues(Landroid/database/Cursor;Landroid/content/ContentValues;)V" />
-		<method name="cursorShortToContentValuesIfPresent(Landroid/database/Cursor;Landroid/content/ContentValues;Ljava/lang/String;)V" since="8" />
-		<method name="cursorStringToContentValues(Landroid/database/Cursor;Ljava/lang/String;Landroid/content/ContentValues;)V" />
-		<method name="cursorStringToContentValues(Landroid/database/Cursor;Ljava/lang/String;Landroid/content/ContentValues;Ljava/lang/String;)V" />
-		<method name="cursorStringToContentValuesIfPresent(Landroid/database/Cursor;Landroid/content/ContentValues;Ljava/lang/String;)V" since="8" />
-		<method name="cursorStringToInsertHelper(Landroid/database/Cursor;Ljava/lang/String;Landroid/database/DatabaseUtils$InsertHelper;I)V" />
-		<method name="dumpCurrentRow(Landroid/database/Cursor;)V" />
-		<method name="dumpCurrentRow(Landroid/database/Cursor;Ljava/io/PrintStream;)V" />
-		<method name="dumpCurrentRow(Landroid/database/Cursor;Ljava/lang/StringBuilder;)V" />
-		<method name="dumpCurrentRowToString(Landroid/database/Cursor;)Ljava/lang/String;" />
-		<method name="dumpCursor(Landroid/database/Cursor;)V" />
-		<method name="dumpCursor(Landroid/database/Cursor;Ljava/io/PrintStream;)V" />
-		<method name="dumpCursor(Landroid/database/Cursor;Ljava/lang/StringBuilder;)V" />
-		<method name="dumpCursorToString(Landroid/database/Cursor;)Ljava/lang/String;" />
-		<method name="getCollationKey(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="getHexCollationKey(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="getSqlStatementType(Ljava/lang/String;)I" since="11" />
-		<method name="longForQuery(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;[Ljava/lang/String;)J" />
-		<method name="longForQuery(Landroid/database/sqlite/SQLiteStatement;[Ljava/lang/String;)J" />
-		<method name="queryNumEntries(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;)J" />
-		<method name="queryNumEntries(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;Ljava/lang/String;)J" since="11" />
-		<method name="queryNumEntries(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)J" since="11" />
-		<method name="readExceptionFromParcel(Landroid/os/Parcel;)V" />
-		<method name="readExceptionWithFileNotFoundExceptionFromParcel(Landroid/os/Parcel;)V" />
-		<method name="readExceptionWithOperationApplicationExceptionFromParcel(Landroid/os/Parcel;)V" since="5" />
-		<method name="sqlEscapeString(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="stringForQuery(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;[Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="stringForQuery(Landroid/database/sqlite/SQLiteStatement;[Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="writeExceptionToParcel(Landroid/os/Parcel;Ljava/lang/Exception;)V" />
-		<field name="STATEMENT_ABORT" since="11" />
-		<field name="STATEMENT_ATTACH" since="11" />
-		<field name="STATEMENT_BEGIN" since="11" />
-		<field name="STATEMENT_COMMIT" since="11" />
-		<field name="STATEMENT_DDL" since="11" />
-		<field name="STATEMENT_OTHER" since="11" />
-		<field name="STATEMENT_PRAGMA" since="11" />
-		<field name="STATEMENT_SELECT" since="11" />
-		<field name="STATEMENT_UNPREPARED" since="11" />
-		<field name="STATEMENT_UPDATE" since="11" />
-	</class>
-	<class name="android/database/DatabaseUtils$InsertHelper" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;)V" />
-		<method name="bind(ID)V" />
-		<method name="bind(IF)V" />
-		<method name="bind(II)V" />
-		<method name="bind(IJ)V" />
-		<method name="bind(ILjava/lang/String;)V" />
-		<method name="bind(IZ)V" />
-		<method name="bind(I[B)V" />
-		<method name="bindNull(I)V" />
-		<method name="close()V" />
-		<method name="execute()J" />
-		<method name="getColumnIndex(Ljava/lang/String;)I" />
-		<method name="insert(Landroid/content/ContentValues;)J" />
-		<method name="prepareForInsert()V" />
-		<method name="prepareForReplace()V" />
-		<method name="replace(Landroid/content/ContentValues;)J" />
-		<field name="TABLE_INFO_PRAGMA_DEFAULT_INDEX" />
-	</class>
-	<class name="android/database/DefaultDatabaseErrorHandler" since="11">
-		<extends name="java/lang/Object" />
-		<implements name="android/database/DatabaseErrorHandler" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="android/database/MatrixCursor" since="1">
-		<extends name="android/database/AbstractCursor" />
-		<method name="&lt;init>([Ljava/lang/String;)V" />
-		<method name="&lt;init>([Ljava/lang/String;I)V" />
-		<method name="addRow(Ljava/lang/Iterable;)V" />
-		<method name="addRow([Ljava/lang/Object;)V" />
-		<method name="newRow()Landroid/database/MatrixCursor$RowBuilder;" />
-	</class>
-	<class name="android/database/MatrixCursor$RowBuilder" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/database/MatrixCursor;)V" />
-		<method name="add(Ljava/lang/Object;)Landroid/database/MatrixCursor$RowBuilder;" />
-		<method name="add(Ljava/lang/String;Ljava/lang/Object;)Landroid/database/MatrixCursor$RowBuilder;" since="19" />
-	</class>
-	<class name="android/database/MergeCursor" since="1">
-		<extends name="android/database/AbstractCursor" />
-		<method name="&lt;init>([Landroid/database/Cursor;)V" />
-	</class>
-	<class name="android/database/Observable" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="registerObserver(Ljava/lang/Object;)V" />
-		<method name="unregisterAll()V" />
-		<method name="unregisterObserver(Ljava/lang/Object;)V" />
-		<field name="mObservers" />
-	</class>
-	<class name="android/database/SQLException" since="1">
-		<extends name="java/lang/RuntimeException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" since="16" />
-	</class>
-	<class name="android/database/StaleDataException" since="1">
-		<extends name="java/lang/RuntimeException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/database/sqlite/SQLiteAbortException" since="1">
-		<extends name="android/database/sqlite/SQLiteException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/database/sqlite/SQLiteAccessPermException" since="11">
-		<extends name="android/database/sqlite/SQLiteException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/database/sqlite/SQLiteBindOrColumnIndexOutOfRangeException" since="11">
-		<extends name="android/database/sqlite/SQLiteException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/database/sqlite/SQLiteBlobTooBigException" since="11">
-		<extends name="android/database/sqlite/SQLiteException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/database/sqlite/SQLiteCantOpenDatabaseException" since="11">
-		<extends name="android/database/sqlite/SQLiteException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/database/sqlite/SQLiteClosable" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Closeable" since="16" />
-		<method name="&lt;init>()V" />
-		<method name="acquireReference()V" />
-		<method name="onAllReferencesReleased()V" />
-		<method name="onAllReferencesReleasedFromContainer()V" />
-		<method name="releaseReference()V" />
-		<method name="releaseReferenceFromContainer()V" />
-	</class>
-	<class name="android/database/sqlite/SQLiteConstraintException" since="1">
-		<extends name="android/database/sqlite/SQLiteException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/database/sqlite/SQLiteCursor" since="1">
-		<extends name="android/database/AbstractWindowedCursor" />
-		<method name="&lt;init>(Landroid/database/sqlite/SQLiteCursorDriver;Ljava/lang/String;Landroid/database/sqlite/SQLiteQuery;)V" since="11" />
-		<method name="&lt;init>(Landroid/database/sqlite/SQLiteDatabase;Landroid/database/sqlite/SQLiteCursorDriver;Ljava/lang/String;Landroid/database/sqlite/SQLiteQuery;)V" />
-		<method name="getDatabase()Landroid/database/sqlite/SQLiteDatabase;" />
-		<method name="setSelectionArguments([Ljava/lang/String;)V" />
-	</class>
-	<class name="android/database/sqlite/SQLiteCursorDriver" since="1">
-		<extends name="java/lang/Object" />
-		<method name="cursorClosed()V" />
-		<method name="cursorDeactivated()V" />
-		<method name="cursorRequeried(Landroid/database/Cursor;)V" />
-		<method name="query(Landroid/database/sqlite/SQLiteDatabase$CursorFactory;[Ljava/lang/String;)Landroid/database/Cursor;" />
-		<method name="setBindArguments([Ljava/lang/String;)V" />
-	</class>
-	<class name="android/database/sqlite/SQLiteDatabase" since="1">
-		<extends name="android/database/sqlite/SQLiteClosable" />
-		<method name="&lt;init>()V" />
-		<method name="beginTransaction()V" />
-		<method name="beginTransactionNonExclusive()V" since="11" />
-		<method name="beginTransactionWithListener(Landroid/database/sqlite/SQLiteTransactionListener;)V" since="5" />
-		<method name="beginTransactionWithListenerNonExclusive(Landroid/database/sqlite/SQLiteTransactionListener;)V" since="11" />
-		<method name="close()V" />
-		<method name="compileStatement(Ljava/lang/String;)Landroid/database/sqlite/SQLiteStatement;" />
-		<method name="create(Landroid/database/sqlite/SQLiteDatabase$CursorFactory;)Landroid/database/sqlite/SQLiteDatabase;" />
-		<method name="delete(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)I" />
-		<method name="deleteDatabase(Ljava/io/File;)Z" since="16" />
-		<method name="disableWriteAheadLogging()V" since="16" />
-		<method name="enableWriteAheadLogging()Z" since="11" />
-		<method name="endTransaction()V" />
-		<method name="execSQL(Ljava/lang/String;)V" />
-		<method name="execSQL(Ljava/lang/String;[Ljava/lang/Object;)V" />
-		<method name="findEditTable(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="getAttachedDbs()Ljava/util/List;" since="11" />
-		<method name="getMaximumSize()J" />
-		<method name="getPageSize()J" />
-		<method name="getPath()Ljava/lang/String;" />
-		<method name="getSyncedTables()Ljava/util/Map;" />
-		<method name="getVersion()I" />
-		<method name="inTransaction()Z" />
-		<method name="insert(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;)J" />
-		<method name="insertOrThrow(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;)J" />
-		<method name="insertWithOnConflict(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;I)J" since="8" />
-		<method name="isDatabaseIntegrityOk()Z" since="11" />
-		<method name="isDbLockedByCurrentThread()Z" />
-		<method name="isDbLockedByOtherThreads()Z" />
-		<method name="isOpen()Z" />
-		<method name="isReadOnly()Z" />
-		<method name="isWriteAheadLoggingEnabled()Z" since="16" />
-		<method name="markTableSyncable(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="markTableSyncable(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="needUpgrade(I)Z" />
-		<method name="openDatabase(Ljava/lang/String;Landroid/database/sqlite/SQLiteDatabase$CursorFactory;I)Landroid/database/sqlite/SQLiteDatabase;" />
-		<method name="openDatabase(Ljava/lang/String;Landroid/database/sqlite/SQLiteDatabase$CursorFactory;ILandroid/database/DatabaseErrorHandler;)Landroid/database/sqlite/SQLiteDatabase;" since="11" />
-		<method name="openOrCreateDatabase(Ljava/io/File;Landroid/database/sqlite/SQLiteDatabase$CursorFactory;)Landroid/database/sqlite/SQLiteDatabase;" />
-		<method name="openOrCreateDatabase(Ljava/lang/String;Landroid/database/sqlite/SQLiteDatabase$CursorFactory;)Landroid/database/sqlite/SQLiteDatabase;" />
-		<method name="openOrCreateDatabase(Ljava/lang/String;Landroid/database/sqlite/SQLiteDatabase$CursorFactory;Landroid/database/DatabaseErrorHandler;)Landroid/database/sqlite/SQLiteDatabase;" since="11" />
-		<method name="query(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;" />
-		<method name="query(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;" />
-		<method name="query(ZLjava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;" />
-		<method name="query(ZLjava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/database/Cursor;" since="16" />
-		<method name="queryWithFactory(Landroid/database/sqlite/SQLiteDatabase$CursorFactory;ZLjava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;" />
-		<method name="queryWithFactory(Landroid/database/sqlite/SQLiteDatabase$CursorFactory;ZLjava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/database/Cursor;" since="16" />
-		<method name="rawQuery(Ljava/lang/String;[Ljava/lang/String;)Landroid/database/Cursor;" />
-		<method name="rawQuery(Ljava/lang/String;[Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/database/Cursor;" since="16" />
-		<method name="rawQueryWithFactory(Landroid/database/sqlite/SQLiteDatabase$CursorFactory;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;" />
-		<method name="rawQueryWithFactory(Landroid/database/sqlite/SQLiteDatabase$CursorFactory;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/database/Cursor;" since="16" />
-		<method name="releaseMemory()I" />
-		<method name="replace(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;)J" />
-		<method name="replaceOrThrow(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;)J" />
-		<method name="setForeignKeyConstraintsEnabled(Z)V" since="16" />
-		<method name="setLocale(Ljava/util/Locale;)V" />
-		<method name="setLockingEnabled(Z)V" />
-		<method name="setMaxSqlCacheSize(I)V" since="11" />
-		<method name="setMaximumSize(J)J" />
-		<method name="setPageSize(J)V" />
-		<method name="setTransactionSuccessful()V" />
-		<method name="setVersion(I)V" />
-		<method name="update(Ljava/lang/String;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;)I" />
-		<method name="updateWithOnConflict(Ljava/lang/String;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;I)I" since="8" />
-		<method name="yieldIfContended()Z" />
-		<method name="yieldIfContendedSafely()Z" since="3" />
-		<method name="yieldIfContendedSafely(J)Z" since="5" />
-		<field name="CONFLICT_ABORT" since="8" />
-		<field name="CONFLICT_FAIL" since="8" />
-		<field name="CONFLICT_IGNORE" since="8" />
-		<field name="CONFLICT_NONE" since="8" />
-		<field name="CONFLICT_REPLACE" since="8" />
-		<field name="CONFLICT_ROLLBACK" since="8" />
-		<field name="CREATE_IF_NECESSARY" />
-		<field name="ENABLE_WRITE_AHEAD_LOGGING" since="16" />
-		<field name="MAX_SQL_CACHE_SIZE" since="11" />
-		<field name="NO_LOCALIZED_COLLATORS" />
-		<field name="OPEN_READONLY" />
-		<field name="OPEN_READWRITE" />
-		<field name="SQLITE_MAX_LIKE_PATTERN_LENGTH" />
-	</class>
-	<class name="android/database/sqlite/SQLiteDatabase$CursorFactory" since="1">
-		<extends name="java/lang/Object" />
-		<method name="newCursor(Landroid/database/sqlite/SQLiteDatabase;Landroid/database/sqlite/SQLiteCursorDriver;Ljava/lang/String;Landroid/database/sqlite/SQLiteQuery;)Landroid/database/Cursor;" />
-	</class>
-	<class name="android/database/sqlite/SQLiteDatabaseCorruptException" since="1">
-		<extends name="android/database/sqlite/SQLiteException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/database/sqlite/SQLiteDatabaseLockedException" since="11">
-		<extends name="android/database/sqlite/SQLiteException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/database/sqlite/SQLiteDatatypeMismatchException" since="11">
-		<extends name="android/database/sqlite/SQLiteException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/database/sqlite/SQLiteDiskIOException" since="1">
-		<extends name="android/database/sqlite/SQLiteException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/database/sqlite/SQLiteDoneException" since="1">
-		<extends name="android/database/sqlite/SQLiteException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/database/sqlite/SQLiteException" since="1">
-		<extends name="android/database/SQLException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" since="16" />
-	</class>
-	<class name="android/database/sqlite/SQLiteFullException" since="1">
-		<extends name="android/database/sqlite/SQLiteException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/database/sqlite/SQLiteMisuseException" since="1">
-		<extends name="android/database/sqlite/SQLiteException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/database/sqlite/SQLiteOpenHelper" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/content/Context;Ljava/lang/String;Landroid/database/sqlite/SQLiteDatabase$CursorFactory;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Ljava/lang/String;Landroid/database/sqlite/SQLiteDatabase$CursorFactory;ILandroid/database/DatabaseErrorHandler;)V" since="11" />
-		<method name="close()V" />
-		<method name="getDatabaseName()Ljava/lang/String;" since="14" />
-		<method name="getReadableDatabase()Landroid/database/sqlite/SQLiteDatabase;" />
-		<method name="getWritableDatabase()Landroid/database/sqlite/SQLiteDatabase;" />
-		<method name="onConfigure(Landroid/database/sqlite/SQLiteDatabase;)V" since="16" />
-		<method name="onCreate(Landroid/database/sqlite/SQLiteDatabase;)V" />
-		<method name="onDowngrade(Landroid/database/sqlite/SQLiteDatabase;II)V" since="11" />
-		<method name="onOpen(Landroid/database/sqlite/SQLiteDatabase;)V" />
-		<method name="onUpgrade(Landroid/database/sqlite/SQLiteDatabase;II)V" />
-		<method name="setWriteAheadLoggingEnabled(Z)V" since="16" />
-	</class>
-	<class name="android/database/sqlite/SQLiteOutOfMemoryException" since="11">
-		<extends name="android/database/sqlite/SQLiteException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/database/sqlite/SQLiteProgram" since="1">
-		<extends name="android/database/sqlite/SQLiteClosable" />
-		<method name="&lt;init>()V" />
-		<method name="bindAllArgsAsStrings([Ljava/lang/String;)V" since="11" />
-		<method name="bindBlob(I[B)V" />
-		<method name="bindDouble(ID)V" />
-		<method name="bindLong(IJ)V" />
-		<method name="bindNull(I)V" />
-		<method name="bindString(ILjava/lang/String;)V" />
-		<method name="clearBindings()V" />
-		<method name="close()V" />
-		<method name="compile(Ljava/lang/String;Z)V" />
-		<method name="getUniqueId()I" />
-		<method name="native_bind_blob(I[B)V" />
-		<method name="native_bind_double(ID)V" />
-		<method name="native_bind_long(IJ)V" />
-		<method name="native_bind_null(I)V" />
-		<method name="native_bind_string(ILjava/lang/String;)V" />
-		<method name="native_compile(Ljava/lang/String;)V" />
-		<method name="native_finalize()V" />
-		<field name="mDatabase" />
-		<field name="nHandle" />
-		<field name="nStatement" />
-	</class>
-	<class name="android/database/sqlite/SQLiteQuery" since="1">
-		<extends name="android/database/sqlite/SQLiteProgram" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="android/database/sqlite/SQLiteQueryBuilder" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="appendColumns(Ljava/lang/StringBuilder;[Ljava/lang/String;)V" />
-		<method name="appendWhere(Ljava/lang/CharSequence;)V" />
-		<method name="appendWhereEscapeString(Ljava/lang/String;)V" />
-		<method name="buildQuery([Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" since="11" />
-		<method name="buildQuery([Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="buildQueryString(ZLjava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="buildUnionQuery([Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="buildUnionSubQuery(Ljava/lang/String;[Ljava/lang/String;Ljava/util/Set;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" since="11" />
-		<method name="buildUnionSubQuery(Ljava/lang/String;[Ljava/lang/String;Ljava/util/Set;ILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="getTables()Ljava/lang/String;" />
-		<method name="query(Landroid/database/sqlite/SQLiteDatabase;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;" />
-		<method name="query(Landroid/database/sqlite/SQLiteDatabase;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;" />
-		<method name="query(Landroid/database/sqlite/SQLiteDatabase;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/database/Cursor;" since="16" />
-		<method name="setCursorFactory(Landroid/database/sqlite/SQLiteDatabase$CursorFactory;)V" />
-		<method name="setDistinct(Z)V" />
-		<method name="setProjectionMap(Ljava/util/Map;)V" />
-		<method name="setStrict(Z)V" since="14" />
-		<method name="setTables(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/database/sqlite/SQLiteReadOnlyDatabaseException" since="11">
-		<extends name="android/database/sqlite/SQLiteException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/database/sqlite/SQLiteStatement" since="1">
-		<extends name="android/database/sqlite/SQLiteProgram" />
-		<method name="&lt;init>()V" />
-		<method name="execute()V" />
-		<method name="executeInsert()J" />
-		<method name="executeUpdateDelete()I" since="11" />
-		<method name="simpleQueryForBlobFileDescriptor()Landroid/os/ParcelFileDescriptor;" since="11" />
-		<method name="simpleQueryForLong()J" />
-		<method name="simpleQueryForString()Ljava/lang/String;" />
-	</class>
-	<class name="android/database/sqlite/SQLiteTableLockedException" since="11">
-		<extends name="android/database/sqlite/SQLiteException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/database/sqlite/SQLiteTransactionListener" since="5">
-		<extends name="java/lang/Object" />
-		<method name="onBegin()V" />
-		<method name="onCommit()V" />
-		<method name="onRollback()V" />
-	</class>
-	<class name="android/drm/DrmConvertedStatus" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(I[BI)V" />
-		<field name="STATUS_ERROR" />
-		<field name="STATUS_INPUTDATA_ERROR" />
-		<field name="STATUS_OK" />
-		<field name="convertedData" />
-		<field name="offset" />
-		<field name="statusCode" />
-	</class>
-	<class name="android/drm/DrmErrorEvent" since="11">
-		<extends name="android/drm/DrmEvent" />
-		<method name="&lt;init>(IILjava/lang/String;)V" />
-		<method name="&lt;init>(IILjava/lang/String;Ljava/util/HashMap;)V" since="12" />
-		<field name="TYPE_ACQUIRE_DRM_INFO_FAILED" since="12" />
-		<field name="TYPE_NOT_SUPPORTED" />
-		<field name="TYPE_NO_INTERNET_CONNECTION" />
-		<field name="TYPE_OUT_OF_MEMORY" />
-		<field name="TYPE_PROCESS_DRM_INFO_FAILED" />
-		<field name="TYPE_REMOVE_ALL_RIGHTS_FAILED" />
-		<field name="TYPE_RIGHTS_NOT_INSTALLED" />
-		<field name="TYPE_RIGHTS_RENEWAL_NOT_ALLOWED" />
-	</class>
-	<class name="android/drm/DrmEvent" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(IILjava/lang/String;)V" />
-		<method name="&lt;init>(IILjava/lang/String;Ljava/util/HashMap;)V" since="12" />
-		<method name="getAttribute(Ljava/lang/String;)Ljava/lang/Object;" since="12" />
-		<method name="getMessage()Ljava/lang/String;" />
-		<method name="getType()I" />
-		<method name="getUniqueId()I" />
-		<field name="DRM_INFO_OBJECT" since="12" />
-		<field name="DRM_INFO_STATUS_OBJECT" />
-		<field name="TYPE_ALL_RIGHTS_REMOVED" />
-		<field name="TYPE_DRM_INFO_PROCESSED" />
-	</class>
-	<class name="android/drm/DrmInfo" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(ILjava/lang/String;Ljava/lang/String;)V" />
-		<method name="&lt;init>(I[BLjava/lang/String;)V" />
-		<method name="get(Ljava/lang/String;)Ljava/lang/Object;" />
-		<method name="getData()[B" />
-		<method name="getInfoType()I" />
-		<method name="getMimeType()Ljava/lang/String;" />
-		<method name="iterator()Ljava/util/Iterator;" />
-		<method name="keyIterator()Ljava/util/Iterator;" />
-		<method name="put(Ljava/lang/String;Ljava/lang/Object;)V" />
-	</class>
-	<class name="android/drm/DrmInfoEvent" since="11">
-		<extends name="android/drm/DrmEvent" />
-		<method name="&lt;init>(IILjava/lang/String;)V" />
-		<method name="&lt;init>(IILjava/lang/String;Ljava/util/HashMap;)V" since="12" />
-		<field name="TYPE_ACCOUNT_ALREADY_REGISTERED" />
-		<field name="TYPE_ALREADY_REGISTERED_BY_ANOTHER_ACCOUNT" />
-		<field name="TYPE_REMOVE_RIGHTS" />
-		<field name="TYPE_RIGHTS_INSTALLED" />
-		<field name="TYPE_RIGHTS_REMOVED" since="12" />
-		<field name="TYPE_WAIT_FOR_RIGHTS" />
-	</class>
-	<class name="android/drm/DrmInfoRequest" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(ILjava/lang/String;)V" />
-		<method name="get(Ljava/lang/String;)Ljava/lang/Object;" />
-		<method name="getInfoType()I" />
-		<method name="getMimeType()Ljava/lang/String;" />
-		<method name="iterator()Ljava/util/Iterator;" />
-		<method name="keyIterator()Ljava/util/Iterator;" />
-		<method name="put(Ljava/lang/String;Ljava/lang/Object;)V" />
-		<field name="ACCOUNT_ID" />
-		<field name="SUBSCRIPTION_ID" />
-		<field name="TYPE_REGISTRATION_INFO" />
-		<field name="TYPE_RIGHTS_ACQUISITION_INFO" />
-		<field name="TYPE_RIGHTS_ACQUISITION_PROGRESS_INFO" />
-		<field name="TYPE_UNREGISTRATION_INFO" />
-	</class>
-	<class name="android/drm/DrmInfoStatus" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(IILandroid/drm/ProcessedData;Ljava/lang/String;)V" />
-		<field name="STATUS_ERROR" />
-		<field name="STATUS_OK" />
-		<field name="data" />
-		<field name="infoType" />
-		<field name="mimeType" />
-		<field name="statusCode" />
-	</class>
-	<class name="android/drm/DrmManagerClient" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="acquireDrmInfo(Landroid/drm/DrmInfoRequest;)Landroid/drm/DrmInfo;" />
-		<method name="acquireRights(Landroid/drm/DrmInfoRequest;)I" />
-		<method name="canHandle(Landroid/net/Uri;Ljava/lang/String;)Z" />
-		<method name="canHandle(Ljava/lang/String;Ljava/lang/String;)Z" />
-		<method name="checkRightsStatus(Landroid/net/Uri;)I" />
-		<method name="checkRightsStatus(Landroid/net/Uri;I)I" />
-		<method name="checkRightsStatus(Ljava/lang/String;)I" />
-		<method name="checkRightsStatus(Ljava/lang/String;I)I" />
-		<method name="closeConvertSession(I)Landroid/drm/DrmConvertedStatus;" />
-		<method name="convertData(I[B)Landroid/drm/DrmConvertedStatus;" />
-		<method name="getAvailableDrmEngines()[Ljava/lang/String;" />
-		<method name="getConstraints(Landroid/net/Uri;I)Landroid/content/ContentValues;" />
-		<method name="getConstraints(Ljava/lang/String;I)Landroid/content/ContentValues;" />
-		<method name="getDrmObjectType(Landroid/net/Uri;Ljava/lang/String;)I" />
-		<method name="getDrmObjectType(Ljava/lang/String;Ljava/lang/String;)I" />
-		<method name="getMetadata(Landroid/net/Uri;)Landroid/content/ContentValues;" />
-		<method name="getMetadata(Ljava/lang/String;)Landroid/content/ContentValues;" />
-		<method name="getOriginalMimeType(Landroid/net/Uri;)Ljava/lang/String;" />
-		<method name="getOriginalMimeType(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="openConvertSession(Ljava/lang/String;)I" />
-		<method name="processDrmInfo(Landroid/drm/DrmInfo;)I" />
-		<method name="release()V" since="16" />
-		<method name="removeAllRights()I" />
-		<method name="removeRights(Landroid/net/Uri;)I" />
-		<method name="removeRights(Ljava/lang/String;)I" />
-		<method name="saveRights(Landroid/drm/DrmRights;Ljava/lang/String;Ljava/lang/String;)I" />
-		<method name="setOnErrorListener(Landroid/drm/DrmManagerClient$OnErrorListener;)V" />
-		<method name="setOnEventListener(Landroid/drm/DrmManagerClient$OnEventListener;)V" />
-		<method name="setOnInfoListener(Landroid/drm/DrmManagerClient$OnInfoListener;)V" />
-		<field name="ERROR_NONE" />
-		<field name="ERROR_UNKNOWN" />
-	</class>
-	<class name="android/drm/DrmManagerClient$OnErrorListener" since="11">
-		<extends name="java/lang/Object" />
-		<method name="onError(Landroid/drm/DrmManagerClient;Landroid/drm/DrmErrorEvent;)V" />
-	</class>
-	<class name="android/drm/DrmManagerClient$OnEventListener" since="11">
-		<extends name="java/lang/Object" />
-		<method name="onEvent(Landroid/drm/DrmManagerClient;Landroid/drm/DrmEvent;)V" since="12" />
-		<method name="onEvent(Landroid/drm/DrmManagerClient;Landroid/drm/DrmEvent;Ljava/util/HashMap;)V" />
-	</class>
-	<class name="android/drm/DrmManagerClient$OnInfoListener" since="11">
-		<extends name="java/lang/Object" />
-		<method name="onInfo(Landroid/drm/DrmManagerClient;Landroid/drm/DrmInfoEvent;)V" />
-	</class>
-	<class name="android/drm/DrmRights" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/drm/ProcessedData;Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/io/File;Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="getAccountId()Ljava/lang/String;" />
-		<method name="getData()[B" />
-		<method name="getMimeType()Ljava/lang/String;" />
-		<method name="getSubscriptionId()Ljava/lang/String;" />
-	</class>
-	<class name="android/drm/DrmStore" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="android/drm/DrmStore$Action" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="DEFAULT" />
-		<field name="DISPLAY" />
-		<field name="EXECUTE" />
-		<field name="OUTPUT" />
-		<field name="PLAY" />
-		<field name="PREVIEW" />
-		<field name="RINGTONE" />
-		<field name="TRANSFER" />
-	</class>
-	<class name="android/drm/DrmStore$ConstraintsColumns" since="11">
-		<extends name="java/lang/Object" />
-		<field name="EXTENDED_METADATA" />
-		<field name="LICENSE_AVAILABLE_TIME" />
-		<field name="LICENSE_EXPIRY_TIME" />
-		<field name="LICENSE_START_TIME" />
-		<field name="MAX_REPEAT_COUNT" />
-		<field name="REMAINING_REPEAT_COUNT" />
-	</class>
-	<class name="android/drm/DrmStore$DrmObjectType" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="CONTENT" />
-		<field name="RIGHTS_OBJECT" />
-		<field name="TRIGGER_OBJECT" />
-		<field name="UNKNOWN" />
-	</class>
-	<class name="android/drm/DrmStore$Playback" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="PAUSE" />
-		<field name="RESUME" />
-		<field name="START" />
-		<field name="STOP" />
-	</class>
-	<class name="android/drm/DrmStore$RightsStatus" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="RIGHTS_EXPIRED" />
-		<field name="RIGHTS_INVALID" />
-		<field name="RIGHTS_NOT_ACQUIRED" />
-		<field name="RIGHTS_VALID" />
-	</class>
-	<class name="android/drm/DrmSupportInfo" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="addFileSuffix(Ljava/lang/String;)V" />
-		<method name="addMimeType(Ljava/lang/String;)V" />
-		<method name="getDescriprition()Ljava/lang/String;" />
-		<method name="getDescription()Ljava/lang/String;" since="16" />
-		<method name="getFileSuffixIterator()Ljava/util/Iterator;" />
-		<method name="getMimeTypeIterator()Ljava/util/Iterator;" />
-		<method name="setDescription(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/drm/DrmUtils" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getExtendedMetadataParser([B)Landroid/drm/DrmUtils$ExtendedMetadataParser;" />
-	</class>
-	<class name="android/drm/DrmUtils$ExtendedMetadataParser" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="get(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="iterator()Ljava/util/Iterator;" />
-		<method name="keyIterator()Ljava/util/Iterator;" />
-	</class>
-	<class name="android/drm/ProcessedData" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getAccountId()Ljava/lang/String;" />
-		<method name="getData()[B" />
-		<method name="getSubscriptionId()Ljava/lang/String;" />
-	</class>
-	<class name="android/gesture/Gesture" since="4">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="addStroke(Landroid/gesture/GestureStroke;)V" />
-		<method name="getBoundingBox()Landroid/graphics/RectF;" />
-		<method name="getID()J" />
-		<method name="getLength()F" />
-		<method name="getStrokes()Ljava/util/ArrayList;" />
-		<method name="getStrokesCount()I" />
-		<method name="toBitmap(IIII)Landroid/graphics/Bitmap;" />
-		<method name="toBitmap(IIIII)Landroid/graphics/Bitmap;" />
-		<method name="toPath()Landroid/graphics/Path;" />
-		<method name="toPath(IIII)Landroid/graphics/Path;" />
-		<method name="toPath(Landroid/graphics/Path;)Landroid/graphics/Path;" />
-		<method name="toPath(Landroid/graphics/Path;IIII)Landroid/graphics/Path;" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/gesture/GestureLibraries" since="4">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="fromFile(Ljava/io/File;)Landroid/gesture/GestureLibrary;" />
-		<method name="fromFile(Ljava/lang/String;)Landroid/gesture/GestureLibrary;" />
-		<method name="fromPrivateFile(Landroid/content/Context;Ljava/lang/String;)Landroid/gesture/GestureLibrary;" />
-		<method name="fromRawResource(Landroid/content/Context;I)Landroid/gesture/GestureLibrary;" />
-	</class>
-	<class name="android/gesture/GestureLibrary" since="4">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="addGesture(Ljava/lang/String;Landroid/gesture/Gesture;)V" />
-		<method name="getGestureEntries()Ljava/util/Set;" />
-		<method name="getGestures(Ljava/lang/String;)Ljava/util/ArrayList;" />
-		<method name="getOrientationStyle()I" />
-		<method name="getSequenceType()I" />
-		<method name="isReadOnly()Z" />
-		<method name="load()Z" />
-		<method name="recognize(Landroid/gesture/Gesture;)Ljava/util/ArrayList;" />
-		<method name="removeEntry(Ljava/lang/String;)V" />
-		<method name="removeGesture(Ljava/lang/String;Landroid/gesture/Gesture;)V" />
-		<method name="save()Z" />
-		<method name="setOrientationStyle(I)V" />
-		<method name="setSequenceType(I)V" />
-		<field name="mStore" />
-	</class>
-	<class name="android/gesture/GestureOverlayView" since="4">
-		<extends name="android/widget/FrameLayout" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-		<method name="addOnGestureListener(Landroid/gesture/GestureOverlayView$OnGestureListener;)V" />
-		<method name="addOnGesturePerformedListener(Landroid/gesture/GestureOverlayView$OnGesturePerformedListener;)V" />
-		<method name="addOnGesturingListener(Landroid/gesture/GestureOverlayView$OnGesturingListener;)V" />
-		<method name="cancelClearAnimation()V" />
-		<method name="cancelGesture()V" />
-		<method name="clear(Z)V" />
-		<method name="getCurrentStroke()Ljava/util/ArrayList;" />
-		<method name="getFadeOffset()J" />
-		<method name="getGesture()Landroid/gesture/Gesture;" />
-		<method name="getGestureColor()I" />
-		<method name="getGesturePath()Landroid/graphics/Path;" />
-		<method name="getGesturePath(Landroid/graphics/Path;)Landroid/graphics/Path;" />
-		<method name="getGestureStrokeAngleThreshold()F" />
-		<method name="getGestureStrokeLengthThreshold()F" />
-		<method name="getGestureStrokeSquarenessTreshold()F" />
-		<method name="getGestureStrokeType()I" />
-		<method name="getGestureStrokeWidth()F" />
-		<method name="getOrientation()I" />
-		<method name="getUncertainGestureColor()I" />
-		<method name="isEventsInterceptionEnabled()Z" />
-		<method name="isFadeEnabled()Z" />
-		<method name="isGestureVisible()Z" />
-		<method name="isGesturing()Z" />
-		<method name="removeAllOnGestureListeners()V" />
-		<method name="removeAllOnGesturePerformedListeners()V" />
-		<method name="removeAllOnGesturingListeners()V" />
-		<method name="removeOnGestureListener(Landroid/gesture/GestureOverlayView$OnGestureListener;)V" />
-		<method name="removeOnGesturePerformedListener(Landroid/gesture/GestureOverlayView$OnGesturePerformedListener;)V" />
-		<method name="removeOnGesturingListener(Landroid/gesture/GestureOverlayView$OnGesturingListener;)V" />
-		<method name="setEventsInterceptionEnabled(Z)V" />
-		<method name="setFadeEnabled(Z)V" />
-		<method name="setFadeOffset(J)V" />
-		<method name="setGesture(Landroid/gesture/Gesture;)V" />
-		<method name="setGestureColor(I)V" />
-		<method name="setGestureStrokeAngleThreshold(F)V" />
-		<method name="setGestureStrokeLengthThreshold(F)V" />
-		<method name="setGestureStrokeSquarenessTreshold(F)V" />
-		<method name="setGestureStrokeType(I)V" />
-		<method name="setGestureStrokeWidth(F)V" />
-		<method name="setGestureVisible(Z)V" />
-		<method name="setOrientation(I)V" />
-		<method name="setUncertainGestureColor(I)V" />
-		<field name="GESTURE_STROKE_TYPE_MULTIPLE" />
-		<field name="GESTURE_STROKE_TYPE_SINGLE" />
-		<field name="ORIENTATION_HORIZONTAL" />
-		<field name="ORIENTATION_VERTICAL" />
-	</class>
-	<class name="android/gesture/GestureOverlayView$OnGestureListener" since="4">
-		<extends name="java/lang/Object" />
-		<method name="onGesture(Landroid/gesture/GestureOverlayView;Landroid/view/MotionEvent;)V" />
-		<method name="onGestureCancelled(Landroid/gesture/GestureOverlayView;Landroid/view/MotionEvent;)V" />
-		<method name="onGestureEnded(Landroid/gesture/GestureOverlayView;Landroid/view/MotionEvent;)V" />
-		<method name="onGestureStarted(Landroid/gesture/GestureOverlayView;Landroid/view/MotionEvent;)V" />
-	</class>
-	<class name="android/gesture/GestureOverlayView$OnGesturePerformedListener" since="4">
-		<extends name="java/lang/Object" />
-		<method name="onGesturePerformed(Landroid/gesture/GestureOverlayView;Landroid/gesture/Gesture;)V" />
-	</class>
-	<class name="android/gesture/GestureOverlayView$OnGesturingListener" since="4">
-		<extends name="java/lang/Object" />
-		<method name="onGesturingEnded(Landroid/gesture/GestureOverlayView;)V" />
-		<method name="onGesturingStarted(Landroid/gesture/GestureOverlayView;)V" />
-	</class>
-	<class name="android/gesture/GesturePoint" since="4">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(FFJ)V" />
-		<field name="timestamp" />
-		<field name="x" />
-		<field name="y" />
-	</class>
-	<class name="android/gesture/GestureStore" since="4">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="addGesture(Ljava/lang/String;Landroid/gesture/Gesture;)V" />
-		<method name="getGestureEntries()Ljava/util/Set;" />
-		<method name="getGestures(Ljava/lang/String;)Ljava/util/ArrayList;" />
-		<method name="getOrientationStyle()I" />
-		<method name="getSequenceType()I" />
-		<method name="hasChanged()Z" />
-		<method name="load(Ljava/io/InputStream;)V" />
-		<method name="load(Ljava/io/InputStream;Z)V" />
-		<method name="recognize(Landroid/gesture/Gesture;)Ljava/util/ArrayList;" />
-		<method name="removeEntry(Ljava/lang/String;)V" />
-		<method name="removeGesture(Ljava/lang/String;Landroid/gesture/Gesture;)V" />
-		<method name="save(Ljava/io/OutputStream;)V" />
-		<method name="save(Ljava/io/OutputStream;Z)V" />
-		<method name="setOrientationStyle(I)V" />
-		<method name="setSequenceType(I)V" />
-		<field name="ORIENTATION_INVARIANT" />
-		<field name="ORIENTATION_SENSITIVE" />
-		<field name="SEQUENCE_INVARIANT" />
-		<field name="SEQUENCE_SENSITIVE" />
-	</class>
-	<class name="android/gesture/GestureStroke" since="4">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/util/ArrayList;)V" />
-		<method name="clearPath()V" />
-		<method name="computeOrientedBoundingBox()Landroid/gesture/OrientedBoundingBox;" />
-		<method name="getPath()Landroid/graphics/Path;" />
-		<method name="toPath(FFI)Landroid/graphics/Path;" />
-		<field name="boundingBox" />
-		<field name="length" />
-		<field name="points" />
-	</class>
-	<class name="android/gesture/GestureUtils" since="8">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="computeOrientedBoundingBox(Ljava/util/ArrayList;)Landroid/gesture/OrientedBoundingBox;" />
-		<method name="computeOrientedBoundingBox([F)Landroid/gesture/OrientedBoundingBox;" />
-		<method name="spatialSampling(Landroid/gesture/Gesture;I)[F" />
-		<method name="spatialSampling(Landroid/gesture/Gesture;IZ)[F" />
-		<method name="temporalSampling(Landroid/gesture/GestureStroke;I)[F" />
-	</class>
-	<class name="android/gesture/OrientedBoundingBox" since="4">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="centerX" />
-		<field name="centerY" />
-		<field name="height" />
-		<field name="orientation" />
-		<field name="squareness" />
-		<field name="width" />
-	</class>
-	<class name="android/gesture/Prediction" since="4">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="name" />
-		<field name="score" />
-	</class>
-	<class name="android/graphics/AvoidXfermode" since="1">
-		<extends name="android/graphics/Xfermode" />
-		<method name="&lt;init>(IILandroid/graphics/AvoidXfermode$Mode;)V" />
-	</class>
-	<class name="android/graphics/AvoidXfermode$Mode" since="1">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Landroid/graphics/AvoidXfermode$Mode;" />
-		<method name="values()[Landroid/graphics/AvoidXfermode$Mode;" />
-		<field name="AVOID" />
-		<field name="TARGET" />
-	</class>
-	<class name="android/graphics/Bitmap" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="compress(Landroid/graphics/Bitmap$CompressFormat;ILjava/io/OutputStream;)Z" />
-		<method name="copy(Landroid/graphics/Bitmap$Config;Z)Landroid/graphics/Bitmap;" />
-		<method name="copyPixelsFromBuffer(Ljava/nio/Buffer;)V" since="3" />
-		<method name="copyPixelsToBuffer(Ljava/nio/Buffer;)V" />
-		<method name="createBitmap(IILandroid/graphics/Bitmap$Config;)Landroid/graphics/Bitmap;" />
-		<method name="createBitmap(Landroid/graphics/Bitmap;)Landroid/graphics/Bitmap;" />
-		<method name="createBitmap(Landroid/graphics/Bitmap;IIII)Landroid/graphics/Bitmap;" />
-		<method name="createBitmap(Landroid/graphics/Bitmap;IIIILandroid/graphics/Matrix;Z)Landroid/graphics/Bitmap;" />
-		<method name="createBitmap(Landroid/util/DisplayMetrics;IILandroid/graphics/Bitmap$Config;)Landroid/graphics/Bitmap;" since="17" />
-		<method name="createBitmap(Landroid/util/DisplayMetrics;[IIIIILandroid/graphics/Bitmap$Config;)Landroid/graphics/Bitmap;" since="17" />
-		<method name="createBitmap(Landroid/util/DisplayMetrics;[IIILandroid/graphics/Bitmap$Config;)Landroid/graphics/Bitmap;" since="17" />
-		<method name="createBitmap([IIIIILandroid/graphics/Bitmap$Config;)Landroid/graphics/Bitmap;" />
-		<method name="createBitmap([IIILandroid/graphics/Bitmap$Config;)Landroid/graphics/Bitmap;" />
-		<method name="createScaledBitmap(Landroid/graphics/Bitmap;IIZ)Landroid/graphics/Bitmap;" />
-		<method name="eraseColor(I)V" />
-		<method name="extractAlpha()Landroid/graphics/Bitmap;" />
-		<method name="extractAlpha(Landroid/graphics/Paint;[I)Landroid/graphics/Bitmap;" />
-		<method name="getAllocationByteCount()I" since="19" />
-		<method name="getByteCount()I" since="12" />
-		<method name="getConfig()Landroid/graphics/Bitmap$Config;" />
-		<method name="getDensity()I" since="4" />
-		<method name="getGenerationId()I" since="12" />
-		<method name="getHeight()I" />
-		<method name="getNinePatchChunk()[B" />
-		<method name="getPixel(II)I" />
-		<method name="getPixels([IIIIIII)V" />
-		<method name="getRowBytes()I" />
-		<method name="getScaledHeight(I)I" since="4" />
-		<method name="getScaledHeight(Landroid/graphics/Canvas;)I" since="4" />
-		<method name="getScaledHeight(Landroid/util/DisplayMetrics;)I" since="4" />
-		<method name="getScaledWidth(I)I" since="4" />
-		<method name="getScaledWidth(Landroid/graphics/Canvas;)I" since="4" />
-		<method name="getScaledWidth(Landroid/util/DisplayMetrics;)I" since="4" />
-		<method name="getWidth()I" />
-		<method name="hasAlpha()Z" />
-		<method name="hasMipMap()Z" since="17" />
-		<method name="isMutable()Z" />
-		<method name="isPremultiplied()Z" since="17" />
-		<method name="isRecycled()Z" />
-		<method name="prepareToDraw()V" since="4" />
-		<method name="reconfigure(IILandroid/graphics/Bitmap$Config;)V" since="19" />
-		<method name="recycle()V" />
-		<method name="sameAs(Landroid/graphics/Bitmap;)Z" since="12" />
-		<method name="setConfig(Landroid/graphics/Bitmap$Config;)V" since="19" />
-		<method name="setDensity(I)V" since="4" />
-		<method name="setHasAlpha(Z)V" since="12" />
-		<method name="setHasMipMap(Z)V" since="17" />
-		<method name="setHeight(I)V" since="19" />
-		<method name="setPixel(III)V" />
-		<method name="setPixels([IIIIIII)V" />
-		<method name="setPremultiplied(Z)V" since="19" />
-		<method name="setWidth(I)V" since="19" />
-		<field name="CREATOR" />
-		<field name="DENSITY_NONE" since="4" />
-	</class>
-	<class name="android/graphics/Bitmap$CompressFormat" since="1">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Landroid/graphics/Bitmap$CompressFormat;" />
-		<method name="values()[Landroid/graphics/Bitmap$CompressFormat;" />
-		<field name="JPEG" />
-		<field name="PNG" />
-		<field name="WEBP" since="14" />
-	</class>
-	<class name="android/graphics/Bitmap$Config" since="1">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Landroid/graphics/Bitmap$Config;" />
-		<method name="values()[Landroid/graphics/Bitmap$Config;" />
-		<field name="ALPHA_8" />
-		<field name="ARGB_4444" />
-		<field name="ARGB_8888" />
-		<field name="RGB_565" />
-	</class>
-	<class name="android/graphics/BitmapFactory" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="decodeByteArray([BII)Landroid/graphics/Bitmap;" />
-		<method name="decodeByteArray([BIILandroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;" />
-		<method name="decodeFile(Ljava/lang/String;)Landroid/graphics/Bitmap;" />
-		<method name="decodeFile(Ljava/lang/String;Landroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;" />
-		<method name="decodeFileDescriptor(Ljava/io/FileDescriptor;)Landroid/graphics/Bitmap;" />
-		<method name="decodeFileDescriptor(Ljava/io/FileDescriptor;Landroid/graphics/Rect;Landroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;" />
-		<method name="decodeResource(Landroid/content/res/Resources;I)Landroid/graphics/Bitmap;" />
-		<method name="decodeResource(Landroid/content/res/Resources;ILandroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;" />
-		<method name="decodeResourceStream(Landroid/content/res/Resources;Landroid/util/TypedValue;Ljava/io/InputStream;Landroid/graphics/Rect;Landroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;" since="4" />
-		<method name="decodeStream(Ljava/io/InputStream;)Landroid/graphics/Bitmap;" />
-		<method name="decodeStream(Ljava/io/InputStream;Landroid/graphics/Rect;Landroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;" />
-	</class>
-	<class name="android/graphics/BitmapFactory$Options" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="requestCancelDecode()V" />
-		<field name="inBitmap" since="11" />
-		<field name="inDensity" since="4" />
-		<field name="inDither" />
-		<field name="inInputShareable" since="4" />
-		<field name="inJustDecodeBounds" />
-		<field name="inMutable" since="11" />
-		<field name="inPreferQualityOverSpeed" since="10" />
-		<field name="inPreferredConfig" />
-		<field name="inPremultiplied" since="19" />
-		<field name="inPurgeable" since="4" />
-		<field name="inSampleSize" />
-		<field name="inScaled" since="4" />
-		<field name="inScreenDensity" since="4" />
-		<field name="inTargetDensity" since="4" />
-		<field name="inTempStorage" />
-		<field name="mCancel" />
-		<field name="outHeight" />
-		<field name="outMimeType" />
-		<field name="outWidth" />
-	</class>
-	<class name="android/graphics/BitmapRegionDecoder" since="10">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="decodeRegion(Landroid/graphics/Rect;Landroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;" />
-		<method name="getHeight()I" />
-		<method name="getWidth()I" />
-		<method name="isRecycled()Z" />
-		<method name="newInstance(Ljava/io/FileDescriptor;Z)Landroid/graphics/BitmapRegionDecoder;" />
-		<method name="newInstance(Ljava/io/InputStream;Z)Landroid/graphics/BitmapRegionDecoder;" />
-		<method name="newInstance(Ljava/lang/String;Z)Landroid/graphics/BitmapRegionDecoder;" />
-		<method name="newInstance([BIIZ)Landroid/graphics/BitmapRegionDecoder;" />
-		<method name="recycle()V" />
-	</class>
-	<class name="android/graphics/BitmapShader" since="1">
-		<extends name="android/graphics/Shader" />
-		<method name="&lt;init>(Landroid/graphics/Bitmap;Landroid/graphics/Shader$TileMode;Landroid/graphics/Shader$TileMode;)V" />
-	</class>
-	<class name="android/graphics/BlurMaskFilter" since="1">
-		<extends name="android/graphics/MaskFilter" />
-		<method name="&lt;init>(FLandroid/graphics/BlurMaskFilter$Blur;)V" />
-	</class>
-	<class name="android/graphics/BlurMaskFilter$Blur" since="1">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Landroid/graphics/BlurMaskFilter$Blur;" />
-		<method name="values()[Landroid/graphics/BlurMaskFilter$Blur;" />
-		<field name="INNER" />
-		<field name="NORMAL" />
-		<field name="OUTER" />
-		<field name="SOLID" />
-	</class>
-	<class name="android/graphics/Camera" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="applyToCanvas(Landroid/graphics/Canvas;)V" />
-		<method name="dotWithNormal(FFF)F" />
-		<method name="getLocationX()F" since="16" />
-		<method name="getLocationY()F" since="16" />
-		<method name="getLocationZ()F" since="16" />
-		<method name="getMatrix(Landroid/graphics/Matrix;)V" />
-		<method name="restore()V" />
-		<method name="rotate(FFF)V" since="12" />
-		<method name="rotateX(F)V" />
-		<method name="rotateY(F)V" />
-		<method name="rotateZ(F)V" />
-		<method name="save()V" />
-		<method name="setLocation(FFF)V" since="12" />
-		<method name="translate(FFF)V" />
-	</class>
-	<class name="android/graphics/Canvas" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/graphics/Bitmap;)V" />
-		<method name="&lt;init>(Ljavax/microedition/khronos/opengles/GL;)V" />
-		<method name="clipPath(Landroid/graphics/Path;)Z" />
-		<method name="clipPath(Landroid/graphics/Path;Landroid/graphics/Region$Op;)Z" />
-		<method name="clipRect(FFFF)Z" />
-		<method name="clipRect(FFFFLandroid/graphics/Region$Op;)Z" />
-		<method name="clipRect(IIII)Z" />
-		<method name="clipRect(Landroid/graphics/Rect;)Z" />
-		<method name="clipRect(Landroid/graphics/Rect;Landroid/graphics/Region$Op;)Z" />
-		<method name="clipRect(Landroid/graphics/RectF;)Z" />
-		<method name="clipRect(Landroid/graphics/RectF;Landroid/graphics/Region$Op;)Z" />
-		<method name="clipRegion(Landroid/graphics/Region;)Z" />
-		<method name="clipRegion(Landroid/graphics/Region;Landroid/graphics/Region$Op;)Z" />
-		<method name="concat(Landroid/graphics/Matrix;)V" />
-		<method name="drawARGB(IIII)V" />
-		<method name="drawArc(Landroid/graphics/RectF;FFZLandroid/graphics/Paint;)V" />
-		<method name="drawBitmap(Landroid/graphics/Bitmap;FFLandroid/graphics/Paint;)V" />
-		<method name="drawBitmap(Landroid/graphics/Bitmap;Landroid/graphics/Matrix;Landroid/graphics/Paint;)V" />
-		<method name="drawBitmap(Landroid/graphics/Bitmap;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Paint;)V" />
-		<method name="drawBitmap(Landroid/graphics/Bitmap;Landroid/graphics/Rect;Landroid/graphics/RectF;Landroid/graphics/Paint;)V" />
-		<method name="drawBitmap([IIIFFIIZLandroid/graphics/Paint;)V" since="3" />
-		<method name="drawBitmap([IIIIIIIZLandroid/graphics/Paint;)V" />
-		<method name="drawBitmapMesh(Landroid/graphics/Bitmap;II[FI[IILandroid/graphics/Paint;)V" />
-		<method name="drawCircle(FFFLandroid/graphics/Paint;)V" />
-		<method name="drawColor(I)V" />
-		<method name="drawColor(ILandroid/graphics/PorterDuff$Mode;)V" />
-		<method name="drawLine(FFFFLandroid/graphics/Paint;)V" />
-		<method name="drawLines([FIILandroid/graphics/Paint;)V" />
-		<method name="drawLines([FLandroid/graphics/Paint;)V" />
-		<method name="drawOval(Landroid/graphics/RectF;Landroid/graphics/Paint;)V" />
-		<method name="drawPaint(Landroid/graphics/Paint;)V" />
-		<method name="drawPath(Landroid/graphics/Path;Landroid/graphics/Paint;)V" />
-		<method name="drawPicture(Landroid/graphics/Picture;)V" />
-		<method name="drawPicture(Landroid/graphics/Picture;Landroid/graphics/Rect;)V" />
-		<method name="drawPicture(Landroid/graphics/Picture;Landroid/graphics/RectF;)V" />
-		<method name="drawPoint(FFLandroid/graphics/Paint;)V" />
-		<method name="drawPoints([FIILandroid/graphics/Paint;)V" />
-		<method name="drawPoints([FLandroid/graphics/Paint;)V" />
-		<method name="drawPosText(Ljava/lang/String;[FLandroid/graphics/Paint;)V" />
-		<method name="drawPosText([CII[FLandroid/graphics/Paint;)V" />
-		<method name="drawRGB(III)V" />
-		<method name="drawRect(FFFFLandroid/graphics/Paint;)V" />
-		<method name="drawRect(Landroid/graphics/Rect;Landroid/graphics/Paint;)V" />
-		<method name="drawRect(Landroid/graphics/RectF;Landroid/graphics/Paint;)V" />
-		<method name="drawRoundRect(FFFFFFLandroid/graphics/Paint;)V" since="21" />
-		<method name="drawRoundRect(Landroid/graphics/RectF;FFLandroid/graphics/Paint;)V" />
-		<method name="drawText(Ljava/lang/CharSequence;IIFFLandroid/graphics/Paint;)V" />
-		<method name="drawText(Ljava/lang/String;FFLandroid/graphics/Paint;)V" />
-		<method name="drawText(Ljava/lang/String;IIFFLandroid/graphics/Paint;)V" />
-		<method name="drawText([CIIFFLandroid/graphics/Paint;)V" />
-		<method name="drawTextOnPath(Ljava/lang/String;Landroid/graphics/Path;FFLandroid/graphics/Paint;)V" />
-		<method name="drawTextOnPath([CIILandroid/graphics/Path;FFLandroid/graphics/Paint;)V" />
-		<method name="drawVertices(Landroid/graphics/Canvas$VertexMode;I[FI[FI[II[SIILandroid/graphics/Paint;)V" />
-		<method name="freeGlCaches()V" />
-		<method name="getClipBounds()Landroid/graphics/Rect;" />
-		<method name="getClipBounds(Landroid/graphics/Rect;)Z" />
-		<method name="getDensity()I" since="4" />
-		<method name="getDrawFilter()Landroid/graphics/DrawFilter;" />
-		<method name="getGL()Ljavax/microedition/khronos/opengles/GL;" />
-		<method name="getHeight()I" />
-		<method name="getMatrix()Landroid/graphics/Matrix;" />
-		<method name="getMatrix(Landroid/graphics/Matrix;)V" />
-		<method name="getMaximumBitmapHeight()I" since="14" />
-		<method name="getMaximumBitmapWidth()I" since="14" />
-		<method name="getSaveCount()I" />
-		<method name="getWidth()I" />
-		<method name="isHardwareAccelerated()Z" since="11" />
-		<method name="isOpaque()Z" />
-		<method name="quickReject(FFFFLandroid/graphics/Canvas$EdgeType;)Z" />
-		<method name="quickReject(Landroid/graphics/Path;Landroid/graphics/Canvas$EdgeType;)Z" />
-		<method name="quickReject(Landroid/graphics/RectF;Landroid/graphics/Canvas$EdgeType;)Z" />
-		<method name="restore()V" />
-		<method name="restoreToCount(I)V" />
-		<method name="rotate(F)V" />
-		<method name="rotate(FFF)V" />
-		<method name="save()I" />
-		<method name="save(I)I" />
-		<method name="saveLayer(FFFFLandroid/graphics/Paint;)I" since="21" />
-		<method name="saveLayer(FFFFLandroid/graphics/Paint;I)I" />
-		<method name="saveLayer(Landroid/graphics/RectF;Landroid/graphics/Paint;)I" since="21" />
-		<method name="saveLayer(Landroid/graphics/RectF;Landroid/graphics/Paint;I)I" />
-		<method name="saveLayerAlpha(FFFFI)I" since="21" />
-		<method name="saveLayerAlpha(FFFFII)I" />
-		<method name="saveLayerAlpha(Landroid/graphics/RectF;I)I" since="21" />
-		<method name="saveLayerAlpha(Landroid/graphics/RectF;II)I" />
-		<method name="scale(FF)V" />
-		<method name="scale(FFFF)V" />
-		<method name="setBitmap(Landroid/graphics/Bitmap;)V" />
-		<method name="setDensity(I)V" since="4" />
-		<method name="setDrawFilter(Landroid/graphics/DrawFilter;)V" />
-		<method name="setMatrix(Landroid/graphics/Matrix;)V" />
-		<method name="setViewport(II)V" />
-		<method name="skew(FF)V" />
-		<method name="translate(FF)V" />
-		<field name="ALL_SAVE_FLAG" />
-		<field name="CLIP_SAVE_FLAG" />
-		<field name="CLIP_TO_LAYER_SAVE_FLAG" />
-		<field name="FULL_COLOR_LAYER_SAVE_FLAG" />
-		<field name="HAS_ALPHA_LAYER_SAVE_FLAG" />
-		<field name="MATRIX_SAVE_FLAG" />
-	</class>
-	<class name="android/graphics/Canvas$EdgeType" since="1">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Landroid/graphics/Canvas$EdgeType;" />
-		<method name="values()[Landroid/graphics/Canvas$EdgeType;" />
-		<field name="AA" />
-		<field name="BW" />
-	</class>
-	<class name="android/graphics/Canvas$VertexMode" since="1">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Landroid/graphics/Canvas$VertexMode;" />
-		<method name="values()[Landroid/graphics/Canvas$VertexMode;" />
-		<field name="TRIANGLES" />
-		<field name="TRIANGLE_FAN" />
-		<field name="TRIANGLE_STRIP" />
-	</class>
-	<class name="android/graphics/Color" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="HSVToColor(I[F)I" />
-		<method name="HSVToColor([F)I" />
-		<method name="RGBToHSV(III[F)V" />
-		<method name="alpha(I)I" />
-		<method name="argb(IIII)I" />
-		<method name="blue(I)I" />
-		<method name="colorToHSV(I[F)V" />
-		<method name="green(I)I" />
-		<method name="parseColor(Ljava/lang/String;)I" />
-		<method name="red(I)I" />
-		<method name="rgb(III)I" />
-		<field name="BLACK" />
-		<field name="BLUE" />
-		<field name="CYAN" />
-		<field name="DKGRAY" />
-		<field name="GRAY" />
-		<field name="GREEN" />
-		<field name="LTGRAY" />
-		<field name="MAGENTA" />
-		<field name="RED" />
-		<field name="TRANSPARENT" />
-		<field name="WHITE" />
-		<field name="YELLOW" />
-	</class>
-	<class name="android/graphics/ColorFilter" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="android/graphics/ColorMatrix" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/graphics/ColorMatrix;)V" />
-		<method name="&lt;init>([F)V" />
-		<method name="getArray()[F" />
-		<method name="postConcat(Landroid/graphics/ColorMatrix;)V" />
-		<method name="preConcat(Landroid/graphics/ColorMatrix;)V" />
-		<method name="reset()V" />
-		<method name="set(Landroid/graphics/ColorMatrix;)V" />
-		<method name="set([F)V" />
-		<method name="setConcat(Landroid/graphics/ColorMatrix;Landroid/graphics/ColorMatrix;)V" />
-		<method name="setRGB2YUV()V" />
-		<method name="setRotate(IF)V" />
-		<method name="setSaturation(F)V" />
-		<method name="setScale(FFFF)V" />
-		<method name="setYUV2RGB()V" />
-	</class>
-	<class name="android/graphics/ColorMatrixColorFilter" since="1">
-		<extends name="android/graphics/ColorFilter" />
-		<method name="&lt;init>(Landroid/graphics/ColorMatrix;)V" />
-		<method name="&lt;init>([F)V" />
-		<method name="getColorMatrix()Landroid/graphics/ColorMatrix;" since="21" />
-		<method name="setColorMatrix(Landroid/graphics/ColorMatrix;)V" since="21" />
-		<method name="setColorMatrix([F)V" since="21" />
-	</class>
-	<class name="android/graphics/ComposePathEffect" since="1">
-		<extends name="android/graphics/PathEffect" />
-		<method name="&lt;init>(Landroid/graphics/PathEffect;Landroid/graphics/PathEffect;)V" />
-	</class>
-	<class name="android/graphics/ComposeShader" since="1">
-		<extends name="android/graphics/Shader" />
-		<method name="&lt;init>(Landroid/graphics/Shader;Landroid/graphics/Shader;Landroid/graphics/PorterDuff$Mode;)V" />
-		<method name="&lt;init>(Landroid/graphics/Shader;Landroid/graphics/Shader;Landroid/graphics/Xfermode;)V" />
-	</class>
-	<class name="android/graphics/CornerPathEffect" since="1">
-		<extends name="android/graphics/PathEffect" />
-		<method name="&lt;init>(F)V" />
-	</class>
-	<class name="android/graphics/DashPathEffect" since="1">
-		<extends name="android/graphics/PathEffect" />
-		<method name="&lt;init>([FF)V" />
-	</class>
-	<class name="android/graphics/DiscretePathEffect" since="1">
-		<extends name="android/graphics/PathEffect" />
-		<method name="&lt;init>(FF)V" />
-	</class>
-	<class name="android/graphics/DrawFilter" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="android/graphics/EmbossMaskFilter" since="1">
-		<extends name="android/graphics/MaskFilter" />
-		<method name="&lt;init>([FFFF)V" />
-	</class>
-	<class name="android/graphics/ImageFormat" since="8">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getBitsPerPixel(I)I" />
-		<field name="JPEG" />
-		<field name="NV16" />
-		<field name="NV21" />
-		<field name="RAW_SENSOR" since="21" />
-		<field name="RGB_565" />
-		<field name="UNKNOWN" />
-		<field name="YUV_420_888" since="19" />
-		<field name="YUY2" />
-		<field name="YV12" since="9" />
-	</class>
-	<class name="android/graphics/Interpolator" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(I)V" />
-		<method name="&lt;init>(II)V" />
-		<method name="getKeyFrameCount()I" />
-		<method name="getValueCount()I" />
-		<method name="reset(I)V" />
-		<method name="reset(II)V" />
-		<method name="setKeyFrame(II[F)V" />
-		<method name="setKeyFrame(II[F[F)V" />
-		<method name="setRepeatMirror(FZ)V" />
-		<method name="timeToValues(I[F)Landroid/graphics/Interpolator$Result;" />
-		<method name="timeToValues([F)Landroid/graphics/Interpolator$Result;" />
-	</class>
-	<class name="android/graphics/Interpolator$Result" since="1">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Landroid/graphics/Interpolator$Result;" />
-		<method name="values()[Landroid/graphics/Interpolator$Result;" />
-		<field name="FREEZE_END" />
-		<field name="FREEZE_START" />
-		<field name="NORMAL" />
-	</class>
-	<class name="android/graphics/LayerRasterizer" since="1">
-		<extends name="android/graphics/Rasterizer" />
-		<method name="&lt;init>()V" />
-		<method name="addLayer(Landroid/graphics/Paint;)V" />
-		<method name="addLayer(Landroid/graphics/Paint;FF)V" />
-	</class>
-	<class name="android/graphics/LightingColorFilter" since="1">
-		<extends name="android/graphics/ColorFilter" />
-		<method name="&lt;init>(II)V" />
-		<method name="getColorAdd()I" since="21" />
-		<method name="getColorMultiply()I" since="21" />
-		<method name="setColorAdd(I)V" since="21" />
-		<method name="setColorMultiply(I)V" since="21" />
-	</class>
-	<class name="android/graphics/LinearGradient" since="1">
-		<extends name="android/graphics/Shader" />
-		<method name="&lt;init>(FFFFIILandroid/graphics/Shader$TileMode;)V" />
-		<method name="&lt;init>(FFFF[I[FLandroid/graphics/Shader$TileMode;)V" />
-	</class>
-	<class name="android/graphics/MaskFilter" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="android/graphics/Matrix" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/graphics/Matrix;)V" />
-		<method name="getValues([F)V" />
-		<method name="invert(Landroid/graphics/Matrix;)Z" />
-		<method name="isAffine()Z" since="21" />
-		<method name="isIdentity()Z" />
-		<method name="mapPoints([F)V" />
-		<method name="mapPoints([FI[FII)V" />
-		<method name="mapPoints([F[F)V" />
-		<method name="mapRadius(F)F" />
-		<method name="mapRect(Landroid/graphics/RectF;)Z" />
-		<method name="mapRect(Landroid/graphics/RectF;Landroid/graphics/RectF;)Z" />
-		<method name="mapVectors([F)V" />
-		<method name="mapVectors([FI[FII)V" />
-		<method name="mapVectors([F[F)V" />
-		<method name="postConcat(Landroid/graphics/Matrix;)Z" />
-		<method name="postRotate(F)Z" />
-		<method name="postRotate(FFF)Z" />
-		<method name="postScale(FF)Z" />
-		<method name="postScale(FFFF)Z" />
-		<method name="postSkew(FF)Z" />
-		<method name="postSkew(FFFF)Z" />
-		<method name="postTranslate(FF)Z" />
-		<method name="preConcat(Landroid/graphics/Matrix;)Z" />
-		<method name="preRotate(F)Z" />
-		<method name="preRotate(FFF)Z" />
-		<method name="preScale(FF)Z" />
-		<method name="preScale(FFFF)Z" />
-		<method name="preSkew(FF)Z" />
-		<method name="preSkew(FFFF)Z" />
-		<method name="preTranslate(FF)Z" />
-		<method name="rectStaysRect()Z" />
-		<method name="reset()V" />
-		<method name="set(Landroid/graphics/Matrix;)V" />
-		<method name="setConcat(Landroid/graphics/Matrix;Landroid/graphics/Matrix;)Z" />
-		<method name="setPolyToPoly([FI[FII)Z" />
-		<method name="setRectToRect(Landroid/graphics/RectF;Landroid/graphics/RectF;Landroid/graphics/Matrix$ScaleToFit;)Z" />
-		<method name="setRotate(F)V" />
-		<method name="setRotate(FFF)V" />
-		<method name="setScale(FF)V" />
-		<method name="setScale(FFFF)V" />
-		<method name="setSinCos(FF)V" />
-		<method name="setSinCos(FFFF)V" />
-		<method name="setSkew(FF)V" />
-		<method name="setSkew(FFFF)V" />
-		<method name="setTranslate(FF)V" />
-		<method name="setValues([F)V" />
-		<method name="toShortString()Ljava/lang/String;" />
-		<field name="MPERSP_0" />
-		<field name="MPERSP_1" />
-		<field name="MPERSP_2" />
-		<field name="MSCALE_X" />
-		<field name="MSCALE_Y" />
-		<field name="MSKEW_X" />
-		<field name="MSKEW_Y" />
-		<field name="MTRANS_X" />
-		<field name="MTRANS_Y" />
-	</class>
-	<class name="android/graphics/Matrix$ScaleToFit" since="1">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Landroid/graphics/Matrix$ScaleToFit;" />
-		<method name="values()[Landroid/graphics/Matrix$ScaleToFit;" />
-		<field name="CENTER" />
-		<field name="END" />
-		<field name="FILL" />
-		<field name="START" />
-	</class>
-	<class name="android/graphics/Movie" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="decodeByteArray([BII)Landroid/graphics/Movie;" />
-		<method name="decodeFile(Ljava/lang/String;)Landroid/graphics/Movie;" />
-		<method name="decodeStream(Ljava/io/InputStream;)Landroid/graphics/Movie;" />
-		<method name="draw(Landroid/graphics/Canvas;FF)V" />
-		<method name="draw(Landroid/graphics/Canvas;FFLandroid/graphics/Paint;)V" />
-		<method name="duration()I" />
-		<method name="height()I" />
-		<method name="isOpaque()Z" />
-		<method name="setTime(I)Z" />
-		<method name="width()I" />
-	</class>
-	<class name="android/graphics/NinePatch" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/graphics/Bitmap;[B)V" since="19" />
-		<method name="&lt;init>(Landroid/graphics/Bitmap;[BLjava/lang/String;)V" />
-		<method name="draw(Landroid/graphics/Canvas;Landroid/graphics/Rect;)V" />
-		<method name="draw(Landroid/graphics/Canvas;Landroid/graphics/Rect;Landroid/graphics/Paint;)V" />
-		<method name="draw(Landroid/graphics/Canvas;Landroid/graphics/RectF;)V" />
-		<method name="getBitmap()Landroid/graphics/Bitmap;" since="19" />
-		<method name="getDensity()I" since="4" />
-		<method name="getHeight()I" />
-		<method name="getName()Ljava/lang/String;" since="19" />
-		<method name="getPaint()Landroid/graphics/Paint;" since="19" />
-		<method name="getTransparentRegion(Landroid/graphics/Rect;)Landroid/graphics/Region;" />
-		<method name="getWidth()I" />
-		<method name="hasAlpha()Z" />
-		<method name="isNinePatchChunk([B)Z" />
-		<method name="setPaint(Landroid/graphics/Paint;)V" />
-	</class>
-	<class name="android/graphics/Outline" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/graphics/Outline;)V" />
-		<method name="canClip()Z" />
-		<method name="isEmpty()Z" />
-		<method name="set(Landroid/graphics/Outline;)V" />
-		<method name="setConvexPath(Landroid/graphics/Path;)V" />
-		<method name="setEmpty()V" />
-		<method name="setOval(IIII)V" />
-		<method name="setOval(Landroid/graphics/Rect;)V" />
-		<method name="setRect(IIII)V" />
-		<method name="setRect(Landroid/graphics/Rect;)V" />
-		<method name="setRoundRect(IIIIF)V" />
-		<method name="setRoundRect(Landroid/graphics/Rect;F)V" />
-	</class>
-	<class name="android/graphics/Paint" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(I)V" />
-		<method name="&lt;init>(Landroid/graphics/Paint;)V" />
-		<method name="ascent()F" />
-		<method name="breakText(Ljava/lang/CharSequence;IIZF[F)I" />
-		<method name="breakText(Ljava/lang/String;ZF[F)I" />
-		<method name="breakText([CIIF[F)I" />
-		<method name="clearShadowLayer()V" />
-		<method name="descent()F" />
-		<method name="getAlpha()I" />
-		<method name="getColor()I" />
-		<method name="getColorFilter()Landroid/graphics/ColorFilter;" />
-		<method name="getFillPath(Landroid/graphics/Path;Landroid/graphics/Path;)Z" />
-		<method name="getFlags()I" />
-		<method name="getFontMetrics()Landroid/graphics/Paint$FontMetrics;" />
-		<method name="getFontMetrics(Landroid/graphics/Paint$FontMetrics;)F" />
-		<method name="getFontMetricsInt()Landroid/graphics/Paint$FontMetricsInt;" />
-		<method name="getFontMetricsInt(Landroid/graphics/Paint$FontMetricsInt;)I" />
-		<method name="getFontSpacing()F" />
-		<method name="getHinting()I" since="14" />
-		<method name="getMaskFilter()Landroid/graphics/MaskFilter;" />
-		<method name="getPathEffect()Landroid/graphics/PathEffect;" />
-		<method name="getRasterizer()Landroid/graphics/Rasterizer;" />
-		<method name="getShader()Landroid/graphics/Shader;" />
-		<method name="getStrokeCap()Landroid/graphics/Paint$Cap;" />
-		<method name="getStrokeJoin()Landroid/graphics/Paint$Join;" />
-		<method name="getStrokeMiter()F" />
-		<method name="getStrokeWidth()F" />
-		<method name="getStyle()Landroid/graphics/Paint$Style;" />
-		<method name="getTextAlign()Landroid/graphics/Paint$Align;" />
-		<method name="getTextBounds(Ljava/lang/String;IILandroid/graphics/Rect;)V" />
-		<method name="getTextBounds([CIILandroid/graphics/Rect;)V" />
-		<method name="getTextLocale()Ljava/util/Locale;" since="17" />
-		<method name="getTextPath(Ljava/lang/String;IIFFLandroid/graphics/Path;)V" />
-		<method name="getTextPath([CIIFFLandroid/graphics/Path;)V" />
-		<method name="getTextScaleX()F" />
-		<method name="getTextSize()F" />
-		<method name="getTextSkewX()F" />
-		<method name="getTextWidths(Ljava/lang/CharSequence;II[F)I" />
-		<method name="getTextWidths(Ljava/lang/String;II[F)I" />
-		<method name="getTextWidths(Ljava/lang/String;[F)I" />
-		<method name="getTextWidths([CII[F)I" />
-		<method name="getTypeface()Landroid/graphics/Typeface;" />
-		<method name="getXfermode()Landroid/graphics/Xfermode;" />
-		<method name="isAntiAlias()Z" />
-		<method name="isDither()Z" />
-		<method name="isElegantTextHeight()Z" since="21" />
-		<method name="isFakeBoldText()Z" />
-		<method name="isFilterBitmap()Z" />
-		<method name="isLinearText()Z" />
-		<method name="isStrikeThruText()Z" />
-		<method name="isSubpixelText()Z" />
-		<method name="isUnderlineText()Z" />
-		<method name="measureText(Ljava/lang/CharSequence;II)F" />
-		<method name="measureText(Ljava/lang/String;)F" />
-		<method name="measureText(Ljava/lang/String;II)F" />
-		<method name="measureText([CII)F" />
-		<method name="reset()V" />
-		<method name="set(Landroid/graphics/Paint;)V" />
-		<method name="setARGB(IIII)V" />
-		<method name="setAlpha(I)V" />
-		<method name="setAntiAlias(Z)V" />
-		<method name="setColor(I)V" />
-		<method name="setColorFilter(Landroid/graphics/ColorFilter;)Landroid/graphics/ColorFilter;" />
-		<method name="setDither(Z)V" />
-		<method name="setElegantTextHeight(Z)V" since="21" />
-		<method name="setFakeBoldText(Z)V" />
-		<method name="setFilterBitmap(Z)V" />
-		<method name="setFlags(I)V" />
-		<method name="setHinting(I)V" since="14" />
-		<method name="setLinearText(Z)V" />
-		<method name="setMaskFilter(Landroid/graphics/MaskFilter;)Landroid/graphics/MaskFilter;" />
-		<method name="setPathEffect(Landroid/graphics/PathEffect;)Landroid/graphics/PathEffect;" />
-		<method name="setRasterizer(Landroid/graphics/Rasterizer;)Landroid/graphics/Rasterizer;" />
-		<method name="setShader(Landroid/graphics/Shader;)Landroid/graphics/Shader;" />
-		<method name="setShadowLayer(FFFI)V" />
-		<method name="setStrikeThruText(Z)V" />
-		<method name="setStrokeCap(Landroid/graphics/Paint$Cap;)V" />
-		<method name="setStrokeJoin(Landroid/graphics/Paint$Join;)V" />
-		<method name="setStrokeMiter(F)V" />
-		<method name="setStrokeWidth(F)V" />
-		<method name="setStyle(Landroid/graphics/Paint$Style;)V" />
-		<method name="setSubpixelText(Z)V" />
-		<method name="setTextAlign(Landroid/graphics/Paint$Align;)V" />
-		<method name="setTextLocale(Ljava/util/Locale;)V" since="17" />
-		<method name="setTextScaleX(F)V" />
-		<method name="setTextSize(F)V" />
-		<method name="setTextSkewX(F)V" />
-		<method name="setTypeface(Landroid/graphics/Typeface;)Landroid/graphics/Typeface;" />
-		<method name="setUnderlineText(Z)V" />
-		<method name="setXfermode(Landroid/graphics/Xfermode;)Landroid/graphics/Xfermode;" />
-		<field name="ANTI_ALIAS_FLAG" />
-		<field name="DEV_KERN_TEXT_FLAG" />
-		<field name="DITHER_FLAG" />
-		<field name="EMBEDDED_BITMAP_TEXT_FLAG" since="19" />
-		<field name="FAKE_BOLD_TEXT_FLAG" />
-		<field name="FILTER_BITMAP_FLAG" />
-		<field name="HINTING_OFF" since="14" />
-		<field name="HINTING_ON" since="14" />
-		<field name="LINEAR_TEXT_FLAG" />
-		<field name="STRIKE_THRU_TEXT_FLAG" />
-		<field name="SUBPIXEL_TEXT_FLAG" />
-		<field name="UNDERLINE_TEXT_FLAG" />
-	</class>
-	<class name="android/graphics/Paint$Align" since="1">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Landroid/graphics/Paint$Align;" />
-		<method name="values()[Landroid/graphics/Paint$Align;" />
-		<field name="CENTER" />
-		<field name="LEFT" />
-		<field name="RIGHT" />
-	</class>
-	<class name="android/graphics/Paint$Cap" since="1">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Landroid/graphics/Paint$Cap;" />
-		<method name="values()[Landroid/graphics/Paint$Cap;" />
-		<field name="BUTT" />
-		<field name="ROUND" />
-		<field name="SQUARE" />
-	</class>
-	<class name="android/graphics/Paint$FontMetrics" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="ascent" />
-		<field name="bottom" />
-		<field name="descent" />
-		<field name="leading" />
-		<field name="top" />
-	</class>
-	<class name="android/graphics/Paint$FontMetricsInt" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="ascent" />
-		<field name="bottom" />
-		<field name="descent" />
-		<field name="leading" />
-		<field name="top" />
-	</class>
-	<class name="android/graphics/Paint$Join" since="1">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Landroid/graphics/Paint$Join;" />
-		<method name="values()[Landroid/graphics/Paint$Join;" />
-		<field name="BEVEL" />
-		<field name="MITER" />
-		<field name="ROUND" />
-	</class>
-	<class name="android/graphics/Paint$Style" since="1">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Landroid/graphics/Paint$Style;" />
-		<method name="values()[Landroid/graphics/Paint$Style;" />
-		<field name="FILL" />
-		<field name="FILL_AND_STROKE" />
-		<field name="STROKE" />
-	</class>
-	<class name="android/graphics/PaintFlagsDrawFilter" since="1">
-		<extends name="android/graphics/DrawFilter" />
-		<method name="&lt;init>(II)V" />
-	</class>
-	<class name="android/graphics/Path" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/graphics/Path;)V" />
-		<method name="addArc(Landroid/graphics/RectF;FF)V" />
-		<method name="addCircle(FFFLandroid/graphics/Path$Direction;)V" />
-		<method name="addOval(FFFFLandroid/graphics/Path$Direction;)V" since="21" />
-		<method name="addOval(Landroid/graphics/RectF;Landroid/graphics/Path$Direction;)V" />
-		<method name="addPath(Landroid/graphics/Path;)V" />
-		<method name="addPath(Landroid/graphics/Path;FF)V" />
-		<method name="addPath(Landroid/graphics/Path;Landroid/graphics/Matrix;)V" />
-		<method name="addRect(FFFFLandroid/graphics/Path$Direction;)V" />
-		<method name="addRect(Landroid/graphics/RectF;Landroid/graphics/Path$Direction;)V" />
-		<method name="addRoundRect(Landroid/graphics/RectF;FFLandroid/graphics/Path$Direction;)V" />
-		<method name="addRoundRect(Landroid/graphics/RectF;[FLandroid/graphics/Path$Direction;)V" />
-		<method name="arcTo(Landroid/graphics/RectF;FF)V" />
-		<method name="arcTo(Landroid/graphics/RectF;FFZ)V" />
-		<method name="close()V" />
-		<method name="computeBounds(Landroid/graphics/RectF;Z)V" />
-		<method name="cubicTo(FFFFFF)V" />
-		<method name="getFillType()Landroid/graphics/Path$FillType;" />
-		<method name="incReserve(I)V" />
-		<method name="isConvex()Z" since="21" />
-		<method name="isEmpty()Z" />
-		<method name="isInverseFillType()Z" />
-		<method name="isRect(Landroid/graphics/RectF;)Z" />
-		<method name="lineTo(FF)V" />
-		<method name="moveTo(FF)V" />
-		<method name="offset(FF)V" />
-		<method name="offset(FFLandroid/graphics/Path;)V" />
-		<method name="op(Landroid/graphics/Path;Landroid/graphics/Path$Op;)Z" since="19" />
-		<method name="op(Landroid/graphics/Path;Landroid/graphics/Path;Landroid/graphics/Path$Op;)Z" since="19" />
-		<method name="quadTo(FFFF)V" />
-		<method name="rCubicTo(FFFFFF)V" />
-		<method name="rLineTo(FF)V" />
-		<method name="rMoveTo(FF)V" />
-		<method name="rQuadTo(FFFF)V" />
-		<method name="reset()V" />
-		<method name="rewind()V" />
-		<method name="set(Landroid/graphics/Path;)V" />
-		<method name="setFillType(Landroid/graphics/Path$FillType;)V" />
-		<method name="setLastPoint(FF)V" />
-		<method name="toggleInverseFillType()V" />
-		<method name="transform(Landroid/graphics/Matrix;)V" />
-		<method name="transform(Landroid/graphics/Matrix;Landroid/graphics/Path;)V" />
-	</class>
-	<class name="android/graphics/Path$Direction" since="1">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Landroid/graphics/Path$Direction;" />
-		<method name="values()[Landroid/graphics/Path$Direction;" />
-		<field name="CCW" />
-		<field name="CW" />
-	</class>
-	<class name="android/graphics/Path$FillType" since="1">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Landroid/graphics/Path$FillType;" />
-		<method name="values()[Landroid/graphics/Path$FillType;" />
-		<field name="EVEN_ODD" />
-		<field name="INVERSE_EVEN_ODD" />
-		<field name="INVERSE_WINDING" />
-		<field name="WINDING" />
-	</class>
-	<class name="android/graphics/Path$Op" since="19">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Landroid/graphics/Path$Op;" />
-		<method name="values()[Landroid/graphics/Path$Op;" />
-		<field name="DIFFERENCE" />
-		<field name="INTERSECT" />
-		<field name="REVERSE_DIFFERENCE" />
-		<field name="UNION" />
-		<field name="XOR" />
-	</class>
-	<class name="android/graphics/PathDashPathEffect" since="1">
-		<extends name="android/graphics/PathEffect" />
-		<method name="&lt;init>(Landroid/graphics/Path;FFLandroid/graphics/PathDashPathEffect$Style;)V" />
-	</class>
-	<class name="android/graphics/PathDashPathEffect$Style" since="1">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Landroid/graphics/PathDashPathEffect$Style;" />
-		<method name="values()[Landroid/graphics/PathDashPathEffect$Style;" />
-		<field name="MORPH" />
-		<field name="ROTATE" />
-		<field name="TRANSLATE" />
-	</class>
-	<class name="android/graphics/PathEffect" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="android/graphics/PathMeasure" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/graphics/Path;Z)V" />
-		<method name="getLength()F" />
-		<method name="getMatrix(FLandroid/graphics/Matrix;I)Z" />
-		<method name="getPosTan(F[F[F)Z" />
-		<method name="getSegment(FFLandroid/graphics/Path;Z)Z" />
-		<method name="isClosed()Z" />
-		<method name="nextContour()Z" />
-		<method name="setPath(Landroid/graphics/Path;Z)V" />
-		<field name="POSITION_MATRIX_FLAG" />
-		<field name="TANGENT_MATRIX_FLAG" />
-	</class>
-	<class name="android/graphics/Picture" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/graphics/Picture;)V" />
-		<method name="beginRecording(II)Landroid/graphics/Canvas;" />
-		<method name="createFromStream(Ljava/io/InputStream;)Landroid/graphics/Picture;" />
-		<method name="draw(Landroid/graphics/Canvas;)V" />
-		<method name="endRecording()V" />
-		<method name="getHeight()I" />
-		<method name="getWidth()I" />
-		<method name="writeToStream(Ljava/io/OutputStream;)V" />
-	</class>
-	<class name="android/graphics/PixelFormat" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="formatHasAlpha(I)Z" />
-		<method name="getPixelFormatInfo(ILandroid/graphics/PixelFormat;)V" />
-		<field name="A_8" />
-		<field name="JPEG" />
-		<field name="LA_88" />
-		<field name="L_8" />
-		<field name="OPAQUE" />
-		<field name="RGBA_4444" />
-		<field name="RGBA_5551" />
-		<field name="RGBA_8888" />
-		<field name="RGBX_8888" />
-		<field name="RGB_332" />
-		<field name="RGB_565" />
-		<field name="RGB_888" />
-		<field name="TRANSLUCENT" />
-		<field name="TRANSPARENT" />
-		<field name="UNKNOWN" />
-		<field name="YCbCr_420_SP" />
-		<field name="YCbCr_422_I" since="5" />
-		<field name="YCbCr_422_SP" />
-		<field name="bitsPerPixel" />
-		<field name="bytesPerPixel" />
-	</class>
-	<class name="android/graphics/PixelXorXfermode" since="1">
-		<extends name="android/graphics/Xfermode" />
-		<method name="&lt;init>(I)V" />
-	</class>
-	<class name="android/graphics/Point" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" since="13" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(II)V" />
-		<method name="&lt;init>(Landroid/graphics/Point;)V" />
-		<method name="equals(II)Z" />
-		<method name="negate()V" />
-		<method name="offset(II)V" />
-		<method name="readFromParcel(Landroid/os/Parcel;)V" since="13" />
-		<method name="set(II)V" />
-		<field name="CREATOR" since="13" />
-		<field name="x" />
-		<field name="y" />
-	</class>
-	<class name="android/graphics/PointF" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" since="13" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(FF)V" />
-		<method name="&lt;init>(Landroid/graphics/Point;)V" />
-		<method name="equals(FF)Z" />
-		<method name="length()F" />
-		<method name="length(FF)F" />
-		<method name="negate()V" />
-		<method name="offset(FF)V" />
-		<method name="readFromParcel(Landroid/os/Parcel;)V" since="13" />
-		<method name="set(FF)V" />
-		<method name="set(Landroid/graphics/PointF;)V" />
-		<field name="CREATOR" since="13" />
-		<field name="x" />
-		<field name="y" />
-	</class>
-	<class name="android/graphics/PorterDuff" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="android/graphics/PorterDuff$Mode" since="1">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Landroid/graphics/PorterDuff$Mode;" />
-		<method name="values()[Landroid/graphics/PorterDuff$Mode;" />
-		<field name="ADD" since="11" />
-		<field name="CLEAR" />
-		<field name="DARKEN" />
-		<field name="DST" />
-		<field name="DST_ATOP" />
-		<field name="DST_IN" />
-		<field name="DST_OUT" />
-		<field name="DST_OVER" />
-		<field name="LIGHTEN" />
-		<field name="MULTIPLY" />
-		<field name="OVERLAY" since="11" />
-		<field name="SCREEN" />
-		<field name="SRC" />
-		<field name="SRC_ATOP" />
-		<field name="SRC_IN" />
-		<field name="SRC_OUT" />
-		<field name="SRC_OVER" />
-		<field name="XOR" />
-	</class>
-	<class name="android/graphics/PorterDuffColorFilter" since="1">
-		<extends name="android/graphics/ColorFilter" />
-		<method name="&lt;init>(ILandroid/graphics/PorterDuff$Mode;)V" />
-		<method name="getColor()I" since="21" />
-		<method name="getMode()Landroid/graphics/PorterDuff$Mode;" since="21" />
-		<method name="setColor(I)V" since="21" />
-		<method name="setMode(Landroid/graphics/PorterDuff$Mode;)V" since="21" />
-	</class>
-	<class name="android/graphics/PorterDuffXfermode" since="1">
-		<extends name="android/graphics/Xfermode" />
-		<method name="&lt;init>(Landroid/graphics/PorterDuff$Mode;)V" />
-	</class>
-	<class name="android/graphics/RadialGradient" since="1">
-		<extends name="android/graphics/Shader" />
-		<method name="&lt;init>(FFFIILandroid/graphics/Shader$TileMode;)V" />
-		<method name="&lt;init>(FFF[I[FLandroid/graphics/Shader$TileMode;)V" />
-	</class>
-	<class name="android/graphics/Rasterizer" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="android/graphics/Rect" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(IIII)V" />
-		<method name="&lt;init>(Landroid/graphics/Rect;)V" />
-		<method name="centerX()I" />
-		<method name="centerY()I" />
-		<method name="contains(II)Z" />
-		<method name="contains(IIII)Z" />
-		<method name="contains(Landroid/graphics/Rect;)Z" />
-		<method name="exactCenterX()F" />
-		<method name="exactCenterY()F" />
-		<method name="flattenToString()Ljava/lang/String;" since="7" />
-		<method name="height()I" />
-		<method name="inset(II)V" />
-		<method name="intersect(IIII)Z" />
-		<method name="intersect(Landroid/graphics/Rect;)Z" />
-		<method name="intersects(IIII)Z" />
-		<method name="intersects(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z" />
-		<method name="isEmpty()Z" />
-		<method name="offset(II)V" />
-		<method name="offsetTo(II)V" />
-		<method name="readFromParcel(Landroid/os/Parcel;)V" />
-		<method name="set(IIII)V" />
-		<method name="set(Landroid/graphics/Rect;)V" />
-		<method name="setEmpty()V" />
-		<method name="setIntersect(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z" />
-		<method name="sort()V" />
-		<method name="toShortString()Ljava/lang/String;" since="3" />
-		<method name="unflattenFromString(Ljava/lang/String;)Landroid/graphics/Rect;" since="7" />
-		<method name="union(II)V" />
-		<method name="union(IIII)V" />
-		<method name="union(Landroid/graphics/Rect;)V" />
-		<method name="width()I" />
-		<field name="CREATOR" />
-		<field name="bottom" />
-		<field name="left" />
-		<field name="right" />
-		<field name="top" />
-	</class>
-	<class name="android/graphics/RectF" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" since="3" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(FFFF)V" />
-		<method name="&lt;init>(Landroid/graphics/Rect;)V" />
-		<method name="&lt;init>(Landroid/graphics/RectF;)V" />
-		<method name="centerX()F" />
-		<method name="centerY()F" />
-		<method name="contains(FF)Z" />
-		<method name="contains(FFFF)Z" />
-		<method name="contains(Landroid/graphics/RectF;)Z" />
-		<method name="height()F" />
-		<method name="inset(FF)V" />
-		<method name="intersect(FFFF)Z" />
-		<method name="intersect(Landroid/graphics/RectF;)Z" />
-		<method name="intersects(FFFF)Z" />
-		<method name="intersects(Landroid/graphics/RectF;Landroid/graphics/RectF;)Z" />
-		<method name="isEmpty()Z" />
-		<method name="offset(FF)V" />
-		<method name="offsetTo(FF)V" />
-		<method name="readFromParcel(Landroid/os/Parcel;)V" since="3" />
-		<method name="round(Landroid/graphics/Rect;)V" />
-		<method name="roundOut(Landroid/graphics/Rect;)V" />
-		<method name="set(FFFF)V" />
-		<method name="set(Landroid/graphics/Rect;)V" />
-		<method name="set(Landroid/graphics/RectF;)V" />
-		<method name="setEmpty()V" />
-		<method name="setIntersect(Landroid/graphics/RectF;Landroid/graphics/RectF;)Z" />
-		<method name="sort()V" />
-		<method name="toShortString()Ljava/lang/String;" since="14" />
-		<method name="union(FF)V" />
-		<method name="union(FFFF)V" />
-		<method name="union(Landroid/graphics/RectF;)V" />
-		<method name="width()F" />
-		<field name="CREATOR" since="3" />
-		<field name="bottom" />
-		<field name="left" />
-		<field name="right" />
-		<field name="top" />
-	</class>
-	<class name="android/graphics/Region" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(IIII)V" />
-		<method name="&lt;init>(Landroid/graphics/Rect;)V" />
-		<method name="&lt;init>(Landroid/graphics/Region;)V" />
-		<method name="contains(II)Z" />
-		<method name="getBoundaryPath()Landroid/graphics/Path;" />
-		<method name="getBoundaryPath(Landroid/graphics/Path;)Z" />
-		<method name="getBounds()Landroid/graphics/Rect;" />
-		<method name="getBounds(Landroid/graphics/Rect;)Z" />
-		<method name="isComplex()Z" />
-		<method name="isEmpty()Z" />
-		<method name="isRect()Z" />
-		<method name="op(IIIILandroid/graphics/Region$Op;)Z" />
-		<method name="op(Landroid/graphics/Rect;Landroid/graphics/Region$Op;)Z" />
-		<method name="op(Landroid/graphics/Rect;Landroid/graphics/Region;Landroid/graphics/Region$Op;)Z" />
-		<method name="op(Landroid/graphics/Region;Landroid/graphics/Region$Op;)Z" />
-		<method name="op(Landroid/graphics/Region;Landroid/graphics/Region;Landroid/graphics/Region$Op;)Z" />
-		<method name="quickContains(IIII)Z" />
-		<method name="quickContains(Landroid/graphics/Rect;)Z" />
-		<method name="quickReject(IIII)Z" />
-		<method name="quickReject(Landroid/graphics/Rect;)Z" />
-		<method name="quickReject(Landroid/graphics/Region;)Z" />
-		<method name="set(IIII)Z" />
-		<method name="set(Landroid/graphics/Rect;)Z" />
-		<method name="set(Landroid/graphics/Region;)Z" />
-		<method name="setEmpty()V" />
-		<method name="setPath(Landroid/graphics/Path;Landroid/graphics/Region;)Z" />
-		<method name="translate(II)V" />
-		<method name="translate(IILandroid/graphics/Region;)V" />
-		<method name="union(Landroid/graphics/Rect;)Z" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/graphics/Region$Op" since="1">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Landroid/graphics/Region$Op;" />
-		<method name="values()[Landroid/graphics/Region$Op;" />
-		<field name="DIFFERENCE" />
-		<field name="INTERSECT" />
-		<field name="REPLACE" />
-		<field name="REVERSE_DIFFERENCE" />
-		<field name="UNION" />
-		<field name="XOR" />
-	</class>
-	<class name="android/graphics/RegionIterator" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/graphics/Region;)V" />
-		<method name="next(Landroid/graphics/Rect;)Z" />
-	</class>
-	<class name="android/graphics/Shader" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getLocalMatrix(Landroid/graphics/Matrix;)Z" />
-		<method name="setLocalMatrix(Landroid/graphics/Matrix;)V" />
-	</class>
-	<class name="android/graphics/Shader$TileMode" since="1">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Landroid/graphics/Shader$TileMode;" />
-		<method name="values()[Landroid/graphics/Shader$TileMode;" />
-		<field name="CLAMP" />
-		<field name="MIRROR" />
-		<field name="REPEAT" />
-	</class>
-	<class name="android/graphics/SumPathEffect" since="1">
-		<extends name="android/graphics/PathEffect" />
-		<method name="&lt;init>(Landroid/graphics/PathEffect;Landroid/graphics/PathEffect;)V" />
-	</class>
-	<class name="android/graphics/SurfaceTexture" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(I)V" />
-		<method name="&lt;init>(IZ)V" since="19" />
-		<method name="attachToGLContext(I)V" since="16" />
-		<method name="detachFromGLContext()V" since="16" />
-		<method name="getTimestamp()J" since="14" />
-		<method name="getTransformMatrix([F)V" />
-		<method name="release()V" since="14" />
-		<method name="releaseTexImage()V" since="19" />
-		<method name="setDefaultBufferSize(II)V" since="15" />
-		<method name="setOnFrameAvailableListener(Landroid/graphics/SurfaceTexture$OnFrameAvailableListener;)V" />
-		<method name="setOnFrameAvailableListener(Landroid/graphics/SurfaceTexture$OnFrameAvailableListener;Landroid/os/Handler;)V" since="21" />
-		<method name="updateTexImage()V" />
-	</class>
-	<class name="android/graphics/SurfaceTexture$OnFrameAvailableListener" since="11">
-		<extends name="java/lang/Object" />
-		<method name="onFrameAvailable(Landroid/graphics/SurfaceTexture;)V" />
-	</class>
-	<class name="android/graphics/SurfaceTexture$OutOfResourcesException" since="11">
-		<extends name="java/lang/Exception" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/graphics/SweepGradient" since="1">
-		<extends name="android/graphics/Shader" />
-		<method name="&lt;init>(FFII)V" />
-		<method name="&lt;init>(FF[I[F)V" />
-	</class>
-	<class name="android/graphics/Typeface" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="create(Landroid/graphics/Typeface;I)Landroid/graphics/Typeface;" />
-		<method name="create(Ljava/lang/String;I)Landroid/graphics/Typeface;" />
-		<method name="createFromAsset(Landroid/content/res/AssetManager;Ljava/lang/String;)Landroid/graphics/Typeface;" />
-		<method name="createFromFile(Ljava/io/File;)Landroid/graphics/Typeface;" since="4" />
-		<method name="createFromFile(Ljava/lang/String;)Landroid/graphics/Typeface;" since="4" />
-		<method name="defaultFromStyle(I)Landroid/graphics/Typeface;" />
-		<method name="getStyle()I" />
-		<method name="isBold()Z" />
-		<method name="isItalic()Z" />
-		<field name="BOLD" />
-		<field name="BOLD_ITALIC" />
-		<field name="DEFAULT" />
-		<field name="DEFAULT_BOLD" />
-		<field name="ITALIC" />
-		<field name="MONOSPACE" />
-		<field name="NORMAL" />
-		<field name="SANS_SERIF" />
-		<field name="SERIF" />
-	</class>
-	<class name="android/graphics/Xfermode" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="android/graphics/YuvImage" since="8">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>([BIII[I)V" />
-		<method name="compressToJpeg(Landroid/graphics/Rect;ILjava/io/OutputStream;)Z" />
-		<method name="getHeight()I" />
-		<method name="getStrides()[I" />
-		<method name="getWidth()I" />
-		<method name="getYuvData()[B" />
-		<method name="getYuvFormat()I" />
-	</class>
-	<class name="android/graphics/drawable/Animatable" since="4">
-		<extends name="java/lang/Object" />
-		<method name="isRunning()Z" />
-		<method name="start()V" />
-		<method name="stop()V" />
-	</class>
-	<class name="android/graphics/drawable/AnimatedStateListDrawable" since="21">
-		<extends name="android/graphics/drawable/StateListDrawable" />
-		<method name="&lt;init>()V" />
-		<method name="addState([ILandroid/graphics/drawable/Drawable;I)V" />
-		<method name="addTransition(IILandroid/graphics/drawable/AnimationDrawable;Z)V" />
-	</class>
-	<class name="android/graphics/drawable/AnimationDrawable" since="1">
-		<extends name="android/graphics/drawable/DrawableContainer" />
-		<implements name="android/graphics/drawable/Animatable" since="4" />
-		<implements name="java/lang/Runnable" />
-		<method name="&lt;init>()V" />
-		<method name="addFrame(Landroid/graphics/drawable/Drawable;I)V" />
-		<method name="getDuration(I)I" />
-		<method name="getFrame(I)Landroid/graphics/drawable/Drawable;" />
-		<method name="getNumberOfFrames()I" />
-		<method name="isOneShot()Z" />
-		<method name="isRunning()Z" />
-		<method name="setOneShot(Z)V" />
-		<method name="start()V" />
-		<method name="stop()V" />
-	</class>
-	<class name="android/graphics/drawable/BitmapDrawable" since="1">
-		<extends name="android/graphics/drawable/Drawable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/content/res/Resources;)V" since="4" />
-		<method name="&lt;init>(Landroid/content/res/Resources;Landroid/graphics/Bitmap;)V" since="4" />
-		<method name="&lt;init>(Landroid/content/res/Resources;Ljava/io/InputStream;)V" since="5" />
-		<method name="&lt;init>(Landroid/content/res/Resources;Ljava/lang/String;)V" since="5" />
-		<method name="&lt;init>(Landroid/graphics/Bitmap;)V" />
-		<method name="&lt;init>(Ljava/io/InputStream;)V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="getBitmap()Landroid/graphics/Bitmap;" />
-		<method name="getGravity()I" />
-		<method name="getPaint()Landroid/graphics/Paint;" />
-		<method name="getTileModeX()Landroid/graphics/Shader$TileMode;" />
-		<method name="getTileModeY()Landroid/graphics/Shader$TileMode;" />
-		<method name="hasAntiAlias()Z" since="18" />
-		<method name="hasMipMap()Z" since="18" />
-		<method name="setAntiAlias(Z)V" />
-		<method name="setGravity(I)V" />
-		<method name="setMipMap(Z)V" since="18" />
-		<method name="setTargetDensity(I)V" since="4" />
-		<method name="setTargetDensity(Landroid/graphics/Canvas;)V" since="4" />
-		<method name="setTargetDensity(Landroid/util/DisplayMetrics;)V" since="4" />
-		<method name="setTileModeX(Landroid/graphics/Shader$TileMode;)V" />
-		<method name="setTileModeXY(Landroid/graphics/Shader$TileMode;Landroid/graphics/Shader$TileMode;)V" />
-		<method name="setTileModeY(Landroid/graphics/Shader$TileMode;)V" />
-	</class>
-	<class name="android/graphics/drawable/ClipDrawable" since="1">
-		<extends name="android/graphics/drawable/Drawable" />
-		<implements name="android/graphics/drawable/Drawable$Callback" />
-		<method name="&lt;init>(Landroid/graphics/drawable/Drawable;II)V" />
-		<field name="HORIZONTAL" />
-		<field name="VERTICAL" />
-	</class>
-	<class name="android/graphics/drawable/ColorDrawable" since="1">
-		<extends name="android/graphics/drawable/Drawable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(I)V" />
-		<method name="getAlpha()I" />
-		<method name="getColor()I" since="11" />
-		<method name="setColor(I)V" since="11" />
-	</class>
-	<class name="android/graphics/drawable/Drawable" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="applyTheme(Landroid/content/res/Resources$Theme;)V" since="21" />
-		<method name="canApplyTheme()Z" since="21" />
-		<method name="clearColorFilter()V" />
-		<method name="copyBounds()Landroid/graphics/Rect;" />
-		<method name="copyBounds(Landroid/graphics/Rect;)V" />
-		<method name="createFromPath(Ljava/lang/String;)Landroid/graphics/drawable/Drawable;" />
-		<method name="createFromResourceStream(Landroid/content/res/Resources;Landroid/util/TypedValue;Ljava/io/InputStream;Ljava/lang/String;)Landroid/graphics/drawable/Drawable;" since="4" />
-		<method name="createFromResourceStream(Landroid/content/res/Resources;Landroid/util/TypedValue;Ljava/io/InputStream;Ljava/lang/String;Landroid/graphics/BitmapFactory$Options;)Landroid/graphics/drawable/Drawable;" since="5" />
-		<method name="createFromStream(Ljava/io/InputStream;Ljava/lang/String;)Landroid/graphics/drawable/Drawable;" />
-		<method name="createFromXml(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;)Landroid/graphics/drawable/Drawable;" />
-		<method name="createFromXml(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable;" since="21" />
-		<method name="createFromXmlInner(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;)Landroid/graphics/drawable/Drawable;" />
-		<method name="createFromXmlInner(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable;" since="21" />
-		<method name="draw(Landroid/graphics/Canvas;)V" />
-		<method name="getAlpha()I" since="19" />
-		<method name="getBounds()Landroid/graphics/Rect;" />
-		<method name="getCallback()Landroid/graphics/drawable/Drawable$Callback;" since="11" />
-		<method name="getChangingConfigurations()I" />
-		<method name="getColorFilter()Landroid/graphics/ColorFilter;" since="21" />
-		<method name="getConstantState()Landroid/graphics/drawable/Drawable$ConstantState;" />
-		<method name="getCurrent()Landroid/graphics/drawable/Drawable;" />
-		<method name="getDirtyBounds()Landroid/graphics/Rect;" since="21" />
-		<method name="getIntrinsicHeight()I" />
-		<method name="getIntrinsicWidth()I" />
-		<method name="getLevel()I" />
-		<method name="getMinimumHeight()I" />
-		<method name="getMinimumWidth()I" />
-		<method name="getOpacity()I" />
-		<method name="getOutline(Landroid/graphics/Outline;)Z" since="21" />
-		<method name="getPadding(Landroid/graphics/Rect;)Z" />
-		<method name="getState()[I" />
-		<method name="getTransparentRegion()Landroid/graphics/Region;" />
-		<method name="inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;)V" />
-		<method name="inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V" since="21" />
-		<method name="invalidateSelf()V" />
-		<method name="isAutoMirrored()Z" since="19" />
-		<method name="isStateful()Z" />
-		<method name="isVisible()Z" />
-		<method name="jumpToCurrentState()V" since="11" />
-		<method name="mutate()Landroid/graphics/drawable/Drawable;" since="3" />
-		<method name="onBoundsChange(Landroid/graphics/Rect;)V" />
-		<method name="onLevelChange(I)Z" />
-		<method name="onStateChange([I)Z" />
-		<method name="resolveOpacity(II)I" />
-		<method name="scheduleSelf(Ljava/lang/Runnable;J)V" />
-		<method name="setAlpha(I)V" />
-		<method name="setAutoMirrored(Z)V" since="19" />
-		<method name="setBounds(IIII)V" />
-		<method name="setBounds(Landroid/graphics/Rect;)V" />
-		<method name="setCallback(Landroid/graphics/drawable/Drawable$Callback;)V" />
-		<method name="setChangingConfigurations(I)V" />
-		<method name="setColorFilter(ILandroid/graphics/PorterDuff$Mode;)V" />
-		<method name="setColorFilter(Landroid/graphics/ColorFilter;)V" />
-		<method name="setDither(Z)V" />
-		<method name="setFilterBitmap(Z)V" />
-		<method name="setHotspot(FF)V" since="21" />
-		<method name="setHotspotBounds(IIII)V" since="21" />
-		<method name="setLevel(I)Z" />
-		<method name="setState([I)Z" />
-		<method name="setTint(Landroid/content/res/ColorStateList;Landroid/graphics/PorterDuff$Mode;)V" since="21" />
-		<method name="setVisible(ZZ)Z" />
-		<method name="unscheduleSelf(Ljava/lang/Runnable;)V" />
-	</class>
-	<class name="android/graphics/drawable/Drawable$Callback" since="1">
-		<extends name="java/lang/Object" />
-		<method name="invalidateDrawable(Landroid/graphics/drawable/Drawable;)V" />
-		<method name="scheduleDrawable(Landroid/graphics/drawable/Drawable;Ljava/lang/Runnable;J)V" />
-		<method name="unscheduleDrawable(Landroid/graphics/drawable/Drawable;Ljava/lang/Runnable;)V" />
-	</class>
-	<class name="android/graphics/drawable/Drawable$ConstantState" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="canApplyTheme()Z" since="21" />
-		<method name="getChangingConfigurations()I" />
-		<method name="newDrawable()Landroid/graphics/drawable/Drawable;" />
-		<method name="newDrawable(Landroid/content/res/Resources;)Landroid/graphics/drawable/Drawable;" since="5" />
-		<method name="newDrawable(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable;" since="21" />
-	</class>
-	<class name="android/graphics/drawable/DrawableContainer" since="1">
-		<extends name="android/graphics/drawable/Drawable" />
-		<implements name="android/graphics/drawable/Drawable$Callback" />
-		<method name="&lt;init>()V" />
-		<method name="selectDrawable(I)Z" />
-		<method name="setConstantState(Landroid/graphics/drawable/DrawableContainer$DrawableContainerState;)V" />
-		<method name="setEnterFadeDuration(I)V" since="11" />
-		<method name="setExitFadeDuration(I)V" since="11" />
-	</class>
-	<class name="android/graphics/drawable/DrawableContainer$DrawableContainerState" since="1">
-		<extends name="android/graphics/drawable/Drawable$ConstantState" />
-		<method name="&lt;init>()V" />
-		<method name="addChild(Landroid/graphics/drawable/Drawable;)I" />
-		<method name="canConstantState()Z" />
-		<method name="computeConstantSize()V" since="11" />
-		<method name="getChild(I)Landroid/graphics/drawable/Drawable;" since="19" />
-		<method name="getChildCount()I" />
-		<method name="getChildren()[Landroid/graphics/drawable/Drawable;" />
-		<method name="getConstantHeight()I" />
-		<method name="getConstantMinimumHeight()I" />
-		<method name="getConstantMinimumWidth()I" />
-		<method name="getConstantPadding()Landroid/graphics/Rect;" />
-		<method name="getConstantWidth()I" />
-		<method name="getEnterFadeDuration()I" since="11" />
-		<method name="getExitFadeDuration()I" since="11" />
-		<method name="getOpacity()I" />
-		<method name="growArray(II)V" />
-		<method name="isConstantSize()Z" />
-		<method name="isStateful()Z" />
-		<method name="setConstantSize(Z)V" />
-		<method name="setEnterFadeDuration(I)V" since="11" />
-		<method name="setExitFadeDuration(I)V" since="11" />
-		<method name="setVariablePadding(Z)V" />
-	</class>
-	<class name="android/graphics/drawable/GradientDrawable" since="1">
-		<extends name="android/graphics/drawable/Drawable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/graphics/drawable/GradientDrawable$Orientation;[I)V" />
-		<method name="getGradientRadius()F" since="21" />
-		<method name="getOrientation()Landroid/graphics/drawable/GradientDrawable$Orientation;" since="16" />
-		<method name="setColor(I)V" />
-		<method name="setColor(Landroid/content/res/ColorStateList;)V" since="21" />
-		<method name="setColors([I)V" since="16" />
-		<method name="setCornerRadii([F)V" />
-		<method name="setCornerRadius(F)V" />
-		<method name="setGradientCenter(FF)V" />
-		<method name="setGradientRadius(F)V" />
-		<method name="setGradientType(I)V" />
-		<method name="setOrientation(Landroid/graphics/drawable/GradientDrawable$Orientation;)V" since="16" />
-		<method name="setShape(I)V" />
-		<method name="setSize(II)V" />
-		<method name="setStroke(II)V" />
-		<method name="setStroke(IIFF)V" />
-		<method name="setStroke(ILandroid/content/res/ColorStateList;)V" since="21" />
-		<method name="setStroke(ILandroid/content/res/ColorStateList;FF)V" since="21" />
-		<method name="setUseLevel(Z)V" />
-		<field name="LINE" />
-		<field name="LINEAR_GRADIENT" />
-		<field name="OVAL" />
-		<field name="RADIAL_GRADIENT" />
-		<field name="RECTANGLE" />
-		<field name="RING" />
-		<field name="SWEEP_GRADIENT" />
-	</class>
-	<class name="android/graphics/drawable/GradientDrawable$Orientation" since="1">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Landroid/graphics/drawable/GradientDrawable$Orientation;" />
-		<method name="values()[Landroid/graphics/drawable/GradientDrawable$Orientation;" />
-		<field name="BL_TR" />
-		<field name="BOTTOM_TOP" />
-		<field name="BR_TL" />
-		<field name="LEFT_RIGHT" />
-		<field name="RIGHT_LEFT" />
-		<field name="TL_BR" />
-		<field name="TOP_BOTTOM" />
-		<field name="TR_BL" />
-	</class>
-	<class name="android/graphics/drawable/InsetDrawable" since="1">
-		<extends name="android/graphics/drawable/Drawable" />
-		<implements name="android/graphics/drawable/Drawable$Callback" />
-		<method name="&lt;init>(Landroid/graphics/drawable/Drawable;I)V" />
-		<method name="&lt;init>(Landroid/graphics/drawable/Drawable;IIII)V" />
-		<method name="getDrawable()Landroid/graphics/drawable/Drawable;" since="19" />
-	</class>
-	<class name="android/graphics/drawable/LayerDrawable" since="1">
-		<extends name="android/graphics/drawable/Drawable" />
-		<implements name="android/graphics/drawable/Drawable$Callback" />
-		<method name="&lt;init>([Landroid/graphics/drawable/Drawable;)V" />
-		<method name="findDrawableByLayerId(I)Landroid/graphics/drawable/Drawable;" />
-		<method name="getDrawable(I)Landroid/graphics/drawable/Drawable;" />
-		<method name="getId(I)I" />
-		<method name="getNumberOfLayers()I" />
-		<method name="getPaddingMode()I" since="21" />
-		<method name="setDrawableByLayerId(ILandroid/graphics/drawable/Drawable;)Z" />
-		<method name="setId(II)V" />
-		<method name="setLayerInset(IIIII)V" />
-		<method name="setOpacity(I)V" since="11" />
-		<method name="setPaddingMode(I)V" since="21" />
-		<field name="PADDING_MODE_NEST" since="21" />
-		<field name="PADDING_MODE_STACK" since="21" />
-	</class>
-	<class name="android/graphics/drawable/LevelListDrawable" since="1">
-		<extends name="android/graphics/drawable/DrawableContainer" />
-		<method name="&lt;init>()V" />
-		<method name="addLevel(IILandroid/graphics/drawable/Drawable;)V" />
-	</class>
-	<class name="android/graphics/drawable/NinePatchDrawable" since="1">
-		<extends name="android/graphics/drawable/Drawable" />
-		<method name="&lt;init>(Landroid/content/res/Resources;Landroid/graphics/Bitmap;[BLandroid/graphics/Rect;Ljava/lang/String;)V" since="4" />
-		<method name="&lt;init>(Landroid/content/res/Resources;Landroid/graphics/NinePatch;)V" since="4" />
-		<method name="&lt;init>(Landroid/graphics/Bitmap;[BLandroid/graphics/Rect;Ljava/lang/String;)V" />
-		<method name="&lt;init>(Landroid/graphics/NinePatch;)V" />
-		<method name="getPaint()Landroid/graphics/Paint;" />
-		<method name="setTargetDensity(I)V" since="4" />
-		<method name="setTargetDensity(Landroid/graphics/Canvas;)V" since="4" />
-		<method name="setTargetDensity(Landroid/util/DisplayMetrics;)V" since="4" />
-	</class>
-	<class name="android/graphics/drawable/PaintDrawable" since="1">
-		<extends name="android/graphics/drawable/ShapeDrawable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(I)V" />
-		<method name="setCornerRadii([F)V" />
-		<method name="setCornerRadius(F)V" />
-	</class>
-	<class name="android/graphics/drawable/PictureDrawable" since="1">
-		<extends name="android/graphics/drawable/Drawable" />
-		<method name="&lt;init>(Landroid/graphics/Picture;)V" />
-		<method name="getPicture()Landroid/graphics/Picture;" />
-		<method name="setPicture(Landroid/graphics/Picture;)V" />
-	</class>
-	<class name="android/graphics/drawable/RippleDrawable" since="21">
-		<extends name="android/graphics/drawable/LayerDrawable" />
-		<method name="&lt;init>(Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)V" />
-		<method name="setColor(Landroid/content/res/ColorStateList;)V" />
-	</class>
-	<class name="android/graphics/drawable/RotateDrawable" since="1">
-		<extends name="android/graphics/drawable/Drawable" />
-		<implements name="android/graphics/drawable/Drawable$Callback" />
-		<method name="&lt;init>()V" />
-		<method name="getDrawable()Landroid/graphics/drawable/Drawable;" since="3" />
-		<method name="getFromDegrees()F" since="21" />
-		<method name="getPivotX()F" since="21" />
-		<method name="getPivotY()F" since="21" />
-		<method name="getToDegrees()F" since="21" />
-		<method name="isPivotXRelative()Z" since="21" />
-		<method name="isPivotYRelative()Z" since="21" />
-		<method name="setDrawable(Landroid/graphics/drawable/Drawable;)V" since="21" />
-		<method name="setFromDegrees(F)V" since="21" />
-		<method name="setPivotX(F)V" since="21" />
-		<method name="setPivotXRelative(Z)V" since="21" />
-		<method name="setPivotY(F)V" since="21" />
-		<method name="setPivotYRelative(Z)V" since="21" />
-		<method name="setToDegrees(F)V" since="21" />
-	</class>
-	<class name="android/graphics/drawable/ScaleDrawable" since="1">
-		<extends name="android/graphics/drawable/Drawable" />
-		<implements name="android/graphics/drawable/Drawable$Callback" />
-		<method name="&lt;init>(Landroid/graphics/drawable/Drawable;IFF)V" />
-		<method name="getDrawable()Landroid/graphics/drawable/Drawable;" since="3" />
-	</class>
-	<class name="android/graphics/drawable/ShapeDrawable" since="1">
-		<extends name="android/graphics/drawable/Drawable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/graphics/drawable/shapes/Shape;)V" />
-		<method name="getPaint()Landroid/graphics/Paint;" />
-		<method name="getShaderFactory()Landroid/graphics/drawable/ShapeDrawable$ShaderFactory;" />
-		<method name="getShape()Landroid/graphics/drawable/shapes/Shape;" />
-		<method name="inflateTag(Ljava/lang/String;Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;)Z" />
-		<method name="onDraw(Landroid/graphics/drawable/shapes/Shape;Landroid/graphics/Canvas;Landroid/graphics/Paint;)V" />
-		<method name="setIntrinsicHeight(I)V" />
-		<method name="setIntrinsicWidth(I)V" />
-		<method name="setPadding(IIII)V" />
-		<method name="setPadding(Landroid/graphics/Rect;)V" />
-		<method name="setShaderFactory(Landroid/graphics/drawable/ShapeDrawable$ShaderFactory;)V" />
-		<method name="setShape(Landroid/graphics/drawable/shapes/Shape;)V" />
-	</class>
-	<class name="android/graphics/drawable/ShapeDrawable$ShaderFactory" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="resize(II)Landroid/graphics/Shader;" />
-	</class>
-	<class name="android/graphics/drawable/StateListDrawable" since="1">
-		<extends name="android/graphics/drawable/DrawableContainer" />
-		<method name="&lt;init>()V" />
-		<method name="addState([ILandroid/graphics/drawable/Drawable;)V" />
-	</class>
-	<class name="android/graphics/drawable/TransitionDrawable" since="1">
-		<extends name="android/graphics/drawable/LayerDrawable" />
-		<implements name="android/graphics/drawable/Drawable$Callback" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>([Landroid/graphics/drawable/Drawable;)V" since="3" />
-		<method name="isCrossFadeEnabled()Z" />
-		<method name="resetTransition()V" />
-		<method name="reverseTransition(I)V" />
-		<method name="setCrossFadeEnabled(Z)V" />
-		<method name="startTransition(I)V" />
-	</class>
-	<class name="android/graphics/drawable/shapes/ArcShape" since="1">
-		<extends name="android/graphics/drawable/shapes/RectShape" />
-		<method name="&lt;init>(FF)V" />
-	</class>
-	<class name="android/graphics/drawable/shapes/OvalShape" since="1">
-		<extends name="android/graphics/drawable/shapes/RectShape" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="android/graphics/drawable/shapes/PathShape" since="1">
-		<extends name="android/graphics/drawable/shapes/Shape" />
-		<method name="&lt;init>(Landroid/graphics/Path;FF)V" />
-		<method name="clone()Landroid/graphics/drawable/shapes/PathShape;" since="3" />
-	</class>
-	<class name="android/graphics/drawable/shapes/RectShape" since="1">
-		<extends name="android/graphics/drawable/shapes/Shape" />
-		<method name="&lt;init>()V" />
-		<method name="clone()Landroid/graphics/drawable/shapes/RectShape;" since="3" />
-		<method name="rect()Landroid/graphics/RectF;" />
-	</class>
-	<class name="android/graphics/drawable/shapes/RoundRectShape" since="1">
-		<extends name="android/graphics/drawable/shapes/RectShape" />
-		<method name="&lt;init>([FLandroid/graphics/RectF;[F)V" />
-		<method name="clone()Landroid/graphics/drawable/shapes/RoundRectShape;" since="3" />
-	</class>
-	<class name="android/graphics/drawable/shapes/Shape" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/Cloneable" since="3" />
-		<method name="&lt;init>()V" />
-		<method name="clone()Landroid/graphics/drawable/shapes/Shape;" since="3" />
-		<method name="draw(Landroid/graphics/Canvas;Landroid/graphics/Paint;)V" />
-		<method name="getHeight()F" />
-		<method name="getOutline(Landroid/graphics/Outline;)Z" since="21" />
-		<method name="getWidth()F" />
-		<method name="hasAlpha()Z" />
-		<method name="onResize(FF)V" />
-		<method name="resize(FF)V" />
-	</class>
-	<class name="android/graphics/pdf/PdfDocument" since="19">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="close()V" />
-		<method name="finishPage(Landroid/graphics/pdf/PdfDocument$Page;)V" />
-		<method name="getPages()Ljava/util/List;" />
-		<method name="startPage(Landroid/graphics/pdf/PdfDocument$PageInfo;)Landroid/graphics/pdf/PdfDocument$Page;" />
-		<method name="writeTo(Ljava/io/OutputStream;)V" />
-	</class>
-	<class name="android/graphics/pdf/PdfDocument$Page" since="19">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getCanvas()Landroid/graphics/Canvas;" />
-		<method name="getInfo()Landroid/graphics/pdf/PdfDocument$PageInfo;" />
-	</class>
-	<class name="android/graphics/pdf/PdfDocument$PageInfo" since="19">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getContentRect()Landroid/graphics/Rect;" />
-		<method name="getPageHeight()I" />
-		<method name="getPageNumber()I" />
-		<method name="getPageWidth()I" />
-	</class>
-	<class name="android/graphics/pdf/PdfDocument$PageInfo$Builder" since="19">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(III)V" />
-		<method name="create()Landroid/graphics/pdf/PdfDocument$PageInfo;" />
-		<method name="setContentRect(Landroid/graphics/Rect;)Landroid/graphics/pdf/PdfDocument$PageInfo$Builder;" />
-	</class>
-	<class name="android/graphics/pdf/PdfRenderer" since="21">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/AutoCloseable" />
-		<method name="&lt;init>(Landroid/os/ParcelFileDescriptor;)V" />
-		<method name="getPageCount()I" />
-		<method name="openPage(I)Landroid/graphics/pdf/PdfRenderer$Page;" />
-		<method name="shouldScaleForPrinting()Z" />
-	</class>
-	<class name="android/graphics/pdf/PdfRenderer$Page" since="21">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/AutoCloseable" />
-		<method name="&lt;init>(Landroid/graphics/pdf/PdfRenderer;)V" />
-		<method name="getHeight()I" />
-		<method name="getIndex()I" />
-		<method name="getWidth()I" />
-		<method name="render(Landroid/graphics/Bitmap;Landroid/graphics/Rect;Landroid/graphics/Matrix;I)V" />
-		<field name="RENDER_MODE_FOR_DISPLAY" />
-		<field name="RENDER_MODE_FOR_PRINT" />
-	</class>
-	<class name="android/hardware/Camera" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="addCallbackBuffer([B)V" since="8" />
-		<method name="autoFocus(Landroid/hardware/Camera$AutoFocusCallback;)V" />
-		<method name="cancelAutoFocus()V" since="5" />
-		<method name="enableShutterSound(Z)Z" since="17" />
-		<method name="getCameraInfo(ILandroid/hardware/Camera$CameraInfo;)V" since="9" />
-		<method name="getNumberOfCameras()I" since="9" />
-		<method name="getParameters()Landroid/hardware/Camera$Parameters;" />
-		<method name="lock()V" since="5" />
-		<method name="open()Landroid/hardware/Camera;" />
-		<method name="open(I)Landroid/hardware/Camera;" since="9" />
-		<method name="reconnect()V" since="8" />
-		<method name="release()V" />
-		<method name="setAutoFocusMoveCallback(Landroid/hardware/Camera$AutoFocusMoveCallback;)V" since="16" />
-		<method name="setDisplayOrientation(I)V" since="8" />
-		<method name="setErrorCallback(Landroid/hardware/Camera$ErrorCallback;)V" />
-		<method name="setFaceDetectionListener(Landroid/hardware/Camera$FaceDetectionListener;)V" since="14" />
-		<method name="setOneShotPreviewCallback(Landroid/hardware/Camera$PreviewCallback;)V" since="3" />
-		<method name="setParameters(Landroid/hardware/Camera$Parameters;)V" />
-		<method name="setPreviewCallback(Landroid/hardware/Camera$PreviewCallback;)V" />
-		<method name="setPreviewCallbackWithBuffer(Landroid/hardware/Camera$PreviewCallback;)V" since="8" />
-		<method name="setPreviewDisplay(Landroid/view/SurfaceHolder;)V" />
-		<method name="setPreviewTexture(Landroid/graphics/SurfaceTexture;)V" since="11" />
-		<method name="setZoomChangeListener(Landroid/hardware/Camera$OnZoomChangeListener;)V" since="8" />
-		<method name="startFaceDetection()V" since="14" />
-		<method name="startPreview()V" />
-		<method name="startSmoothZoom(I)V" since="8" />
-		<method name="stopFaceDetection()V" since="14" />
-		<method name="stopPreview()V" />
-		<method name="stopSmoothZoom()V" since="8" />
-		<method name="takePicture(Landroid/hardware/Camera$ShutterCallback;Landroid/hardware/Camera$PictureCallback;Landroid/hardware/Camera$PictureCallback;)V" />
-		<method name="takePicture(Landroid/hardware/Camera$ShutterCallback;Landroid/hardware/Camera$PictureCallback;Landroid/hardware/Camera$PictureCallback;Landroid/hardware/Camera$PictureCallback;)V" since="5" />
-		<method name="unlock()V" since="5" />
-		<field name="ACTION_NEW_PICTURE" since="14" />
-		<field name="ACTION_NEW_VIDEO" since="14" />
-		<field name="CAMERA_ERROR_SERVER_DIED" />
-		<field name="CAMERA_ERROR_UNKNOWN" />
-	</class>
-	<class name="android/hardware/Camera$Area" since="14">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/graphics/Rect;I)V" />
-		<field name="rect" />
-		<field name="weight" />
-	</class>
-	<class name="android/hardware/Camera$AutoFocusCallback" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onAutoFocus(ZLandroid/hardware/Camera;)V" />
-	</class>
-	<class name="android/hardware/Camera$AutoFocusMoveCallback" since="16">
-		<extends name="java/lang/Object" />
-		<method name="onAutoFocusMoving(ZLandroid/hardware/Camera;)V" />
-	</class>
-	<class name="android/hardware/Camera$CameraInfo" since="9">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="CAMERA_FACING_BACK" />
-		<field name="CAMERA_FACING_FRONT" />
-		<field name="canDisableShutterSound" since="17" />
-		<field name="facing" />
-		<field name="orientation" />
-	</class>
-	<class name="android/hardware/Camera$ErrorCallback" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onError(ILandroid/hardware/Camera;)V" />
-	</class>
-	<class name="android/hardware/Camera$Face" since="14">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="id" />
-		<field name="leftEye" />
-		<field name="mouth" />
-		<field name="rect" />
-		<field name="rightEye" />
-		<field name="score" />
-	</class>
-	<class name="android/hardware/Camera$FaceDetectionListener" since="14">
-		<extends name="java/lang/Object" />
-		<method name="onFaceDetection([Landroid/hardware/Camera$Face;Landroid/hardware/Camera;)V" />
-	</class>
-	<class name="android/hardware/Camera$OnZoomChangeListener" since="8">
-		<extends name="java/lang/Object" />
-		<method name="onZoomChange(IZLandroid/hardware/Camera;)V" />
-	</class>
-	<class name="android/hardware/Camera$Parameters" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/hardware/Camera;)V" />
-		<method name="flatten()Ljava/lang/String;" />
-		<method name="get(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="getAntibanding()Ljava/lang/String;" since="5" />
-		<method name="getAutoExposureLock()Z" since="14" />
-		<method name="getAutoWhiteBalanceLock()Z" since="14" />
-		<method name="getColorEffect()Ljava/lang/String;" since="5" />
-		<method name="getExposureCompensation()I" since="8" />
-		<method name="getExposureCompensationStep()F" since="8" />
-		<method name="getFlashMode()Ljava/lang/String;" since="5" />
-		<method name="getFocalLength()F" since="8" />
-		<method name="getFocusAreas()Ljava/util/List;" since="14" />
-		<method name="getFocusDistances([F)V" since="9" />
-		<method name="getFocusMode()Ljava/lang/String;" since="5" />
-		<method name="getHorizontalViewAngle()F" since="8" />
-		<method name="getInt(Ljava/lang/String;)I" />
-		<method name="getJpegQuality()I" since="5" />
-		<method name="getJpegThumbnailQuality()I" since="5" />
-		<method name="getJpegThumbnailSize()Landroid/hardware/Camera$Size;" since="5" />
-		<method name="getMaxExposureCompensation()I" since="8" />
-		<method name="getMaxNumDetectedFaces()I" since="14" />
-		<method name="getMaxNumFocusAreas()I" since="14" />
-		<method name="getMaxNumMeteringAreas()I" since="14" />
-		<method name="getMaxZoom()I" since="8" />
-		<method name="getMeteringAreas()Ljava/util/List;" since="14" />
-		<method name="getMinExposureCompensation()I" since="8" />
-		<method name="getPictureFormat()I" />
-		<method name="getPictureSize()Landroid/hardware/Camera$Size;" />
-		<method name="getPreferredPreviewSizeForVideo()Landroid/hardware/Camera$Size;" since="11" />
-		<method name="getPreviewFormat()I" />
-		<method name="getPreviewFpsRange([I)V" since="9" />
-		<method name="getPreviewFrameRate()I" />
-		<method name="getPreviewSize()Landroid/hardware/Camera$Size;" />
-		<method name="getSceneMode()Ljava/lang/String;" since="5" />
-		<method name="getSupportedAntibanding()Ljava/util/List;" since="5" />
-		<method name="getSupportedColorEffects()Ljava/util/List;" since="5" />
-		<method name="getSupportedFlashModes()Ljava/util/List;" since="5" />
-		<method name="getSupportedFocusModes()Ljava/util/List;" since="5" />
-		<method name="getSupportedJpegThumbnailSizes()Ljava/util/List;" since="8" />
-		<method name="getSupportedPictureFormats()Ljava/util/List;" since="5" />
-		<method name="getSupportedPictureSizes()Ljava/util/List;" since="5" />
-		<method name="getSupportedPreviewFormats()Ljava/util/List;" since="5" />
-		<method name="getSupportedPreviewFpsRange()Ljava/util/List;" since="9" />
-		<method name="getSupportedPreviewFrameRates()Ljava/util/List;" since="5" />
-		<method name="getSupportedPreviewSizes()Ljava/util/List;" since="5" />
-		<method name="getSupportedSceneModes()Ljava/util/List;" since="5" />
-		<method name="getSupportedVideoSizes()Ljava/util/List;" since="11" />
-		<method name="getSupportedWhiteBalance()Ljava/util/List;" since="5" />
-		<method name="getVerticalViewAngle()F" since="8" />
-		<method name="getVideoStabilization()Z" since="15" />
-		<method name="getWhiteBalance()Ljava/lang/String;" since="5" />
-		<method name="getZoom()I" since="8" />
-		<method name="getZoomRatios()Ljava/util/List;" since="8" />
-		<method name="isAutoExposureLockSupported()Z" since="14" />
-		<method name="isAutoWhiteBalanceLockSupported()Z" since="14" />
-		<method name="isSmoothZoomSupported()Z" since="8" />
-		<method name="isVideoSnapshotSupported()Z" since="14" />
-		<method name="isVideoStabilizationSupported()Z" since="15" />
-		<method name="isZoomSupported()Z" since="8" />
-		<method name="remove(Ljava/lang/String;)V" />
-		<method name="removeGpsData()V" since="5" />
-		<method name="set(Ljava/lang/String;I)V" />
-		<method name="set(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="setAntibanding(Ljava/lang/String;)V" since="5" />
-		<method name="setAutoExposureLock(Z)V" since="14" />
-		<method name="setAutoWhiteBalanceLock(Z)V" since="14" />
-		<method name="setColorEffect(Ljava/lang/String;)V" since="5" />
-		<method name="setExposureCompensation(I)V" since="8" />
-		<method name="setFlashMode(Ljava/lang/String;)V" since="5" />
-		<method name="setFocusAreas(Ljava/util/List;)V" since="14" />
-		<method name="setFocusMode(Ljava/lang/String;)V" since="5" />
-		<method name="setGpsAltitude(D)V" since="5" />
-		<method name="setGpsLatitude(D)V" since="5" />
-		<method name="setGpsLongitude(D)V" since="5" />
-		<method name="setGpsProcessingMethod(Ljava/lang/String;)V" since="8" />
-		<method name="setGpsTimestamp(J)V" since="5" />
-		<method name="setJpegQuality(I)V" since="5" />
-		<method name="setJpegThumbnailQuality(I)V" since="5" />
-		<method name="setJpegThumbnailSize(II)V" since="5" />
-		<method name="setMeteringAreas(Ljava/util/List;)V" since="14" />
-		<method name="setPictureFormat(I)V" />
-		<method name="setPictureSize(II)V" />
-		<method name="setPreviewFormat(I)V" />
-		<method name="setPreviewFpsRange(II)V" since="9" />
-		<method name="setPreviewFrameRate(I)V" />
-		<method name="setPreviewSize(II)V" />
-		<method name="setRecordingHint(Z)V" since="14" />
-		<method name="setRotation(I)V" since="5" />
-		<method name="setSceneMode(Ljava/lang/String;)V" since="5" />
-		<method name="setVideoStabilization(Z)V" since="15" />
-		<method name="setWhiteBalance(Ljava/lang/String;)V" since="5" />
-		<method name="setZoom(I)V" since="8" />
-		<method name="unflatten(Ljava/lang/String;)V" />
-		<field name="ANTIBANDING_50HZ" since="5" />
-		<field name="ANTIBANDING_60HZ" since="5" />
-		<field name="ANTIBANDING_AUTO" since="5" />
-		<field name="ANTIBANDING_OFF" since="5" />
-		<field name="EFFECT_AQUA" since="5" />
-		<field name="EFFECT_BLACKBOARD" since="5" />
-		<field name="EFFECT_MONO" since="5" />
-		<field name="EFFECT_NEGATIVE" since="5" />
-		<field name="EFFECT_NONE" since="5" />
-		<field name="EFFECT_POSTERIZE" since="5" />
-		<field name="EFFECT_SEPIA" since="5" />
-		<field name="EFFECT_SOLARIZE" since="5" />
-		<field name="EFFECT_WHITEBOARD" since="5" />
-		<field name="FLASH_MODE_AUTO" since="5" />
-		<field name="FLASH_MODE_OFF" since="5" />
-		<field name="FLASH_MODE_ON" since="5" />
-		<field name="FLASH_MODE_RED_EYE" since="5" />
-		<field name="FLASH_MODE_TORCH" since="5" />
-		<field name="FOCUS_DISTANCE_FAR_INDEX" since="9" />
-		<field name="FOCUS_DISTANCE_NEAR_INDEX" since="9" />
-		<field name="FOCUS_DISTANCE_OPTIMAL_INDEX" since="9" />
-		<field name="FOCUS_MODE_AUTO" since="5" />
-		<field name="FOCUS_MODE_CONTINUOUS_PICTURE" since="14" />
-		<field name="FOCUS_MODE_CONTINUOUS_VIDEO" since="9" />
-		<field name="FOCUS_MODE_EDOF" since="8" />
-		<field name="FOCUS_MODE_FIXED" since="5" />
-		<field name="FOCUS_MODE_INFINITY" since="5" />
-		<field name="FOCUS_MODE_MACRO" since="5" />
-		<field name="PREVIEW_FPS_MAX_INDEX" since="9" />
-		<field name="PREVIEW_FPS_MIN_INDEX" since="9" />
-		<field name="SCENE_MODE_ACTION" since="5" />
-		<field name="SCENE_MODE_AUTO" since="5" />
-		<field name="SCENE_MODE_BARCODE" since="8" />
-		<field name="SCENE_MODE_BEACH" since="5" />
-		<field name="SCENE_MODE_CANDLELIGHT" since="5" />
-		<field name="SCENE_MODE_FIREWORKS" since="5" />
-		<field name="SCENE_MODE_HDR" since="17" />
-		<field name="SCENE_MODE_LANDSCAPE" since="5" />
-		<field name="SCENE_MODE_NIGHT" since="5" />
-		<field name="SCENE_MODE_NIGHT_PORTRAIT" since="5" />
-		<field name="SCENE_MODE_PARTY" since="5" />
-		<field name="SCENE_MODE_PORTRAIT" since="5" />
-		<field name="SCENE_MODE_SNOW" since="5" />
-		<field name="SCENE_MODE_SPORTS" since="5" />
-		<field name="SCENE_MODE_STEADYPHOTO" since="5" />
-		<field name="SCENE_MODE_SUNSET" since="5" />
-		<field name="SCENE_MODE_THEATRE" since="5" />
-		<field name="WHITE_BALANCE_AUTO" since="5" />
-		<field name="WHITE_BALANCE_CLOUDY_DAYLIGHT" since="5" />
-		<field name="WHITE_BALANCE_DAYLIGHT" since="5" />
-		<field name="WHITE_BALANCE_FLUORESCENT" since="5" />
-		<field name="WHITE_BALANCE_INCANDESCENT" since="5" />
-		<field name="WHITE_BALANCE_SHADE" since="5" />
-		<field name="WHITE_BALANCE_TWILIGHT" since="5" />
-		<field name="WHITE_BALANCE_WARM_FLUORESCENT" since="5" />
-	</class>
-	<class name="android/hardware/Camera$PictureCallback" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onPictureTaken([BLandroid/hardware/Camera;)V" />
-	</class>
-	<class name="android/hardware/Camera$PreviewCallback" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onPreviewFrame([BLandroid/hardware/Camera;)V" />
-	</class>
-	<class name="android/hardware/Camera$ShutterCallback" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onShutter()V" />
-	</class>
-	<class name="android/hardware/Camera$Size" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/hardware/Camera;II)V" />
-		<field name="height" />
-		<field name="width" />
-	</class>
-	<class name="android/hardware/ConsumerIrManager" since="19">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getCarrierFrequencies()[Landroid/hardware/ConsumerIrManager$CarrierFrequencyRange;" />
-		<method name="hasIrEmitter()Z" />
-		<method name="transmit(I[I)V" />
-	</class>
-	<class name="android/hardware/ConsumerIrManager$CarrierFrequencyRange" since="19">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/hardware/ConsumerIrManager;II)V" />
-		<method name="getMaxFrequency()I" />
-		<method name="getMinFrequency()I" />
-	</class>
-	<class name="android/hardware/GeomagneticField" since="3">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(FFFJ)V" />
-		<method name="getDeclination()F" />
-		<method name="getFieldStrength()F" />
-		<method name="getHorizontalStrength()F" />
-		<method name="getInclination()F" />
-		<method name="getX()F" />
-		<method name="getY()F" />
-		<method name="getZ()F" />
-	</class>
-	<class name="android/hardware/Sensor" since="3">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getFifoMaxEventCount()I" since="19" />
-		<method name="getFifoReservedEventCount()I" since="19" />
-		<method name="getMaximumRange()F" />
-		<method name="getMinDelay()I" since="9" />
-		<method name="getName()Ljava/lang/String;" />
-		<method name="getPower()F" />
-		<method name="getResolution()F" />
-		<method name="getStringType()Ljava/lang/String;" since="20" />
-		<method name="getType()I" />
-		<method name="getVendor()Ljava/lang/String;" />
-		<method name="getVersion()I" />
-		<field name="STRING_TYPE_ACCELEROMETER" since="20" />
-		<field name="STRING_TYPE_AMBIENT_TEMPERATURE" since="20" />
-		<field name="STRING_TYPE_GAME_ROTATION_VECTOR" since="20" />
-		<field name="STRING_TYPE_GEOMAGNETIC_ROTATION_VECTOR" since="20" />
-		<field name="STRING_TYPE_GRAVITY" since="20" />
-		<field name="STRING_TYPE_GYROSCOPE" since="20" />
-		<field name="STRING_TYPE_GYROSCOPE_UNCALIBRATED" since="20" />
-		<field name="STRING_TYPE_HEART_RATE" since="20" />
-		<field name="STRING_TYPE_LIGHT" since="20" />
-		<field name="STRING_TYPE_LINEAR_ACCELERATION" since="20" />
-		<field name="STRING_TYPE_MAGNETIC_FIELD" since="20" />
-		<field name="STRING_TYPE_MAGNETIC_FIELD_UNCALIBRATED" since="20" />
-		<field name="STRING_TYPE_ORIENTATION" since="20" />
-		<field name="STRING_TYPE_PRESSURE" since="20" />
-		<field name="STRING_TYPE_PROXIMITY" since="20" />
-		<field name="STRING_TYPE_RELATIVE_HUMIDITY" since="20" />
-		<field name="STRING_TYPE_ROTATION_VECTOR" since="20" />
-		<field name="STRING_TYPE_SIGNIFICANT_MOTION" since="20" />
-		<field name="STRING_TYPE_STEP_COUNTER" since="20" />
-		<field name="STRING_TYPE_STEP_DETECTOR" since="20" />
-		<field name="STRING_TYPE_TEMPERATURE" since="20" />
-		<field name="TYPE_ACCELEROMETER" />
-		<field name="TYPE_ALL" />
-		<field name="TYPE_AMBIENT_TEMPERATURE" since="14" />
-		<field name="TYPE_GAME_ROTATION_VECTOR" since="18" />
-		<field name="TYPE_GEOMAGNETIC_ROTATION_VECTOR" since="19" />
-		<field name="TYPE_GRAVITY" since="9" />
-		<field name="TYPE_GYROSCOPE" />
-		<field name="TYPE_GYROSCOPE_UNCALIBRATED" since="18" />
-		<field name="TYPE_HEART_RATE" since="20" />
-		<field name="TYPE_LIGHT" />
-		<field name="TYPE_LINEAR_ACCELERATION" since="9" />
-		<field name="TYPE_MAGNETIC_FIELD" />
-		<field name="TYPE_MAGNETIC_FIELD_UNCALIBRATED" since="18" />
-		<field name="TYPE_ORIENTATION" />
-		<field name="TYPE_PRESSURE" />
-		<field name="TYPE_PROXIMITY" />
-		<field name="TYPE_RELATIVE_HUMIDITY" since="14" />
-		<field name="TYPE_ROTATION_VECTOR" since="9" />
-		<field name="TYPE_SIGNIFICANT_MOTION" since="18" />
-		<field name="TYPE_STEP_COUNTER" since="19" />
-		<field name="TYPE_STEP_DETECTOR" since="19" />
-		<field name="TYPE_TEMPERATURE" />
-	</class>
-	<class name="android/hardware/SensorEvent" since="3">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="accuracy" />
-		<field name="sensor" />
-		<field name="timestamp" />
-		<field name="values" />
-	</class>
-	<class name="android/hardware/SensorEventListener" since="3">
-		<extends name="java/lang/Object" />
-		<method name="onAccuracyChanged(Landroid/hardware/Sensor;I)V" />
-		<method name="onSensorChanged(Landroid/hardware/SensorEvent;)V" />
-	</class>
-	<class name="android/hardware/SensorEventListener2" since="19">
-		<extends name="java/lang/Object" />
-		<implements name="android/hardware/SensorEventListener" />
-		<method name="onFlushCompleted(Landroid/hardware/Sensor;)V" />
-	</class>
-	<class name="android/hardware/SensorListener" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onAccuracyChanged(II)V" />
-		<method name="onSensorChanged(I[F)V" />
-	</class>
-	<class name="android/hardware/SensorManager" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="cancelTriggerSensor(Landroid/hardware/TriggerEventListener;Landroid/hardware/Sensor;)Z" since="18" />
-		<method name="flush(Landroid/hardware/SensorEventListener;)Z" since="19" />
-		<method name="getAltitude(FF)F" since="9" />
-		<method name="getAngleChange([F[F[F)V" since="9" />
-		<method name="getDefaultSensor(I)Landroid/hardware/Sensor;" since="3" />
-		<method name="getInclination([F)F" since="3" />
-		<method name="getOrientation([F[F)[F" since="3" />
-		<method name="getQuaternionFromVector([F[F)V" since="9" />
-		<method name="getRotationMatrix([F[F[F[F)Z" since="3" />
-		<method name="getRotationMatrixFromVector([F[F)V" since="9" />
-		<method name="getSensorList(I)Ljava/util/List;" since="3" />
-		<method name="getSensors()I" />
-		<method name="registerListener(Landroid/hardware/SensorEventListener;Landroid/hardware/Sensor;I)Z" since="3" />
-		<method name="registerListener(Landroid/hardware/SensorEventListener;Landroid/hardware/Sensor;II)Z" since="19" />
-		<method name="registerListener(Landroid/hardware/SensorEventListener;Landroid/hardware/Sensor;IILandroid/os/Handler;)Z" since="19" />
-		<method name="registerListener(Landroid/hardware/SensorEventListener;Landroid/hardware/Sensor;ILandroid/os/Handler;)Z" since="3" />
-		<method name="registerListener(Landroid/hardware/SensorListener;I)Z" />
-		<method name="registerListener(Landroid/hardware/SensorListener;II)Z" />
-		<method name="remapCoordinateSystem([FII[F)Z" since="3" />
-		<method name="requestTriggerSensor(Landroid/hardware/TriggerEventListener;Landroid/hardware/Sensor;)Z" since="18" />
-		<method name="unregisterListener(Landroid/hardware/SensorEventListener;)V" since="3" />
-		<method name="unregisterListener(Landroid/hardware/SensorEventListener;Landroid/hardware/Sensor;)V" since="3" />
-		<method name="unregisterListener(Landroid/hardware/SensorListener;)V" />
-		<method name="unregisterListener(Landroid/hardware/SensorListener;I)V" />
-		<field name="AXIS_MINUS_X" since="3" />
-		<field name="AXIS_MINUS_Y" since="3" />
-		<field name="AXIS_MINUS_Z" since="3" />
-		<field name="AXIS_X" since="3" />
-		<field name="AXIS_Y" since="3" />
-		<field name="AXIS_Z" since="3" />
-		<field name="DATA_X" />
-		<field name="DATA_Y" />
-		<field name="DATA_Z" />
-		<field name="GRAVITY_DEATH_STAR_I" />
-		<field name="GRAVITY_EARTH" />
-		<field name="GRAVITY_JUPITER" />
-		<field name="GRAVITY_MARS" />
-		<field name="GRAVITY_MERCURY" />
-		<field name="GRAVITY_MOON" />
-		<field name="GRAVITY_NEPTUNE" />
-		<field name="GRAVITY_PLUTO" />
-		<field name="GRAVITY_SATURN" />
-		<field name="GRAVITY_SUN" />
-		<field name="GRAVITY_THE_ISLAND" />
-		<field name="GRAVITY_URANUS" />
-		<field name="GRAVITY_VENUS" />
-		<field name="LIGHT_CLOUDY" />
-		<field name="LIGHT_FULLMOON" />
-		<field name="LIGHT_NO_MOON" />
-		<field name="LIGHT_OVERCAST" />
-		<field name="LIGHT_SHADE" />
-		<field name="LIGHT_SUNLIGHT" />
-		<field name="LIGHT_SUNLIGHT_MAX" />
-		<field name="LIGHT_SUNRISE" />
-		<field name="MAGNETIC_FIELD_EARTH_MAX" />
-		<field name="MAGNETIC_FIELD_EARTH_MIN" />
-		<field name="PRESSURE_STANDARD_ATMOSPHERE" since="9" />
-		<field name="RAW_DATA_INDEX" />
-		<field name="RAW_DATA_X" />
-		<field name="RAW_DATA_Y" />
-		<field name="RAW_DATA_Z" />
-		<field name="SENSOR_ACCELEROMETER" />
-		<field name="SENSOR_ALL" />
-		<field name="SENSOR_DELAY_FASTEST" />
-		<field name="SENSOR_DELAY_GAME" />
-		<field name="SENSOR_DELAY_NORMAL" />
-		<field name="SENSOR_DELAY_UI" />
-		<field name="SENSOR_LIGHT" />
-		<field name="SENSOR_MAGNETIC_FIELD" />
-		<field name="SENSOR_MAX" />
-		<field name="SENSOR_MIN" />
-		<field name="SENSOR_ORIENTATION" />
-		<field name="SENSOR_ORIENTATION_RAW" />
-		<field name="SENSOR_PROXIMITY" />
-		<field name="SENSOR_STATUS_ACCURACY_HIGH" />
-		<field name="SENSOR_STATUS_ACCURACY_LOW" />
-		<field name="SENSOR_STATUS_ACCURACY_MEDIUM" />
-		<field name="SENSOR_STATUS_NO_CONTACT" since="20" />
-		<field name="SENSOR_STATUS_UNRELIABLE" />
-		<field name="SENSOR_TEMPERATURE" />
-		<field name="SENSOR_TRICORDER" />
-		<field name="STANDARD_GRAVITY" />
-	</class>
-	<class name="android/hardware/TriggerEvent" since="18">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="sensor" />
-		<field name="timestamp" />
-		<field name="values" />
-	</class>
-	<class name="android/hardware/TriggerEventListener" since="18">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="onTrigger(Landroid/hardware/TriggerEvent;)V" />
-	</class>
-	<class name="android/hardware/camera2/CameraAccessException" since="21">
-		<extends name="android/util/AndroidException" />
-		<method name="&lt;init>(I)V" />
-		<method name="&lt;init>(ILjava/lang/String;)V" />
-		<method name="&lt;init>(ILjava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(ILjava/lang/Throwable;)V" />
-		<method name="getReason()I" />
-		<field name="CAMERA_DISABLED" />
-		<field name="CAMERA_DISCONNECTED" />
-		<field name="CAMERA_ERROR" />
-	</class>
-	<class name="android/hardware/camera2/CameraCaptureSession" since="21">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/AutoCloseable" />
-		<method name="&lt;init>()V" />
-		<method name="abortCaptures()V" />
-		<method name="capture(Landroid/hardware/camera2/CaptureRequest;Landroid/hardware/camera2/CameraCaptureSession$CaptureListener;Landroid/os/Handler;)I" />
-		<method name="captureBurst(Ljava/util/List;Landroid/hardware/camera2/CameraCaptureSession$CaptureListener;Landroid/os/Handler;)I" />
-		<method name="getDevice()Landroid/hardware/camera2/CameraDevice;" />
-		<method name="setRepeatingBurst(Ljava/util/List;Landroid/hardware/camera2/CameraCaptureSession$CaptureListener;Landroid/os/Handler;)I" />
-		<method name="setRepeatingRequest(Landroid/hardware/camera2/CaptureRequest;Landroid/hardware/camera2/CameraCaptureSession$CaptureListener;Landroid/os/Handler;)I" />
-		<method name="stopRepeating()V" />
-	</class>
-	<class name="android/hardware/camera2/CameraCaptureSession$CaptureListener" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="onCaptureCompleted(Landroid/hardware/camera2/CameraCaptureSession;Landroid/hardware/camera2/CaptureRequest;Landroid/hardware/camera2/TotalCaptureResult;)V" />
-		<method name="onCaptureFailed(Landroid/hardware/camera2/CameraCaptureSession;Landroid/hardware/camera2/CaptureRequest;Landroid/hardware/camera2/CaptureFailure;)V" />
-		<method name="onCaptureProgressed(Landroid/hardware/camera2/CameraCaptureSession;Landroid/hardware/camera2/CaptureRequest;Landroid/hardware/camera2/CaptureResult;)V" />
-		<method name="onCaptureSequenceAborted(Landroid/hardware/camera2/CameraCaptureSession;I)V" />
-		<method name="onCaptureSequenceCompleted(Landroid/hardware/camera2/CameraCaptureSession;IJ)V" />
-		<method name="onCaptureStarted(Landroid/hardware/camera2/CameraCaptureSession;Landroid/hardware/camera2/CaptureRequest;J)V" />
-	</class>
-	<class name="android/hardware/camera2/CameraCaptureSession$StateListener" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="onActive(Landroid/hardware/camera2/CameraCaptureSession;)V" />
-		<method name="onClosed(Landroid/hardware/camera2/CameraCaptureSession;)V" />
-		<method name="onConfigureFailed(Landroid/hardware/camera2/CameraCaptureSession;)V" />
-		<method name="onConfigured(Landroid/hardware/camera2/CameraCaptureSession;)V" />
-		<method name="onReady(Landroid/hardware/camera2/CameraCaptureSession;)V" />
-	</class>
-	<class name="android/hardware/camera2/CameraCharacteristics" since="21">
-		<extends name="android/hardware/camera2/CameraMetadata" />
-		<method name="&lt;init>()V" />
-		<method name="get(Landroid/hardware/camera2/CameraCharacteristics$Key;)Ljava/lang/Object;" />
-		<method name="getAvailableCaptureRequestKeys()Ljava/util/List;" />
-		<method name="getAvailableCaptureResultKeys()Ljava/util/List;" />
-		<field name="CONTROL_AE_AVAILABLE_ANTIBANDING_MODES" />
-		<field name="CONTROL_AE_AVAILABLE_MODES" />
-		<field name="CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES" />
-		<field name="CONTROL_AE_COMPENSATION_RANGE" />
-		<field name="CONTROL_AE_COMPENSATION_STEP" />
-		<field name="CONTROL_AF_AVAILABLE_MODES" />
-		<field name="CONTROL_AVAILABLE_EFFECTS" />
-		<field name="CONTROL_AVAILABLE_SCENE_MODES" />
-		<field name="CONTROL_AVAILABLE_VIDEO_STABILIZATION_MODES" />
-		<field name="CONTROL_AWB_AVAILABLE_MODES" />
-		<field name="CONTROL_MAX_REGIONS_AE" />
-		<field name="CONTROL_MAX_REGIONS_AF" />
-		<field name="CONTROL_MAX_REGIONS_AWB" />
-		<field name="EDGE_AVAILABLE_EDGE_MODES" />
-		<field name="FLASH_INFO_AVAILABLE" />
-		<field name="HOT_PIXEL_AVAILABLE_HOT_PIXEL_MODES" />
-		<field name="INFO_SUPPORTED_HARDWARE_LEVEL" />
-		<field name="JPEG_AVAILABLE_THUMBNAIL_SIZES" />
-		<field name="LENS_FACING" />
-		<field name="LENS_INFO_AVAILABLE_APERTURES" />
-		<field name="LENS_INFO_AVAILABLE_FILTER_DENSITIES" />
-		<field name="LENS_INFO_AVAILABLE_FOCAL_LENGTHS" />
-		<field name="LENS_INFO_AVAILABLE_OPTICAL_STABILIZATION" />
-		<field name="LENS_INFO_FOCUS_DISTANCE_CALIBRATION" />
-		<field name="LENS_INFO_HYPERFOCAL_DISTANCE" />
-		<field name="LENS_INFO_MINIMUM_FOCUS_DISTANCE" />
-		<field name="NOISE_REDUCTION_AVAILABLE_NOISE_REDUCTION_MODES" />
-		<field name="REQUEST_AVAILABLE_CAPABILITIES" />
-		<field name="REQUEST_MAX_NUM_OUTPUT_PROC" />
-		<field name="REQUEST_MAX_NUM_OUTPUT_PROC_STALLING" />
-		<field name="REQUEST_MAX_NUM_OUTPUT_RAW" />
-		<field name="REQUEST_PARTIAL_RESULT_COUNT" />
-		<field name="REQUEST_PIPELINE_MAX_DEPTH" />
-		<field name="SCALER_AVAILABLE_MAX_DIGITAL_ZOOM" />
-		<field name="SCALER_CROPPING_TYPE" />
-		<field name="SCALER_STREAM_CONFIGURATION_MAP" />
-		<field name="SENSOR_AVAILABLE_TEST_PATTERN_MODES" />
-		<field name="SENSOR_BLACK_LEVEL_PATTERN" />
-		<field name="SENSOR_CALIBRATION_TRANSFORM1" />
-		<field name="SENSOR_CALIBRATION_TRANSFORM2" />
-		<field name="SENSOR_COLOR_TRANSFORM1" />
-		<field name="SENSOR_COLOR_TRANSFORM2" />
-		<field name="SENSOR_FORWARD_MATRIX1" />
-		<field name="SENSOR_FORWARD_MATRIX2" />
-		<field name="SENSOR_INFO_ACTIVE_ARRAY_SIZE" />
-		<field name="SENSOR_INFO_COLOR_FILTER_ARRANGEMENT" />
-		<field name="SENSOR_INFO_EXPOSURE_TIME_RANGE" />
-		<field name="SENSOR_INFO_MAX_FRAME_DURATION" />
-		<field name="SENSOR_INFO_PHYSICAL_SIZE" />
-		<field name="SENSOR_INFO_PIXEL_ARRAY_SIZE" />
-		<field name="SENSOR_INFO_SENSITIVITY_RANGE" />
-		<field name="SENSOR_INFO_WHITE_LEVEL" />
-		<field name="SENSOR_MAX_ANALOG_SENSITIVITY" />
-		<field name="SENSOR_ORIENTATION" />
-		<field name="SENSOR_REFERENCE_ILLUMINANT1" />
-		<field name="SENSOR_REFERENCE_ILLUMINANT2" />
-		<field name="STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES" />
-		<field name="STATISTICS_INFO_AVAILABLE_HOT_PIXEL_MAP_MODES" />
-		<field name="STATISTICS_INFO_MAX_FACE_COUNT" />
-		<field name="SYNC_MAX_LATENCY" />
-		<field name="TONEMAP_AVAILABLE_TONE_MAP_MODES" />
-		<field name="TONEMAP_MAX_CURVE_POINTS" />
-	</class>
-	<class name="android/hardware/camera2/CameraCharacteristics$Key" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getName()Ljava/lang/String;" />
-	</class>
-	<class name="android/hardware/camera2/CameraDevice" since="21">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/AutoCloseable" />
-		<method name="&lt;init>()V" />
-		<method name="capture(Landroid/hardware/camera2/CaptureRequest;Landroid/hardware/camera2/CameraDevice$CaptureListener;Landroid/os/Handler;)I" />
-		<method name="captureBurst(Ljava/util/List;Landroid/hardware/camera2/CameraDevice$CaptureListener;Landroid/os/Handler;)I" />
-		<method name="configureOutputs(Ljava/util/List;)V" />
-		<method name="createCaptureRequest(I)Landroid/hardware/camera2/CaptureRequest$Builder;" />
-		<method name="createCaptureSession(Ljava/util/List;Landroid/hardware/camera2/CameraCaptureSession$StateListener;Landroid/os/Handler;)V" />
-		<method name="flush()V" />
-		<method name="getId()Ljava/lang/String;" />
-		<method name="setRepeatingBurst(Ljava/util/List;Landroid/hardware/camera2/CameraDevice$CaptureListener;Landroid/os/Handler;)I" />
-		<method name="setRepeatingRequest(Landroid/hardware/camera2/CaptureRequest;Landroid/hardware/camera2/CameraDevice$CaptureListener;Landroid/os/Handler;)I" />
-		<method name="stopRepeating()V" />
-		<field name="TEMPLATE_MANUAL" />
-		<field name="TEMPLATE_PREVIEW" />
-		<field name="TEMPLATE_RECORD" />
-		<field name="TEMPLATE_STILL_CAPTURE" />
-		<field name="TEMPLATE_VIDEO_SNAPSHOT" />
-		<field name="TEMPLATE_ZERO_SHUTTER_LAG" />
-	</class>
-	<class name="android/hardware/camera2/CameraDevice$CaptureListener" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="onCaptureCompleted(Landroid/hardware/camera2/CameraDevice;Landroid/hardware/camera2/CaptureRequest;Landroid/hardware/camera2/TotalCaptureResult;)V" />
-		<method name="onCaptureFailed(Landroid/hardware/camera2/CameraDevice;Landroid/hardware/camera2/CaptureRequest;Landroid/hardware/camera2/CaptureFailure;)V" />
-		<method name="onCaptureProgressed(Landroid/hardware/camera2/CameraDevice;Landroid/hardware/camera2/CaptureRequest;Landroid/hardware/camera2/CaptureResult;)V" />
-		<method name="onCaptureSequenceAborted(Landroid/hardware/camera2/CameraDevice;I)V" />
-		<method name="onCaptureSequenceCompleted(Landroid/hardware/camera2/CameraDevice;IJ)V" />
-		<method name="onCaptureStarted(Landroid/hardware/camera2/CameraDevice;Landroid/hardware/camera2/CaptureRequest;J)V" />
-	</class>
-	<class name="android/hardware/camera2/CameraDevice$StateListener" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="onActive(Landroid/hardware/camera2/CameraDevice;)V" />
-		<method name="onBusy(Landroid/hardware/camera2/CameraDevice;)V" />
-		<method name="onClosed(Landroid/hardware/camera2/CameraDevice;)V" />
-		<method name="onDisconnected(Landroid/hardware/camera2/CameraDevice;)V" />
-		<method name="onError(Landroid/hardware/camera2/CameraDevice;I)V" />
-		<method name="onIdle(Landroid/hardware/camera2/CameraDevice;)V" />
-		<method name="onOpened(Landroid/hardware/camera2/CameraDevice;)V" />
-		<method name="onUnconfigured(Landroid/hardware/camera2/CameraDevice;)V" />
-		<field name="ERROR_CAMERA_DEVICE" />
-		<field name="ERROR_CAMERA_DISABLED" />
-		<field name="ERROR_CAMERA_IN_USE" />
-		<field name="ERROR_CAMERA_SERVICE" />
-		<field name="ERROR_MAX_CAMERAS_IN_USE" />
-	</class>
-	<class name="android/hardware/camera2/CameraManager" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="addAvailabilityListener(Landroid/hardware/camera2/CameraManager$AvailabilityListener;Landroid/os/Handler;)V" />
-		<method name="getCameraCharacteristics(Ljava/lang/String;)Landroid/hardware/camera2/CameraCharacteristics;" />
-		<method name="getCameraIdList()[Ljava/lang/String;" />
-		<method name="openCamera(Ljava/lang/String;Landroid/hardware/camera2/CameraDevice$StateListener;Landroid/os/Handler;)V" />
-		<method name="removeAvailabilityListener(Landroid/hardware/camera2/CameraManager$AvailabilityListener;)V" />
-	</class>
-	<class name="android/hardware/camera2/CameraManager$AvailabilityListener" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="onCameraAvailable(Ljava/lang/String;)V" />
-		<method name="onCameraUnavailable(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/hardware/camera2/CameraMetadata" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getKeys()Ljava/util/List;" />
-		<field name="COLOR_CORRECTION_MODE_FAST" />
-		<field name="COLOR_CORRECTION_MODE_HIGH_QUALITY" />
-		<field name="COLOR_CORRECTION_MODE_TRANSFORM_MATRIX" />
-		<field name="CONTROL_AE_ANTIBANDING_MODE_50HZ" />
-		<field name="CONTROL_AE_ANTIBANDING_MODE_60HZ" />
-		<field name="CONTROL_AE_ANTIBANDING_MODE_AUTO" />
-		<field name="CONTROL_AE_ANTIBANDING_MODE_OFF" />
-		<field name="CONTROL_AE_MODE_OFF" />
-		<field name="CONTROL_AE_MODE_ON" />
-		<field name="CONTROL_AE_MODE_ON_ALWAYS_FLASH" />
-		<field name="CONTROL_AE_MODE_ON_AUTO_FLASH" />
-		<field name="CONTROL_AE_MODE_ON_AUTO_FLASH_REDEYE" />
-		<field name="CONTROL_AE_PRECAPTURE_TRIGGER_IDLE" />
-		<field name="CONTROL_AE_PRECAPTURE_TRIGGER_START" />
-		<field name="CONTROL_AE_STATE_CONVERGED" />
-		<field name="CONTROL_AE_STATE_FLASH_REQUIRED" />
-		<field name="CONTROL_AE_STATE_INACTIVE" />
-		<field name="CONTROL_AE_STATE_LOCKED" />
-		<field name="CONTROL_AE_STATE_PRECAPTURE" />
-		<field name="CONTROL_AE_STATE_SEARCHING" />
-		<field name="CONTROL_AF_MODE_AUTO" />
-		<field name="CONTROL_AF_MODE_CONTINUOUS_PICTURE" />
-		<field name="CONTROL_AF_MODE_CONTINUOUS_VIDEO" />
-		<field name="CONTROL_AF_MODE_EDOF" />
-		<field name="CONTROL_AF_MODE_MACRO" />
-		<field name="CONTROL_AF_MODE_OFF" />
-		<field name="CONTROL_AF_STATE_ACTIVE_SCAN" />
-		<field name="CONTROL_AF_STATE_FOCUSED_LOCKED" />
-		<field name="CONTROL_AF_STATE_INACTIVE" />
-		<field name="CONTROL_AF_STATE_NOT_FOCUSED_LOCKED" />
-		<field name="CONTROL_AF_STATE_PASSIVE_FOCUSED" />
-		<field name="CONTROL_AF_STATE_PASSIVE_SCAN" />
-		<field name="CONTROL_AF_STATE_PASSIVE_UNFOCUSED" />
-		<field name="CONTROL_AF_TRIGGER_CANCEL" />
-		<field name="CONTROL_AF_TRIGGER_IDLE" />
-		<field name="CONTROL_AF_TRIGGER_START" />
-		<field name="CONTROL_AWB_MODE_AUTO" />
-		<field name="CONTROL_AWB_MODE_CLOUDY_DAYLIGHT" />
-		<field name="CONTROL_AWB_MODE_DAYLIGHT" />
-		<field name="CONTROL_AWB_MODE_FLUORESCENT" />
-		<field name="CONTROL_AWB_MODE_INCANDESCENT" />
-		<field name="CONTROL_AWB_MODE_OFF" />
-		<field name="CONTROL_AWB_MODE_SHADE" />
-		<field name="CONTROL_AWB_MODE_TWILIGHT" />
-		<field name="CONTROL_AWB_MODE_WARM_FLUORESCENT" />
-		<field name="CONTROL_AWB_STATE_CONVERGED" />
-		<field name="CONTROL_AWB_STATE_INACTIVE" />
-		<field name="CONTROL_AWB_STATE_LOCKED" />
-		<field name="CONTROL_AWB_STATE_SEARCHING" />
-		<field name="CONTROL_CAPTURE_INTENT_CUSTOM" />
-		<field name="CONTROL_CAPTURE_INTENT_MANUAL" />
-		<field name="CONTROL_CAPTURE_INTENT_PREVIEW" />
-		<field name="CONTROL_CAPTURE_INTENT_STILL_CAPTURE" />
-		<field name="CONTROL_CAPTURE_INTENT_VIDEO_RECORD" />
-		<field name="CONTROL_CAPTURE_INTENT_VIDEO_SNAPSHOT" />
-		<field name="CONTROL_CAPTURE_INTENT_ZERO_SHUTTER_LAG" />
-		<field name="CONTROL_EFFECT_MODE_AQUA" />
-		<field name="CONTROL_EFFECT_MODE_BLACKBOARD" />
-		<field name="CONTROL_EFFECT_MODE_MONO" />
-		<field name="CONTROL_EFFECT_MODE_NEGATIVE" />
-		<field name="CONTROL_EFFECT_MODE_OFF" />
-		<field name="CONTROL_EFFECT_MODE_POSTERIZE" />
-		<field name="CONTROL_EFFECT_MODE_SEPIA" />
-		<field name="CONTROL_EFFECT_MODE_SOLARIZE" />
-		<field name="CONTROL_EFFECT_MODE_WHITEBOARD" />
-		<field name="CONTROL_MODE_AUTO" />
-		<field name="CONTROL_MODE_OFF" />
-		<field name="CONTROL_MODE_OFF_KEEP_STATE" />
-		<field name="CONTROL_MODE_USE_SCENE_MODE" />
-		<field name="CONTROL_SCENE_MODE_ACTION" />
-		<field name="CONTROL_SCENE_MODE_BARCODE" />
-		<field name="CONTROL_SCENE_MODE_BEACH" />
-		<field name="CONTROL_SCENE_MODE_CANDLELIGHT" />
-		<field name="CONTROL_SCENE_MODE_DISABLED" />
-		<field name="CONTROL_SCENE_MODE_FACE_PRIORITY" />
-		<field name="CONTROL_SCENE_MODE_FIREWORKS" />
-		<field name="CONTROL_SCENE_MODE_LANDSCAPE" />
-		<field name="CONTROL_SCENE_MODE_NIGHT" />
-		<field name="CONTROL_SCENE_MODE_NIGHT_PORTRAIT" />
-		<field name="CONTROL_SCENE_MODE_PARTY" />
-		<field name="CONTROL_SCENE_MODE_PORTRAIT" />
-		<field name="CONTROL_SCENE_MODE_SNOW" />
-		<field name="CONTROL_SCENE_MODE_SPORTS" />
-		<field name="CONTROL_SCENE_MODE_STEADYPHOTO" />
-		<field name="CONTROL_SCENE_MODE_SUNSET" />
-		<field name="CONTROL_SCENE_MODE_THEATRE" />
-		<field name="CONTROL_VIDEO_STABILIZATION_MODE_OFF" />
-		<field name="CONTROL_VIDEO_STABILIZATION_MODE_ON" />
-		<field name="EDGE_MODE_FAST" />
-		<field name="EDGE_MODE_HIGH_QUALITY" />
-		<field name="EDGE_MODE_OFF" />
-		<field name="FLASH_MODE_OFF" />
-		<field name="FLASH_MODE_SINGLE" />
-		<field name="FLASH_MODE_TORCH" />
-		<field name="FLASH_STATE_CHARGING" />
-		<field name="FLASH_STATE_FIRED" />
-		<field name="FLASH_STATE_PARTIAL" />
-		<field name="FLASH_STATE_READY" />
-		<field name="FLASH_STATE_UNAVAILABLE" />
-		<field name="HOT_PIXEL_MODE_FAST" />
-		<field name="HOT_PIXEL_MODE_HIGH_QUALITY" />
-		<field name="HOT_PIXEL_MODE_OFF" />
-		<field name="INFO_SUPPORTED_HARDWARE_LEVEL_FULL" />
-		<field name="INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED" />
-		<field name="LENS_FACING_BACK" />
-		<field name="LENS_FACING_FRONT" />
-		<field name="LENS_INFO_FOCUS_DISTANCE_CALIBRATION_APPROXIMATE" />
-		<field name="LENS_INFO_FOCUS_DISTANCE_CALIBRATION_CALIBRATED" />
-		<field name="LENS_INFO_FOCUS_DISTANCE_CALIBRATION_UNCALIBRATED" />
-		<field name="LENS_OPTICAL_STABILIZATION_MODE_OFF" />
-		<field name="LENS_OPTICAL_STABILIZATION_MODE_ON" />
-		<field name="LENS_STATE_MOVING" />
-		<field name="LENS_STATE_STATIONARY" />
-		<field name="NOISE_REDUCTION_MODE_FAST" />
-		<field name="NOISE_REDUCTION_MODE_HIGH_QUALITY" />
-		<field name="NOISE_REDUCTION_MODE_OFF" />
-		<field name="REQUEST_AVAILABLE_CAPABILITIES_DNG" />
-		<field name="REQUEST_AVAILABLE_CAPABILITIES_MANUAL_POST_PROCESSING" />
-		<field name="REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSOR" />
-		<field name="SCALER_CROPPING_TYPE_CENTER_ONLY" />
-		<field name="SCALER_CROPPING_TYPE_FREEFORM" />
-		<field name="SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_BGGR" />
-		<field name="SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_GBRG" />
-		<field name="SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_GRBG" />
-		<field name="SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_RGB" />
-		<field name="SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_RGGB" />
-		<field name="SENSOR_REFERENCE_ILLUMINANT1_CLOUDY_WEATHER" />
-		<field name="SENSOR_REFERENCE_ILLUMINANT1_COOL_WHITE_FLUORESCENT" />
-		<field name="SENSOR_REFERENCE_ILLUMINANT1_D50" />
-		<field name="SENSOR_REFERENCE_ILLUMINANT1_D55" />
-		<field name="SENSOR_REFERENCE_ILLUMINANT1_D65" />
-		<field name="SENSOR_REFERENCE_ILLUMINANT1_D75" />
-		<field name="SENSOR_REFERENCE_ILLUMINANT1_DAYLIGHT" />
-		<field name="SENSOR_REFERENCE_ILLUMINANT1_DAYLIGHT_FLUORESCENT" />
-		<field name="SENSOR_REFERENCE_ILLUMINANT1_DAY_WHITE_FLUORESCENT" />
-		<field name="SENSOR_REFERENCE_ILLUMINANT1_FINE_WEATHER" />
-		<field name="SENSOR_REFERENCE_ILLUMINANT1_FLASH" />
-		<field name="SENSOR_REFERENCE_ILLUMINANT1_FLUORESCENT" />
-		<field name="SENSOR_REFERENCE_ILLUMINANT1_ISO_STUDIO_TUNGSTEN" />
-		<field name="SENSOR_REFERENCE_ILLUMINANT1_SHADE" />
-		<field name="SENSOR_REFERENCE_ILLUMINANT1_STANDARD_A" />
-		<field name="SENSOR_REFERENCE_ILLUMINANT1_STANDARD_B" />
-		<field name="SENSOR_REFERENCE_ILLUMINANT1_STANDARD_C" />
-		<field name="SENSOR_REFERENCE_ILLUMINANT1_TUNGSTEN" />
-		<field name="SENSOR_REFERENCE_ILLUMINANT1_WHITE_FLUORESCENT" />
-		<field name="SENSOR_TEST_PATTERN_MODE_COLOR_BARS" />
-		<field name="SENSOR_TEST_PATTERN_MODE_COLOR_BARS_FADE_TO_GRAY" />
-		<field name="SENSOR_TEST_PATTERN_MODE_CUSTOM1" />
-		<field name="SENSOR_TEST_PATTERN_MODE_OFF" />
-		<field name="SENSOR_TEST_PATTERN_MODE_PN9" />
-		<field name="SENSOR_TEST_PATTERN_MODE_SOLID_COLOR" />
-		<field name="SHADING_MODE_FAST" />
-		<field name="SHADING_MODE_HIGH_QUALITY" />
-		<field name="SHADING_MODE_OFF" />
-		<field name="STATISTICS_FACE_DETECT_MODE_FULL" />
-		<field name="STATISTICS_FACE_DETECT_MODE_OFF" />
-		<field name="STATISTICS_FACE_DETECT_MODE_SIMPLE" />
-		<field name="STATISTICS_LENS_SHADING_MAP_MODE_OFF" />
-		<field name="STATISTICS_LENS_SHADING_MAP_MODE_ON" />
-		<field name="STATISTICS_SCENE_FLICKER_50HZ" />
-		<field name="STATISTICS_SCENE_FLICKER_60HZ" />
-		<field name="STATISTICS_SCENE_FLICKER_NONE" />
-		<field name="SYNC_MAX_LATENCY_PER_FRAME_CONTROL" />
-		<field name="SYNC_MAX_LATENCY_UNKNOWN" />
-		<field name="TONEMAP_MODE_CONTRAST_CURVE" />
-		<field name="TONEMAP_MODE_FAST" />
-		<field name="TONEMAP_MODE_HIGH_QUALITY" />
-	</class>
-	<class name="android/hardware/camera2/CaptureFailure" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getFrameNumber()I" />
-		<method name="getReason()I" />
-		<method name="getRequest()Landroid/hardware/camera2/CaptureRequest;" />
-		<method name="getSequenceId()I" />
-		<method name="wasImageCaptured()Z" />
-		<field name="REASON_ERROR" />
-		<field name="REASON_FLUSHED" />
-	</class>
-	<class name="android/hardware/camera2/CaptureRequest" since="21">
-		<extends name="android/hardware/camera2/CameraMetadata" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="get(Landroid/hardware/camera2/CaptureRequest$Key;)Ljava/lang/Object;" />
-		<method name="getTag()Ljava/lang/Object;" />
-		<field name="BLACK_LEVEL_LOCK" />
-		<field name="COLOR_CORRECTION_GAINS" />
-		<field name="COLOR_CORRECTION_MODE" />
-		<field name="COLOR_CORRECTION_TRANSFORM" />
-		<field name="CONTROL_AE_ANTIBANDING_MODE" />
-		<field name="CONTROL_AE_EXPOSURE_COMPENSATION" />
-		<field name="CONTROL_AE_LOCK" />
-		<field name="CONTROL_AE_MODE" />
-		<field name="CONTROL_AE_PRECAPTURE_TRIGGER" />
-		<field name="CONTROL_AE_REGIONS" />
-		<field name="CONTROL_AE_TARGET_FPS_RANGE" />
-		<field name="CONTROL_AF_MODE" />
-		<field name="CONTROL_AF_REGIONS" />
-		<field name="CONTROL_AF_TRIGGER" />
-		<field name="CONTROL_AWB_LOCK" />
-		<field name="CONTROL_AWB_MODE" />
-		<field name="CONTROL_AWB_REGIONS" />
-		<field name="CONTROL_CAPTURE_INTENT" />
-		<field name="CONTROL_EFFECT_MODE" />
-		<field name="CONTROL_MODE" />
-		<field name="CONTROL_SCENE_MODE" />
-		<field name="CONTROL_VIDEO_STABILIZATION_MODE" />
-		<field name="CREATOR" />
-		<field name="EDGE_MODE" />
-		<field name="FLASH_MODE" />
-		<field name="HOT_PIXEL_MODE" />
-		<field name="JPEG_GPS_LOCATION" />
-		<field name="JPEG_ORIENTATION" />
-		<field name="JPEG_QUALITY" />
-		<field name="JPEG_THUMBNAIL_QUALITY" />
-		<field name="JPEG_THUMBNAIL_SIZE" />
-		<field name="LENS_APERTURE" />
-		<field name="LENS_FILTER_DENSITY" />
-		<field name="LENS_FOCAL_LENGTH" />
-		<field name="LENS_FOCUS_DISTANCE" />
-		<field name="LENS_OPTICAL_STABILIZATION_MODE" />
-		<field name="NOISE_REDUCTION_MODE" />
-		<field name="SCALER_CROP_REGION" />
-		<field name="SENSOR_EXPOSURE_TIME" />
-		<field name="SENSOR_FRAME_DURATION" />
-		<field name="SENSOR_SENSITIVITY" />
-		<field name="SENSOR_TEST_PATTERN_DATA" />
-		<field name="SENSOR_TEST_PATTERN_MODE" />
-		<field name="SHADING_MODE" />
-		<field name="STATISTICS_FACE_DETECT_MODE" />
-		<field name="STATISTICS_HOT_PIXEL_MAP_MODE" />
-		<field name="STATISTICS_LENS_SHADING_MAP_MODE" />
-		<field name="TONEMAP_CURVE" />
-		<field name="TONEMAP_MODE" />
-	</class>
-	<class name="android/hardware/camera2/CaptureRequest$Builder" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="addTarget(Landroid/view/Surface;)V" />
-		<method name="build()Landroid/hardware/camera2/CaptureRequest;" />
-		<method name="get(Landroid/hardware/camera2/CaptureRequest$Key;)Ljava/lang/Object;" />
-		<method name="removeTarget(Landroid/view/Surface;)V" />
-		<method name="set(Landroid/hardware/camera2/CaptureRequest$Key;Ljava/lang/Object;)V" />
-		<method name="setTag(Ljava/lang/Object;)V" />
-	</class>
-	<class name="android/hardware/camera2/CaptureRequest$Key" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getName()Ljava/lang/String;" />
-	</class>
-	<class name="android/hardware/camera2/CaptureResult" since="21">
-		<extends name="android/hardware/camera2/CameraMetadata" />
-		<method name="&lt;init>()V" />
-		<method name="get(Landroid/hardware/camera2/CaptureResult$Key;)Ljava/lang/Object;" />
-		<method name="getFrameNumber()I" />
-		<method name="getRequest()Landroid/hardware/camera2/CaptureRequest;" />
-		<method name="getSequenceId()I" />
-		<field name="BLACK_LEVEL_LOCK" />
-		<field name="COLOR_CORRECTION_GAINS" />
-		<field name="COLOR_CORRECTION_MODE" />
-		<field name="COLOR_CORRECTION_TRANSFORM" />
-		<field name="CONTROL_AE_ANTIBANDING_MODE" />
-		<field name="CONTROL_AE_EXPOSURE_COMPENSATION" />
-		<field name="CONTROL_AE_LOCK" />
-		<field name="CONTROL_AE_MODE" />
-		<field name="CONTROL_AE_PRECAPTURE_TRIGGER" />
-		<field name="CONTROL_AE_REGIONS" />
-		<field name="CONTROL_AE_STATE" />
-		<field name="CONTROL_AE_TARGET_FPS_RANGE" />
-		<field name="CONTROL_AF_MODE" />
-		<field name="CONTROL_AF_REGIONS" />
-		<field name="CONTROL_AF_STATE" />
-		<field name="CONTROL_AF_TRIGGER" />
-		<field name="CONTROL_AWB_LOCK" />
-		<field name="CONTROL_AWB_MODE" />
-		<field name="CONTROL_AWB_REGIONS" />
-		<field name="CONTROL_AWB_STATE" />
-		<field name="CONTROL_CAPTURE_INTENT" />
-		<field name="CONTROL_EFFECT_MODE" />
-		<field name="CONTROL_MODE" />
-		<field name="CONTROL_SCENE_MODE" />
-		<field name="CONTROL_VIDEO_STABILIZATION_MODE" />
-		<field name="EDGE_MODE" />
-		<field name="FLASH_MODE" />
-		<field name="FLASH_STATE" />
-		<field name="HOT_PIXEL_MODE" />
-		<field name="JPEG_GPS_LOCATION" />
-		<field name="JPEG_ORIENTATION" />
-		<field name="JPEG_QUALITY" />
-		<field name="JPEG_THUMBNAIL_QUALITY" />
-		<field name="JPEG_THUMBNAIL_SIZE" />
-		<field name="LENS_APERTURE" />
-		<field name="LENS_FILTER_DENSITY" />
-		<field name="LENS_FOCAL_LENGTH" />
-		<field name="LENS_FOCUS_DISTANCE" />
-		<field name="LENS_FOCUS_RANGE" />
-		<field name="LENS_OPTICAL_STABILIZATION_MODE" />
-		<field name="LENS_STATE" />
-		<field name="NOISE_REDUCTION_MODE" />
-		<field name="REQUEST_FRAME_COUNT" />
-		<field name="REQUEST_PIPELINE_DEPTH" />
-		<field name="SCALER_CROP_REGION" />
-		<field name="SENSOR_EXPOSURE_TIME" />
-		<field name="SENSOR_FRAME_DURATION" />
-		<field name="SENSOR_GREEN_SPLIT" />
-		<field name="SENSOR_NEUTRAL_COLOR_POINT" />
-		<field name="SENSOR_SENSITIVITY" />
-		<field name="SENSOR_TEST_PATTERN_DATA" />
-		<field name="SENSOR_TEST_PATTERN_MODE" />
-		<field name="SENSOR_TIMESTAMP" />
-		<field name="SHADING_MODE" />
-		<field name="STATISTICS_FACES" />
-		<field name="STATISTICS_FACE_DETECT_MODE" />
-		<field name="STATISTICS_HOT_PIXEL_MAP" />
-		<field name="STATISTICS_HOT_PIXEL_MAP_MODE" />
-		<field name="STATISTICS_LENS_SHADING_CORRECTION_MAP" />
-		<field name="STATISTICS_LENS_SHADING_MAP_MODE" />
-		<field name="STATISTICS_SCENE_FLICKER" />
-		<field name="TONEMAP_CURVE" />
-		<field name="TONEMAP_MODE" />
-	</class>
-	<class name="android/hardware/camera2/CaptureResult$Key" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getName()Ljava/lang/String;" />
-	</class>
-	<class name="android/hardware/camera2/DngCreator" since="21">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/AutoCloseable" />
-		<method name="&lt;init>(Landroid/hardware/camera2/CameraCharacteristics;Landroid/hardware/camera2/CaptureResult;)V" />
-		<method name="writeImage(Ljava/io/OutputStream;Landroid/media/Image;)V" />
-	</class>
-	<class name="android/hardware/camera2/TotalCaptureResult" since="21">
-		<extends name="android/hardware/camera2/CaptureResult" />
-		<method name="&lt;init>()V" />
-		<method name="getPartialResults()Ljava/util/List;" />
-	</class>
-	<class name="android/hardware/camera2/params/ColorSpaceTransform" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>([I)V" />
-		<method name="&lt;init>([Landroid/util/Rational;)V" />
-		<method name="copyElements([II)V" />
-		<method name="copyElements([Landroid/util/Rational;I)V" />
-		<method name="getElement(II)Landroid/util/Rational;" />
-	</class>
-	<class name="android/hardware/camera2/params/Face" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getBounds()Landroid/graphics/Rect;" />
-		<method name="getId()I" />
-		<method name="getLeftEyePosition()Landroid/graphics/Point;" />
-		<method name="getMouthPosition()Landroid/graphics/Point;" />
-		<method name="getRightEyePosition()Landroid/graphics/Point;" />
-		<method name="getScore()I" />
-		<field name="ID_UNSUPPORTED" />
-		<field name="SCORE_MAX" />
-		<field name="SCORE_MIN" />
-	</class>
-	<class name="android/hardware/camera2/params/LensShadingMap" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="copyGainFactors([FI)V" />
-		<method name="getColumnCount()I" />
-		<method name="getGainFactor(III)F" />
-		<method name="getGainFactorCount()I" />
-		<method name="getGainFactorVector(II)Landroid/hardware/camera2/params/RggbChannelVector;" />
-		<method name="getRowCount()I" />
-		<field name="MINIMUM_GAIN_FACTOR" />
-	</class>
-	<class name="android/hardware/camera2/params/MeteringRectangle" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(IIIII)V" />
-		<method name="&lt;init>(Landroid/graphics/Point;Landroid/util/Size;I)V" />
-		<method name="&lt;init>(Landroid/graphics/Rect;I)V" />
-		<method name="equals(Landroid/hardware/camera2/params/MeteringRectangle;)Z" />
-		<method name="getHeight()I" />
-		<method name="getMeteringWeight()I" />
-		<method name="getRect()Landroid/graphics/Rect;" />
-		<method name="getSize()Landroid/util/Size;" />
-		<method name="getUpperLeftPoint()Landroid/graphics/Point;" />
-		<method name="getWidth()I" />
-		<method name="getX()I" />
-		<method name="getY()I" />
-		<field name="METERING_WEIGHT_DONT_CARE" />
-		<field name="METERING_WEIGHT_MAX" />
-		<field name="METERING_WEIGHT_MIN" />
-	</class>
-	<class name="android/hardware/camera2/params/RggbChannelVector" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(FFFF)V" />
-		<method name="copyTo([FI)V" />
-		<method name="getBlue()F" />
-		<method name="getComponent(I)F" />
-		<method name="getGreenEven()F" />
-		<method name="getGreenOdd()F" />
-		<method name="getRed()F" />
-		<field name="BLUE" />
-		<field name="COUNT" />
-		<field name="GREEN_EVEN" />
-		<field name="GREEN_ODD" />
-		<field name="RED" />
-	</class>
-	<class name="android/hardware/camera2/params/StreamConfigurationMap" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getOutputFormats()[I" />
-		<method name="getOutputMinFrameDuration(ILandroid/util/Size;)J" />
-		<method name="getOutputMinFrameDuration(Ljava/lang/Class;Landroid/util/Size;)J" />
-		<method name="getOutputSizes(I)[Landroid/util/Size;" />
-		<method name="getOutputSizes(Ljava/lang/Class;)[Landroid/util/Size;" />
-		<method name="getOutputStallDuration(ILandroid/util/Size;)J" />
-		<method name="getOutputStallDuration(Ljava/lang/Class;Landroid/util/Size;)J" />
-		<method name="isOutputSupportedFor(I)Z" />
-		<method name="isOutputSupportedFor(Landroid/view/Surface;)Z" />
-		<method name="isOutputSupportedFor(Ljava/lang/Class;)Z" />
-	</class>
-	<class name="android/hardware/camera2/params/TonemapCurve" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>([F[F[F)V" />
-		<method name="copyColorCurve(I[FI)V" />
-		<method name="getPoint(II)Landroid/graphics/PointF;" />
-		<method name="getPointCount(I)I" />
-		<field name="CHANNEL_BLUE" />
-		<field name="CHANNEL_GREEN" />
-		<field name="CHANNEL_RED" />
-		<field name="LEVEL_BLACK" />
-		<field name="LEVEL_WHITE" />
-		<field name="POINT_SIZE" />
-	</class>
-	<class name="android/hardware/display/DisplayManager" since="17">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="createVirtualDisplay(Ljava/lang/String;IIILandroid/view/Surface;I)Landroid/hardware/display/VirtualDisplay;" since="19" />
-		<method name="getDisplay(I)Landroid/view/Display;" />
-		<method name="getDisplays()[Landroid/view/Display;" />
-		<method name="getDisplays(Ljava/lang/String;)[Landroid/view/Display;" />
-		<method name="registerDisplayListener(Landroid/hardware/display/DisplayManager$DisplayListener;Landroid/os/Handler;)V" />
-		<method name="unregisterDisplayListener(Landroid/hardware/display/DisplayManager$DisplayListener;)V" />
-		<field name="DISPLAY_CATEGORY_PRESENTATION" />
-		<field name="VIRTUAL_DISPLAY_FLAG_OWN_CONTENT_ONLY" since="20" />
-		<field name="VIRTUAL_DISPLAY_FLAG_PRESENTATION" since="19" />
-		<field name="VIRTUAL_DISPLAY_FLAG_PUBLIC" since="19" />
-		<field name="VIRTUAL_DISPLAY_FLAG_SECURE" since="19" />
-	</class>
-	<class name="android/hardware/display/DisplayManager$DisplayListener" since="17">
-		<extends name="java/lang/Object" />
-		<method name="onDisplayAdded(I)V" />
-		<method name="onDisplayChanged(I)V" />
-		<method name="onDisplayRemoved(I)V" />
-	</class>
-	<class name="android/hardware/display/VirtualDisplay" since="19">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getDisplay()Landroid/view/Display;" />
-		<method name="getSurface()Landroid/view/Surface;" since="20" />
-		<method name="release()V" />
-		<method name="setSurface(Landroid/view/Surface;)V" since="20" />
-	</class>
-	<class name="android/hardware/input/InputManager" since="16">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getInputDevice(I)Landroid/view/InputDevice;" />
-		<method name="getInputDeviceIds()[I" />
-		<method name="registerInputDeviceListener(Landroid/hardware/input/InputManager$InputDeviceListener;Landroid/os/Handler;)V" />
-		<method name="unregisterInputDeviceListener(Landroid/hardware/input/InputManager$InputDeviceListener;)V" />
-		<field name="ACTION_QUERY_KEYBOARD_LAYOUTS" />
-		<field name="META_DATA_KEYBOARD_LAYOUTS" />
-	</class>
-	<class name="android/hardware/input/InputManager$InputDeviceListener" since="16">
-		<extends name="java/lang/Object" />
-		<method name="onInputDeviceAdded(I)V" />
-		<method name="onInputDeviceChanged(I)V" />
-		<method name="onInputDeviceRemoved(I)V" />
-	</class>
-	<class name="android/hardware/location/GeofenceHardware" since="18">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="addGeofence(IILandroid/hardware/location/GeofenceHardwareRequest;Landroid/hardware/location/GeofenceHardwareCallback;)Z" />
-		<method name="getMonitoringTypes()[I" />
-		<method name="getStatusOfMonitoringType(I)I" />
-		<method name="pauseGeofence(II)Z" />
-		<method name="registerForMonitorStateChangeCallback(ILandroid/hardware/location/GeofenceHardwareMonitorCallback;)Z" />
-		<method name="removeGeofence(II)Z" />
-		<method name="resumeGeofence(III)Z" />
-		<method name="unregisterForMonitorStateChangeCallback(ILandroid/hardware/location/GeofenceHardwareMonitorCallback;)Z" />
-		<field name="GEOFENCE_ENTERED" />
-		<field name="GEOFENCE_ERROR_ID_EXISTS" />
-		<field name="GEOFENCE_ERROR_ID_UNKNOWN" />
-		<field name="GEOFENCE_ERROR_INVALID_TRANSITION" />
-		<field name="GEOFENCE_ERROR_TOO_MANY_GEOFENCES" />
-		<field name="GEOFENCE_EXITED" />
-		<field name="GEOFENCE_FAILURE" />
-		<field name="GEOFENCE_SUCCESS" />
-		<field name="GEOFENCE_UNCERTAIN" />
-		<field name="MONITORING_TYPE_GPS_HARDWARE" />
-		<field name="MONITOR_CURRENTLY_AVAILABLE" />
-		<field name="MONITOR_CURRENTLY_UNAVAILABLE" />
-		<field name="MONITOR_UNSUPPORTED" />
-	</class>
-	<class name="android/hardware/location/GeofenceHardwareCallback" since="18">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="onGeofenceAdd(II)V" />
-		<method name="onGeofencePause(II)V" />
-		<method name="onGeofenceRemove(II)V" />
-		<method name="onGeofenceResume(II)V" />
-		<method name="onGeofenceTransition(IILandroid/location/Location;JI)V" />
-	</class>
-	<class name="android/hardware/location/GeofenceHardwareMonitorCallback" since="18">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="onMonitoringSystemChange(IZLandroid/location/Location;)V" />
-	</class>
-	<class name="android/hardware/location/GeofenceHardwareRequest" since="18">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="createCircularGeofence(DDD)Landroid/hardware/location/GeofenceHardwareRequest;" />
-		<method name="getLastTransition()I" />
-		<method name="getLatitude()D" />
-		<method name="getLongitude()D" />
-		<method name="getMonitorTransitions()I" />
-		<method name="getNotificationResponsiveness()I" />
-		<method name="getRadius()D" />
-		<method name="getUnknownTimer()I" />
-		<method name="setLastTransition(I)V" />
-		<method name="setMonitorTransitions(I)V" />
-		<method name="setNotificationResponsiveness(I)V" />
-		<method name="setUnknownTimer(I)V" />
-	</class>
-	<class name="android/hardware/usb/UsbAccessory" since="12">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="getDescription()Ljava/lang/String;" />
-		<method name="getManufacturer()Ljava/lang/String;" />
-		<method name="getModel()Ljava/lang/String;" />
-		<method name="getSerial()Ljava/lang/String;" />
-		<method name="getUri()Ljava/lang/String;" />
-		<method name="getVersion()Ljava/lang/String;" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/hardware/usb/UsbConfiguration" since="21">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="getId()I" />
-		<method name="getInterface(I)Landroid/hardware/usb/UsbInterface;" />
-		<method name="getInterfaceCount()I" />
-		<method name="getMaxPower()I" />
-		<method name="getName()Ljava/lang/String;" />
-		<method name="isRemoteWakeup()Z" />
-		<method name="isSelfPowered()Z" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/hardware/usb/UsbConstants" since="12">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="USB_CLASS_APP_SPEC" />
-		<field name="USB_CLASS_AUDIO" />
-		<field name="USB_CLASS_CDC_DATA" />
-		<field name="USB_CLASS_COMM" />
-		<field name="USB_CLASS_CONTENT_SEC" />
-		<field name="USB_CLASS_CSCID" />
-		<field name="USB_CLASS_HID" />
-		<field name="USB_CLASS_HUB" />
-		<field name="USB_CLASS_MASS_STORAGE" />
-		<field name="USB_CLASS_MISC" />
-		<field name="USB_CLASS_PER_INTERFACE" />
-		<field name="USB_CLASS_PHYSICA" />
-		<field name="USB_CLASS_PRINTER" />
-		<field name="USB_CLASS_STILL_IMAGE" />
-		<field name="USB_CLASS_VENDOR_SPEC" />
-		<field name="USB_CLASS_VIDEO" />
-		<field name="USB_CLASS_WIRELESS_CONTROLLER" />
-		<field name="USB_DIR_IN" />
-		<field name="USB_DIR_OUT" />
-		<field name="USB_ENDPOINT_DIR_MASK" />
-		<field name="USB_ENDPOINT_NUMBER_MASK" />
-		<field name="USB_ENDPOINT_XFERTYPE_MASK" />
-		<field name="USB_ENDPOINT_XFER_BULK" />
-		<field name="USB_ENDPOINT_XFER_CONTROL" />
-		<field name="USB_ENDPOINT_XFER_INT" />
-		<field name="USB_ENDPOINT_XFER_ISOC" />
-		<field name="USB_INTERFACE_SUBCLASS_BOOT" />
-		<field name="USB_SUBCLASS_VENDOR_SPEC" />
-		<field name="USB_TYPE_CLASS" />
-		<field name="USB_TYPE_MASK" />
-		<field name="USB_TYPE_RESERVED" />
-		<field name="USB_TYPE_STANDARD" />
-		<field name="USB_TYPE_VENDOR" />
-	</class>
-	<class name="android/hardware/usb/UsbDevice" since="12">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="getConfiguration(I)Landroid/hardware/usb/UsbConfiguration;" since="21" />
-		<method name="getConfigurationCount()I" since="21" />
-		<method name="getDeviceClass()I" />
-		<method name="getDeviceId()I" />
-		<method name="getDeviceId(Ljava/lang/String;)I" />
-		<method name="getDeviceName()Ljava/lang/String;" />
-		<method name="getDeviceName(I)Ljava/lang/String;" />
-		<method name="getDeviceProtocol()I" />
-		<method name="getDeviceSubclass()I" />
-		<method name="getInterface(I)Landroid/hardware/usb/UsbInterface;" />
-		<method name="getInterfaceCount()I" />
-		<method name="getManufacturerName()Ljava/lang/String;" since="21" />
-		<method name="getProductId()I" />
-		<method name="getProductName()Ljava/lang/String;" since="21" />
-		<method name="getSerialNumber()Ljava/lang/String;" since="21" />
-		<method name="getVendorId()I" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/hardware/usb/UsbDeviceConnection" since="12">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="bulkTransfer(Landroid/hardware/usb/UsbEndpoint;[BII)I" />
-		<method name="bulkTransfer(Landroid/hardware/usb/UsbEndpoint;[BIII)I" since="18" />
-		<method name="claimInterface(Landroid/hardware/usb/UsbInterface;Z)Z" />
-		<method name="close()V" />
-		<method name="controlTransfer(IIII[BII)I" />
-		<method name="controlTransfer(IIII[BIII)I" since="18" />
-		<method name="getFileDescriptor()I" />
-		<method name="getRawDescriptors()[B" since="13" />
-		<method name="getSerial()Ljava/lang/String;" />
-		<method name="releaseInterface(Landroid/hardware/usb/UsbInterface;)Z" />
-		<method name="requestWait()Landroid/hardware/usb/UsbRequest;" />
-		<method name="setConfiguration(Landroid/hardware/usb/UsbConfiguration;)Z" since="21" />
-		<method name="setInterface(Landroid/hardware/usb/UsbInterface;)Z" since="21" />
-	</class>
-	<class name="android/hardware/usb/UsbEndpoint" since="12">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="getAddress()I" />
-		<method name="getAttributes()I" />
-		<method name="getDirection()I" />
-		<method name="getEndpointNumber()I" />
-		<method name="getInterval()I" />
-		<method name="getMaxPacketSize()I" />
-		<method name="getType()I" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/hardware/usb/UsbInterface" since="12">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="getAlternateSetting()I" since="21" />
-		<method name="getEndpoint(I)Landroid/hardware/usb/UsbEndpoint;" />
-		<method name="getEndpointCount()I" />
-		<method name="getId()I" />
-		<method name="getInterfaceClass()I" />
-		<method name="getInterfaceProtocol()I" />
-		<method name="getInterfaceSubclass()I" />
-		<method name="getName()Ljava/lang/String;" since="21" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/hardware/usb/UsbManager" since="12">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getAccessoryList()[Landroid/hardware/usb/UsbAccessory;" />
-		<method name="getDeviceList()Ljava/util/HashMap;" />
-		<method name="hasPermission(Landroid/hardware/usb/UsbAccessory;)Z" />
-		<method name="hasPermission(Landroid/hardware/usb/UsbDevice;)Z" />
-		<method name="openAccessory(Landroid/hardware/usb/UsbAccessory;)Landroid/os/ParcelFileDescriptor;" />
-		<method name="openDevice(Landroid/hardware/usb/UsbDevice;)Landroid/hardware/usb/UsbDeviceConnection;" />
-		<method name="requestPermission(Landroid/hardware/usb/UsbAccessory;Landroid/app/PendingIntent;)V" />
-		<method name="requestPermission(Landroid/hardware/usb/UsbDevice;Landroid/app/PendingIntent;)V" />
-		<field name="ACTION_USB_ACCESSORY_ATTACHED" />
-		<field name="ACTION_USB_ACCESSORY_DETACHED" />
-		<field name="ACTION_USB_DEVICE_ATTACHED" />
-		<field name="ACTION_USB_DEVICE_DETACHED" />
-		<field name="EXTRA_ACCESSORY" />
-		<field name="EXTRA_DEVICE" />
-		<field name="EXTRA_PERMISSION_GRANTED" />
-	</class>
-	<class name="android/hardware/usb/UsbRequest" since="12">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="cancel()Z" />
-		<method name="close()V" />
-		<method name="getClientData()Ljava/lang/Object;" />
-		<method name="getEndpoint()Landroid/hardware/usb/UsbEndpoint;" />
-		<method name="initialize(Landroid/hardware/usb/UsbDeviceConnection;Landroid/hardware/usb/UsbEndpoint;)Z" />
-		<method name="queue(Ljava/nio/ByteBuffer;I)Z" />
-		<method name="setClientData(Ljava/lang/Object;)V" />
-	</class>
-	<class name="android/inputmethodservice/AbstractInputMethodService" since="3">
-		<extends name="android/app/Service" />
-		<implements name="android/view/KeyEvent$Callback" />
-		<method name="&lt;init>()V" />
-		<method name="getKeyDispatcherState()Landroid/view/KeyEvent$DispatcherState;" since="5" />
-		<method name="onCreateInputMethodInterface()Landroid/inputmethodservice/AbstractInputMethodService$AbstractInputMethodImpl;" />
-		<method name="onCreateInputMethodSessionInterface()Landroid/inputmethodservice/AbstractInputMethodService$AbstractInputMethodSessionImpl;" />
-		<method name="onGenericMotionEvent(Landroid/view/MotionEvent;)Z" since="17" />
-		<method name="onTrackballEvent(Landroid/view/MotionEvent;)Z" />
-	</class>
-	<class name="android/inputmethodservice/AbstractInputMethodService$AbstractInputMethodImpl" since="3">
-		<extends name="java/lang/Object" />
-		<implements name="android/view/inputmethod/InputMethod" />
-		<method name="&lt;init>(Landroid/inputmethodservice/AbstractInputMethodService;)V" />
-	</class>
-	<class name="android/inputmethodservice/AbstractInputMethodService$AbstractInputMethodSessionImpl" since="3">
-		<extends name="java/lang/Object" />
-		<implements name="android/view/inputmethod/InputMethodSession" />
-		<method name="&lt;init>(Landroid/inputmethodservice/AbstractInputMethodService;)V" />
-		<method name="isEnabled()Z" />
-		<method name="isRevoked()Z" />
-		<method name="revokeSelf()V" />
-		<method name="setEnabled(Z)V" />
-	</class>
-	<class name="android/inputmethodservice/ExtractEditText" since="3">
-		<extends name="android/widget/EditText" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-		<method name="finishInternalChanges()V" />
-		<method name="hasVerticalScrollBar()Z" />
-		<method name="startInternalChanges()V" />
-	</class>
-	<class name="android/inputmethodservice/InputMethodService" since="3">
-		<extends name="android/inputmethodservice/AbstractInputMethodService" />
-		<method name="&lt;init>()V" />
-		<method name="enableHardwareAcceleration()Z" since="17" />
-		<method name="getBackDisposition()I" since="11" />
-		<method name="getCandidatesHiddenVisibility()I" />
-		<method name="getCurrentInputBinding()Landroid/view/inputmethod/InputBinding;" />
-		<method name="getCurrentInputConnection()Landroid/view/inputmethod/InputConnection;" />
-		<method name="getCurrentInputEditorInfo()Landroid/view/inputmethod/EditorInfo;" />
-		<method name="getCurrentInputStarted()Z" />
-		<method name="getInputMethodWindowRecommendedHeight()I" since="21" />
-		<method name="getLayoutInflater()Landroid/view/LayoutInflater;" />
-		<method name="getMaxWidth()I" />
-		<method name="getTextForImeAction(I)Ljava/lang/CharSequence;" />
-		<method name="getWindow()Landroid/app/Dialog;" />
-		<method name="hideStatusIcon()V" />
-		<method name="hideWindow()V" />
-		<method name="isExtractViewShown()Z" />
-		<method name="isFullscreenMode()Z" />
-		<method name="isInputViewShown()Z" />
-		<method name="isShowInputRequested()Z" />
-		<method name="onAppPrivateCommand(Ljava/lang/String;Landroid/os/Bundle;)V" />
-		<method name="onBindInput()V" />
-		<method name="onComputeInsets(Landroid/inputmethodservice/InputMethodService$Insets;)V" />
-		<method name="onConfigureWindow(Landroid/view/Window;ZZ)V" />
-		<method name="onCreateCandidatesView()Landroid/view/View;" />
-		<method name="onCreateExtractTextView()Landroid/view/View;" />
-		<method name="onCreateInputView()Landroid/view/View;" />
-		<method name="onCurrentInputMethodSubtypeChanged(Landroid/view/inputmethod/InputMethodSubtype;)V" since="11" />
-		<method name="onDisplayCompletions([Landroid/view/inputmethod/CompletionInfo;)V" />
-		<method name="onEvaluateFullscreenMode()Z" />
-		<method name="onEvaluateInputViewShown()Z" />
-		<method name="onExtractTextContextMenuItem(I)Z" />
-		<method name="onExtractedCursorMovement(II)V" />
-		<method name="onExtractedSelectionChanged(II)V" />
-		<method name="onExtractedTextClicked()V" />
-		<method name="onExtractingInputChanged(Landroid/view/inputmethod/EditorInfo;)V" />
-		<method name="onFinishCandidatesView(Z)V" />
-		<method name="onFinishInput()V" />
-		<method name="onFinishInputView(Z)V" />
-		<method name="onInitializeInterface()V" />
-		<method name="onShowInputRequested(IZ)Z" />
-		<method name="onStartCandidatesView(Landroid/view/inputmethod/EditorInfo;Z)V" />
-		<method name="onStartInput(Landroid/view/inputmethod/EditorInfo;Z)V" />
-		<method name="onStartInputView(Landroid/view/inputmethod/EditorInfo;Z)V" />
-		<method name="onUnbindInput()V" />
-		<method name="onUpdateCursor(Landroid/graphics/Rect;)V" />
-		<method name="onUpdateCursorAnchorInfo(Landroid/view/inputmethod/CursorAnchorInfo;)V" since="21" />
-		<method name="onUpdateExtractedText(ILandroid/view/inputmethod/ExtractedText;)V" />
-		<method name="onUpdateExtractingViews(Landroid/view/inputmethod/EditorInfo;)V" />
-		<method name="onUpdateExtractingVisibility(Landroid/view/inputmethod/EditorInfo;)V" />
-		<method name="onUpdateSelection(IIIIII)V" />
-		<method name="onViewClicked(Z)V" since="14" />
-		<method name="onWindowHidden()V" />
-		<method name="onWindowShown()V" />
-		<method name="requestHideSelf(I)V" />
-		<method name="sendDefaultEditorAction(Z)Z" />
-		<method name="sendDownUpKeyEvents(I)V" />
-		<method name="sendKeyChar(C)V" />
-		<method name="setBackDisposition(I)V" since="11" />
-		<method name="setCandidatesView(Landroid/view/View;)V" />
-		<method name="setCandidatesViewShown(Z)V" />
-		<method name="setCursorAnchorMonitorMode(I)V" since="21" />
-		<method name="setExtractView(Landroid/view/View;)V" />
-		<method name="setExtractViewShown(Z)V" />
-		<method name="setInputView(Landroid/view/View;)V" />
-		<method name="showStatusIcon(I)V" />
-		<method name="showWindow(Z)V" />
-		<method name="switchInputMethod(Ljava/lang/String;)V" />
-		<method name="updateFullscreenMode()V" />
-		<method name="updateInputViewShown()V" />
-		<field name="BACK_DISPOSITION_DEFAULT" since="11" />
-		<field name="BACK_DISPOSITION_WILL_DISMISS" since="11" />
-		<field name="BACK_DISPOSITION_WILL_NOT_DISMISS" since="11" />
-		<field name="CURSOR_ANCHOR_MONITOR_MODE_CURSOR_RECT" since="21" />
-		<field name="CURSOR_ANCHOR_MONITOR_MODE_NONE" since="21" />
-	</class>
-	<class name="android/inputmethodservice/InputMethodService$InputMethodImpl" since="3">
-		<extends name="android/inputmethodservice/AbstractInputMethodService$AbstractInputMethodImpl" />
-		<method name="&lt;init>(Landroid/inputmethodservice/InputMethodService;)V" />
-	</class>
-	<class name="android/inputmethodservice/InputMethodService$InputMethodSessionImpl" since="3">
-		<extends name="android/inputmethodservice/AbstractInputMethodService$AbstractInputMethodSessionImpl" />
-		<method name="&lt;init>(Landroid/inputmethodservice/InputMethodService;)V" />
-	</class>
-	<class name="android/inputmethodservice/InputMethodService$Insets" since="3">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="TOUCHABLE_INSETS_CONTENT" />
-		<field name="TOUCHABLE_INSETS_FRAME" />
-		<field name="TOUCHABLE_INSETS_REGION" since="11" />
-		<field name="TOUCHABLE_INSETS_VISIBLE" />
-		<field name="contentTopInsets" />
-		<field name="touchableInsets" />
-		<field name="touchableRegion" since="11" />
-		<field name="visibleTopInsets" />
-	</class>
-	<class name="android/inputmethodservice/Keyboard" since="3">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/content/Context;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;II)V" />
-		<method name="&lt;init>(Landroid/content/Context;IIII)V" since="11" />
-		<method name="&lt;init>(Landroid/content/Context;ILjava/lang/CharSequence;II)V" />
-		<method name="createKeyFromXml(Landroid/content/res/Resources;Landroid/inputmethodservice/Keyboard$Row;IILandroid/content/res/XmlResourceParser;)Landroid/inputmethodservice/Keyboard$Key;" />
-		<method name="createRowFromXml(Landroid/content/res/Resources;Landroid/content/res/XmlResourceParser;)Landroid/inputmethodservice/Keyboard$Row;" />
-		<method name="getHeight()I" />
-		<method name="getHorizontalGap()I" />
-		<method name="getKeyHeight()I" />
-		<method name="getKeyWidth()I" />
-		<method name="getKeys()Ljava/util/List;" />
-		<method name="getMinWidth()I" />
-		<method name="getModifierKeys()Ljava/util/List;" />
-		<method name="getNearestKeys(II)[I" />
-		<method name="getShiftKeyIndex()I" />
-		<method name="getVerticalGap()I" />
-		<method name="isShifted()Z" />
-		<method name="setHorizontalGap(I)V" />
-		<method name="setKeyHeight(I)V" />
-		<method name="setKeyWidth(I)V" />
-		<method name="setShifted(Z)Z" />
-		<method name="setVerticalGap(I)V" />
-		<field name="EDGE_BOTTOM" />
-		<field name="EDGE_LEFT" />
-		<field name="EDGE_RIGHT" />
-		<field name="EDGE_TOP" />
-		<field name="KEYCODE_ALT" />
-		<field name="KEYCODE_CANCEL" />
-		<field name="KEYCODE_DELETE" />
-		<field name="KEYCODE_DONE" />
-		<field name="KEYCODE_MODE_CHANGE" />
-		<field name="KEYCODE_SHIFT" />
-	</class>
-	<class name="android/inputmethodservice/Keyboard$Key" since="3">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/content/res/Resources;Landroid/inputmethodservice/Keyboard$Row;IILandroid/content/res/XmlResourceParser;)V" />
-		<method name="&lt;init>(Landroid/inputmethodservice/Keyboard$Row;)V" />
-		<method name="getCurrentDrawableState()[I" />
-		<method name="isInside(II)Z" />
-		<method name="onPressed()V" />
-		<method name="onReleased(Z)V" />
-		<method name="squaredDistanceFrom(II)I" />
-		<field name="codes" />
-		<field name="edgeFlags" />
-		<field name="gap" />
-		<field name="height" />
-		<field name="icon" />
-		<field name="iconPreview" />
-		<field name="label" />
-		<field name="modifier" />
-		<field name="on" />
-		<field name="popupCharacters" />
-		<field name="popupResId" />
-		<field name="pressed" />
-		<field name="repeatable" />
-		<field name="sticky" />
-		<field name="text" />
-		<field name="width" />
-		<field name="x" />
-		<field name="y" />
-	</class>
-	<class name="android/inputmethodservice/Keyboard$Row" since="3">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/content/res/Resources;Landroid/inputmethodservice/Keyboard;Landroid/content/res/XmlResourceParser;)V" />
-		<method name="&lt;init>(Landroid/inputmethodservice/Keyboard;)V" />
-		<field name="defaultHeight" />
-		<field name="defaultHorizontalGap" />
-		<field name="defaultWidth" />
-		<field name="mode" />
-		<field name="rowEdgeFlags" />
-		<field name="verticalGap" />
-	</class>
-	<class name="android/inputmethodservice/KeyboardView" since="3">
-		<extends name="android/view/View" />
-		<implements name="android/view/View$OnClickListener" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-		<method name="closing()V" />
-		<method name="getKeyboard()Landroid/inputmethodservice/Keyboard;" />
-		<method name="getOnKeyboardActionListener()Landroid/inputmethodservice/KeyboardView$OnKeyboardActionListener;" />
-		<method name="handleBack()Z" />
-		<method name="invalidateAllKeys()V" since="4" />
-		<method name="invalidateKey(I)V" since="4" />
-		<method name="isPreviewEnabled()Z" />
-		<method name="isProximityCorrectionEnabled()Z" />
-		<method name="isShifted()Z" />
-		<method name="onLongPress(Landroid/inputmethodservice/Keyboard$Key;)Z" />
-		<method name="setKeyboard(Landroid/inputmethodservice/Keyboard;)V" />
-		<method name="setOnKeyboardActionListener(Landroid/inputmethodservice/KeyboardView$OnKeyboardActionListener;)V" />
-		<method name="setPopupOffset(II)V" />
-		<method name="setPopupParent(Landroid/view/View;)V" />
-		<method name="setPreviewEnabled(Z)V" />
-		<method name="setProximityCorrectionEnabled(Z)V" />
-		<method name="setShifted(Z)Z" />
-		<method name="setVerticalCorrection(I)V" />
-		<method name="swipeDown()V" />
-		<method name="swipeLeft()V" />
-		<method name="swipeRight()V" />
-		<method name="swipeUp()V" />
-	</class>
-	<class name="android/inputmethodservice/KeyboardView$OnKeyboardActionListener" since="3">
-		<extends name="java/lang/Object" />
-		<method name="onKey(I[I)V" />
-		<method name="onPress(I)V" />
-		<method name="onRelease(I)V" />
-		<method name="onText(Ljava/lang/CharSequence;)V" />
-		<method name="swipeDown()V" />
-		<method name="swipeLeft()V" />
-		<method name="swipeRight()V" />
-		<method name="swipeUp()V" />
-	</class>
-	<class name="android/location/Address" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>(Ljava/util/Locale;)V" />
-		<method name="clearLatitude()V" />
-		<method name="clearLongitude()V" />
-		<method name="getAddressLine(I)Ljava/lang/String;" />
-		<method name="getAdminArea()Ljava/lang/String;" />
-		<method name="getCountryCode()Ljava/lang/String;" />
-		<method name="getCountryName()Ljava/lang/String;" />
-		<method name="getExtras()Landroid/os/Bundle;" />
-		<method name="getFeatureName()Ljava/lang/String;" />
-		<method name="getLatitude()D" />
-		<method name="getLocale()Ljava/util/Locale;" />
-		<method name="getLocality()Ljava/lang/String;" />
-		<method name="getLongitude()D" />
-		<method name="getMaxAddressLineIndex()I" />
-		<method name="getPhone()Ljava/lang/String;" />
-		<method name="getPostalCode()Ljava/lang/String;" />
-		<method name="getPremises()Ljava/lang/String;" since="4" />
-		<method name="getSubAdminArea()Ljava/lang/String;" />
-		<method name="getSubLocality()Ljava/lang/String;" since="4" />
-		<method name="getSubThoroughfare()Ljava/lang/String;" since="4" />
-		<method name="getThoroughfare()Ljava/lang/String;" />
-		<method name="getUrl()Ljava/lang/String;" />
-		<method name="hasLatitude()Z" />
-		<method name="hasLongitude()Z" />
-		<method name="setAddressLine(ILjava/lang/String;)V" />
-		<method name="setAdminArea(Ljava/lang/String;)V" />
-		<method name="setCountryCode(Ljava/lang/String;)V" />
-		<method name="setCountryName(Ljava/lang/String;)V" />
-		<method name="setExtras(Landroid/os/Bundle;)V" />
-		<method name="setFeatureName(Ljava/lang/String;)V" />
-		<method name="setLatitude(D)V" />
-		<method name="setLocality(Ljava/lang/String;)V" />
-		<method name="setLongitude(D)V" />
-		<method name="setPhone(Ljava/lang/String;)V" />
-		<method name="setPostalCode(Ljava/lang/String;)V" />
-		<method name="setPremises(Ljava/lang/String;)V" since="4" />
-		<method name="setSubAdminArea(Ljava/lang/String;)V" />
-		<method name="setSubLocality(Ljava/lang/String;)V" since="4" />
-		<method name="setSubThoroughfare(Ljava/lang/String;)V" since="4" />
-		<method name="setThoroughfare(Ljava/lang/String;)V" />
-		<method name="setUrl(Ljava/lang/String;)V" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/location/Criteria" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/location/Criteria;)V" />
-		<method name="getAccuracy()I" />
-		<method name="getBearingAccuracy()I" since="9" />
-		<method name="getHorizontalAccuracy()I" since="9" />
-		<method name="getPowerRequirement()I" />
-		<method name="getSpeedAccuracy()I" since="9" />
-		<method name="getVerticalAccuracy()I" since="9" />
-		<method name="isAltitudeRequired()Z" />
-		<method name="isBearingRequired()Z" />
-		<method name="isCostAllowed()Z" />
-		<method name="isSpeedRequired()Z" />
-		<method name="setAccuracy(I)V" />
-		<method name="setAltitudeRequired(Z)V" />
-		<method name="setBearingAccuracy(I)V" since="9" />
-		<method name="setBearingRequired(Z)V" />
-		<method name="setCostAllowed(Z)V" />
-		<method name="setHorizontalAccuracy(I)V" since="9" />
-		<method name="setPowerRequirement(I)V" />
-		<method name="setSpeedAccuracy(I)V" since="9" />
-		<method name="setSpeedRequired(Z)V" />
-		<method name="setVerticalAccuracy(I)V" since="9" />
-		<field name="ACCURACY_COARSE" />
-		<field name="ACCURACY_FINE" />
-		<field name="ACCURACY_HIGH" since="9" />
-		<field name="ACCURACY_LOW" since="9" />
-		<field name="ACCURACY_MEDIUM" since="9" />
-		<field name="CREATOR" />
-		<field name="NO_REQUIREMENT" />
-		<field name="POWER_HIGH" />
-		<field name="POWER_LOW" />
-		<field name="POWER_MEDIUM" />
-	</class>
-	<class name="android/location/Geocoder" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Ljava/util/Locale;)V" />
-		<method name="getFromLocation(DDI)Ljava/util/List;" />
-		<method name="getFromLocationName(Ljava/lang/String;I)Ljava/util/List;" />
-		<method name="getFromLocationName(Ljava/lang/String;IDDDD)Ljava/util/List;" />
-		<method name="isPresent()Z" since="9" />
-	</class>
-	<class name="android/location/GpsSatellite" since="3">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getAzimuth()F" />
-		<method name="getElevation()F" />
-		<method name="getPrn()I" />
-		<method name="getSnr()F" />
-		<method name="hasAlmanac()Z" />
-		<method name="hasEphemeris()Z" />
-		<method name="usedInFix()Z" />
-	</class>
-	<class name="android/location/GpsStatus" since="3">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getMaxSatellites()I" />
-		<method name="getSatellites()Ljava/lang/Iterable;" />
-		<method name="getTimeToFirstFix()I" />
-		<field name="GPS_EVENT_FIRST_FIX" />
-		<field name="GPS_EVENT_SATELLITE_STATUS" />
-		<field name="GPS_EVENT_STARTED" />
-		<field name="GPS_EVENT_STOPPED" />
-	</class>
-	<class name="android/location/GpsStatus$Listener" since="3">
-		<extends name="java/lang/Object" />
-		<method name="onGpsStatusChanged(I)V" />
-	</class>
-	<class name="android/location/GpsStatus$NmeaListener" since="5">
-		<extends name="java/lang/Object" />
-		<method name="onNmeaReceived(JLjava/lang/String;)V" />
-	</class>
-	<class name="android/location/Location" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>(Landroid/location/Location;)V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="bearingTo(Landroid/location/Location;)F" />
-		<method name="convert(DI)Ljava/lang/String;" />
-		<method name="convert(Ljava/lang/String;)D" />
-		<method name="distanceBetween(DDDD[F)V" />
-		<method name="distanceTo(Landroid/location/Location;)F" />
-		<method name="dump(Landroid/util/Printer;Ljava/lang/String;)V" since="3" />
-		<method name="getAccuracy()F" />
-		<method name="getAltitude()D" />
-		<method name="getBearing()F" />
-		<method name="getElapsedRealtimeNanos()J" since="17" />
-		<method name="getExtras()Landroid/os/Bundle;" />
-		<method name="getLatitude()D" />
-		<method name="getLongitude()D" />
-		<method name="getProvider()Ljava/lang/String;" />
-		<method name="getSpeed()F" />
-		<method name="getTime()J" />
-		<method name="hasAccuracy()Z" />
-		<method name="hasAltitude()Z" />
-		<method name="hasBearing()Z" />
-		<method name="hasSpeed()Z" />
-		<method name="isFromMockProvider()Z" since="18" />
-		<method name="removeAccuracy()V" />
-		<method name="removeAltitude()V" />
-		<method name="removeBearing()V" />
-		<method name="removeSpeed()V" />
-		<method name="reset()V" />
-		<method name="set(Landroid/location/Location;)V" />
-		<method name="setAccuracy(F)V" />
-		<method name="setAltitude(D)V" />
-		<method name="setBearing(F)V" />
-		<method name="setElapsedRealtimeNanos(J)V" since="17" />
-		<method name="setExtras(Landroid/os/Bundle;)V" />
-		<method name="setLatitude(D)V" />
-		<method name="setLongitude(D)V" />
-		<method name="setProvider(Ljava/lang/String;)V" />
-		<method name="setSpeed(F)V" />
-		<method name="setTime(J)V" />
-		<field name="CREATOR" />
-		<field name="FORMAT_DEGREES" />
-		<field name="FORMAT_MINUTES" />
-		<field name="FORMAT_SECONDS" />
-	</class>
-	<class name="android/location/LocationListener" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onLocationChanged(Landroid/location/Location;)V" />
-		<method name="onProviderDisabled(Ljava/lang/String;)V" />
-		<method name="onProviderEnabled(Ljava/lang/String;)V" />
-		<method name="onStatusChanged(Ljava/lang/String;ILandroid/os/Bundle;)V" />
-	</class>
-	<class name="android/location/LocationManager" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="addGpsStatusListener(Landroid/location/GpsStatus$Listener;)Z" since="3" />
-		<method name="addNmeaListener(Landroid/location/GpsStatus$NmeaListener;)Z" since="5" />
-		<method name="addProximityAlert(DDFJLandroid/app/PendingIntent;)V" />
-		<method name="addTestProvider(Ljava/lang/String;ZZZZZZZII)V" since="3" />
-		<method name="clearTestProviderEnabled(Ljava/lang/String;)V" since="3" />
-		<method name="clearTestProviderLocation(Ljava/lang/String;)V" since="3" />
-		<method name="clearTestProviderStatus(Ljava/lang/String;)V" since="3" />
-		<method name="getAllProviders()Ljava/util/List;" />
-		<method name="getBestProvider(Landroid/location/Criteria;Z)Ljava/lang/String;" />
-		<method name="getGpsStatus(Landroid/location/GpsStatus;)Landroid/location/GpsStatus;" since="3" />
-		<method name="getLastKnownLocation(Ljava/lang/String;)Landroid/location/Location;" />
-		<method name="getProvider(Ljava/lang/String;)Landroid/location/LocationProvider;" />
-		<method name="getProviders(Landroid/location/Criteria;Z)Ljava/util/List;" />
-		<method name="getProviders(Z)Ljava/util/List;" />
-		<method name="isProviderEnabled(Ljava/lang/String;)Z" />
-		<method name="removeGpsStatusListener(Landroid/location/GpsStatus$Listener;)V" since="3" />
-		<method name="removeNmeaListener(Landroid/location/GpsStatus$NmeaListener;)V" since="5" />
-		<method name="removeProximityAlert(Landroid/app/PendingIntent;)V" />
-		<method name="removeTestProvider(Ljava/lang/String;)V" since="3" />
-		<method name="removeUpdates(Landroid/app/PendingIntent;)V" since="3" />
-		<method name="removeUpdates(Landroid/location/LocationListener;)V" />
-		<method name="requestLocationUpdates(JFLandroid/location/Criteria;Landroid/app/PendingIntent;)V" since="9" />
-		<method name="requestLocationUpdates(JFLandroid/location/Criteria;Landroid/location/LocationListener;Landroid/os/Looper;)V" since="9" />
-		<method name="requestLocationUpdates(Ljava/lang/String;JFLandroid/app/PendingIntent;)V" since="3" />
-		<method name="requestLocationUpdates(Ljava/lang/String;JFLandroid/location/LocationListener;)V" />
-		<method name="requestLocationUpdates(Ljava/lang/String;JFLandroid/location/LocationListener;Landroid/os/Looper;)V" />
-		<method name="requestSingleUpdate(Landroid/location/Criteria;Landroid/app/PendingIntent;)V" since="9" />
-		<method name="requestSingleUpdate(Landroid/location/Criteria;Landroid/location/LocationListener;Landroid/os/Looper;)V" since="9" />
-		<method name="requestSingleUpdate(Ljava/lang/String;Landroid/app/PendingIntent;)V" since="9" />
-		<method name="requestSingleUpdate(Ljava/lang/String;Landroid/location/LocationListener;Landroid/os/Looper;)V" since="9" />
-		<method name="sendExtraCommand(Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;)Z" since="3" />
-		<method name="setTestProviderEnabled(Ljava/lang/String;Z)V" since="3" />
-		<method name="setTestProviderLocation(Ljava/lang/String;Landroid/location/Location;)V" since="3" />
-		<method name="setTestProviderStatus(Ljava/lang/String;ILandroid/os/Bundle;J)V" since="3" />
-		<field name="GPS_PROVIDER" />
-		<field name="KEY_LOCATION_CHANGED" since="3" />
-		<field name="KEY_PROVIDER_ENABLED" since="3" />
-		<field name="KEY_PROXIMITY_ENTERING" />
-		<field name="KEY_STATUS_CHANGED" since="3" />
-		<field name="MODE_CHANGED_ACTION" since="19" />
-		<field name="NETWORK_PROVIDER" />
-		<field name="PASSIVE_PROVIDER" since="8" />
-		<field name="PROVIDERS_CHANGED_ACTION" since="9" />
-	</class>
-	<class name="android/location/LocationProvider" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getAccuracy()I" />
-		<method name="getName()Ljava/lang/String;" />
-		<method name="getPowerRequirement()I" />
-		<method name="hasMonetaryCost()Z" />
-		<method name="meetsCriteria(Landroid/location/Criteria;)Z" />
-		<method name="requiresCell()Z" />
-		<method name="requiresNetwork()Z" />
-		<method name="requiresSatellite()Z" />
-		<method name="supportsAltitude()Z" />
-		<method name="supportsBearing()Z" />
-		<method name="supportsSpeed()Z" />
-		<field name="AVAILABLE" />
-		<field name="OUT_OF_SERVICE" />
-		<field name="TEMPORARILY_UNAVAILABLE" />
-	</class>
-	<class name="android/location/SettingInjectorService" since="19">
-		<extends name="android/app/Service" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="onGetEnabled()Z" />
-		<method name="onGetSummary()Ljava/lang/String;" />
-		<field name="ACTION_INJECTED_SETTING_CHANGED" />
-		<field name="ACTION_SERVICE_INTENT" />
-		<field name="ATTRIBUTES_NAME" />
-		<field name="META_DATA_NAME" />
-	</class>
-	<class name="android/media/AsyncPlayer" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="play(Landroid/content/Context;Landroid/net/Uri;ZI)V" />
-		<method name="stop()V" />
-	</class>
-	<class name="android/media/AudioFormat" since="3">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="CHANNEL_CONFIGURATION_DEFAULT" />
-		<field name="CHANNEL_CONFIGURATION_INVALID" />
-		<field name="CHANNEL_CONFIGURATION_MONO" />
-		<field name="CHANNEL_CONFIGURATION_STEREO" />
-		<field name="CHANNEL_INVALID" since="5" />
-		<field name="CHANNEL_IN_BACK" since="5" />
-		<field name="CHANNEL_IN_BACK_PROCESSED" since="5" />
-		<field name="CHANNEL_IN_DEFAULT" since="5" />
-		<field name="CHANNEL_IN_FRONT" since="5" />
-		<field name="CHANNEL_IN_FRONT_PROCESSED" since="5" />
-		<field name="CHANNEL_IN_LEFT" since="5" />
-		<field name="CHANNEL_IN_LEFT_PROCESSED" since="5" />
-		<field name="CHANNEL_IN_MONO" since="5" />
-		<field name="CHANNEL_IN_PRESSURE" since="5" />
-		<field name="CHANNEL_IN_RIGHT" since="5" />
-		<field name="CHANNEL_IN_RIGHT_PROCESSED" since="5" />
-		<field name="CHANNEL_IN_STEREO" since="5" />
-		<field name="CHANNEL_IN_VOICE_DNLINK" since="5" />
-		<field name="CHANNEL_IN_VOICE_UPLINK" since="5" />
-		<field name="CHANNEL_IN_X_AXIS" since="5" />
-		<field name="CHANNEL_IN_Y_AXIS" since="5" />
-		<field name="CHANNEL_IN_Z_AXIS" since="5" />
-		<field name="CHANNEL_OUT_5POINT1" since="5" />
-		<field name="CHANNEL_OUT_7POINT1" since="5" />
-		<field name="CHANNEL_OUT_BACK_CENTER" since="5" />
-		<field name="CHANNEL_OUT_BACK_LEFT" since="5" />
-		<field name="CHANNEL_OUT_BACK_RIGHT" since="5" />
-		<field name="CHANNEL_OUT_DEFAULT" since="5" />
-		<field name="CHANNEL_OUT_FRONT_CENTER" since="5" />
-		<field name="CHANNEL_OUT_FRONT_LEFT" since="5" />
-		<field name="CHANNEL_OUT_FRONT_LEFT_OF_CENTER" since="5" />
-		<field name="CHANNEL_OUT_FRONT_RIGHT" since="5" />
-		<field name="CHANNEL_OUT_FRONT_RIGHT_OF_CENTER" since="5" />
-		<field name="CHANNEL_OUT_LOW_FREQUENCY" since="5" />
-		<field name="CHANNEL_OUT_MONO" since="5" />
-		<field name="CHANNEL_OUT_QUAD" since="5" />
-		<field name="CHANNEL_OUT_STEREO" since="5" />
-		<field name="CHANNEL_OUT_SURROUND" since="5" />
-		<field name="ENCODING_DEFAULT" />
-		<field name="ENCODING_INVALID" />
-		<field name="ENCODING_PCM_16BIT" />
-		<field name="ENCODING_PCM_8BIT" />
-		<field name="ENCODING_PCM_FLOAT" since="21" />
-	</class>
-	<class name="android/media/AudioManager" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="abandonAudioFocus(Landroid/media/AudioManager$OnAudioFocusChangeListener;)I" since="8" />
-		<method name="adjustStreamVolume(III)V" />
-		<method name="adjustSuggestedStreamVolume(III)V" />
-		<method name="adjustVolume(II)V" />
-		<method name="dispatchMediaKeyEvent(Landroid/view/KeyEvent;)V" since="19" />
-		<method name="getMode()I" />
-		<method name="getParameters(Ljava/lang/String;)Ljava/lang/String;" since="5" />
-		<method name="getProperty(Ljava/lang/String;)Ljava/lang/String;" since="17" />
-		<method name="getRingerMode()I" />
-		<method name="getRouting(I)I" />
-		<method name="getStreamMaxVolume(I)I" />
-		<method name="getStreamVolume(I)I" />
-		<method name="getVibrateSetting(I)I" />
-		<method name="isBluetoothA2dpOn()Z" since="3" />
-		<method name="isBluetoothScoAvailableOffCall()Z" since="8" />
-		<method name="isBluetoothScoOn()Z" />
-		<method name="isMicrophoneMute()Z" />
-		<method name="isMusicActive()Z" />
-		<method name="isSpeakerphoneOn()Z" />
-		<method name="isWiredHeadsetOn()Z" since="5" />
-		<method name="loadSoundEffects()V" />
-		<method name="playSoundEffect(I)V" />
-		<method name="playSoundEffect(IF)V" since="3" />
-		<method name="registerMediaButtonEventReceiver(Landroid/app/PendingIntent;)V" since="18" />
-		<method name="registerMediaButtonEventReceiver(Landroid/content/ComponentName;)V" since="8" />
-		<method name="registerRemoteControlClient(Landroid/media/RemoteControlClient;)V" since="14" />
-		<method name="registerRemoteController(Landroid/media/RemoteController;)Z" since="19" />
-		<method name="requestAudioFocus(Landroid/media/AudioManager$OnAudioFocusChangeListener;II)I" since="8" />
-		<method name="setBluetoothA2dpOn(Z)V" since="3" />
-		<method name="setBluetoothScoOn(Z)V" />
-		<method name="setMicrophoneMute(Z)V" />
-		<method name="setMode(I)V" />
-		<method name="setParameters(Ljava/lang/String;)V" since="5" />
-		<method name="setRingerMode(I)V" />
-		<method name="setRouting(III)V" />
-		<method name="setSpeakerphoneOn(Z)V" />
-		<method name="setStreamMute(IZ)V" />
-		<method name="setStreamSolo(IZ)V" />
-		<method name="setStreamVolume(III)V" />
-		<method name="setVibrateSetting(II)V" />
-		<method name="setWiredHeadsetOn(Z)V" since="5" />
-		<method name="shouldVibrate(I)Z" />
-		<method name="startBluetoothSco()V" since="8" />
-		<method name="stopBluetoothSco()V" since="8" />
-		<method name="unloadSoundEffects()V" />
-		<method name="unregisterMediaButtonEventReceiver(Landroid/app/PendingIntent;)V" since="18" />
-		<method name="unregisterMediaButtonEventReceiver(Landroid/content/ComponentName;)V" since="8" />
-		<method name="unregisterRemoteControlClient(Landroid/media/RemoteControlClient;)V" since="14" />
-		<method name="unregisterRemoteController(Landroid/media/RemoteController;)V" since="19" />
-		<field name="ACTION_AUDIO_BECOMING_NOISY" since="3" />
-		<field name="ACTION_SCO_AUDIO_STATE_CHANGED" since="8" />
-		<field name="ACTION_SCO_AUDIO_STATE_UPDATED" since="14" />
-		<field name="ADJUST_LOWER" />
-		<field name="ADJUST_RAISE" />
-		<field name="ADJUST_SAME" />
-		<field name="AUDIOFOCUS_GAIN" since="8" />
-		<field name="AUDIOFOCUS_GAIN_TRANSIENT" since="8" />
-		<field name="AUDIOFOCUS_GAIN_TRANSIENT_EXCLUSIVE" since="19" />
-		<field name="AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK" since="8" />
-		<field name="AUDIOFOCUS_LOSS" since="8" />
-		<field name="AUDIOFOCUS_LOSS_TRANSIENT" since="8" />
-		<field name="AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK" since="8" />
-		<field name="AUDIOFOCUS_REQUEST_FAILED" since="8" />
-		<field name="AUDIOFOCUS_REQUEST_GRANTED" since="8" />
-		<field name="EXTRA_RINGER_MODE" />
-		<field name="EXTRA_SCO_AUDIO_PREVIOUS_STATE" since="14" />
-		<field name="EXTRA_SCO_AUDIO_STATE" since="8" />
-		<field name="EXTRA_VIBRATE_SETTING" />
-		<field name="EXTRA_VIBRATE_TYPE" />
-		<field name="FLAG_ALLOW_RINGER_MODES" />
-		<field name="FLAG_PLAY_SOUND" />
-		<field name="FLAG_REMOVE_SOUND_AND_VIBRATE" />
-		<field name="FLAG_SHOW_UI" />
-		<field name="FLAG_VIBRATE" />
-		<field name="FX_FOCUS_NAVIGATION_DOWN" />
-		<field name="FX_FOCUS_NAVIGATION_LEFT" />
-		<field name="FX_FOCUS_NAVIGATION_RIGHT" />
-		<field name="FX_FOCUS_NAVIGATION_UP" />
-		<field name="FX_KEYPRESS_DELETE" since="3" />
-		<field name="FX_KEYPRESS_INVALID" since="19" />
-		<field name="FX_KEYPRESS_RETURN" since="3" />
-		<field name="FX_KEYPRESS_SPACEBAR" since="3" />
-		<field name="FX_KEYPRESS_STANDARD" since="3" />
-		<field name="FX_KEY_CLICK" />
-		<field name="MODE_CURRENT" />
-		<field name="MODE_INVALID" />
-		<field name="MODE_IN_CALL" />
-		<field name="MODE_IN_COMMUNICATION" since="11" />
-		<field name="MODE_NORMAL" />
-		<field name="MODE_RINGTONE" />
-		<field name="NUM_STREAMS" />
-		<field name="PROPERTY_OUTPUT_FRAMES_PER_BUFFER" since="17" />
-		<field name="PROPERTY_OUTPUT_SAMPLE_RATE" since="17" />
-		<field name="RINGER_MODE_CHANGED_ACTION" />
-		<field name="RINGER_MODE_NORMAL" />
-		<field name="RINGER_MODE_SILENT" />
-		<field name="RINGER_MODE_VIBRATE" />
-		<field name="ROUTE_ALL" />
-		<field name="ROUTE_BLUETOOTH" />
-		<field name="ROUTE_BLUETOOTH_A2DP" since="3" />
-		<field name="ROUTE_BLUETOOTH_SCO" since="3" />
-		<field name="ROUTE_EARPIECE" />
-		<field name="ROUTE_HEADSET" />
-		<field name="ROUTE_SPEAKER" />
-		<field name="SCO_AUDIO_STATE_CONNECTED" since="8" />
-		<field name="SCO_AUDIO_STATE_CONNECTING" since="14" />
-		<field name="SCO_AUDIO_STATE_DISCONNECTED" since="8" />
-		<field name="SCO_AUDIO_STATE_ERROR" since="8" />
-		<field name="STREAM_ALARM" />
-		<field name="STREAM_DTMF" since="5" />
-		<field name="STREAM_MUSIC" />
-		<field name="STREAM_NOTIFICATION" since="3" />
-		<field name="STREAM_RING" />
-		<field name="STREAM_SYSTEM" />
-		<field name="STREAM_VOICE_CALL" />
-		<field name="USE_DEFAULT_STREAM_TYPE" />
-		<field name="VIBRATE_SETTING_CHANGED_ACTION" />
-		<field name="VIBRATE_SETTING_OFF" />
-		<field name="VIBRATE_SETTING_ON" />
-		<field name="VIBRATE_SETTING_ONLY_SILENT" />
-		<field name="VIBRATE_TYPE_NOTIFICATION" />
-		<field name="VIBRATE_TYPE_RINGER" />
-	</class>
-	<class name="android/media/AudioManager$OnAudioFocusChangeListener" since="8">
-		<extends name="java/lang/Object" />
-		<method name="onAudioFocusChange(I)V" />
-	</class>
-	<class name="android/media/AudioRecord" since="3">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(IIIII)V" />
-		<method name="getAudioFormat()I" />
-		<method name="getAudioSessionId()I" since="16" />
-		<method name="getAudioSource()I" />
-		<method name="getChannelConfiguration()I" />
-		<method name="getChannelCount()I" />
-		<method name="getMinBufferSize(III)I" />
-		<method name="getNotificationMarkerPosition()I" />
-		<method name="getPositionNotificationPeriod()I" />
-		<method name="getRecordingState()I" />
-		<method name="getSampleRate()I" />
-		<method name="getState()I" />
-		<method name="read(Ljava/nio/ByteBuffer;I)I" />
-		<method name="read([BII)I" />
-		<method name="read([SII)I" />
-		<method name="release()V" />
-		<method name="setNotificationMarkerPosition(I)I" />
-		<method name="setPositionNotificationPeriod(I)I" />
-		<method name="setRecordPositionUpdateListener(Landroid/media/AudioRecord$OnRecordPositionUpdateListener;)V" />
-		<method name="setRecordPositionUpdateListener(Landroid/media/AudioRecord$OnRecordPositionUpdateListener;Landroid/os/Handler;)V" />
-		<method name="startRecording()V" />
-		<method name="startRecording(Landroid/media/MediaSyncEvent;)V" since="16" />
-		<method name="stop()V" />
-		<field name="ERROR" />
-		<field name="ERROR_BAD_VALUE" />
-		<field name="ERROR_INVALID_OPERATION" />
-		<field name="RECORDSTATE_RECORDING" />
-		<field name="RECORDSTATE_STOPPED" />
-		<field name="STATE_INITIALIZED" />
-		<field name="STATE_UNINITIALIZED" />
-		<field name="SUCCESS" />
-	</class>
-	<class name="android/media/AudioRecord$OnRecordPositionUpdateListener" since="3">
-		<extends name="java/lang/Object" />
-		<method name="onMarkerReached(Landroid/media/AudioRecord;)V" />
-		<method name="onPeriodicNotification(Landroid/media/AudioRecord;)V" />
-	</class>
-	<class name="android/media/AudioTimestamp" since="19">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="framePosition" />
-		<field name="nanoTime" />
-	</class>
-	<class name="android/media/AudioTrack" since="3">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(IIIIII)V" />
-		<method name="&lt;init>(IIIIIII)V" since="9" />
-		<method name="attachAuxEffect(I)I" since="9" />
-		<method name="flush()V" />
-		<method name="getAudioFormat()I" />
-		<method name="getAudioSessionId()I" since="9" />
-		<method name="getChannelConfiguration()I" />
-		<method name="getChannelCount()I" />
-		<method name="getMaxVolume()F" />
-		<method name="getMinBufferSize(III)I" />
-		<method name="getMinVolume()F" />
-		<method name="getNativeFrameCount()I" />
-		<method name="getNativeOutputSampleRate(I)I" />
-		<method name="getNotificationMarkerPosition()I" />
-		<method name="getPlayState()I" />
-		<method name="getPlaybackHeadPosition()I" />
-		<method name="getPlaybackRate()I" />
-		<method name="getPositionNotificationPeriod()I" />
-		<method name="getSampleRate()I" />
-		<method name="getState()I" />
-		<method name="getStreamType()I" />
-		<method name="getTimestamp(Landroid/media/AudioTimestamp;)Z" since="19" />
-		<method name="pause()V" />
-		<method name="play()V" />
-		<method name="release()V" />
-		<method name="reloadStaticData()I" />
-		<method name="setAuxEffectSendLevel(F)I" since="9" />
-		<method name="setLoopPoints(III)I" />
-		<method name="setNotificationMarkerPosition(I)I" />
-		<method name="setPlaybackHeadPosition(I)I" />
-		<method name="setPlaybackPositionUpdateListener(Landroid/media/AudioTrack$OnPlaybackPositionUpdateListener;)V" />
-		<method name="setPlaybackPositionUpdateListener(Landroid/media/AudioTrack$OnPlaybackPositionUpdateListener;Landroid/os/Handler;)V" />
-		<method name="setPlaybackRate(I)I" />
-		<method name="setPositionNotificationPeriod(I)I" />
-		<method name="setState(I)V" />
-		<method name="setStereoVolume(FF)I" />
-		<method name="setVolume(F)I" since="21" />
-		<method name="stop()V" />
-		<method name="write(Ljava/nio/ByteBuffer;II)I" since="21" />
-		<method name="write([BII)I" />
-		<method name="write([FIII)I" since="21" />
-		<method name="write([SII)I" />
-		<field name="ERROR" />
-		<field name="ERROR_BAD_VALUE" />
-		<field name="ERROR_INVALID_OPERATION" />
-		<field name="MODE_STATIC" />
-		<field name="MODE_STREAM" />
-		<field name="PLAYSTATE_PAUSED" />
-		<field name="PLAYSTATE_PLAYING" />
-		<field name="PLAYSTATE_STOPPED" />
-		<field name="STATE_INITIALIZED" />
-		<field name="STATE_NO_STATIC_DATA" />
-		<field name="STATE_UNINITIALIZED" />
-		<field name="SUCCESS" />
-		<field name="WRITE_BLOCKING" since="21" />
-		<field name="WRITE_NON_BLOCKING" since="21" />
-	</class>
-	<class name="android/media/AudioTrack$OnPlaybackPositionUpdateListener" since="3">
-		<extends name="java/lang/Object" />
-		<method name="onMarkerReached(Landroid/media/AudioTrack;)V" />
-		<method name="onPeriodicNotification(Landroid/media/AudioTrack;)V" />
-	</class>
-	<class name="android/media/CamcorderProfile" since="8">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="get(I)Landroid/media/CamcorderProfile;" />
-		<method name="get(II)Landroid/media/CamcorderProfile;" since="9" />
-		<method name="hasProfile(I)Z" since="11" />
-		<method name="hasProfile(II)Z" since="11" />
-		<field name="QUALITY_1080P" since="11" />
-		<field name="QUALITY_480P" since="11" />
-		<field name="QUALITY_720P" since="11" />
-		<field name="QUALITY_CIF" since="11" />
-		<field name="QUALITY_HIGH" />
-		<field name="QUALITY_LOW" />
-		<field name="QUALITY_QCIF" since="11" />
-		<field name="QUALITY_QVGA" since="15" />
-		<field name="QUALITY_TIME_LAPSE_1080P" since="11" />
-		<field name="QUALITY_TIME_LAPSE_480P" since="11" />
-		<field name="QUALITY_TIME_LAPSE_720P" since="11" />
-		<field name="QUALITY_TIME_LAPSE_CIF" since="11" />
-		<field name="QUALITY_TIME_LAPSE_HIGH" since="11" />
-		<field name="QUALITY_TIME_LAPSE_LOW" since="11" />
-		<field name="QUALITY_TIME_LAPSE_QCIF" since="11" />
-		<field name="QUALITY_TIME_LAPSE_QVGA" since="15" />
-		<field name="audioBitRate" />
-		<field name="audioChannels" />
-		<field name="audioCodec" />
-		<field name="audioSampleRate" />
-		<field name="duration" />
-		<field name="fileFormat" />
-		<field name="quality" />
-		<field name="videoBitRate" />
-		<field name="videoCodec" />
-		<field name="videoFrameHeight" />
-		<field name="videoFrameRate" />
-		<field name="videoFrameWidth" />
-	</class>
-	<class name="android/media/CameraProfile" since="8">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getJpegEncodingQualityParameter(I)I" />
-		<method name="getJpegEncodingQualityParameter(II)I" since="9" />
-		<field name="QUALITY_HIGH" />
-		<field name="QUALITY_LOW" />
-		<field name="QUALITY_MEDIUM" />
-	</class>
-	<class name="android/media/DeniedByServerException" since="18">
-		<extends name="android/media/MediaDrmException" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/media/ExifInterface" since="5">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="getAltitude(D)D" since="9" />
-		<method name="getAttribute(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="getAttributeDouble(Ljava/lang/String;D)D" since="8" />
-		<method name="getAttributeInt(Ljava/lang/String;I)I" />
-		<method name="getLatLong([F)Z" />
-		<method name="getThumbnail()[B" />
-		<method name="hasThumbnail()Z" />
-		<method name="saveAttributes()V" />
-		<method name="setAttribute(Ljava/lang/String;Ljava/lang/String;)V" />
-		<field name="ORIENTATION_FLIP_HORIZONTAL" />
-		<field name="ORIENTATION_FLIP_VERTICAL" />
-		<field name="ORIENTATION_NORMAL" />
-		<field name="ORIENTATION_ROTATE_180" />
-		<field name="ORIENTATION_ROTATE_270" />
-		<field name="ORIENTATION_ROTATE_90" />
-		<field name="ORIENTATION_TRANSPOSE" />
-		<field name="ORIENTATION_TRANSVERSE" />
-		<field name="ORIENTATION_UNDEFINED" />
-		<field name="TAG_APERTURE" since="11" />
-		<field name="TAG_DATETIME" />
-		<field name="TAG_EXPOSURE_TIME" since="11" />
-		<field name="TAG_FLASH" />
-		<field name="TAG_FOCAL_LENGTH" since="8" />
-		<field name="TAG_GPS_ALTITUDE" since="9" />
-		<field name="TAG_GPS_ALTITUDE_REF" since="9" />
-		<field name="TAG_GPS_DATESTAMP" since="8" />
-		<field name="TAG_GPS_LATITUDE" />
-		<field name="TAG_GPS_LATITUDE_REF" />
-		<field name="TAG_GPS_LONGITUDE" />
-		<field name="TAG_GPS_LONGITUDE_REF" />
-		<field name="TAG_GPS_PROCESSING_METHOD" since="8" />
-		<field name="TAG_GPS_TIMESTAMP" since="8" />
-		<field name="TAG_IMAGE_LENGTH" />
-		<field name="TAG_IMAGE_WIDTH" />
-		<field name="TAG_ISO" since="11" />
-		<field name="TAG_MAKE" />
-		<field name="TAG_MODEL" />
-		<field name="TAG_ORIENTATION" />
-		<field name="TAG_WHITE_BALANCE" />
-		<field name="WHITEBALANCE_AUTO" />
-		<field name="WHITEBALANCE_MANUAL" />
-	</class>
-	<class name="android/media/FaceDetector" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(III)V" />
-		<method name="findFaces(Landroid/graphics/Bitmap;[Landroid/media/FaceDetector$Face;)I" />
-	</class>
-	<class name="android/media/FaceDetector$Face" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/media/FaceDetector;)V" />
-		<method name="confidence()F" />
-		<method name="eyesDistance()F" />
-		<method name="getMidPoint(Landroid/graphics/PointF;)V" />
-		<method name="pose(I)F" />
-		<field name="CONFIDENCE_THRESHOLD" />
-		<field name="EULER_X" />
-		<field name="EULER_Y" />
-		<field name="EULER_Z" />
-	</class>
-	<class name="android/media/Image" since="19">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/AutoCloseable" />
-		<method name="&lt;init>()V" />
-		<method name="getFormat()I" />
-		<method name="getHeight()I" />
-		<method name="getPlanes()[Landroid/media/Image$Plane;" />
-		<method name="getTimestamp()J" />
-		<method name="getWidth()I" />
-	</class>
-	<class name="android/media/Image$Plane" since="19">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getBuffer()Ljava/nio/ByteBuffer;" />
-		<method name="getPixelStride()I" />
-		<method name="getRowStride()I" />
-	</class>
-	<class name="android/media/ImageReader" since="19">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/AutoCloseable" />
-		<method name="&lt;init>()V" />
-		<method name="acquireLatestImage()Landroid/media/Image;" />
-		<method name="acquireNextImage()Landroid/media/Image;" />
-		<method name="getHeight()I" />
-		<method name="getImageFormat()I" />
-		<method name="getMaxImages()I" />
-		<method name="getSurface()Landroid/view/Surface;" />
-		<method name="getWidth()I" />
-		<method name="newInstance(IIII)Landroid/media/ImageReader;" />
-		<method name="setOnImageAvailableListener(Landroid/media/ImageReader$OnImageAvailableListener;Landroid/os/Handler;)V" />
-	</class>
-	<class name="android/media/ImageReader$OnImageAvailableListener" since="19">
-		<extends name="java/lang/Object" />
-		<method name="onImageAvailable(Landroid/media/ImageReader;)V" />
-	</class>
-	<class name="android/media/JetPlayer" since="3">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="clearQueue()Z" />
-		<method name="closeJetFile()Z" />
-		<method name="getJetPlayer()Landroid/media/JetPlayer;" />
-		<method name="getMaxTracks()I" />
-		<method name="loadJetFile(Landroid/content/res/AssetFileDescriptor;)Z" />
-		<method name="loadJetFile(Ljava/lang/String;)Z" />
-		<method name="pause()Z" />
-		<method name="play()Z" />
-		<method name="queueJetSegment(IIIIIB)Z" />
-		<method name="queueJetSegmentMuteArray(IIII[ZB)Z" />
-		<method name="release()V" />
-		<method name="setEventListener(Landroid/media/JetPlayer$OnJetEventListener;)V" />
-		<method name="setEventListener(Landroid/media/JetPlayer$OnJetEventListener;Landroid/os/Handler;)V" />
-		<method name="setMuteArray([ZZ)Z" />
-		<method name="setMuteFlag(IZZ)Z" />
-		<method name="setMuteFlags(IZ)Z" />
-		<method name="triggerClip(I)Z" />
-	</class>
-	<class name="android/media/JetPlayer$OnJetEventListener" since="3">
-		<extends name="java/lang/Object" />
-		<method name="onJetEvent(Landroid/media/JetPlayer;SBBBB)V" />
-		<method name="onJetNumQueuedSegmentUpdate(Landroid/media/JetPlayer;I)V" />
-		<method name="onJetPauseUpdate(Landroid/media/JetPlayer;I)V" />
-		<method name="onJetUserIdUpdate(Landroid/media/JetPlayer;II)V" />
-	</class>
-	<class name="android/media/MediaActionSound" since="16">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="load(I)V" />
-		<method name="play(I)V" />
-		<method name="release()V" />
-		<field name="FOCUS_COMPLETE" />
-		<field name="SHUTTER_CLICK" />
-		<field name="START_VIDEO_RECORDING" />
-		<field name="STOP_VIDEO_RECORDING" />
-	</class>
-	<class name="android/media/MediaCodec" since="16">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="configure(Landroid/media/MediaFormat;Landroid/view/Surface;Landroid/media/MediaCrypto;I)V" />
-		<method name="createByCodecName(Ljava/lang/String;)Landroid/media/MediaCodec;" />
-		<method name="createDecoderByType(Ljava/lang/String;)Landroid/media/MediaCodec;" />
-		<method name="createEncoderByType(Ljava/lang/String;)Landroid/media/MediaCodec;" />
-		<method name="createInputSurface()Landroid/view/Surface;" since="18" />
-		<method name="dequeueInputBuffer(J)I" />
-		<method name="dequeueOutputBuffer(Landroid/media/MediaCodec$BufferInfo;J)I" />
-		<method name="flush()V" />
-		<method name="getCodecInfo()Landroid/media/MediaCodecInfo;" since="18" />
-		<method name="getInputBuffers()[Ljava/nio/ByteBuffer;" />
-		<method name="getName()Ljava/lang/String;" since="18" />
-		<method name="getOutputBuffers()[Ljava/nio/ByteBuffer;" />
-		<method name="getOutputFormat()Landroid/media/MediaFormat;" />
-		<method name="queueInputBuffer(IIIJI)V" />
-		<method name="queueSecureInputBuffer(IILandroid/media/MediaCodec$CryptoInfo;JI)V" />
-		<method name="release()V" />
-		<method name="releaseOutputBuffer(IJ)V" since="21" />
-		<method name="releaseOutputBuffer(IZ)V" />
-		<method name="setParameters(Landroid/os/Bundle;)V" since="19" />
-		<method name="setVideoScalingMode(I)V" />
-		<method name="signalEndOfInputStream()V" since="18" />
-		<method name="start()V" />
-		<method name="stop()V" />
-		<field name="BUFFER_FLAG_CODEC_CONFIG" />
-		<field name="BUFFER_FLAG_END_OF_STREAM" />
-		<field name="BUFFER_FLAG_SYNC_FRAME" />
-		<field name="CONFIGURE_FLAG_ENCODE" />
-		<field name="CRYPTO_MODE_AES_CTR" />
-		<field name="CRYPTO_MODE_UNENCRYPTED" />
-		<field name="INFO_OUTPUT_BUFFERS_CHANGED" />
-		<field name="INFO_OUTPUT_FORMAT_CHANGED" />
-		<field name="INFO_TRY_AGAIN_LATER" />
-		<field name="PARAMETER_KEY_REQUEST_SYNC_FRAME" since="19" />
-		<field name="PARAMETER_KEY_SUSPEND" since="19" />
-		<field name="PARAMETER_KEY_VIDEO_BITRATE" since="19" />
-		<field name="VIDEO_SCALING_MODE_SCALE_TO_FIT" />
-		<field name="VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING" />
-	</class>
-	<class name="android/media/MediaCodec$BufferInfo" since="16">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="set(IIJI)V" />
-		<field name="flags" />
-		<field name="offset" />
-		<field name="presentationTimeUs" />
-		<field name="size" />
-	</class>
-	<class name="android/media/MediaCodec$CryptoException" since="16">
-		<extends name="java/lang/RuntimeException" />
-		<method name="&lt;init>(ILjava/lang/String;)V" />
-		<method name="getErrorCode()I" />
-		<field name="ERROR_KEY_EXPIRED" since="19" />
-		<field name="ERROR_NO_KEY" since="19" />
-		<field name="ERROR_RESOURCE_BUSY" since="19" />
-	</class>
-	<class name="android/media/MediaCodec$CryptoInfo" since="16">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="set(I[I[I[B[BI)V" />
-		<field name="iv" />
-		<field name="key" />
-		<field name="mode" />
-		<field name="numBytesOfClearData" />
-		<field name="numBytesOfEncryptedData" />
-		<field name="numSubSamples" />
-	</class>
-	<class name="android/media/MediaCodecInfo" since="16">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getCapabilitiesForType(Ljava/lang/String;)Landroid/media/MediaCodecInfo$CodecCapabilities;" />
-		<method name="getName()Ljava/lang/String;" />
-		<method name="getSupportedTypes()[Ljava/lang/String;" />
-		<method name="isEncoder()Z" />
-	</class>
-	<class name="android/media/MediaCodecInfo$CodecCapabilities" since="16">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="isFeatureSupported(Ljava/lang/String;)Z" since="19" />
-		<field name="COLOR_Format12bitRGB444" />
-		<field name="COLOR_Format16bitARGB1555" />
-		<field name="COLOR_Format16bitARGB4444" />
-		<field name="COLOR_Format16bitBGR565" />
-		<field name="COLOR_Format16bitRGB565" />
-		<field name="COLOR_Format18BitBGR666" />
-		<field name="COLOR_Format18bitARGB1665" />
-		<field name="COLOR_Format18bitRGB666" />
-		<field name="COLOR_Format19bitARGB1666" />
-		<field name="COLOR_Format24BitABGR6666" />
-		<field name="COLOR_Format24BitARGB6666" />
-		<field name="COLOR_Format24bitARGB1887" />
-		<field name="COLOR_Format24bitBGR888" />
-		<field name="COLOR_Format24bitRGB888" />
-		<field name="COLOR_Format25bitARGB1888" />
-		<field name="COLOR_Format32bitARGB8888" />
-		<field name="COLOR_Format32bitBGRA8888" />
-		<field name="COLOR_Format8bitRGB332" />
-		<field name="COLOR_FormatCbYCrY" />
-		<field name="COLOR_FormatCrYCbY" />
-		<field name="COLOR_FormatL16" />
-		<field name="COLOR_FormatL2" />
-		<field name="COLOR_FormatL24" />
-		<field name="COLOR_FormatL32" />
-		<field name="COLOR_FormatL4" />
-		<field name="COLOR_FormatL8" />
-		<field name="COLOR_FormatMonochrome" />
-		<field name="COLOR_FormatRawBayer10bit" />
-		<field name="COLOR_FormatRawBayer8bit" />
-		<field name="COLOR_FormatRawBayer8bitcompressed" />
-		<field name="COLOR_FormatSurface" since="18" />
-		<field name="COLOR_FormatYCbYCr" />
-		<field name="COLOR_FormatYCrYCb" />
-		<field name="COLOR_FormatYUV411PackedPlanar" />
-		<field name="COLOR_FormatYUV411Planar" />
-		<field name="COLOR_FormatYUV420PackedPlanar" />
-		<field name="COLOR_FormatYUV420PackedSemiPlanar" />
-		<field name="COLOR_FormatYUV420Planar" />
-		<field name="COLOR_FormatYUV420SemiPlanar" />
-		<field name="COLOR_FormatYUV422PackedPlanar" />
-		<field name="COLOR_FormatYUV422PackedSemiPlanar" />
-		<field name="COLOR_FormatYUV422Planar" />
-		<field name="COLOR_FormatYUV422SemiPlanar" />
-		<field name="COLOR_FormatYUV444Interleaved" />
-		<field name="COLOR_QCOM_FormatYUV420SemiPlanar" />
-		<field name="COLOR_TI_FormatYUV420PackedSemiPlanar" />
-		<field name="FEATURE_AdaptivePlayback" since="19" />
-		<field name="colorFormats" />
-		<field name="profileLevels" />
-	</class>
-	<class name="android/media/MediaCodecInfo$CodecProfileLevel" since="16">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="AACObjectELD" />
-		<field name="AACObjectERLC" />
-		<field name="AACObjectHE" />
-		<field name="AACObjectHE_PS" />
-		<field name="AACObjectLC" />
-		<field name="AACObjectLD" />
-		<field name="AACObjectLTP" />
-		<field name="AACObjectMain" />
-		<field name="AACObjectSSR" />
-		<field name="AACObjectScalable" />
-		<field name="AVCLevel1" />
-		<field name="AVCLevel11" />
-		<field name="AVCLevel12" />
-		<field name="AVCLevel13" />
-		<field name="AVCLevel1b" />
-		<field name="AVCLevel2" />
-		<field name="AVCLevel21" />
-		<field name="AVCLevel22" />
-		<field name="AVCLevel3" />
-		<field name="AVCLevel31" />
-		<field name="AVCLevel32" />
-		<field name="AVCLevel4" />
-		<field name="AVCLevel41" />
-		<field name="AVCLevel42" />
-		<field name="AVCLevel5" />
-		<field name="AVCLevel51" />
-		<field name="AVCProfileBaseline" />
-		<field name="AVCProfileExtended" />
-		<field name="AVCProfileHigh" />
-		<field name="AVCProfileHigh10" />
-		<field name="AVCProfileHigh422" />
-		<field name="AVCProfileHigh444" />
-		<field name="AVCProfileMain" />
-		<field name="H263Level10" />
-		<field name="H263Level20" />
-		<field name="H263Level30" />
-		<field name="H263Level40" />
-		<field name="H263Level45" />
-		<field name="H263Level50" />
-		<field name="H263Level60" />
-		<field name="H263Level70" />
-		<field name="H263ProfileBackwardCompatible" />
-		<field name="H263ProfileBaseline" />
-		<field name="H263ProfileH320Coding" />
-		<field name="H263ProfileHighCompression" />
-		<field name="H263ProfileHighLatency" />
-		<field name="H263ProfileISWV2" />
-		<field name="H263ProfileISWV3" />
-		<field name="H263ProfileInterlace" />
-		<field name="H263ProfileInternet" />
-		<field name="HEVCHighTierLevel1" since="21" />
-		<field name="HEVCHighTierLevel2" since="21" />
-		<field name="HEVCHighTierLevel21" since="21" />
-		<field name="HEVCHighTierLevel3" since="21" />
-		<field name="HEVCHighTierLevel31" since="21" />
-		<field name="HEVCHighTierLevel4" since="21" />
-		<field name="HEVCHighTierLevel41" since="21" />
-		<field name="HEVCHighTierLevel5" since="21" />
-		<field name="HEVCHighTierLevel51" since="21" />
-		<field name="HEVCHighTierLevel52" since="21" />
-		<field name="HEVCHighTierLevel6" since="21" />
-		<field name="HEVCHighTierLevel61" since="21" />
-		<field name="HEVCHighTierLevel62" since="21" />
-		<field name="HEVCMainTierLevel1" since="21" />
-		<field name="HEVCMainTierLevel2" since="21" />
-		<field name="HEVCMainTierLevel21" since="21" />
-		<field name="HEVCMainTierLevel3" since="21" />
-		<field name="HEVCMainTierLevel31" since="21" />
-		<field name="HEVCMainTierLevel4" since="21" />
-		<field name="HEVCMainTierLevel41" since="21" />
-		<field name="HEVCMainTierLevel5" since="21" />
-		<field name="HEVCMainTierLevel51" since="21" />
-		<field name="HEVCMainTierLevel52" since="21" />
-		<field name="HEVCMainTierLevel6" since="21" />
-		<field name="HEVCMainTierLevel61" since="21" />
-		<field name="HEVCMainTierLevel62" since="21" />
-		<field name="HEVCProfileMain" since="21" />
-		<field name="HEVCProfileMain10" since="21" />
-		<field name="MPEG4Level0" />
-		<field name="MPEG4Level0b" />
-		<field name="MPEG4Level1" />
-		<field name="MPEG4Level2" />
-		<field name="MPEG4Level3" />
-		<field name="MPEG4Level4" />
-		<field name="MPEG4Level4a" />
-		<field name="MPEG4Level5" />
-		<field name="MPEG4ProfileAdvancedCoding" />
-		<field name="MPEG4ProfileAdvancedCore" />
-		<field name="MPEG4ProfileAdvancedRealTime" />
-		<field name="MPEG4ProfileAdvancedScalable" />
-		<field name="MPEG4ProfileAdvancedSimple" />
-		<field name="MPEG4ProfileBasicAnimated" />
-		<field name="MPEG4ProfileCore" />
-		<field name="MPEG4ProfileCoreScalable" />
-		<field name="MPEG4ProfileHybrid" />
-		<field name="MPEG4ProfileMain" />
-		<field name="MPEG4ProfileNbit" />
-		<field name="MPEG4ProfileScalableTexture" />
-		<field name="MPEG4ProfileSimple" />
-		<field name="MPEG4ProfileSimpleFBA" />
-		<field name="MPEG4ProfileSimpleFace" />
-		<field name="MPEG4ProfileSimpleScalable" />
-		<field name="VP8Level_Version0" since="18" />
-		<field name="VP8Level_Version1" since="18" />
-		<field name="VP8Level_Version2" since="18" />
-		<field name="VP8Level_Version3" since="18" />
-		<field name="VP8ProfileMain" since="18" />
-		<field name="level" />
-		<field name="profile" />
-	</class>
-	<class name="android/media/MediaCodecList" since="16">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getCodecCount()I" />
-		<method name="getCodecInfoAt(I)Landroid/media/MediaCodecInfo;" />
-	</class>
-	<class name="android/media/MediaCrypto" since="16">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/util/UUID;[B)V" />
-		<method name="isCryptoSchemeSupported(Ljava/util/UUID;)Z" />
-		<method name="release()V" />
-		<method name="requiresSecureDecoderComponent(Ljava/lang/String;)Z" />
-	</class>
-	<class name="android/media/MediaCryptoException" since="16">
-		<extends name="java/lang/Exception" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/media/MediaDrm" since="18">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/util/UUID;)V" />
-		<method name="closeSession([B)V" />
-		<method name="getCryptoSession([BLjava/lang/String;Ljava/lang/String;)Landroid/media/MediaDrm$CryptoSession;" />
-		<method name="getKeyRequest([B[BLjava/lang/String;ILjava/util/HashMap;)Landroid/media/MediaDrm$KeyRequest;" />
-		<method name="getPropertyByteArray(Ljava/lang/String;)[B" />
-		<method name="getPropertyString(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="getProvisionRequest()Landroid/media/MediaDrm$ProvisionRequest;" />
-		<method name="getSecureStops()Ljava/util/List;" />
-		<method name="isCryptoSchemeSupported(Ljava/util/UUID;)Z" />
-		<method name="isCryptoSchemeSupported(Ljava/util/UUID;Ljava/lang/String;)Z" since="19" />
-		<method name="openSession()[B" />
-		<method name="provideKeyResponse([B[B)[B" />
-		<method name="provideProvisionResponse([B)V" />
-		<method name="queryKeyStatus([B)Ljava/util/HashMap;" />
-		<method name="release()V" />
-		<method name="releaseSecureStops([B)V" />
-		<method name="removeKeys([B)V" />
-		<method name="restoreKeys([B[B)V" />
-		<method name="setOnEventListener(Landroid/media/MediaDrm$OnEventListener;)V" />
-		<method name="setPropertyByteArray(Ljava/lang/String;[B)V" />
-		<method name="setPropertyString(Ljava/lang/String;Ljava/lang/String;)V" />
-		<field name="EVENT_KEY_EXPIRED" />
-		<field name="EVENT_KEY_REQUIRED" />
-		<field name="EVENT_PROVISION_REQUIRED" />
-		<field name="EVENT_VENDOR_DEFINED" />
-		<field name="KEY_TYPE_OFFLINE" />
-		<field name="KEY_TYPE_RELEASE" />
-		<field name="KEY_TYPE_STREAMING" />
-		<field name="PROPERTY_ALGORITHMS" />
-		<field name="PROPERTY_DESCRIPTION" />
-		<field name="PROPERTY_DEVICE_UNIQUE_ID" />
-		<field name="PROPERTY_VENDOR" />
-		<field name="PROPERTY_VERSION" />
-	</class>
-	<class name="android/media/MediaDrm$CryptoSession" since="18">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/media/MediaDrm;)V" />
-		<method name="decrypt([B[B[B)[B" />
-		<method name="encrypt([B[B[B)[B" />
-		<method name="sign([B[B)[B" />
-		<method name="verify([B[B[B)Z" />
-	</class>
-	<class name="android/media/MediaDrm$KeyRequest" since="18">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getData()[B" />
-		<method name="getDefaultUrl()Ljava/lang/String;" />
-	</class>
-	<class name="android/media/MediaDrm$OnEventListener" since="18">
-		<extends name="java/lang/Object" />
-		<method name="onEvent(Landroid/media/MediaDrm;[BII[B)V" />
-	</class>
-	<class name="android/media/MediaDrm$ProvisionRequest" since="18">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getData()[B" />
-		<method name="getDefaultUrl()Ljava/lang/String;" />
-	</class>
-	<class name="android/media/MediaDrmException" since="18">
-		<extends name="java/lang/Exception" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/media/MediaExtractor" since="16">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="advance()Z" />
-		<method name="getCachedDuration()J" />
-		<method name="getPsshInfo()Ljava/util/Map;" since="18" />
-		<method name="getSampleCryptoInfo(Landroid/media/MediaCodec$CryptoInfo;)Z" />
-		<method name="getSampleFlags()I" />
-		<method name="getSampleTime()J" />
-		<method name="getSampleTrackIndex()I" />
-		<method name="getTrackCount()I" />
-		<method name="getTrackFormat(I)Landroid/media/MediaFormat;" />
-		<method name="hasCacheReachedEndOfStream()Z" />
-		<method name="readSampleData(Ljava/nio/ByteBuffer;I)I" />
-		<method name="release()V" />
-		<method name="seekTo(JI)V" />
-		<method name="selectTrack(I)V" />
-		<method name="setDataSource(Landroid/content/Context;Landroid/net/Uri;Ljava/util/Map;)V" />
-		<method name="setDataSource(Ljava/io/FileDescriptor;)V" />
-		<method name="setDataSource(Ljava/io/FileDescriptor;JJ)V" />
-		<method name="setDataSource(Ljava/lang/String;)V" />
-		<method name="setDataSource(Ljava/lang/String;Ljava/util/Map;)V" />
-		<method name="unselectTrack(I)V" />
-		<field name="SAMPLE_FLAG_ENCRYPTED" />
-		<field name="SAMPLE_FLAG_SYNC" />
-		<field name="SEEK_TO_CLOSEST_SYNC" />
-		<field name="SEEK_TO_NEXT_SYNC" />
-		<field name="SEEK_TO_PREVIOUS_SYNC" />
-	</class>
-	<class name="android/media/MediaFormat" since="16">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="containsKey(Ljava/lang/String;)Z" />
-		<method name="createAudioFormat(Ljava/lang/String;II)Landroid/media/MediaFormat;" />
-		<method name="createSubtitleFormat(Ljava/lang/String;Ljava/lang/String;)Landroid/media/MediaFormat;" since="19" />
-		<method name="createVideoFormat(Ljava/lang/String;II)Landroid/media/MediaFormat;" />
-		<method name="getByteBuffer(Ljava/lang/String;)Ljava/nio/ByteBuffer;" />
-		<method name="getFloat(Ljava/lang/String;)F" />
-		<method name="getInteger(Ljava/lang/String;)I" />
-		<method name="getLong(Ljava/lang/String;)J" />
-		<method name="getString(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="setByteBuffer(Ljava/lang/String;Ljava/nio/ByteBuffer;)V" />
-		<method name="setFloat(Ljava/lang/String;F)V" />
-		<method name="setInteger(Ljava/lang/String;I)V" />
-		<method name="setLong(Ljava/lang/String;J)V" />
-		<method name="setString(Ljava/lang/String;Ljava/lang/String;)V" />
-		<field name="KEY_AAC_PROFILE" />
-		<field name="KEY_BIT_RATE" />
-		<field name="KEY_CHANNEL_COUNT" />
-		<field name="KEY_CHANNEL_MASK" />
-		<field name="KEY_COLOR_FORMAT" />
-		<field name="KEY_DURATION" />
-		<field name="KEY_FLAC_COMPRESSION_LEVEL" />
-		<field name="KEY_FRAME_RATE" />
-		<field name="KEY_HEIGHT" />
-		<field name="KEY_IS_ADTS" />
-		<field name="KEY_IS_AUTOSELECT" since="19" />
-		<field name="KEY_IS_DEFAULT" since="19" />
-		<field name="KEY_IS_FORCED_SUBTITLE" since="19" />
-		<field name="KEY_I_FRAME_INTERVAL" />
-		<field name="KEY_LANGUAGE" since="19" />
-		<field name="KEY_MAX_HEIGHT" since="19" />
-		<field name="KEY_MAX_INPUT_SIZE" />
-		<field name="KEY_MAX_WIDTH" since="19" />
-		<field name="KEY_MIME" />
-		<field name="KEY_PUSH_BLANK_BUFFERS_ON_STOP" since="19" />
-		<field name="KEY_REPEAT_PREVIOUS_FRAME_AFTER" since="19" />
-		<field name="KEY_SAMPLE_RATE" />
-		<field name="KEY_WIDTH" />
-	</class>
-	<class name="android/media/MediaMetadata" since="21">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="containsKey(Ljava/lang/String;)Z" />
-		<method name="getBitmap(Ljava/lang/String;)Landroid/graphics/Bitmap;" />
-		<method name="getLong(Ljava/lang/String;)J" />
-		<method name="getRating(Ljava/lang/String;)Landroid/media/Rating;" />
-		<method name="getString(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="keySet()Ljava/util/Set;" />
-		<method name="size()I" />
-		<field name="CREATOR" />
-		<field name="METADATA_KEY_ALBUM" />
-		<field name="METADATA_KEY_ALBUM_ART" />
-		<field name="METADATA_KEY_ALBUM_ARTIST" />
-		<field name="METADATA_KEY_ALBUM_ART_URI" />
-		<field name="METADATA_KEY_ART" />
-		<field name="METADATA_KEY_ARTIST" />
-		<field name="METADATA_KEY_ART_URI" />
-		<field name="METADATA_KEY_AUTHOR" />
-		<field name="METADATA_KEY_COMPILATION" />
-		<field name="METADATA_KEY_COMPOSER" />
-		<field name="METADATA_KEY_DATE" />
-		<field name="METADATA_KEY_DISC_NUMBER" />
-		<field name="METADATA_KEY_DURATION" />
-		<field name="METADATA_KEY_GENRE" />
-		<field name="METADATA_KEY_NUM_TRACKS" />
-		<field name="METADATA_KEY_RATING" />
-		<field name="METADATA_KEY_TITLE" />
-		<field name="METADATA_KEY_TRACK_NUMBER" />
-		<field name="METADATA_KEY_USER_RATING" />
-		<field name="METADATA_KEY_WRITER" />
-		<field name="METADATA_KEY_YEAR" />
-	</class>
-	<class name="android/media/MediaMetadata$Builder" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/media/MediaMetadata;)V" />
-		<method name="build()Landroid/media/MediaMetadata;" />
-		<method name="putBitmap(Ljava/lang/String;Landroid/graphics/Bitmap;)Landroid/media/MediaMetadata$Builder;" />
-		<method name="putLong(Ljava/lang/String;J)Landroid/media/MediaMetadata$Builder;" />
-		<method name="putRating(Ljava/lang/String;Landroid/media/Rating;)Landroid/media/MediaMetadata$Builder;" />
-		<method name="putString(Ljava/lang/String;Ljava/lang/String;)Landroid/media/MediaMetadata$Builder;" />
-	</class>
-	<class name="android/media/MediaMetadataEditor" since="19">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="addEditableKey(I)V" />
-		<method name="apply()V" />
-		<method name="clear()V" />
-		<method name="getBitmap(ILandroid/graphics/Bitmap;)Landroid/graphics/Bitmap;" />
-		<method name="getEditableKeys()[I" />
-		<method name="getLong(IJ)J" />
-		<method name="getObject(ILjava/lang/Object;)Ljava/lang/Object;" />
-		<method name="getString(ILjava/lang/String;)Ljava/lang/String;" />
-		<method name="putBitmap(ILandroid/graphics/Bitmap;)Landroid/media/MediaMetadataEditor;" />
-		<method name="putLong(IJ)Landroid/media/MediaMetadataEditor;" />
-		<method name="putObject(ILjava/lang/Object;)Landroid/media/MediaMetadataEditor;" />
-		<method name="putString(ILjava/lang/String;)Landroid/media/MediaMetadataEditor;" />
-		<method name="removeEditableKeys()V" />
-		<field name="BITMAP_KEY_ARTWORK" />
-		<field name="RATING_KEY_BY_OTHERS" />
-		<field name="RATING_KEY_BY_USER" />
-	</class>
-	<class name="android/media/MediaMetadataRetriever" since="10">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="extractMetadata(I)Ljava/lang/String;" />
-		<method name="getEmbeddedPicture()[B" />
-		<method name="getFrameAtTime()Landroid/graphics/Bitmap;" />
-		<method name="getFrameAtTime(J)Landroid/graphics/Bitmap;" />
-		<method name="getFrameAtTime(JI)Landroid/graphics/Bitmap;" />
-		<method name="release()V" />
-		<method name="setDataSource(Landroid/content/Context;Landroid/net/Uri;)V" />
-		<method name="setDataSource(Ljava/io/FileDescriptor;)V" />
-		<method name="setDataSource(Ljava/io/FileDescriptor;JJ)V" />
-		<method name="setDataSource(Ljava/lang/String;)V" />
-		<method name="setDataSource(Ljava/lang/String;Ljava/util/Map;)V" since="14" />
-		<field name="METADATA_KEY_ALBUM" />
-		<field name="METADATA_KEY_ALBUMARTIST" />
-		<field name="METADATA_KEY_ARTIST" />
-		<field name="METADATA_KEY_AUTHOR" />
-		<field name="METADATA_KEY_BITRATE" since="14" />
-		<field name="METADATA_KEY_CD_TRACK_NUMBER" />
-		<field name="METADATA_KEY_COMPILATION" />
-		<field name="METADATA_KEY_COMPOSER" />
-		<field name="METADATA_KEY_DATE" />
-		<field name="METADATA_KEY_DISC_NUMBER" />
-		<field name="METADATA_KEY_DURATION" />
-		<field name="METADATA_KEY_GENRE" />
-		<field name="METADATA_KEY_HAS_AUDIO" since="14" />
-		<field name="METADATA_KEY_HAS_VIDEO" since="14" />
-		<field name="METADATA_KEY_LOCATION" since="15" />
-		<field name="METADATA_KEY_MIMETYPE" />
-		<field name="METADATA_KEY_NUM_TRACKS" />
-		<field name="METADATA_KEY_TITLE" />
-		<field name="METADATA_KEY_VIDEO_HEIGHT" since="14" />
-		<field name="METADATA_KEY_VIDEO_ROTATION" since="17" />
-		<field name="METADATA_KEY_VIDEO_WIDTH" since="14" />
-		<field name="METADATA_KEY_WRITER" />
-		<field name="METADATA_KEY_YEAR" />
-		<field name="OPTION_CLOSEST" />
-		<field name="OPTION_CLOSEST_SYNC" />
-		<field name="OPTION_NEXT_SYNC" />
-		<field name="OPTION_PREVIOUS_SYNC" />
-	</class>
-	<class name="android/media/MediaMuxer" since="18">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/lang/String;I)V" />
-		<method name="addTrack(Landroid/media/MediaFormat;)I" />
-		<method name="release()V" />
-		<method name="setLocation(FF)V" since="19" />
-		<method name="setOrientationHint(I)V" />
-		<method name="start()V" />
-		<method name="stop()V" />
-		<method name="writeSampleData(ILjava/nio/ByteBuffer;Landroid/media/MediaCodec$BufferInfo;)V" />
-	</class>
-	<class name="android/media/MediaMuxer$OutputFormat" since="18">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="MUXER_OUTPUT_MPEG_4" />
-		<field name="MUXER_OUTPUT_WEBM" since="21" />
-	</class>
-	<class name="android/media/MediaPlayer" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="addTimedTextSource(Landroid/content/Context;Landroid/net/Uri;Ljava/lang/String;)V" since="16" />
-		<method name="addTimedTextSource(Ljava/io/FileDescriptor;JJLjava/lang/String;)V" since="16" />
-		<method name="addTimedTextSource(Ljava/io/FileDescriptor;Ljava/lang/String;)V" since="16" />
-		<method name="addTimedTextSource(Ljava/lang/String;Ljava/lang/String;)V" since="16" />
-		<method name="attachAuxEffect(I)V" since="9" />
-		<method name="create(Landroid/content/Context;I)Landroid/media/MediaPlayer;" />
-		<method name="create(Landroid/content/Context;Landroid/net/Uri;)Landroid/media/MediaPlayer;" />
-		<method name="create(Landroid/content/Context;Landroid/net/Uri;Landroid/view/SurfaceHolder;)Landroid/media/MediaPlayer;" />
-		<method name="deselectTrack(I)V" since="16" />
-		<method name="getAudioSessionId()I" since="9" />
-		<method name="getCurrentPosition()I" />
-		<method name="getDuration()I" />
-		<method name="getTrackInfo()[Landroid/media/MediaPlayer$TrackInfo;" since="16" />
-		<method name="getVideoHeight()I" />
-		<method name="getVideoWidth()I" />
-		<method name="isLooping()Z" since="3" />
-		<method name="isPlaying()Z" />
-		<method name="pause()V" />
-		<method name="prepare()V" />
-		<method name="prepareAsync()V" />
-		<method name="release()V" />
-		<method name="reset()V" />
-		<method name="seekTo(I)V" />
-		<method name="selectTrack(I)V" since="16" />
-		<method name="setAudioSessionId(I)V" since="9" />
-		<method name="setAudioStreamType(I)V" />
-		<method name="setAuxEffectSendLevel(F)V" since="9" />
-		<method name="setDataSource(Landroid/content/Context;Landroid/net/Uri;)V" />
-		<method name="setDataSource(Landroid/content/Context;Landroid/net/Uri;Ljava/util/Map;)V" since="14" />
-		<method name="setDataSource(Ljava/io/FileDescriptor;)V" />
-		<method name="setDataSource(Ljava/io/FileDescriptor;JJ)V" />
-		<method name="setDataSource(Ljava/lang/String;)V" />
-		<method name="setDisplay(Landroid/view/SurfaceHolder;)V" />
-		<method name="setLooping(Z)V" />
-		<method name="setNextMediaPlayer(Landroid/media/MediaPlayer;)V" since="16" />
-		<method name="setOnBufferingUpdateListener(Landroid/media/MediaPlayer$OnBufferingUpdateListener;)V" />
-		<method name="setOnCompletionListener(Landroid/media/MediaPlayer$OnCompletionListener;)V" />
-		<method name="setOnErrorListener(Landroid/media/MediaPlayer$OnErrorListener;)V" />
-		<method name="setOnInfoListener(Landroid/media/MediaPlayer$OnInfoListener;)V" since="3" />
-		<method name="setOnPreparedListener(Landroid/media/MediaPlayer$OnPreparedListener;)V" />
-		<method name="setOnSeekCompleteListener(Landroid/media/MediaPlayer$OnSeekCompleteListener;)V" />
-		<method name="setOnTimedTextListener(Landroid/media/MediaPlayer$OnTimedTextListener;)V" since="16" />
-		<method name="setOnVideoSizeChangedListener(Landroid/media/MediaPlayer$OnVideoSizeChangedListener;)V" since="3" />
-		<method name="setScreenOnWhilePlaying(Z)V" />
-		<method name="setSurface(Landroid/view/Surface;)V" since="14" />
-		<method name="setVideoScalingMode(I)V" since="16" />
-		<method name="setVolume(FF)V" />
-		<method name="setWakeMode(Landroid/content/Context;I)V" />
-		<method name="start()V" />
-		<method name="stop()V" />
-		<field name="MEDIA_ERROR_IO" since="17" />
-		<field name="MEDIA_ERROR_MALFORMED" since="17" />
-		<field name="MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK" since="3" />
-		<field name="MEDIA_ERROR_SERVER_DIED" />
-		<field name="MEDIA_ERROR_TIMED_OUT" since="17" />
-		<field name="MEDIA_ERROR_UNKNOWN" />
-		<field name="MEDIA_ERROR_UNSUPPORTED" since="17" />
-		<field name="MEDIA_INFO_BAD_INTERLEAVING" since="3" />
-		<field name="MEDIA_INFO_BUFFERING_END" since="9" />
-		<field name="MEDIA_INFO_BUFFERING_START" since="9" />
-		<field name="MEDIA_INFO_METADATA_UPDATE" since="5" />
-		<field name="MEDIA_INFO_NOT_SEEKABLE" since="3" />
-		<field name="MEDIA_INFO_SUBTITLE_TIMED_OUT" since="19" />
-		<field name="MEDIA_INFO_UNKNOWN" since="3" />
-		<field name="MEDIA_INFO_UNSUPPORTED_SUBTITLE" since="19" />
-		<field name="MEDIA_INFO_VIDEO_RENDERING_START" since="17" />
-		<field name="MEDIA_INFO_VIDEO_TRACK_LAGGING" since="3" />
-		<field name="MEDIA_MIMETYPE_TEXT_SUBRIP" since="16" />
-		<field name="VIDEO_SCALING_MODE_SCALE_TO_FIT" since="16" />
-		<field name="VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING" since="16" />
-	</class>
-	<class name="android/media/MediaPlayer$OnBufferingUpdateListener" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onBufferingUpdate(Landroid/media/MediaPlayer;I)V" />
-	</class>
-	<class name="android/media/MediaPlayer$OnCompletionListener" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onCompletion(Landroid/media/MediaPlayer;)V" />
-	</class>
-	<class name="android/media/MediaPlayer$OnErrorListener" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onError(Landroid/media/MediaPlayer;II)Z" />
-	</class>
-	<class name="android/media/MediaPlayer$OnInfoListener" since="3">
-		<extends name="java/lang/Object" />
-		<method name="onInfo(Landroid/media/MediaPlayer;II)Z" />
-	</class>
-	<class name="android/media/MediaPlayer$OnPreparedListener" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onPrepared(Landroid/media/MediaPlayer;)V" />
-	</class>
-	<class name="android/media/MediaPlayer$OnSeekCompleteListener" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onSeekComplete(Landroid/media/MediaPlayer;)V" />
-	</class>
-	<class name="android/media/MediaPlayer$OnTimedTextListener" since="16">
-		<extends name="java/lang/Object" />
-		<method name="onTimedText(Landroid/media/MediaPlayer;Landroid/media/TimedText;)V" />
-	</class>
-	<class name="android/media/MediaPlayer$OnVideoSizeChangedListener" since="3">
-		<extends name="java/lang/Object" />
-		<method name="onVideoSizeChanged(Landroid/media/MediaPlayer;II)V" />
-	</class>
-	<class name="android/media/MediaPlayer$TrackInfo" since="16">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="getFormat()Landroid/media/MediaFormat;" since="19" />
-		<method name="getLanguage()Ljava/lang/String;" />
-		<method name="getTrackType()I" />
-		<field name="MEDIA_TRACK_TYPE_AUDIO" />
-		<field name="MEDIA_TRACK_TYPE_TIMEDTEXT" />
-		<field name="MEDIA_TRACK_TYPE_UNKNOWN" />
-		<field name="MEDIA_TRACK_TYPE_VIDEO" />
-	</class>
-	<class name="android/media/MediaRecorder" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getAudioSourceMax()I" since="4" />
-		<method name="getMaxAmplitude()I" />
-		<method name="getSurface()Landroid/view/Surface;" since="21" />
-		<method name="prepare()V" />
-		<method name="release()V" />
-		<method name="reset()V" />
-		<method name="setAudioChannels(I)V" since="8" />
-		<method name="setAudioEncoder(I)V" />
-		<method name="setAudioEncodingBitRate(I)V" since="8" />
-		<method name="setAudioSamplingRate(I)V" since="8" />
-		<method name="setAudioSource(I)V" />
-		<method name="setAuxiliaryOutputFile(Ljava/io/FileDescriptor;)V" since="11" />
-		<method name="setAuxiliaryOutputFile(Ljava/lang/String;)V" since="11" />
-		<method name="setCamera(Landroid/hardware/Camera;)V" since="3" />
-		<method name="setCaptureRate(D)V" since="11" />
-		<method name="setLocation(FF)V" since="14" />
-		<method name="setMaxDuration(I)V" since="3" />
-		<method name="setMaxFileSize(J)V" since="3" />
-		<method name="setOnErrorListener(Landroid/media/MediaRecorder$OnErrorListener;)V" since="3" />
-		<method name="setOnInfoListener(Landroid/media/MediaRecorder$OnInfoListener;)V" since="3" />
-		<method name="setOrientationHint(I)V" since="9" />
-		<method name="setOutputFile(Ljava/io/FileDescriptor;)V" since="3" />
-		<method name="setOutputFile(Ljava/lang/String;)V" />
-		<method name="setOutputFormat(I)V" />
-		<method name="setPreviewDisplay(Landroid/view/Surface;)V" />
-		<method name="setProfile(Landroid/media/CamcorderProfile;)V" since="8" />
-		<method name="setVideoEncoder(I)V" since="3" />
-		<method name="setVideoEncodingBitRate(I)V" since="8" />
-		<method name="setVideoFrameRate(I)V" since="3" />
-		<method name="setVideoSize(II)V" since="3" />
-		<method name="setVideoSource(I)V" since="3" />
-		<method name="start()V" />
-		<method name="stop()V" />
-		<field name="MEDIA_ERROR_SERVER_DIED" since="17" />
-		<field name="MEDIA_RECORDER_ERROR_UNKNOWN" since="3" />
-		<field name="MEDIA_RECORDER_INFO_MAX_DURATION_REACHED" since="3" />
-		<field name="MEDIA_RECORDER_INFO_MAX_FILESIZE_REACHED" since="3" />
-		<field name="MEDIA_RECORDER_INFO_UNKNOWN" since="3" />
-	</class>
-	<class name="android/media/MediaRecorder$AudioEncoder" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/media/MediaRecorder;)V" />
-		<field name="AAC" since="10" />
-		<field name="AAC_ELD" since="16" />
-		<field name="AMR_NB" />
-		<field name="AMR_WB" since="10" />
-		<field name="DEFAULT" />
-		<field name="HE_AAC" since="16" />
-	</class>
-	<class name="android/media/MediaRecorder$AudioSource" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/media/MediaRecorder;)V" />
-		<field name="CAMCORDER" since="7" />
-		<field name="DEFAULT" />
-		<field name="MIC" />
-		<field name="REMOTE_SUBMIX" since="19" />
-		<field name="VOICE_CALL" since="4" />
-		<field name="VOICE_COMMUNICATION" since="11" />
-		<field name="VOICE_DOWNLINK" since="4" />
-		<field name="VOICE_RECOGNITION" since="7" />
-		<field name="VOICE_UPLINK" since="4" />
-	</class>
-	<class name="android/media/MediaRecorder$OnErrorListener" since="3">
-		<extends name="java/lang/Object" />
-		<method name="onError(Landroid/media/MediaRecorder;II)V" />
-	</class>
-	<class name="android/media/MediaRecorder$OnInfoListener" since="3">
-		<extends name="java/lang/Object" />
-		<method name="onInfo(Landroid/media/MediaRecorder;II)V" />
-	</class>
-	<class name="android/media/MediaRecorder$OutputFormat" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/media/MediaRecorder;)V" />
-		<field name="AAC_ADTS" since="16" />
-		<field name="AMR_NB" since="10" />
-		<field name="AMR_WB" since="10" />
-		<field name="DEFAULT" />
-		<field name="MPEG_4" />
-		<field name="RAW_AMR" since="3" />
-		<field name="THREE_GPP" />
-	</class>
-	<class name="android/media/MediaRecorder$VideoEncoder" since="3">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/media/MediaRecorder;)V" />
-		<field name="DEFAULT" />
-		<field name="H263" />
-		<field name="H264" />
-		<field name="MPEG_4_SP" />
-	</class>
-	<class name="android/media/MediaRecorder$VideoSource" since="3">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/media/MediaRecorder;)V" />
-		<field name="CAMERA" />
-		<field name="DEFAULT" />
-		<field name="SURFACE" since="21" />
-	</class>
-	<class name="android/media/MediaRouter" since="16">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="addCallback(ILandroid/media/MediaRouter$Callback;)V" />
-		<method name="addCallback(ILandroid/media/MediaRouter$Callback;I)V" since="18" />
-		<method name="addUserRoute(Landroid/media/MediaRouter$UserRouteInfo;)V" />
-		<method name="clearUserRoutes()V" />
-		<method name="createRouteCategory(IZ)Landroid/media/MediaRouter$RouteCategory;" />
-		<method name="createRouteCategory(Ljava/lang/CharSequence;Z)Landroid/media/MediaRouter$RouteCategory;" />
-		<method name="createUserRoute(Landroid/media/MediaRouter$RouteCategory;)Landroid/media/MediaRouter$UserRouteInfo;" />
-		<method name="getCategoryAt(I)Landroid/media/MediaRouter$RouteCategory;" />
-		<method name="getCategoryCount()I" />
-		<method name="getDefaultRoute()Landroid/media/MediaRouter$RouteInfo;" since="18" />
-		<method name="getRouteAt(I)Landroid/media/MediaRouter$RouteInfo;" />
-		<method name="getRouteCount()I" />
-		<method name="getSelectedRoute(I)Landroid/media/MediaRouter$RouteInfo;" />
-		<method name="removeCallback(Landroid/media/MediaRouter$Callback;)V" />
-		<method name="removeUserRoute(Landroid/media/MediaRouter$UserRouteInfo;)V" />
-		<method name="selectRoute(ILandroid/media/MediaRouter$RouteInfo;)V" />
-		<field name="CALLBACK_FLAG_PERFORM_ACTIVE_SCAN" since="18" />
-		<field name="CALLBACK_FLAG_UNFILTERED_EVENTS" since="18" />
-		<field name="ROUTE_TYPE_LIVE_AUDIO" />
-		<field name="ROUTE_TYPE_LIVE_VIDEO" since="17" />
-		<field name="ROUTE_TYPE_USER" />
-	</class>
-	<class name="android/media/MediaRouter$Callback" since="16">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="onRouteAdded(Landroid/media/MediaRouter;Landroid/media/MediaRouter$RouteInfo;)V" />
-		<method name="onRouteChanged(Landroid/media/MediaRouter;Landroid/media/MediaRouter$RouteInfo;)V" />
-		<method name="onRouteGrouped(Landroid/media/MediaRouter;Landroid/media/MediaRouter$RouteInfo;Landroid/media/MediaRouter$RouteGroup;I)V" />
-		<method name="onRoutePresentationDisplayChanged(Landroid/media/MediaRouter;Landroid/media/MediaRouter$RouteInfo;)V" since="17" />
-		<method name="onRouteRemoved(Landroid/media/MediaRouter;Landroid/media/MediaRouter$RouteInfo;)V" />
-		<method name="onRouteSelected(Landroid/media/MediaRouter;ILandroid/media/MediaRouter$RouteInfo;)V" />
-		<method name="onRouteUngrouped(Landroid/media/MediaRouter;Landroid/media/MediaRouter$RouteInfo;Landroid/media/MediaRouter$RouteGroup;)V" />
-		<method name="onRouteUnselected(Landroid/media/MediaRouter;ILandroid/media/MediaRouter$RouteInfo;)V" />
-		<method name="onRouteVolumeChanged(Landroid/media/MediaRouter;Landroid/media/MediaRouter$RouteInfo;)V" />
-	</class>
-	<class name="android/media/MediaRouter$RouteCategory" since="16">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getName()Ljava/lang/CharSequence;" />
-		<method name="getName(Landroid/content/Context;)Ljava/lang/CharSequence;" />
-		<method name="getRoutes(Ljava/util/List;)Ljava/util/List;" />
-		<method name="getSupportedTypes()I" />
-		<method name="isGroupable()Z" />
-	</class>
-	<class name="android/media/MediaRouter$RouteGroup" since="16">
-		<extends name="android/media/MediaRouter$RouteInfo" />
-		<method name="&lt;init>()V" />
-		<method name="addRoute(Landroid/media/MediaRouter$RouteInfo;)V" />
-		<method name="addRoute(Landroid/media/MediaRouter$RouteInfo;I)V" />
-		<method name="getRouteAt(I)Landroid/media/MediaRouter$RouteInfo;" />
-		<method name="getRouteCount()I" />
-		<method name="removeRoute(I)V" />
-		<method name="removeRoute(Landroid/media/MediaRouter$RouteInfo;)V" />
-		<method name="setIconDrawable(Landroid/graphics/drawable/Drawable;)V" />
-		<method name="setIconResource(I)V" />
-	</class>
-	<class name="android/media/MediaRouter$RouteInfo" since="16">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getCategory()Landroid/media/MediaRouter$RouteCategory;" />
-		<method name="getDescription()Ljava/lang/CharSequence;" since="18" />
-		<method name="getGroup()Landroid/media/MediaRouter$RouteGroup;" />
-		<method name="getIconDrawable()Landroid/graphics/drawable/Drawable;" />
-		<method name="getName()Ljava/lang/CharSequence;" />
-		<method name="getName(Landroid/content/Context;)Ljava/lang/CharSequence;" />
-		<method name="getPlaybackStream()I" />
-		<method name="getPlaybackType()I" />
-		<method name="getPresentationDisplay()Landroid/view/Display;" since="17" />
-		<method name="getStatus()Ljava/lang/CharSequence;" />
-		<method name="getSupportedTypes()I" />
-		<method name="getTag()Ljava/lang/Object;" />
-		<method name="getVolume()I" />
-		<method name="getVolumeHandling()I" />
-		<method name="getVolumeMax()I" />
-		<method name="isConnecting()Z" since="18" />
-		<method name="isEnabled()Z" since="17" />
-		<method name="requestSetVolume(I)V" />
-		<method name="requestUpdateVolume(I)V" />
-		<method name="setTag(Ljava/lang/Object;)V" />
-		<field name="PLAYBACK_TYPE_LOCAL" />
-		<field name="PLAYBACK_TYPE_REMOTE" />
-		<field name="PLAYBACK_VOLUME_FIXED" />
-		<field name="PLAYBACK_VOLUME_VARIABLE" />
-	</class>
-	<class name="android/media/MediaRouter$SimpleCallback" since="16">
-		<extends name="android/media/MediaRouter$Callback" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="android/media/MediaRouter$UserRouteInfo" since="16">
-		<extends name="android/media/MediaRouter$RouteInfo" />
-		<method name="&lt;init>()V" />
-		<method name="getRemoteControlClient()Landroid/media/RemoteControlClient;" />
-		<method name="setDescription(Ljava/lang/CharSequence;)V" since="18" />
-		<method name="setIconDrawable(Landroid/graphics/drawable/Drawable;)V" />
-		<method name="setIconResource(I)V" />
-		<method name="setName(I)V" />
-		<method name="setName(Ljava/lang/CharSequence;)V" />
-		<method name="setPlaybackStream(I)V" />
-		<method name="setPlaybackType(I)V" />
-		<method name="setRemoteControlClient(Landroid/media/RemoteControlClient;)V" />
-		<method name="setStatus(Ljava/lang/CharSequence;)V" />
-		<method name="setVolume(I)V" />
-		<method name="setVolumeCallback(Landroid/media/MediaRouter$VolumeCallback;)V" />
-		<method name="setVolumeHandling(I)V" />
-		<method name="setVolumeMax(I)V" />
-	</class>
-	<class name="android/media/MediaRouter$VolumeCallback" since="16">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="onVolumeSetRequest(Landroid/media/MediaRouter$RouteInfo;I)V" />
-		<method name="onVolumeUpdateRequest(Landroid/media/MediaRouter$RouteInfo;I)V" />
-	</class>
-	<class name="android/media/MediaScannerConnection" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/content/ServiceConnection" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/media/MediaScannerConnection$MediaScannerConnectionClient;)V" />
-		<method name="connect()V" />
-		<method name="disconnect()V" />
-		<method name="isConnected()Z" />
-		<method name="scanFile(Landroid/content/Context;[Ljava/lang/String;[Ljava/lang/String;Landroid/media/MediaScannerConnection$OnScanCompletedListener;)V" since="8" />
-		<method name="scanFile(Ljava/lang/String;Ljava/lang/String;)V" />
-	</class>
-	<class name="android/media/MediaScannerConnection$MediaScannerConnectionClient" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/media/MediaScannerConnection$OnScanCompletedListener" since="8" />
-		<method name="onMediaScannerConnected()V" />
-		<method name="onScanCompleted(Ljava/lang/String;Landroid/net/Uri;)V" />
-	</class>
-	<class name="android/media/MediaScannerConnection$OnScanCompletedListener" since="8">
-		<extends name="java/lang/Object" />
-		<method name="onScanCompleted(Ljava/lang/String;Landroid/net/Uri;)V" />
-	</class>
-	<class name="android/media/MediaSyncEvent" since="16">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="createEvent(I)Landroid/media/MediaSyncEvent;" />
-		<method name="getAudioSessionId()I" />
-		<method name="getType()I" />
-		<method name="setAudioSessionId(I)Landroid/media/MediaSyncEvent;" />
-		<field name="SYNC_EVENT_NONE" />
-		<field name="SYNC_EVENT_PRESENTATION_COMPLETE" />
-	</class>
-	<class name="android/media/NotProvisionedException" since="18">
-		<extends name="android/media/MediaDrmException" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/media/Rating" since="19">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="getPercentRating()F" />
-		<method name="getRatingStyle()I" />
-		<method name="getStarRating()F" />
-		<method name="hasHeart()Z" />
-		<method name="isRated()Z" />
-		<method name="isThumbUp()Z" />
-		<method name="newHeartRating(Z)Landroid/media/Rating;" />
-		<method name="newPercentageRating(F)Landroid/media/Rating;" />
-		<method name="newStarRating(IF)Landroid/media/Rating;" />
-		<method name="newThumbRating(Z)Landroid/media/Rating;" />
-		<method name="newUnratedRating(I)Landroid/media/Rating;" />
-		<field name="CREATOR" />
-		<field name="RATING_3_STARS" />
-		<field name="RATING_4_STARS" />
-		<field name="RATING_5_STARS" />
-		<field name="RATING_HEART" />
-		<field name="RATING_NONE" since="21" />
-		<field name="RATING_PERCENTAGE" />
-		<field name="RATING_THUMB_UP_DOWN" />
-	</class>
-	<class name="android/media/RemoteControlClient" since="14">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/app/PendingIntent;)V" />
-		<method name="&lt;init>(Landroid/app/PendingIntent;Landroid/os/Looper;)V" />
-		<method name="editMetadata(Z)Landroid/media/RemoteControlClient$MetadataEditor;" />
-		<method name="getMediaSession()Landroid/media/session/MediaSession;" since="21" />
-		<method name="setMetadataUpdateListener(Landroid/media/RemoteControlClient$OnMetadataUpdateListener;)V" since="19" />
-		<method name="setOnGetPlaybackPositionListener(Landroid/media/RemoteControlClient$OnGetPlaybackPositionListener;)V" since="18" />
-		<method name="setPlaybackPositionUpdateListener(Landroid/media/RemoteControlClient$OnPlaybackPositionUpdateListener;)V" since="18" />
-		<method name="setPlaybackState(I)V" />
-		<method name="setPlaybackState(IJF)V" since="18" />
-		<method name="setTransportControlFlags(I)V" />
-		<field name="FLAG_KEY_MEDIA_FAST_FORWARD" />
-		<field name="FLAG_KEY_MEDIA_NEXT" />
-		<field name="FLAG_KEY_MEDIA_PAUSE" />
-		<field name="FLAG_KEY_MEDIA_PLAY" />
-		<field name="FLAG_KEY_MEDIA_PLAY_PAUSE" />
-		<field name="FLAG_KEY_MEDIA_POSITION_UPDATE" since="18" />
-		<field name="FLAG_KEY_MEDIA_PREVIOUS" />
-		<field name="FLAG_KEY_MEDIA_RATING" since="19" />
-		<field name="FLAG_KEY_MEDIA_REWIND" />
-		<field name="FLAG_KEY_MEDIA_STOP" />
-		<field name="PLAYSTATE_BUFFERING" />
-		<field name="PLAYSTATE_ERROR" />
-		<field name="PLAYSTATE_FAST_FORWARDING" />
-		<field name="PLAYSTATE_PAUSED" />
-		<field name="PLAYSTATE_PLAYING" />
-		<field name="PLAYSTATE_REWINDING" />
-		<field name="PLAYSTATE_SKIPPING_BACKWARDS" />
-		<field name="PLAYSTATE_SKIPPING_FORWARDS" />
-		<field name="PLAYSTATE_STOPPED" />
-	</class>
-	<class name="android/media/RemoteControlClient$MetadataEditor" since="14">
-		<extends name="android/media/MediaMetadataEditor" since="19" />
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/media/RemoteControlClient;)V" />
-		<method name="apply()V" />
-		<method name="clear()V" />
-		<method name="putBitmap(ILandroid/graphics/Bitmap;)Landroid/media/RemoteControlClient$MetadataEditor;" />
-		<method name="putLong(IJ)Landroid/media/RemoteControlClient$MetadataEditor;" />
-		<method name="putString(ILjava/lang/String;)Landroid/media/RemoteControlClient$MetadataEditor;" />
-		<field name="BITMAP_KEY_ARTWORK" />
-	</class>
-	<class name="android/media/RemoteControlClient$OnGetPlaybackPositionListener" since="18">
-		<extends name="java/lang/Object" />
-		<method name="onGetPlaybackPosition()J" />
-	</class>
-	<class name="android/media/RemoteControlClient$OnMetadataUpdateListener" since="19">
-		<extends name="java/lang/Object" />
-		<method name="onMetadataUpdate(ILjava/lang/Object;)V" />
-	</class>
-	<class name="android/media/RemoteControlClient$OnPlaybackPositionUpdateListener" since="18">
-		<extends name="java/lang/Object" />
-		<method name="onPlaybackPositionUpdate(J)V" />
-	</class>
-	<class name="android/media/RemoteController" since="19">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/media/RemoteController$OnClientUpdateListener;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/media/RemoteController$OnClientUpdateListener;Landroid/os/Looper;)V" />
-		<method name="clearArtworkConfiguration()Z" />
-		<method name="editMetadata()Landroid/media/RemoteController$MetadataEditor;" />
-		<method name="getEstimatedMediaPosition()J" />
-		<method name="seekTo(J)Z" />
-		<method name="sendMediaKeyEvent(Landroid/view/KeyEvent;)Z" />
-		<method name="setArtworkConfiguration(II)Z" />
-		<method name="setSynchronizationMode(I)Z" />
-		<field name="POSITION_SYNCHRONIZATION_CHECK" />
-		<field name="POSITION_SYNCHRONIZATION_NONE" />
-	</class>
-	<class name="android/media/RemoteController$MetadataEditor" since="19">
-		<extends name="android/media/MediaMetadataEditor" />
-		<method name="&lt;init>(Landroid/media/RemoteController;)V" />
-	</class>
-	<class name="android/media/RemoteController$OnClientUpdateListener" since="19">
-		<extends name="java/lang/Object" />
-		<method name="onClientChange(Z)V" />
-		<method name="onClientMetadataUpdate(Landroid/media/RemoteController$MetadataEditor;)V" />
-		<method name="onClientPlaybackStateUpdate(I)V" />
-		<method name="onClientPlaybackStateUpdate(IJJF)V" />
-		<method name="onClientTransportControlUpdate(I)V" />
-	</class>
-	<class name="android/media/ResourceBusyException" since="19">
-		<extends name="android/media/MediaDrmException" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/media/Ringtone" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getStreamType()I" />
-		<method name="getTitle(Landroid/content/Context;)Ljava/lang/String;" />
-		<method name="isPlaying()Z" />
-		<method name="play()V" />
-		<method name="setStreamType(I)V" />
-		<method name="stop()V" />
-	</class>
-	<class name="android/media/RingtoneManager" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/app/Activity;)V" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="getActualDefaultRingtoneUri(Landroid/content/Context;I)Landroid/net/Uri;" />
-		<method name="getCursor()Landroid/database/Cursor;" />
-		<method name="getDefaultType(Landroid/net/Uri;)I" />
-		<method name="getDefaultUri(I)Landroid/net/Uri;" />
-		<method name="getIncludeDrm()Z" />
-		<method name="getRingtone(I)Landroid/media/Ringtone;" />
-		<method name="getRingtone(Landroid/content/Context;Landroid/net/Uri;)Landroid/media/Ringtone;" />
-		<method name="getRingtonePosition(Landroid/net/Uri;)I" />
-		<method name="getRingtoneUri(I)Landroid/net/Uri;" />
-		<method name="getStopPreviousRingtone()Z" />
-		<method name="getValidRingtoneUri(Landroid/content/Context;)Landroid/net/Uri;" />
-		<method name="inferStreamType()I" since="3" />
-		<method name="isDefault(Landroid/net/Uri;)Z" />
-		<method name="setActualDefaultRingtoneUri(Landroid/content/Context;ILandroid/net/Uri;)V" />
-		<method name="setIncludeDrm(Z)V" />
-		<method name="setStopPreviousRingtone(Z)V" />
-		<method name="setType(I)V" />
-		<method name="stopPreviousRingtone()V" />
-		<field name="ACTION_RINGTONE_PICKER" />
-		<field name="EXTRA_RINGTONE_DEFAULT_URI" />
-		<field name="EXTRA_RINGTONE_EXISTING_URI" />
-		<field name="EXTRA_RINGTONE_INCLUDE_DRM" />
-		<field name="EXTRA_RINGTONE_PICKED_URI" />
-		<field name="EXTRA_RINGTONE_SHOW_DEFAULT" />
-		<field name="EXTRA_RINGTONE_SHOW_SILENT" />
-		<field name="EXTRA_RINGTONE_TITLE" />
-		<field name="EXTRA_RINGTONE_TYPE" />
-		<field name="ID_COLUMN_INDEX" />
-		<field name="TITLE_COLUMN_INDEX" />
-		<field name="TYPE_ALARM" />
-		<field name="TYPE_ALL" />
-		<field name="TYPE_NOTIFICATION" />
-		<field name="TYPE_RINGTONE" />
-		<field name="URI_COLUMN_INDEX" />
-	</class>
-	<class name="android/media/SoundPool" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(III)V" />
-		<method name="autoPause()V" since="8" />
-		<method name="autoResume()V" since="8" />
-		<method name="load(Landroid/content/Context;II)I" />
-		<method name="load(Landroid/content/res/AssetFileDescriptor;I)I" since="3" />
-		<method name="load(Ljava/io/FileDescriptor;JJI)I" since="3" />
-		<method name="load(Ljava/lang/String;I)I" />
-		<method name="pause(I)V" />
-		<method name="play(IFFIIF)I" />
-		<method name="release()V" />
-		<method name="resume(I)V" />
-		<method name="setLoop(II)V" />
-		<method name="setOnLoadCompleteListener(Landroid/media/SoundPool$OnLoadCompleteListener;)V" since="8" />
-		<method name="setPriority(II)V" />
-		<method name="setRate(IF)V" />
-		<method name="setVolume(IFF)V" />
-		<method name="stop(I)V" />
-		<method name="unload(I)Z" />
-	</class>
-	<class name="android/media/SoundPool$OnLoadCompleteListener" since="8">
-		<extends name="java/lang/Object" />
-		<method name="onLoadComplete(Landroid/media/SoundPool;II)V" />
-	</class>
-	<class name="android/media/ThumbnailUtils" since="8">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="createVideoThumbnail(Ljava/lang/String;I)Landroid/graphics/Bitmap;" />
-		<method name="extractThumbnail(Landroid/graphics/Bitmap;II)Landroid/graphics/Bitmap;" />
-		<method name="extractThumbnail(Landroid/graphics/Bitmap;III)Landroid/graphics/Bitmap;" />
-		<field name="OPTIONS_RECYCLE_INPUT" />
-	</class>
-	<class name="android/media/TimedText" since="16">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getBounds()Landroid/graphics/Rect;" />
-		<method name="getText()Ljava/lang/String;" />
-	</class>
-	<class name="android/media/ToneGenerator" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(II)V" />
-		<method name="getAudioSessionId()I" since="16" />
-		<method name="release()V" />
-		<method name="startTone(I)Z" />
-		<method name="startTone(II)Z" since="5" />
-		<method name="stopTone()V" />
-		<field name="MAX_VOLUME" />
-		<field name="MIN_VOLUME" />
-		<field name="TONE_CDMA_ABBR_ALERT" since="4" />
-		<field name="TONE_CDMA_ABBR_INTERCEPT" since="4" />
-		<field name="TONE_CDMA_ABBR_REORDER" since="4" />
-		<field name="TONE_CDMA_ALERT_AUTOREDIAL_LITE" since="4" />
-		<field name="TONE_CDMA_ALERT_CALL_GUARD" since="4" />
-		<field name="TONE_CDMA_ALERT_INCALL_LITE" since="4" />
-		<field name="TONE_CDMA_ALERT_NETWORK_LITE" since="4" />
-		<field name="TONE_CDMA_ANSWER" since="4" />
-		<field name="TONE_CDMA_CALLDROP_LITE" since="4" />
-		<field name="TONE_CDMA_CALL_SIGNAL_ISDN_INTERGROUP" since="4" />
-		<field name="TONE_CDMA_CALL_SIGNAL_ISDN_NORMAL" since="4" />
-		<field name="TONE_CDMA_CALL_SIGNAL_ISDN_PAT3" since="4" />
-		<field name="TONE_CDMA_CALL_SIGNAL_ISDN_PAT5" since="4" />
-		<field name="TONE_CDMA_CALL_SIGNAL_ISDN_PAT6" since="4" />
-		<field name="TONE_CDMA_CALL_SIGNAL_ISDN_PAT7" since="4" />
-		<field name="TONE_CDMA_CALL_SIGNAL_ISDN_PING_RING" since="4" />
-		<field name="TONE_CDMA_CALL_SIGNAL_ISDN_SP_PRI" since="4" />
-		<field name="TONE_CDMA_CONFIRM" since="4" />
-		<field name="TONE_CDMA_DIAL_TONE_LITE" since="4" />
-		<field name="TONE_CDMA_EMERGENCY_RINGBACK" since="4" />
-		<field name="TONE_CDMA_HIGH_L" since="4" />
-		<field name="TONE_CDMA_HIGH_PBX_L" since="4" />
-		<field name="TONE_CDMA_HIGH_PBX_SLS" since="4" />
-		<field name="TONE_CDMA_HIGH_PBX_SS" since="4" />
-		<field name="TONE_CDMA_HIGH_PBX_SSL" since="4" />
-		<field name="TONE_CDMA_HIGH_PBX_S_X4" since="4" />
-		<field name="TONE_CDMA_HIGH_SLS" since="4" />
-		<field name="TONE_CDMA_HIGH_SS" since="4" />
-		<field name="TONE_CDMA_HIGH_SSL" since="4" />
-		<field name="TONE_CDMA_HIGH_SS_2" since="4" />
-		<field name="TONE_CDMA_HIGH_S_X4" since="4" />
-		<field name="TONE_CDMA_INTERCEPT" since="4" />
-		<field name="TONE_CDMA_KEYPAD_VOLUME_KEY_LITE" since="4" />
-		<field name="TONE_CDMA_LOW_L" since="4" />
-		<field name="TONE_CDMA_LOW_PBX_L" since="4" />
-		<field name="TONE_CDMA_LOW_PBX_SLS" since="4" />
-		<field name="TONE_CDMA_LOW_PBX_SS" since="4" />
-		<field name="TONE_CDMA_LOW_PBX_SSL" since="4" />
-		<field name="TONE_CDMA_LOW_PBX_S_X4" since="4" />
-		<field name="TONE_CDMA_LOW_SLS" since="4" />
-		<field name="TONE_CDMA_LOW_SS" since="4" />
-		<field name="TONE_CDMA_LOW_SSL" since="4" />
-		<field name="TONE_CDMA_LOW_SS_2" since="4" />
-		<field name="TONE_CDMA_LOW_S_X4" since="4" />
-		<field name="TONE_CDMA_MED_L" since="4" />
-		<field name="TONE_CDMA_MED_PBX_L" since="4" />
-		<field name="TONE_CDMA_MED_PBX_SLS" since="4" />
-		<field name="TONE_CDMA_MED_PBX_SS" since="4" />
-		<field name="TONE_CDMA_MED_PBX_SSL" since="4" />
-		<field name="TONE_CDMA_MED_PBX_S_X4" since="4" />
-		<field name="TONE_CDMA_MED_SLS" since="4" />
-		<field name="TONE_CDMA_MED_SS" since="4" />
-		<field name="TONE_CDMA_MED_SSL" since="4" />
-		<field name="TONE_CDMA_MED_SS_2" since="4" />
-		<field name="TONE_CDMA_MED_S_X4" since="4" />
-		<field name="TONE_CDMA_NETWORK_BUSY" since="4" />
-		<field name="TONE_CDMA_NETWORK_BUSY_ONE_SHOT" since="4" />
-		<field name="TONE_CDMA_NETWORK_CALLWAITING" since="4" />
-		<field name="TONE_CDMA_NETWORK_USA_RINGBACK" since="4" />
-		<field name="TONE_CDMA_ONE_MIN_BEEP" since="4" />
-		<field name="TONE_CDMA_PIP" since="4" />
-		<field name="TONE_CDMA_PRESSHOLDKEY_LITE" since="4" />
-		<field name="TONE_CDMA_REORDER" since="4" />
-		<field name="TONE_CDMA_SIGNAL_OFF" since="4" />
-		<field name="TONE_CDMA_SOFT_ERROR_LITE" since="4" />
-		<field name="TONE_DTMF_0" />
-		<field name="TONE_DTMF_1" />
-		<field name="TONE_DTMF_2" />
-		<field name="TONE_DTMF_3" />
-		<field name="TONE_DTMF_4" />
-		<field name="TONE_DTMF_5" />
-		<field name="TONE_DTMF_6" />
-		<field name="TONE_DTMF_7" />
-		<field name="TONE_DTMF_8" />
-		<field name="TONE_DTMF_9" />
-		<field name="TONE_DTMF_A" />
-		<field name="TONE_DTMF_B" />
-		<field name="TONE_DTMF_C" />
-		<field name="TONE_DTMF_D" />
-		<field name="TONE_DTMF_P" />
-		<field name="TONE_DTMF_S" />
-		<field name="TONE_PROP_ACK" />
-		<field name="TONE_PROP_BEEP" />
-		<field name="TONE_PROP_BEEP2" />
-		<field name="TONE_PROP_NACK" />
-		<field name="TONE_PROP_PROMPT" />
-		<field name="TONE_SUP_BUSY" />
-		<field name="TONE_SUP_CALL_WAITING" />
-		<field name="TONE_SUP_CONFIRM" since="4" />
-		<field name="TONE_SUP_CONGESTION" />
-		<field name="TONE_SUP_CONGESTION_ABBREV" since="4" />
-		<field name="TONE_SUP_DIAL" />
-		<field name="TONE_SUP_ERROR" />
-		<field name="TONE_SUP_INTERCEPT" since="4" />
-		<field name="TONE_SUP_INTERCEPT_ABBREV" since="4" />
-		<field name="TONE_SUP_PIP" since="4" />
-		<field name="TONE_SUP_RADIO_ACK" />
-		<field name="TONE_SUP_RADIO_NOTAVAIL" />
-		<field name="TONE_SUP_RINGTONE" />
-	</class>
-	<class name="android/media/UnsupportedSchemeException" since="18">
-		<extends name="android/media/MediaDrmException" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/media/audiofx/AcousticEchoCanceler" since="16">
-		<extends name="android/media/audiofx/AudioEffect" />
-		<method name="&lt;init>()V" />
-		<method name="create(I)Landroid/media/audiofx/AcousticEchoCanceler;" />
-		<method name="isAvailable()Z" />
-	</class>
-	<class name="android/media/audiofx/AudioEffect" since="9">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getDescriptor()Landroid/media/audiofx/AudioEffect$Descriptor;" />
-		<method name="getEnabled()Z" />
-		<method name="getId()I" />
-		<method name="hasControl()Z" />
-		<method name="queryEffects()[Landroid/media/audiofx/AudioEffect$Descriptor;" />
-		<method name="release()V" />
-		<method name="setControlStatusListener(Landroid/media/audiofx/AudioEffect$OnControlStatusChangeListener;)V" />
-		<method name="setEnableStatusListener(Landroid/media/audiofx/AudioEffect$OnEnableStatusChangeListener;)V" />
-		<method name="setEnabled(Z)I" />
-		<field name="ACTION_CLOSE_AUDIO_EFFECT_CONTROL_SESSION" />
-		<field name="ACTION_DISPLAY_AUDIO_EFFECT_CONTROL_PANEL" />
-		<field name="ACTION_OPEN_AUDIO_EFFECT_CONTROL_SESSION" />
-		<field name="ALREADY_EXISTS" />
-		<field name="CONTENT_TYPE_GAME" />
-		<field name="CONTENT_TYPE_MOVIE" />
-		<field name="CONTENT_TYPE_MUSIC" />
-		<field name="CONTENT_TYPE_VOICE" />
-		<field name="EFFECT_AUXILIARY" />
-		<field name="EFFECT_INSERT" />
-		<field name="EFFECT_TYPE_AEC" since="18" />
-		<field name="EFFECT_TYPE_AGC" since="18" />
-		<field name="EFFECT_TYPE_BASS_BOOST" since="18" />
-		<field name="EFFECT_TYPE_ENV_REVERB" since="18" />
-		<field name="EFFECT_TYPE_EQUALIZER" since="18" />
-		<field name="EFFECT_TYPE_LOUDNESS_ENHANCER" since="19" />
-		<field name="EFFECT_TYPE_NS" since="18" />
-		<field name="EFFECT_TYPE_PRESET_REVERB" since="18" />
-		<field name="EFFECT_TYPE_VIRTUALIZER" since="18" />
-		<field name="ERROR" />
-		<field name="ERROR_BAD_VALUE" />
-		<field name="ERROR_DEAD_OBJECT" />
-		<field name="ERROR_INVALID_OPERATION" />
-		<field name="ERROR_NO_INIT" />
-		<field name="ERROR_NO_MEMORY" />
-		<field name="EXTRA_AUDIO_SESSION" />
-		<field name="EXTRA_CONTENT_TYPE" />
-		<field name="EXTRA_PACKAGE_NAME" />
-		<field name="SUCCESS" />
-	</class>
-	<class name="android/media/audiofx/AudioEffect$Descriptor" since="9">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
-		<field name="connectMode" />
-		<field name="implementor" />
-		<field name="name" />
-		<field name="type" />
-		<field name="uuid" />
-	</class>
-	<class name="android/media/audiofx/AudioEffect$OnControlStatusChangeListener" since="9">
-		<extends name="java/lang/Object" />
-		<method name="onControlStatusChange(Landroid/media/audiofx/AudioEffect;Z)V" />
-	</class>
-	<class name="android/media/audiofx/AudioEffect$OnEnableStatusChangeListener" since="9">
-		<extends name="java/lang/Object" />
-		<method name="onEnableStatusChange(Landroid/media/audiofx/AudioEffect;Z)V" />
-	</class>
-	<class name="android/media/audiofx/AutomaticGainControl" since="16">
-		<extends name="android/media/audiofx/AudioEffect" />
-		<method name="&lt;init>()V" />
-		<method name="create(I)Landroid/media/audiofx/AutomaticGainControl;" />
-		<method name="isAvailable()Z" />
-	</class>
-	<class name="android/media/audiofx/BassBoost" since="9">
-		<extends name="android/media/audiofx/AudioEffect" />
-		<method name="&lt;init>(II)V" />
-		<method name="getProperties()Landroid/media/audiofx/BassBoost$Settings;" />
-		<method name="getRoundedStrength()S" />
-		<method name="getStrengthSupported()Z" />
-		<method name="setParameterListener(Landroid/media/audiofx/BassBoost$OnParameterChangeListener;)V" />
-		<method name="setProperties(Landroid/media/audiofx/BassBoost$Settings;)V" />
-		<method name="setStrength(S)V" />
-		<field name="PARAM_STRENGTH" />
-		<field name="PARAM_STRENGTH_SUPPORTED" />
-	</class>
-	<class name="android/media/audiofx/BassBoost$OnParameterChangeListener" since="9">
-		<extends name="java/lang/Object" />
-		<method name="onParameterChange(Landroid/media/audiofx/BassBoost;IIS)V" />
-	</class>
-	<class name="android/media/audiofx/BassBoost$Settings" since="9">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<field name="strength" />
-	</class>
-	<class name="android/media/audiofx/EnvironmentalReverb" since="9">
-		<extends name="android/media/audiofx/AudioEffect" />
-		<method name="&lt;init>(II)V" />
-		<method name="getDecayHFRatio()S" />
-		<method name="getDecayTime()I" />
-		<method name="getDensity()S" />
-		<method name="getDiffusion()S" />
-		<method name="getProperties()Landroid/media/audiofx/EnvironmentalReverb$Settings;" />
-		<method name="getReflectionsDelay()I" />
-		<method name="getReflectionsLevel()S" />
-		<method name="getReverbDelay()I" />
-		<method name="getReverbLevel()S" />
-		<method name="getRoomHFLevel()S" />
-		<method name="getRoomLevel()S" />
-		<method name="setDecayHFRatio(S)V" />
-		<method name="setDecayTime(I)V" />
-		<method name="setDensity(S)V" />
-		<method name="setDiffusion(S)V" />
-		<method name="setParameterListener(Landroid/media/audiofx/EnvironmentalReverb$OnParameterChangeListener;)V" />
-		<method name="setProperties(Landroid/media/audiofx/EnvironmentalReverb$Settings;)V" />
-		<method name="setReflectionsDelay(I)V" />
-		<method name="setReflectionsLevel(S)V" />
-		<method name="setReverbDelay(I)V" />
-		<method name="setReverbLevel(S)V" />
-		<method name="setRoomHFLevel(S)V" />
-		<method name="setRoomLevel(S)V" />
-		<field name="PARAM_DECAY_HF_RATIO" />
-		<field name="PARAM_DECAY_TIME" />
-		<field name="PARAM_DENSITY" />
-		<field name="PARAM_DIFFUSION" />
-		<field name="PARAM_REFLECTIONS_DELAY" />
-		<field name="PARAM_REFLECTIONS_LEVEL" />
-		<field name="PARAM_REVERB_DELAY" />
-		<field name="PARAM_REVERB_LEVEL" />
-		<field name="PARAM_ROOM_HF_LEVEL" />
-		<field name="PARAM_ROOM_LEVEL" />
-	</class>
-	<class name="android/media/audiofx/EnvironmentalReverb$OnParameterChangeListener" since="9">
-		<extends name="java/lang/Object" />
-		<method name="onParameterChange(Landroid/media/audiofx/EnvironmentalReverb;III)V" />
-	</class>
-	<class name="android/media/audiofx/EnvironmentalReverb$Settings" since="9">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<field name="decayHFRatio" />
-		<field name="decayTime" />
-		<field name="density" />
-		<field name="diffusion" />
-		<field name="reflectionsDelay" />
-		<field name="reflectionsLevel" />
-		<field name="reverbDelay" />
-		<field name="reverbLevel" />
-		<field name="roomHFLevel" />
-		<field name="roomLevel" />
-	</class>
-	<class name="android/media/audiofx/Equalizer" since="9">
-		<extends name="android/media/audiofx/AudioEffect" />
-		<method name="&lt;init>(II)V" />
-		<method name="getBand(I)S" />
-		<method name="getBandFreqRange(S)[I" />
-		<method name="getBandLevel(S)S" />
-		<method name="getBandLevelRange()[S" />
-		<method name="getCenterFreq(S)I" />
-		<method name="getCurrentPreset()S" />
-		<method name="getNumberOfBands()S" />
-		<method name="getNumberOfPresets()S" />
-		<method name="getPresetName(S)Ljava/lang/String;" />
-		<method name="getProperties()Landroid/media/audiofx/Equalizer$Settings;" />
-		<method name="setBandLevel(SS)V" />
-		<method name="setParameterListener(Landroid/media/audiofx/Equalizer$OnParameterChangeListener;)V" />
-		<method name="setProperties(Landroid/media/audiofx/Equalizer$Settings;)V" />
-		<method name="usePreset(S)V" />
-		<field name="PARAM_BAND_FREQ_RANGE" />
-		<field name="PARAM_BAND_LEVEL" />
-		<field name="PARAM_CENTER_FREQ" />
-		<field name="PARAM_CURRENT_PRESET" />
-		<field name="PARAM_GET_BAND" />
-		<field name="PARAM_GET_NUM_OF_PRESETS" />
-		<field name="PARAM_GET_PRESET_NAME" />
-		<field name="PARAM_LEVEL_RANGE" />
-		<field name="PARAM_NUM_BANDS" />
-		<field name="PARAM_STRING_SIZE_MAX" />
-	</class>
-	<class name="android/media/audiofx/Equalizer$OnParameterChangeListener" since="9">
-		<extends name="java/lang/Object" />
-		<method name="onParameterChange(Landroid/media/audiofx/Equalizer;IIII)V" />
-	</class>
-	<class name="android/media/audiofx/Equalizer$Settings" since="9">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<field name="bandLevels" />
-		<field name="curPreset" />
-		<field name="numBands" />
-	</class>
-	<class name="android/media/audiofx/LoudnessEnhancer" since="19">
-		<extends name="android/media/audiofx/AudioEffect" />
-		<method name="&lt;init>(I)V" />
-		<method name="getTargetGain()F" />
-		<method name="setTargetGain(I)V" />
-		<field name="PARAM_TARGET_GAIN_MB" />
-	</class>
-	<class name="android/media/audiofx/NoiseSuppressor" since="16">
-		<extends name="android/media/audiofx/AudioEffect" />
-		<method name="&lt;init>()V" />
-		<method name="create(I)Landroid/media/audiofx/NoiseSuppressor;" />
-		<method name="isAvailable()Z" />
-	</class>
-	<class name="android/media/audiofx/PresetReverb" since="9">
-		<extends name="android/media/audiofx/AudioEffect" />
-		<method name="&lt;init>(II)V" />
-		<method name="getPreset()S" />
-		<method name="getProperties()Landroid/media/audiofx/PresetReverb$Settings;" />
-		<method name="setParameterListener(Landroid/media/audiofx/PresetReverb$OnParameterChangeListener;)V" />
-		<method name="setPreset(S)V" />
-		<method name="setProperties(Landroid/media/audiofx/PresetReverb$Settings;)V" />
-		<field name="PARAM_PRESET" />
-		<field name="PRESET_LARGEHALL" />
-		<field name="PRESET_LARGEROOM" />
-		<field name="PRESET_MEDIUMHALL" />
-		<field name="PRESET_MEDIUMROOM" />
-		<field name="PRESET_NONE" />
-		<field name="PRESET_PLATE" />
-		<field name="PRESET_SMALLROOM" />
-	</class>
-	<class name="android/media/audiofx/PresetReverb$OnParameterChangeListener" since="9">
-		<extends name="java/lang/Object" />
-		<method name="onParameterChange(Landroid/media/audiofx/PresetReverb;IIS)V" />
-	</class>
-	<class name="android/media/audiofx/PresetReverb$Settings" since="9">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<field name="preset" />
-	</class>
-	<class name="android/media/audiofx/Virtualizer" since="9">
-		<extends name="android/media/audiofx/AudioEffect" />
-		<method name="&lt;init>(II)V" />
-		<method name="getProperties()Landroid/media/audiofx/Virtualizer$Settings;" />
-		<method name="getRoundedStrength()S" />
-		<method name="getStrengthSupported()Z" />
-		<method name="setParameterListener(Landroid/media/audiofx/Virtualizer$OnParameterChangeListener;)V" />
-		<method name="setProperties(Landroid/media/audiofx/Virtualizer$Settings;)V" />
-		<method name="setStrength(S)V" />
-		<field name="PARAM_STRENGTH" />
-		<field name="PARAM_STRENGTH_SUPPORTED" />
-	</class>
-	<class name="android/media/audiofx/Virtualizer$OnParameterChangeListener" since="9">
-		<extends name="java/lang/Object" />
-		<method name="onParameterChange(Landroid/media/audiofx/Virtualizer;IIS)V" />
-	</class>
-	<class name="android/media/audiofx/Virtualizer$Settings" since="9">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<field name="strength" />
-	</class>
-	<class name="android/media/audiofx/Visualizer" since="9">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(I)V" />
-		<method name="getCaptureSize()I" />
-		<method name="getCaptureSizeRange()[I" />
-		<method name="getEnabled()Z" />
-		<method name="getFft([B)I" />
-		<method name="getMaxCaptureRate()I" />
-		<method name="getMeasurementMode()I" since="19" />
-		<method name="getMeasurementPeakRms(Landroid/media/audiofx/Visualizer$MeasurementPeakRms;)I" since="19" />
-		<method name="getSamplingRate()I" />
-		<method name="getScalingMode()I" since="16" />
-		<method name="getWaveForm([B)I" />
-		<method name="release()V" />
-		<method name="setCaptureSize(I)I" />
-		<method name="setDataCaptureListener(Landroid/media/audiofx/Visualizer$OnDataCaptureListener;IZZ)I" />
-		<method name="setEnabled(Z)I" />
-		<method name="setMeasurementMode(I)I" since="19" />
-		<method name="setScalingMode(I)I" since="16" />
-		<field name="ALREADY_EXISTS" />
-		<field name="ERROR" />
-		<field name="ERROR_BAD_VALUE" />
-		<field name="ERROR_DEAD_OBJECT" />
-		<field name="ERROR_INVALID_OPERATION" />
-		<field name="ERROR_NO_INIT" />
-		<field name="ERROR_NO_MEMORY" />
-		<field name="MEASUREMENT_MODE_NONE" since="19" />
-		<field name="MEASUREMENT_MODE_PEAK_RMS" since="19" />
-		<field name="SCALING_MODE_AS_PLAYED" since="16" />
-		<field name="SCALING_MODE_NORMALIZED" since="16" />
-		<field name="STATE_ENABLED" />
-		<field name="STATE_INITIALIZED" />
-		<field name="STATE_UNINITIALIZED" />
-		<field name="SUCCESS" />
-	</class>
-	<class name="android/media/audiofx/Visualizer$MeasurementPeakRms" since="19">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="mPeak" />
-		<field name="mRms" />
-	</class>
-	<class name="android/media/audiofx/Visualizer$OnDataCaptureListener" since="9">
-		<extends name="java/lang/Object" />
-		<method name="onFftDataCapture(Landroid/media/audiofx/Visualizer;[BI)V" />
-		<method name="onWaveFormDataCapture(Landroid/media/audiofx/Visualizer;[BI)V" />
-	</class>
-	<class name="android/media/effect/Effect" since="14">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="apply(IIII)V" />
-		<method name="getName()Ljava/lang/String;" />
-		<method name="release()V" />
-		<method name="setParameter(Ljava/lang/String;Ljava/lang/Object;)V" />
-		<method name="setUpdateListener(Landroid/media/effect/EffectUpdateListener;)V" />
-	</class>
-	<class name="android/media/effect/EffectContext" since="14">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="createWithCurrentGlContext()Landroid/media/effect/EffectContext;" />
-		<method name="getFactory()Landroid/media/effect/EffectFactory;" />
-		<method name="release()V" />
-	</class>
-	<class name="android/media/effect/EffectFactory" since="14">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="createEffect(Ljava/lang/String;)Landroid/media/effect/Effect;" />
-		<method name="isEffectSupported(Ljava/lang/String;)Z" />
-		<field name="EFFECT_AUTOFIX" />
-		<field name="EFFECT_BACKDROPPER" />
-		<field name="EFFECT_BITMAPOVERLAY" />
-		<field name="EFFECT_BLACKWHITE" />
-		<field name="EFFECT_BRIGHTNESS" />
-		<field name="EFFECT_CONTRAST" />
-		<field name="EFFECT_CROP" />
-		<field name="EFFECT_CROSSPROCESS" />
-		<field name="EFFECT_DOCUMENTARY" />
-		<field name="EFFECT_DUOTONE" />
-		<field name="EFFECT_FILLLIGHT" />
-		<field name="EFFECT_FISHEYE" />
-		<field name="EFFECT_FLIP" />
-		<field name="EFFECT_GRAIN" />
-		<field name="EFFECT_GRAYSCALE" />
-		<field name="EFFECT_LOMOISH" />
-		<field name="EFFECT_NEGATIVE" />
-		<field name="EFFECT_POSTERIZE" />
-		<field name="EFFECT_REDEYE" />
-		<field name="EFFECT_ROTATE" />
-		<field name="EFFECT_SATURATE" />
-		<field name="EFFECT_SEPIA" />
-		<field name="EFFECT_SHARPEN" />
-		<field name="EFFECT_STRAIGHTEN" />
-		<field name="EFFECT_TEMPERATURE" />
-		<field name="EFFECT_TINT" />
-		<field name="EFFECT_VIGNETTE" />
-	</class>
-	<class name="android/media/effect/EffectUpdateListener" since="14">
-		<extends name="java/lang/Object" />
-		<method name="onEffectUpdated(Landroid/media/effect/Effect;Ljava/lang/Object;)V" />
-	</class>
-	<class name="android/media/session/MediaController" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="addCallback(Landroid/media/session/MediaController$Callback;)V" />
-		<method name="addCallback(Landroid/media/session/MediaController$Callback;Landroid/os/Handler;)V" />
-		<method name="dispatchMediaButtonEvent(Landroid/view/KeyEvent;)Z" />
-		<method name="fromToken(Landroid/media/session/MediaSessionToken;)Landroid/media/session/MediaController;" />
-		<method name="getMetadata()Landroid/media/MediaMetadata;" />
-		<method name="getPlaybackState()Landroid/media/session/PlaybackState;" />
-		<method name="getRatingType()I" />
-		<method name="getTransportControls()Landroid/media/session/MediaController$TransportControls;" />
-		<method name="removeCallback(Landroid/media/session/MediaController$Callback;)V" />
-		<method name="sendControlCommand(Ljava/lang/String;Landroid/os/Bundle;Landroid/os/ResultReceiver;)V" />
-	</class>
-	<class name="android/media/session/MediaController$Callback" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="onMetadataChanged(Landroid/media/MediaMetadata;)V" />
-		<method name="onPlaybackStateChanged(Landroid/media/session/PlaybackState;)V" />
-		<method name="onSessionEvent(Ljava/lang/String;Landroid/os/Bundle;)V" />
-	</class>
-	<class name="android/media/session/MediaController$TransportControls" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/media/session/MediaController;)V" />
-		<method name="fastForward()V" />
-		<method name="pause()V" />
-		<method name="play()V" />
-		<method name="rewind()V" />
-		<method name="seekTo(J)V" />
-		<method name="setRating(Landroid/media/Rating;)V" />
-		<method name="skipToNext()V" />
-		<method name="skipToPrevious()V" />
-		<method name="stop()V" />
-	</class>
-	<class name="android/media/session/MediaSession" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="addCallback(Landroid/media/session/MediaSession$Callback;)V" />
-		<method name="addCallback(Landroid/media/session/MediaSession$Callback;Landroid/os/Handler;)V" />
-		<method name="addTransportControlsCallback(Landroid/media/session/MediaSession$TransportControlsCallback;)V" />
-		<method name="addTransportControlsCallback(Landroid/media/session/MediaSession$TransportControlsCallback;Landroid/os/Handler;)V" />
-		<method name="getSessionToken()Landroid/media/session/MediaSessionToken;" />
-		<method name="isActive()Z" />
-		<method name="release()V" />
-		<method name="removeCallback(Landroid/media/session/MediaSession$Callback;)V" />
-		<method name="removeTransportControlsCallback(Landroid/media/session/MediaSession$TransportControlsCallback;)V" />
-		<method name="sendSessionEvent(Ljava/lang/String;Landroid/os/Bundle;)V" />
-		<method name="setActive(Z)V" />
-		<method name="setFlags(I)V" />
-		<method name="setLaunchPendingIntent(Landroid/app/PendingIntent;)V" />
-		<method name="setMetadata(Landroid/media/MediaMetadata;)V" />
-		<method name="setPlaybackState(Landroid/media/session/PlaybackState;)V" />
-		<method name="setPlaybackToLocal(I)V" />
-		<method name="setPlaybackToRemote(Landroid/media/session/RemoteVolumeProvider;)V" />
-		<field name="FLAG_HANDLES_MEDIA_BUTTONS" />
-		<field name="FLAG_HANDLES_TRANSPORT_CONTROLS" />
-	</class>
-	<class name="android/media/session/MediaSession$Callback" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="onControlCommand(Ljava/lang/String;Landroid/os/Bundle;Landroid/os/ResultReceiver;)V" />
-		<method name="onMediaButtonEvent(Landroid/content/Intent;)V" />
-	</class>
-	<class name="android/media/session/MediaSession$TransportControlsCallback" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="onFastForward()V" />
-		<method name="onPause()V" />
-		<method name="onPlay()V" />
-		<method name="onRewind()V" />
-		<method name="onSeekTo(J)V" />
-		<method name="onSetRating(Landroid/media/Rating;)V" />
-		<method name="onSkipToNext()V" />
-		<method name="onSkipToPrevious()V" />
-		<method name="onStop()V" />
-	</class>
-	<class name="android/media/session/MediaSessionManager" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="createSession(Ljava/lang/String;)Landroid/media/session/MediaSession;" />
-	</class>
-	<class name="android/media/session/MediaSessionToken" since="21">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/media/session/PlaybackState" since="21">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/media/session/PlaybackState;)V" />
-		<method name="getActions()J" />
-		<method name="getBufferPosition()J" />
-		<method name="getErrorMessage()Ljava/lang/CharSequence;" />
-		<method name="getPlaybackRate()F" />
-		<method name="getPosition()J" />
-		<method name="getState()I" />
-		<method name="setActions(J)V" />
-		<method name="setBufferPosition(J)V" />
-		<method name="setErrorMessage(Ljava/lang/CharSequence;)V" />
-		<method name="setState(IJF)V" />
-		<field name="ACTION_FAST_FORWARD" />
-		<field name="ACTION_PAUSE" />
-		<field name="ACTION_PLAY" />
-		<field name="ACTION_PLAY_PAUSE" />
-		<field name="ACTION_REWIND" />
-		<field name="ACTION_SEEK_TO" />
-		<field name="ACTION_SET_RATING" />
-		<field name="ACTION_SKIP_TO_NEXT" />
-		<field name="ACTION_SKIP_TO_PREVIOUS" />
-		<field name="ACTION_STOP" />
-		<field name="CREATOR" />
-		<field name="PLAYBACK_POSITION_UNKNOWN" />
-		<field name="STATE_BUFFERING" />
-		<field name="STATE_ERROR" />
-		<field name="STATE_FAST_FORWARDING" />
-		<field name="STATE_NONE" />
-		<field name="STATE_PAUSED" />
-		<field name="STATE_PLAYING" />
-		<field name="STATE_REWINDING" />
-		<field name="STATE_SKIPPING_TO_NEXT" />
-		<field name="STATE_SKIPPING_TO_PREVIOUS" />
-		<field name="STATE_STOPPED" />
-	</class>
-	<class name="android/media/session/RemoteVolumeProvider" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(II)V" />
-		<method name="getMaxVolume()I" />
-		<method name="getVolumeControl()I" />
-		<method name="notifyVolumeChanged()V" />
-		<method name="onAdjustVolumeBy(I)V" />
-		<method name="onGetCurrentVolume()I" />
-		<method name="onSetVolumeTo(I)V" />
-		<field name="VOLUME_CONTROL_ABSOLUTE" />
-		<field name="VOLUME_CONTROL_FIXED" />
-		<field name="VOLUME_CONTROL_RELATIVE" />
-	</class>
-	<class name="android/media/tv/TvContract" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="buildChannelLogoUri(J)Landroid/net/Uri;" />
-		<method name="buildChannelLogoUri(Landroid/net/Uri;)Landroid/net/Uri;" />
-		<method name="buildChannelUri(J)Landroid/net/Uri;" />
-		<method name="buildChannelsUriForInput(Landroid/content/ComponentName;)Landroid/net/Uri;" />
-		<method name="buildChannelsUriForInput(Landroid/content/ComponentName;Z)Landroid/net/Uri;" />
-		<method name="buildProgramUri(J)Landroid/net/Uri;" />
-		<method name="buildProgramsUriForChannel(Landroid/net/Uri;)Landroid/net/Uri;" />
-		<method name="buildProgramsUriForChannel(Landroid/net/Uri;JJ)Landroid/net/Uri;" />
-		<field name="AUTHORITY" />
-	</class>
-	<class name="android/media/tv/TvContract$BaseTvColumns" since="21">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<field name="COLUMN_PACKAGE_NAME" />
-	</class>
-	<class name="android/media/tv/TvContract$Channels" since="21">
-		<extends name="java/lang/Object" />
-		<implements name="android/media/tv/TvContract$BaseTvColumns" />
-		<method name="&lt;init>()V" />
-		<field name="COLUMN_BROWSABLE" />
-		<field name="COLUMN_DESCRIPTION" />
-		<field name="COLUMN_DISPLAY_NAME" />
-		<field name="COLUMN_DISPLAY_NUMBER" />
-		<field name="COLUMN_INTERNAL_PROVIDER_DATA" />
-		<field name="COLUMN_ORIGINAL_NETWORK_ID" />
-		<field name="COLUMN_SEARCHABLE" />
-		<field name="COLUMN_SERVICE_ID" />
-		<field name="COLUMN_SERVICE_NAME" />
-		<field name="COLUMN_SERVICE_TYPE" />
-		<field name="COLUMN_TRANSPORT_STREAM_ID" />
-		<field name="COLUMN_TYPE" />
-		<field name="COLUMN_VERSION_NUMBER" />
-		<field name="CONTENT_ITEM_TYPE" />
-		<field name="CONTENT_TYPE" />
-		<field name="CONTENT_URI" />
-		<field name="SERVICE_TYPE_AUDIO" />
-		<field name="SERVICE_TYPE_AUDIO_VIDEO" />
-		<field name="SERVICE_TYPE_OTHER" />
-		<field name="TYPE_1SEG" />
-		<field name="TYPE_ATSC_C" />
-		<field name="TYPE_ATSC_M_H" />
-		<field name="TYPE_ATSC_T" />
-		<field name="TYPE_CMMB" />
-		<field name="TYPE_DTMB" />
-		<field name="TYPE_DVB_C" />
-		<field name="TYPE_DVB_C2" />
-		<field name="TYPE_DVB_H" />
-		<field name="TYPE_DVB_S" />
-		<field name="TYPE_DVB_S2" />
-		<field name="TYPE_DVB_SH" />
-		<field name="TYPE_DVB_T" />
-		<field name="TYPE_DVB_T2" />
-		<field name="TYPE_ISDB_C" />
-		<field name="TYPE_ISDB_S" />
-		<field name="TYPE_ISDB_T" />
-		<field name="TYPE_ISDB_TB" />
-		<field name="TYPE_OTHER" />
-		<field name="TYPE_PASSTHROUGH" />
-		<field name="TYPE_S_DMB" />
-		<field name="TYPE_T_DMB" />
-	</class>
-	<class name="android/media/tv/TvContract$Channels$Logo" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="CONTENT_DIRECTORY" />
-	</class>
-	<class name="android/media/tv/TvContract$Programs" since="21">
-		<extends name="java/lang/Object" />
-		<implements name="android/media/tv/TvContract$BaseTvColumns" />
-		<method name="&lt;init>()V" />
-		<field name="COLUMN_AUDIO_LANGUAGE" />
-		<field name="COLUMN_BROADCAST_GENRE" />
-		<field name="COLUMN_CANONICAL_GENRE" />
-		<field name="COLUMN_CHANNEL_ID" />
-		<field name="COLUMN_END_TIME_UTC_MILLIS" />
-		<field name="COLUMN_INTERNAL_PROVIDER_DATA" />
-		<field name="COLUMN_LONG_DESCRIPTION" />
-		<field name="COLUMN_POSTER_ART_URI" />
-		<field name="COLUMN_SHORT_DESCRIPTION" />
-		<field name="COLUMN_START_TIME_UTC_MILLIS" />
-		<field name="COLUMN_THUMBNAIL_URI" />
-		<field name="COLUMN_TITLE" />
-		<field name="COLUMN_VERSION_NUMBER" />
-		<field name="CONTENT_ITEM_TYPE" />
-		<field name="CONTENT_TYPE" />
-		<field name="CONTENT_URI" />
-	</class>
-	<class name="android/media/tv/TvContract$Programs$Genres" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="decode(Ljava/lang/String;)[Ljava/lang/String;" />
-		<method name="encode([Ljava/lang/String;)Ljava/lang/String;" />
-		<field name="ANIMAL_WILDLIFE" />
-		<field name="COMEDY" />
-		<field name="DRAMA" />
-		<field name="EDUCATION" />
-		<field name="FAMILY_KIDS" />
-		<field name="GAMING" />
-		<field name="MOVIES" />
-		<field name="NEWS" />
-		<field name="SHOPPING" />
-		<field name="SPORTS" />
-		<field name="TRAVEL" />
-	</class>
-	<class name="android/media/tv/TvInputInfo" since="21">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="getId()Ljava/lang/String;" />
-		<method name="getIntentForSettingsActivity()Landroid/content/Intent;" />
-		<method name="getIntentForSetupActivity()Landroid/content/Intent;" />
-		<method name="getServiceInfo()Landroid/content/pm/ServiceInfo;" />
-		<method name="getType()I" />
-		<method name="loadLabel(Landroid/content/pm/PackageManager;)Ljava/lang/CharSequence;" />
-		<field name="EXTRA_SERVICE_NAME" />
-		<field name="TYPE_HDMI" />
-		<field name="TYPE_PASSTHROUGH" />
-		<field name="TYPE_TUNER" />
-		<field name="TYPE_VIRTUAL" />
-	</class>
-	<class name="android/media/tv/TvInputManager" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getAvailability(Ljava/lang/String;)Z" />
-		<method name="getTvInputList()Ljava/util/List;" />
-	</class>
-	<class name="android/media/tv/TvInputManager$TvInputListener" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="onAvailabilityChanged(Ljava/lang/String;Z)V" />
-	</class>
-	<class name="android/media/tv/TvInputService" since="21">
-		<extends name="android/app/Service" />
-		<method name="&lt;init>()V" />
-		<method name="onCreateSession()Landroid/media/tv/TvInputService$Session;" />
-		<field name="SERVICE_INTERFACE" />
-		<field name="SERVICE_META_DATA" />
-	</class>
-	<class name="android/media/tv/TvInputService$Session" since="21">
-		<extends name="java/lang/Object" />
-		<implements name="android/view/KeyEvent$Callback" />
-		<method name="&lt;init>(Landroid/media/tv/TvInputService;)V" />
-		<method name="onCreateOverlayView()Landroid/view/View;" />
-		<method name="onGenericMotionEvent(Landroid/view/MotionEvent;)Z" />
-		<method name="onRelease()V" />
-		<method name="onSetStreamVolume(F)V" />
-		<method name="onSetSurface(Landroid/view/Surface;)Z" />
-		<method name="onTouchEvent(Landroid/view/MotionEvent;)Z" />
-		<method name="onTrackballEvent(Landroid/view/MotionEvent;)Z" />
-		<method name="onTune(Landroid/net/Uri;)Z" />
-		<method name="setOverlayViewEnabled(Z)V" />
-	</class>
-	<class name="android/media/tv/TvView" since="21">
-		<extends name="android/view/ViewGroup" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="dispatchUnhandledInputEvent(Landroid/view/InputEvent;)Z" />
-		<method name="onUnhandledInputEvent(Landroid/view/InputEvent;)Z" />
-		<method name="reset()V" />
-		<method name="setOnUnhandledInputEventListener(Landroid/media/tv/TvView$OnUnhandledInputEventListener;)V" />
-		<method name="setStreamVolume(F)V" />
-		<method name="setTvInputListener(Landroid/media/tv/TvView$TvInputListener;)V" />
-		<method name="tune(Ljava/lang/String;Landroid/net/Uri;)V" />
-		<field name="ERROR_BUSY" />
-		<field name="ERROR_TV_INPUT_DISCONNECTED" />
-	</class>
-	<class name="android/media/tv/TvView$OnUnhandledInputEventListener" since="21">
-		<extends name="java/lang/Object" />
-		<method name="onUnhandledInputEvent(Landroid/view/InputEvent;)Z" />
-	</class>
-	<class name="android/media/tv/TvView$TvInputListener" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="onError(Ljava/lang/String;I)V" />
-	</class>
-	<class name="android/mtp/MtpConstants" since="12">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="isAbstractObject(I)Z" />
-		<field name="ASSOCIATION_TYPE_GENERIC_FOLDER" />
-		<field name="FORMAT_3GP_CONTAINER" />
-		<field name="FORMAT_AAC" />
-		<field name="FORMAT_ABSTRACT_AUDIO_ALBUM" />
-		<field name="FORMAT_ABSTRACT_AUDIO_PLAYLIST" />
-		<field name="FORMAT_ABSTRACT_AV_PLAYLIST" />
-		<field name="FORMAT_ABSTRACT_DOCUMENT" />
-		<field name="FORMAT_ABSTRACT_IMAGE_ALBUM" />
-		<field name="FORMAT_ABSTRACT_MEDIACAST" />
-		<field name="FORMAT_ABSTRACT_MULTIMEDIA_ALBUM" />
-		<field name="FORMAT_ABSTRACT_VIDEO_ALBUM" />
-		<field name="FORMAT_ABSTRACT_VIDEO_PLAYLIST" />
-		<field name="FORMAT_AIFF" />
-		<field name="FORMAT_ASF" />
-		<field name="FORMAT_ASSOCIATION" />
-		<field name="FORMAT_ASX_PLAYLIST" />
-		<field name="FORMAT_AUDIBLE" />
-		<field name="FORMAT_AVI" />
-		<field name="FORMAT_BMP" />
-		<field name="FORMAT_DPOF" />
-		<field name="FORMAT_EXECUTABLE" />
-		<field name="FORMAT_EXIF_JPEG" />
-		<field name="FORMAT_FLAC" />
-		<field name="FORMAT_GIF" />
-		<field name="FORMAT_HTML" />
-		<field name="FORMAT_JFIF" />
-		<field name="FORMAT_JP2" />
-		<field name="FORMAT_JPX" />
-		<field name="FORMAT_M3U_PLAYLIST" />
-		<field name="FORMAT_MP2" />
-		<field name="FORMAT_MP3" />
-		<field name="FORMAT_MP4_CONTAINER" />
-		<field name="FORMAT_MPEG" />
-		<field name="FORMAT_MPL_PLAYLIST" />
-		<field name="FORMAT_MS_EXCEL_SPREADSHEET" />
-		<field name="FORMAT_MS_POWERPOINT_PRESENTATION" />
-		<field name="FORMAT_MS_WORD_DOCUMENT" />
-		<field name="FORMAT_OGG" />
-		<field name="FORMAT_PICT" />
-		<field name="FORMAT_PLS_PLAYLIST" />
-		<field name="FORMAT_PNG" />
-		<field name="FORMAT_SCRIPT" />
-		<field name="FORMAT_TEXT" />
-		<field name="FORMAT_TIFF" />
-		<field name="FORMAT_TIFF_EP" />
-		<field name="FORMAT_UNDEFINED" />
-		<field name="FORMAT_UNDEFINED_AUDIO" />
-		<field name="FORMAT_UNDEFINED_COLLECTION" />
-		<field name="FORMAT_UNDEFINED_DOCUMENT" />
-		<field name="FORMAT_UNDEFINED_FIRMWARE" />
-		<field name="FORMAT_UNDEFINED_VIDEO" />
-		<field name="FORMAT_WAV" />
-		<field name="FORMAT_WINDOWS_IMAGE_FORMAT" />
-		<field name="FORMAT_WMA" />
-		<field name="FORMAT_WMV" />
-		<field name="FORMAT_WPL_PLAYLIST" />
-		<field name="FORMAT_XML_DOCUMENT" />
-		<field name="PROTECTION_STATUS_NONE" />
-		<field name="PROTECTION_STATUS_NON_TRANSFERABLE_DATA" />
-		<field name="PROTECTION_STATUS_READ_ONLY" />
-		<field name="PROTECTION_STATUS_READ_ONLY_DATA" />
-	</class>
-	<class name="android/mtp/MtpDevice" since="12">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/hardware/usb/UsbDevice;)V" />
-		<method name="close()V" />
-		<method name="deleteObject(I)Z" />
-		<method name="getDeviceId()I" />
-		<method name="getDeviceInfo()Landroid/mtp/MtpDeviceInfo;" />
-		<method name="getDeviceName()Ljava/lang/String;" />
-		<method name="getObject(II)[B" />
-		<method name="getObjectHandles(III)[I" />
-		<method name="getObjectInfo(I)Landroid/mtp/MtpObjectInfo;" />
-		<method name="getParent(I)J" />
-		<method name="getStorageId(I)J" />
-		<method name="getStorageIds()[I" />
-		<method name="getStorageInfo(I)Landroid/mtp/MtpStorageInfo;" />
-		<method name="getThumbnail(I)[B" />
-		<method name="importFile(ILjava/lang/String;)Z" />
-		<method name="open(Landroid/hardware/usb/UsbDeviceConnection;)Z" />
-	</class>
-	<class name="android/mtp/MtpDeviceInfo" since="12">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getManufacturer()Ljava/lang/String;" />
-		<method name="getModel()Ljava/lang/String;" />
-		<method name="getSerialNumber()Ljava/lang/String;" />
-		<method name="getVersion()Ljava/lang/String;" />
-	</class>
-	<class name="android/mtp/MtpObjectInfo" since="12">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getAssociationDesc()I" />
-		<method name="getAssociationType()I" />
-		<method name="getCompressedSize()I" />
-		<method name="getDateCreated()J" />
-		<method name="getDateModified()J" />
-		<method name="getFormat()I" />
-		<method name="getImagePixDepth()I" />
-		<method name="getImagePixHeight()I" />
-		<method name="getImagePixWidth()I" />
-		<method name="getKeywords()Ljava/lang/String;" />
-		<method name="getName()Ljava/lang/String;" />
-		<method name="getObjectHandle()I" />
-		<method name="getParent()I" />
-		<method name="getProtectionStatus()I" />
-		<method name="getSequenceNumber()I" />
-		<method name="getStorageId()I" />
-		<method name="getThumbCompressedSize()I" />
-		<method name="getThumbFormat()I" />
-		<method name="getThumbPixHeight()I" />
-		<method name="getThumbPixWidth()I" />
-	</class>
-	<class name="android/mtp/MtpStorageInfo" since="12">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getDescription()Ljava/lang/String;" />
-		<method name="getFreeSpace()J" />
-		<method name="getMaxCapacity()J" />
-		<method name="getStorageId()I" />
-		<method name="getVolumeIdentifier()Ljava/lang/String;" />
-	</class>
-	<class name="android/net/ConnectivityManager" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getActiveNetworkInfo()Landroid/net/NetworkInfo;" />
-		<method name="getAllNetworkInfo()[Landroid/net/NetworkInfo;" />
-		<method name="getBackgroundDataSetting()Z" since="3" />
-		<method name="getLinkProperties(Landroid/net/Network;)Landroid/net/LinkProperties;" since="21" />
-		<method name="getNetworkCapabilities(Landroid/net/Network;)Landroid/net/NetworkCapabilities;" since="21" />
-		<method name="getNetworkInfo(I)Landroid/net/NetworkInfo;" />
-		<method name="getNetworkPreference()I" />
-		<method name="getProcessDefaultNetwork()Landroid/net/Network;" since="21" />
-		<method name="isActiveNetworkMetered()Z" since="16" />
-		<method name="isDefaultNetworkActive()Z" since="21" />
-		<method name="isNetworkTypeValid(I)Z" />
-		<method name="registerDefaultNetworkActiveListener(Landroid/net/ConnectivityManager$OnNetworkActiveListener;)V" since="21" />
-		<method name="registerNetworkCallback(Landroid/net/NetworkRequest;Landroid/net/ConnectivityManager$NetworkCallback;)V" since="21" />
-		<method name="reportBadNetwork(Landroid/net/Network;)V" since="21" />
-		<method name="requestNetwork(Landroid/net/NetworkRequest;Landroid/net/ConnectivityManager$NetworkCallback;)V" since="21" />
-		<method name="requestRouteToHost(II)Z" />
-		<method name="setNetworkPreference(I)V" />
-		<method name="setProcessDefaultNetwork(Landroid/net/Network;)Z" since="21" />
-		<method name="startUsingNetworkFeature(ILjava/lang/String;)I" />
-		<method name="stopUsingNetworkFeature(ILjava/lang/String;)I" />
-		<method name="unregisterDefaultNetworkActiveListener(Landroid/net/ConnectivityManager$OnNetworkActiveListener;)V" since="21" />
-		<method name="unregisterNetworkCallback(Landroid/net/ConnectivityManager$NetworkCallback;)V" since="21" />
-		<field name="ACTION_BACKGROUND_DATA_SETTING_CHANGED" since="3" />
-		<field name="CONNECTIVITY_ACTION" />
-		<field name="DEFAULT_NETWORK_PREFERENCE" />
-		<field name="EXTRA_EXTRA_INFO" />
-		<field name="EXTRA_IS_FAILOVER" />
-		<field name="EXTRA_NETWORK_INFO" />
-		<field name="EXTRA_NETWORK_TYPE" since="17" />
-		<field name="EXTRA_NO_CONNECTIVITY" />
-		<field name="EXTRA_OTHER_NETWORK_INFO" />
-		<field name="EXTRA_REASON" />
-		<field name="TYPE_BLUETOOTH" since="13" />
-		<field name="TYPE_DUMMY" since="14" />
-		<field name="TYPE_ETHERNET" since="13" />
-		<field name="TYPE_MOBILE" />
-		<field name="TYPE_MOBILE_DUN" since="8" />
-		<field name="TYPE_MOBILE_HIPRI" since="8" />
-		<field name="TYPE_MOBILE_MMS" since="8" />
-		<field name="TYPE_MOBILE_SUPL" since="8" />
-		<field name="TYPE_WIFI" />
-		<field name="TYPE_WIMAX" since="8" />
-	</class>
-	<class name="android/net/ConnectivityManager$NetworkCallback" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="onAvailable(Landroid/net/Network;)V" />
-		<method name="onCapabilitiesChanged(Landroid/net/Network;Landroid/net/NetworkCapabilities;)V" />
-		<method name="onLinkPropertiesChanged(Landroid/net/Network;Landroid/net/LinkProperties;)V" />
-		<method name="onLosing(Landroid/net/Network;I)V" />
-		<method name="onLost(Landroid/net/Network;)V" />
-	</class>
-	<class name="android/net/ConnectivityManager$OnNetworkActiveListener" since="21">
-		<extends name="java/lang/Object" />
-		<method name="onNetworkActive()V" />
-	</class>
-	<class name="android/net/Credentials" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(III)V" />
-		<method name="getGid()I" />
-		<method name="getPid()I" />
-		<method name="getUid()I" />
-	</class>
-	<class name="android/net/DhcpInfo" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<field name="dns1" />
-		<field name="dns2" />
-		<field name="gateway" />
-		<field name="ipAddress" />
-		<field name="leaseDuration" />
-		<field name="netmask" />
-		<field name="serverAddress" />
-	</class>
-	<class name="android/net/IpPrefix" since="21">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="getAddress()Ljava/net/InetAddress;" />
-		<method name="getPrefixLength()I" />
-		<method name="getRawAddress()[B" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/net/LinkAddress" since="21">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="getAddress()Ljava/net/InetAddress;" />
-		<method name="getFlags()I" />
-		<method name="getPrefixLength()I" />
-		<method name="getScope()I" />
-	</class>
-	<class name="android/net/LinkProperties" since="21">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="getDnsServers()Ljava/util/List;" />
-		<method name="getDomains()Ljava/lang/String;" />
-		<method name="getHttpProxy()Landroid/net/ProxyInfo;" />
-		<method name="getInterfaceName()Ljava/lang/String;" />
-		<method name="getLinkAddresses()Ljava/util/List;" />
-		<method name="getRoutes()Ljava/util/List;" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/net/LocalServerSocket" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/io/FileDescriptor;)V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="accept()Landroid/net/LocalSocket;" />
-		<method name="close()V" />
-		<method name="getFileDescriptor()Ljava/io/FileDescriptor;" />
-		<method name="getLocalSocketAddress()Landroid/net/LocalSocketAddress;" />
-	</class>
-	<class name="android/net/LocalSocket" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Closeable" since="17" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(I)V" since="19" />
-		<method name="bind(Landroid/net/LocalSocketAddress;)V" />
-		<method name="close()V" />
-		<method name="connect(Landroid/net/LocalSocketAddress;)V" />
-		<method name="connect(Landroid/net/LocalSocketAddress;I)V" />
-		<method name="getAncillaryFileDescriptors()[Ljava/io/FileDescriptor;" />
-		<method name="getFileDescriptor()Ljava/io/FileDescriptor;" />
-		<method name="getInputStream()Ljava/io/InputStream;" />
-		<method name="getLocalSocketAddress()Landroid/net/LocalSocketAddress;" />
-		<method name="getOutputStream()Ljava/io/OutputStream;" />
-		<method name="getPeerCredentials()Landroid/net/Credentials;" />
-		<method name="getReceiveBufferSize()I" />
-		<method name="getRemoteSocketAddress()Landroid/net/LocalSocketAddress;" />
-		<method name="getSendBufferSize()I" />
-		<method name="getSoTimeout()I" />
-		<method name="isBound()Z" />
-		<method name="isClosed()Z" />
-		<method name="isConnected()Z" />
-		<method name="isInputShutdown()Z" />
-		<method name="isOutputShutdown()Z" />
-		<method name="setFileDescriptorsForSend([Ljava/io/FileDescriptor;)V" />
-		<method name="setReceiveBufferSize(I)V" />
-		<method name="setSendBufferSize(I)V" />
-		<method name="setSoTimeout(I)V" />
-		<method name="shutdownInput()V" />
-		<method name="shutdownOutput()V" />
-		<field name="SOCKET_DGRAM" since="19" />
-		<field name="SOCKET_SEQPACKET" since="19" />
-		<field name="SOCKET_STREAM" since="19" />
-	</class>
-	<class name="android/net/LocalSocketAddress" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Landroid/net/LocalSocketAddress$Namespace;)V" />
-		<method name="getName()Ljava/lang/String;" />
-		<method name="getNamespace()Landroid/net/LocalSocketAddress$Namespace;" />
-	</class>
-	<class name="android/net/LocalSocketAddress$Namespace" since="1">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Landroid/net/LocalSocketAddress$Namespace;" />
-		<method name="values()[Landroid/net/LocalSocketAddress$Namespace;" />
-		<field name="ABSTRACT" />
-		<field name="FILESYSTEM" />
-		<field name="RESERVED" />
-	</class>
-	<class name="android/net/MailTo" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getBody()Ljava/lang/String;" />
-		<method name="getCc()Ljava/lang/String;" />
-		<method name="getHeaders()Ljava/util/Map;" />
-		<method name="getSubject()Ljava/lang/String;" />
-		<method name="getTo()Ljava/lang/String;" />
-		<method name="isMailTo(Ljava/lang/String;)Z" />
-		<method name="parse(Ljava/lang/String;)Landroid/net/MailTo;" />
-		<field name="MAILTO_SCHEME" />
-	</class>
-	<class name="android/net/Network" since="21">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="getAllByName(Ljava/lang/String;)[Ljava/net/InetAddress;" />
-		<method name="getByName(Ljava/lang/String;)Ljava/net/InetAddress;" />
-		<method name="getSocketFactory()Ljavax/net/SocketFactory;" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/net/NetworkCapabilities" since="21">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>(Landroid/net/NetworkCapabilities;)V" />
-		<method name="getLinkDownstreamBandwidthKbps()I" />
-		<method name="getLinkUpstreamBandwidthKbps()I" />
-		<method name="hasCapability(I)Z" />
-		<method name="hasTransport(I)Z" />
-		<field name="CREATOR" />
-		<field name="NET_CAPABILITY_CBS" />
-		<field name="NET_CAPABILITY_DUN" />
-		<field name="NET_CAPABILITY_EIMS" />
-		<field name="NET_CAPABILITY_FOTA" />
-		<field name="NET_CAPABILITY_IA" />
-		<field name="NET_CAPABILITY_IMS" />
-		<field name="NET_CAPABILITY_INTERNET" />
-		<field name="NET_CAPABILITY_MMS" />
-		<field name="NET_CAPABILITY_NOT_METERED" />
-		<field name="NET_CAPABILITY_NOT_RESTRICTED" />
-		<field name="NET_CAPABILITY_RCS" />
-		<field name="NET_CAPABILITY_SUPL" />
-		<field name="NET_CAPABILITY_WIFI_P2P" />
-		<field name="NET_CAPABILITY_XCAP" />
-		<field name="TRANSPORT_BLUETOOTH" />
-		<field name="TRANSPORT_CELLULAR" />
-		<field name="TRANSPORT_ETHERNET" />
-		<field name="TRANSPORT_WIFI" />
-	</class>
-	<class name="android/net/NetworkInfo" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" since="3" />
-		<method name="&lt;init>(I)V" />
-		<method name="getDetailedState()Landroid/net/NetworkInfo$DetailedState;" />
-		<method name="getExtraInfo()Ljava/lang/String;" />
-		<method name="getReason()Ljava/lang/String;" />
-		<method name="getState()Landroid/net/NetworkInfo$State;" />
-		<method name="getSubtype()I" since="3" />
-		<method name="getSubtypeName()Ljava/lang/String;" since="3" />
-		<method name="getType()I" />
-		<method name="getTypeName()Ljava/lang/String;" />
-		<method name="isAvailable()Z" />
-		<method name="isConnected()Z" />
-		<method name="isConnectedOrConnecting()Z" />
-		<method name="isFailover()Z" />
-		<method name="isRoaming()Z" since="3" />
-	</class>
-	<class name="android/net/NetworkInfo$DetailedState" since="1">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Landroid/net/NetworkInfo$DetailedState;" />
-		<method name="values()[Landroid/net/NetworkInfo$DetailedState;" />
-		<field name="AUTHENTICATING" />
-		<field name="BLOCKED" since="14" />
-		<field name="CAPTIVE_PORTAL_CHECK" since="17" />
-		<field name="CONNECTED" />
-		<field name="CONNECTING" />
-		<field name="DISCONNECTED" />
-		<field name="DISCONNECTING" />
-		<field name="FAILED" />
-		<field name="IDLE" />
-		<field name="OBTAINING_IPADDR" />
-		<field name="SCANNING" />
-		<field name="SUSPENDED" />
-		<field name="VERIFYING_POOR_LINK" since="16" />
-	</class>
-	<class name="android/net/NetworkInfo$State" since="1">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Landroid/net/NetworkInfo$State;" />
-		<method name="values()[Landroid/net/NetworkInfo$State;" />
-		<field name="CONNECTED" />
-		<field name="CONNECTING" />
-		<field name="DISCONNECTED" />
-		<field name="DISCONNECTING" />
-		<field name="SUSPENDED" />
-		<field name="UNKNOWN" />
-	</class>
-	<class name="android/net/NetworkRequest" since="21">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/net/NetworkRequest$Builder" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="addCapability(I)Landroid/net/NetworkRequest$Builder;" />
-		<method name="addTransportType(I)Landroid/net/NetworkRequest$Builder;" />
-		<method name="build()Landroid/net/NetworkRequest;" />
-		<method name="removeCapability(I)Landroid/net/NetworkRequest$Builder;" />
-		<method name="removeTransportType(I)Landroid/net/NetworkRequest$Builder;" />
-	</class>
-	<class name="android/net/ParseException" since="1">
-		<extends name="java/lang/RuntimeException" />
-		<method name="&lt;init>()V" />
-		<field name="response" />
-	</class>
-	<class name="android/net/Proxy" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getDefaultHost()Ljava/lang/String;" />
-		<method name="getDefaultPort()I" />
-		<method name="getHost(Landroid/content/Context;)Ljava/lang/String;" />
-		<method name="getPort(Landroid/content/Context;)I" />
-		<field name="EXTRA_PROXY_INFO" since="21" />
-		<field name="PROXY_CHANGE_ACTION" />
-	</class>
-	<class name="android/net/ProxyInfo" since="21">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="buildDirectProxy(Ljava/lang/String;I)Landroid/net/ProxyInfo;" />
-		<method name="buildDirectProxy(Ljava/lang/String;ILjava/util/List;)Landroid/net/ProxyInfo;" />
-		<method name="buildPacProxy(Landroid/net/Uri;)Landroid/net/ProxyInfo;" />
-		<method name="getExclusionList()[Ljava/lang/String;" />
-		<method name="getHost()Ljava/lang/String;" />
-		<method name="getPacFileUrl()Landroid/net/Uri;" />
-		<method name="getPort()I" />
-	</class>
-	<class name="android/net/RouteInfo" since="21">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="getDestination()Landroid/net/IpPrefix;" />
-		<method name="getGateway()Ljava/net/InetAddress;" />
-		<method name="getInterface()Ljava/lang/String;" />
-		<method name="isDefaultRoute()Z" />
-		<method name="matches(Ljava/net/InetAddress;)Z" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/net/SSLCertificateSocketFactory" since="1">
-		<extends name="javax/net/ssl/SSLSocketFactory" />
-		<method name="&lt;init>(I)V" />
-		<method name="getDefault(I)Ljavax/net/SocketFactory;" />
-		<method name="getDefault(ILandroid/net/SSLSessionCache;)Ljavax/net/ssl/SSLSocketFactory;" since="8" />
-		<method name="getHttpSocketFactory(ILandroid/net/SSLSessionCache;)Lorg/apache/http/conn/ssl/SSLSocketFactory;" since="8" />
-		<method name="getInsecure(ILandroid/net/SSLSessionCache;)Ljavax/net/ssl/SSLSocketFactory;" since="8" />
-		<method name="getNpnSelectedProtocol(Ljava/net/Socket;)[B" since="16" />
-		<method name="setHostname(Ljava/net/Socket;Ljava/lang/String;)V" since="17" />
-		<method name="setKeyManagers([Ljavax/net/ssl/KeyManager;)V" since="14" />
-		<method name="setNpnProtocols([[B)V" since="16" />
-		<method name="setTrustManagers([Ljavax/net/ssl/TrustManager;)V" since="14" />
-		<method name="setUseSessionTickets(Ljava/net/Socket;Z)V" since="17" />
-	</class>
-	<class name="android/net/SSLSessionCache" since="8">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Ljava/io/File;)V" />
-	</class>
-	<class name="android/net/TrafficStats" since="8">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="clearThreadStatsTag()V" since="14" />
-		<method name="getMobileRxBytes()J" />
-		<method name="getMobileRxPackets()J" />
-		<method name="getMobileTxBytes()J" />
-		<method name="getMobileTxPackets()J" />
-		<method name="getThreadStatsTag()I" since="14" />
-		<method name="getTotalRxBytes()J" />
-		<method name="getTotalRxPackets()J" />
-		<method name="getTotalTxBytes()J" />
-		<method name="getTotalTxPackets()J" />
-		<method name="getUidRxBytes(I)J" />
-		<method name="getUidRxPackets(I)J" since="12" />
-		<method name="getUidTcpRxBytes(I)J" since="12" />
-		<method name="getUidTcpRxSegments(I)J" since="12" />
-		<method name="getUidTcpTxBytes(I)J" since="12" />
-		<method name="getUidTcpTxSegments(I)J" since="12" />
-		<method name="getUidTxBytes(I)J" />
-		<method name="getUidTxPackets(I)J" since="12" />
-		<method name="getUidUdpRxBytes(I)J" since="12" />
-		<method name="getUidUdpRxPackets(I)J" since="12" />
-		<method name="getUidUdpTxBytes(I)J" since="12" />
-		<method name="getUidUdpTxPackets(I)J" since="12" />
-		<method name="incrementOperationCount(I)V" since="14" />
-		<method name="incrementOperationCount(II)V" since="14" />
-		<method name="setThreadStatsTag(I)V" since="14" />
-		<method name="tagSocket(Ljava/net/Socket;)V" since="14" />
-		<method name="untagSocket(Ljava/net/Socket;)V" since="14" />
-		<field name="UNSUPPORTED" />
-	</class>
-	<class name="android/net/Uri" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<implements name="java/lang/Comparable" />
-		<method name="&lt;init>()V" />
-		<method name="buildUpon()Landroid/net/Uri$Builder;" />
-		<method name="compareTo(Landroid/net/Uri;)I" />
-		<method name="decode(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="encode(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="encode(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="fromFile(Ljava/io/File;)Landroid/net/Uri;" />
-		<method name="fromParts(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/net/Uri;" />
-		<method name="getAuthority()Ljava/lang/String;" />
-		<method name="getBooleanQueryParameter(Ljava/lang/String;Z)Z" since="11" />
-		<method name="getEncodedAuthority()Ljava/lang/String;" />
-		<method name="getEncodedFragment()Ljava/lang/String;" />
-		<method name="getEncodedPath()Ljava/lang/String;" />
-		<method name="getEncodedQuery()Ljava/lang/String;" />
-		<method name="getEncodedSchemeSpecificPart()Ljava/lang/String;" />
-		<method name="getEncodedUserInfo()Ljava/lang/String;" />
-		<method name="getFragment()Ljava/lang/String;" />
-		<method name="getHost()Ljava/lang/String;" />
-		<method name="getLastPathSegment()Ljava/lang/String;" />
-		<method name="getPath()Ljava/lang/String;" />
-		<method name="getPathSegments()Ljava/util/List;" />
-		<method name="getPort()I" />
-		<method name="getQuery()Ljava/lang/String;" />
-		<method name="getQueryParameter(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="getQueryParameterNames()Ljava/util/Set;" since="11" />
-		<method name="getQueryParameters(Ljava/lang/String;)Ljava/util/List;" />
-		<method name="getScheme()Ljava/lang/String;" />
-		<method name="getSchemeSpecificPart()Ljava/lang/String;" />
-		<method name="getUserInfo()Ljava/lang/String;" />
-		<method name="isAbsolute()Z" />
-		<method name="isHierarchical()Z" />
-		<method name="isOpaque()Z" />
-		<method name="isRelative()Z" />
-		<method name="normalizeScheme()Landroid/net/Uri;" since="16" />
-		<method name="parse(Ljava/lang/String;)Landroid/net/Uri;" />
-		<method name="withAppendedPath(Landroid/net/Uri;Ljava/lang/String;)Landroid/net/Uri;" />
-		<method name="writeToParcel(Landroid/os/Parcel;Landroid/net/Uri;)V" />
-		<field name="CREATOR" />
-		<field name="EMPTY" />
-	</class>
-	<class name="android/net/Uri$Builder" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="appendEncodedPath(Ljava/lang/String;)Landroid/net/Uri$Builder;" />
-		<method name="appendPath(Ljava/lang/String;)Landroid/net/Uri$Builder;" />
-		<method name="appendQueryParameter(Ljava/lang/String;Ljava/lang/String;)Landroid/net/Uri$Builder;" />
-		<method name="authority(Ljava/lang/String;)Landroid/net/Uri$Builder;" />
-		<method name="build()Landroid/net/Uri;" />
-		<method name="clearQuery()Landroid/net/Uri$Builder;" since="11" />
-		<method name="encodedAuthority(Ljava/lang/String;)Landroid/net/Uri$Builder;" />
-		<method name="encodedFragment(Ljava/lang/String;)Landroid/net/Uri$Builder;" />
-		<method name="encodedOpaquePart(Ljava/lang/String;)Landroid/net/Uri$Builder;" />
-		<method name="encodedPath(Ljava/lang/String;)Landroid/net/Uri$Builder;" />
-		<method name="encodedQuery(Ljava/lang/String;)Landroid/net/Uri$Builder;" />
-		<method name="fragment(Ljava/lang/String;)Landroid/net/Uri$Builder;" />
-		<method name="opaquePart(Ljava/lang/String;)Landroid/net/Uri$Builder;" />
-		<method name="path(Ljava/lang/String;)Landroid/net/Uri$Builder;" />
-		<method name="query(Ljava/lang/String;)Landroid/net/Uri$Builder;" />
-		<method name="scheme(Ljava/lang/String;)Landroid/net/Uri$Builder;" />
-	</class>
-	<class name="android/net/UrlQuerySanitizer" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="addSanitizedEntry(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="clear()V" />
-		<method name="decodeHexDigit(C)I" />
-		<method name="getAllButNulAndAngleBracketsLegal()Landroid/net/UrlQuerySanitizer$ValueSanitizer;" />
-		<method name="getAllButNulLegal()Landroid/net/UrlQuerySanitizer$ValueSanitizer;" />
-		<method name="getAllButWhitespaceLegal()Landroid/net/UrlQuerySanitizer$ValueSanitizer;" />
-		<method name="getAllIllegal()Landroid/net/UrlQuerySanitizer$ValueSanitizer;" />
-		<method name="getAllowUnregisteredParamaters()Z" />
-		<method name="getAmpAndSpaceLegal()Landroid/net/UrlQuerySanitizer$ValueSanitizer;" />
-		<method name="getAmpLegal()Landroid/net/UrlQuerySanitizer$ValueSanitizer;" />
-		<method name="getEffectiveValueSanitizer(Ljava/lang/String;)Landroid/net/UrlQuerySanitizer$ValueSanitizer;" />
-		<method name="getParameterList()Ljava/util/List;" />
-		<method name="getParameterSet()Ljava/util/Set;" />
-		<method name="getPreferFirstRepeatedParameter()Z" />
-		<method name="getSpaceLegal()Landroid/net/UrlQuerySanitizer$ValueSanitizer;" />
-		<method name="getUnregisteredParameterValueSanitizer()Landroid/net/UrlQuerySanitizer$ValueSanitizer;" />
-		<method name="getUrlAndSpaceLegal()Landroid/net/UrlQuerySanitizer$ValueSanitizer;" />
-		<method name="getUrlLegal()Landroid/net/UrlQuerySanitizer$ValueSanitizer;" />
-		<method name="getValue(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="getValueSanitizer(Ljava/lang/String;)Landroid/net/UrlQuerySanitizer$ValueSanitizer;" />
-		<method name="hasParameter(Ljava/lang/String;)Z" />
-		<method name="isHexDigit(C)Z" />
-		<method name="parseEntry(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="parseQuery(Ljava/lang/String;)V" />
-		<method name="parseUrl(Ljava/lang/String;)V" />
-		<method name="registerParameter(Ljava/lang/String;Landroid/net/UrlQuerySanitizer$ValueSanitizer;)V" />
-		<method name="registerParameters([Ljava/lang/String;Landroid/net/UrlQuerySanitizer$ValueSanitizer;)V" />
-		<method name="setAllowUnregisteredParamaters(Z)V" />
-		<method name="setPreferFirstRepeatedParameter(Z)V" />
-		<method name="setUnregisteredParameterValueSanitizer(Landroid/net/UrlQuerySanitizer$ValueSanitizer;)V" />
-		<method name="unescape(Ljava/lang/String;)Ljava/lang/String;" />
-	</class>
-	<class name="android/net/UrlQuerySanitizer$IllegalCharacterValueSanitizer" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/net/UrlQuerySanitizer$ValueSanitizer" />
-		<method name="&lt;init>(I)V" />
-		<field name="ALL_BUT_NUL_AND_ANGLE_BRACKETS_LEGAL" />
-		<field name="ALL_BUT_NUL_LEGAL" />
-		<field name="ALL_BUT_WHITESPACE_LEGAL" />
-		<field name="ALL_ILLEGAL" />
-		<field name="ALL_OK" />
-		<field name="ALL_WHITESPACE_OK" />
-		<field name="AMP_AND_SPACE_LEGAL" />
-		<field name="AMP_LEGAL" />
-		<field name="AMP_OK" />
-		<field name="DQUOTE_OK" />
-		<field name="GT_OK" />
-		<field name="LT_OK" />
-		<field name="NON_7_BIT_ASCII_OK" />
-		<field name="NUL_OK" />
-		<field name="OTHER_WHITESPACE_OK" />
-		<field name="PCT_OK" />
-		<field name="SCRIPT_URL_OK" />
-		<field name="SPACE_LEGAL" />
-		<field name="SPACE_OK" />
-		<field name="SQUOTE_OK" />
-		<field name="URL_AND_SPACE_LEGAL" />
-		<field name="URL_LEGAL" />
-	</class>
-	<class name="android/net/UrlQuerySanitizer$ParameterValuePair" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/net/UrlQuerySanitizer;Ljava/lang/String;Ljava/lang/String;)V" />
-		<field name="mParameter" />
-		<field name="mValue" />
-	</class>
-	<class name="android/net/UrlQuerySanitizer$ValueSanitizer" since="1">
-		<extends name="java/lang/Object" />
-		<method name="sanitize(Ljava/lang/String;)Ljava/lang/String;" />
-	</class>
-	<class name="android/net/VpnService" since="14">
-		<extends name="android/app/Service" />
-		<method name="&lt;init>()V" />
-		<method name="onRevoke()V" />
-		<method name="prepare(Landroid/content/Context;)Landroid/content/Intent;" />
-		<method name="protect(I)Z" />
-		<method name="protect(Ljava/net/DatagramSocket;)Z" />
-		<method name="protect(Ljava/net/Socket;)Z" />
-		<field name="SERVICE_INTERFACE" />
-	</class>
-	<class name="android/net/VpnService$Builder" since="14">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/net/VpnService;)V" />
-		<method name="addAddress(Ljava/lang/String;I)Landroid/net/VpnService$Builder;" />
-		<method name="addAddress(Ljava/net/InetAddress;I)Landroid/net/VpnService$Builder;" />
-		<method name="addDnsServer(Ljava/lang/String;)Landroid/net/VpnService$Builder;" />
-		<method name="addDnsServer(Ljava/net/InetAddress;)Landroid/net/VpnService$Builder;" />
-		<method name="addRoute(Ljava/lang/String;I)Landroid/net/VpnService$Builder;" />
-		<method name="addRoute(Ljava/net/InetAddress;I)Landroid/net/VpnService$Builder;" />
-		<method name="addSearchDomain(Ljava/lang/String;)Landroid/net/VpnService$Builder;" />
-		<method name="establish()Landroid/os/ParcelFileDescriptor;" />
-		<method name="setConfigureIntent(Landroid/app/PendingIntent;)Landroid/net/VpnService$Builder;" />
-		<method name="setMtu(I)Landroid/net/VpnService$Builder;" />
-		<method name="setSession(Ljava/lang/String;)Landroid/net/VpnService$Builder;" />
-	</class>
-	<class name="android/net/http/AndroidHttpClient" since="8">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/client/HttpClient" />
-		<method name="&lt;init>()V" />
-		<method name="close()V" />
-		<method name="disableCurlLogging()V" />
-		<method name="enableCurlLogging(Ljava/lang/String;I)V" />
-		<method name="getCompressedEntity([BLandroid/content/ContentResolver;)Lorg/apache/http/entity/AbstractHttpEntity;" />
-		<method name="getMinGzipSize(Landroid/content/ContentResolver;)J" />
-		<method name="getUngzippedContent(Lorg/apache/http/HttpEntity;)Ljava/io/InputStream;" />
-		<method name="modifyRequestToAcceptGzipResponse(Lorg/apache/http/HttpRequest;)V" />
-		<method name="newInstance(Ljava/lang/String;)Landroid/net/http/AndroidHttpClient;" />
-		<method name="newInstance(Ljava/lang/String;Landroid/content/Context;)Landroid/net/http/AndroidHttpClient;" />
-		<method name="parseDate(Ljava/lang/String;)J" />
-		<field name="DEFAULT_SYNC_MIN_GZIP_BYTES" />
-	</class>
-	<class name="android/net/http/HttpResponseCache" since="14">
-		<extends name="java/net/ResponseCache" />
-		<implements name="java/io/Closeable" />
-		<method name="&lt;init>()V" />
-		<method name="delete()V" />
-		<method name="flush()V" />
-		<method name="getHitCount()I" />
-		<method name="getInstalled()Landroid/net/http/HttpResponseCache;" />
-		<method name="getNetworkCount()I" />
-		<method name="getRequestCount()I" />
-		<method name="install(Ljava/io/File;J)Landroid/net/http/HttpResponseCache;" />
-		<method name="maxSize()J" />
-		<method name="size()J" />
-	</class>
-	<class name="android/net/http/SslCertificate" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/util/Date;Ljava/util/Date;)V" since="8" />
-		<method name="&lt;init>(Ljava/security/cert/X509Certificate;)V" />
-		<method name="getIssuedBy()Landroid/net/http/SslCertificate$DName;" />
-		<method name="getIssuedTo()Landroid/net/http/SslCertificate$DName;" />
-		<method name="getValidNotAfter()Ljava/lang/String;" />
-		<method name="getValidNotAfterDate()Ljava/util/Date;" since="8" />
-		<method name="getValidNotBefore()Ljava/lang/String;" />
-		<method name="getValidNotBeforeDate()Ljava/util/Date;" since="8" />
-		<method name="restoreState(Landroid/os/Bundle;)Landroid/net/http/SslCertificate;" />
-		<method name="saveState(Landroid/net/http/SslCertificate;)Landroid/os/Bundle;" />
-	</class>
-	<class name="android/net/http/SslCertificate$DName" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/net/http/SslCertificate;Ljava/lang/String;)V" />
-		<method name="getCName()Ljava/lang/String;" />
-		<method name="getDName()Ljava/lang/String;" />
-		<method name="getOName()Ljava/lang/String;" />
-		<method name="getUName()Ljava/lang/String;" />
-	</class>
-	<class name="android/net/http/SslError" since="8">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(ILandroid/net/http/SslCertificate;)V" />
-		<method name="&lt;init>(ILandroid/net/http/SslCertificate;Ljava/lang/String;)V" since="14" />
-		<method name="&lt;init>(ILjava/security/cert/X509Certificate;)V" />
-		<method name="&lt;init>(ILjava/security/cert/X509Certificate;Ljava/lang/String;)V" since="14" />
-		<method name="addError(I)Z" />
-		<method name="getCertificate()Landroid/net/http/SslCertificate;" />
-		<method name="getPrimaryError()I" />
-		<method name="getUrl()Ljava/lang/String;" since="14" />
-		<method name="hasError(I)Z" />
-		<field name="SSL_DATE_INVALID" since="14" />
-		<field name="SSL_EXPIRED" />
-		<field name="SSL_IDMISMATCH" />
-		<field name="SSL_INVALID" since="14" />
-		<field name="SSL_MAX_ERROR" />
-		<field name="SSL_NOTYETVALID" />
-		<field name="SSL_UNTRUSTED" />
-	</class>
-	<class name="android/net/http/X509TrustManagerExtensions" since="17">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljavax/net/ssl/X509TrustManager;)V" />
-		<method name="checkServerTrusted([Ljava/security/cert/X509Certificate;Ljava/lang/String;Ljava/lang/String;)Ljava/util/List;" />
-		<method name="isUserAddedCertificate(Ljava/security/cert/X509Certificate;)Z" since="21" />
-	</class>
-	<class name="android/net/nsd/NsdManager" since="16">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="discoverServices(Ljava/lang/String;ILandroid/net/nsd/NsdManager$DiscoveryListener;)V" />
-		<method name="registerService(Landroid/net/nsd/NsdServiceInfo;ILandroid/net/nsd/NsdManager$RegistrationListener;)V" />
-		<method name="resolveService(Landroid/net/nsd/NsdServiceInfo;Landroid/net/nsd/NsdManager$ResolveListener;)V" />
-		<method name="stopServiceDiscovery(Landroid/net/nsd/NsdManager$DiscoveryListener;)V" />
-		<method name="unregisterService(Landroid/net/nsd/NsdManager$RegistrationListener;)V" />
-		<field name="ACTION_NSD_STATE_CHANGED" />
-		<field name="EXTRA_NSD_STATE" />
-		<field name="FAILURE_ALREADY_ACTIVE" />
-		<field name="FAILURE_INTERNAL_ERROR" />
-		<field name="FAILURE_MAX_LIMIT" />
-		<field name="NSD_STATE_DISABLED" />
-		<field name="NSD_STATE_ENABLED" />
-		<field name="PROTOCOL_DNS_SD" />
-	</class>
-	<class name="android/net/nsd/NsdManager$DiscoveryListener" since="16">
-		<extends name="java/lang/Object" />
-		<method name="onDiscoveryStarted(Ljava/lang/String;)V" />
-		<method name="onDiscoveryStopped(Ljava/lang/String;)V" />
-		<method name="onServiceFound(Landroid/net/nsd/NsdServiceInfo;)V" />
-		<method name="onServiceLost(Landroid/net/nsd/NsdServiceInfo;)V" />
-		<method name="onStartDiscoveryFailed(Ljava/lang/String;I)V" />
-		<method name="onStopDiscoveryFailed(Ljava/lang/String;I)V" />
-	</class>
-	<class name="android/net/nsd/NsdManager$RegistrationListener" since="16">
-		<extends name="java/lang/Object" />
-		<method name="onRegistrationFailed(Landroid/net/nsd/NsdServiceInfo;I)V" />
-		<method name="onServiceRegistered(Landroid/net/nsd/NsdServiceInfo;)V" />
-		<method name="onServiceUnregistered(Landroid/net/nsd/NsdServiceInfo;)V" />
-		<method name="onUnregistrationFailed(Landroid/net/nsd/NsdServiceInfo;I)V" />
-	</class>
-	<class name="android/net/nsd/NsdManager$ResolveListener" since="16">
-		<extends name="java/lang/Object" />
-		<method name="onResolveFailed(Landroid/net/nsd/NsdServiceInfo;I)V" />
-		<method name="onServiceResolved(Landroid/net/nsd/NsdServiceInfo;)V" />
-	</class>
-	<class name="android/net/nsd/NsdServiceInfo" since="16">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="getAttributes()Ljava/util/Map;" since="21" />
-		<method name="getHost()Ljava/net/InetAddress;" />
-		<method name="getPort()I" />
-		<method name="getServiceName()Ljava/lang/String;" />
-		<method name="getServiceType()Ljava/lang/String;" />
-		<method name="removeAttribute(Ljava/lang/String;)V" since="21" />
-		<method name="setAttribute(Ljava/lang/String;Ljava/lang/String;)V" since="21" />
-		<method name="setHost(Ljava/net/InetAddress;)V" />
-		<method name="setPort(I)V" />
-		<method name="setServiceName(Ljava/lang/String;)V" />
-		<method name="setServiceType(Ljava/lang/String;)V" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/net/rtp/AudioCodec" since="12">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getCodec(ILjava/lang/String;Ljava/lang/String;)Landroid/net/rtp/AudioCodec;" />
-		<method name="getCodecs()[Landroid/net/rtp/AudioCodec;" />
-		<field name="AMR" />
-		<field name="GSM" />
-		<field name="GSM_EFR" />
-		<field name="PCMA" />
-		<field name="PCMU" />
-		<field name="fmtp" />
-		<field name="rtpmap" />
-		<field name="type" />
-	</class>
-	<class name="android/net/rtp/AudioGroup" since="12">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="clear()V" />
-		<method name="getMode()I" />
-		<method name="getStreams()[Landroid/net/rtp/AudioStream;" />
-		<method name="sendDtmf(I)V" />
-		<method name="setMode(I)V" />
-		<field name="MODE_ECHO_SUPPRESSION" />
-		<field name="MODE_MUTED" />
-		<field name="MODE_NORMAL" />
-		<field name="MODE_ON_HOLD" />
-	</class>
-	<class name="android/net/rtp/AudioStream" since="12">
-		<extends name="android/net/rtp/RtpStream" />
-		<method name="&lt;init>(Ljava/net/InetAddress;)V" />
-		<method name="getCodec()Landroid/net/rtp/AudioCodec;" />
-		<method name="getDtmfType()I" />
-		<method name="getGroup()Landroid/net/rtp/AudioGroup;" />
-		<method name="join(Landroid/net/rtp/AudioGroup;)V" />
-		<method name="setCodec(Landroid/net/rtp/AudioCodec;)V" />
-		<method name="setDtmfType(I)V" />
-	</class>
-	<class name="android/net/rtp/RtpStream" since="12">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="associate(Ljava/net/InetAddress;I)V" />
-		<method name="getLocalAddress()Ljava/net/InetAddress;" />
-		<method name="getLocalPort()I" />
-		<method name="getMode()I" />
-		<method name="getRemoteAddress()Ljava/net/InetAddress;" />
-		<method name="getRemotePort()I" />
-		<method name="isBusy()Z" />
-		<method name="release()V" />
-		<method name="setMode(I)V" />
-		<field name="MODE_NORMAL" />
-		<field name="MODE_RECEIVE_ONLY" />
-		<field name="MODE_SEND_ONLY" />
-	</class>
-	<class name="android/net/sip/SipAudioCall" since="9">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/net/sip/SipProfile;)V" />
-		<method name="answerCall(I)V" />
-		<method name="attachCall(Landroid/net/sip/SipSession;Ljava/lang/String;)V" />
-		<method name="close()V" />
-		<method name="continueCall(I)V" />
-		<method name="endCall()V" />
-		<method name="getLocalProfile()Landroid/net/sip/SipProfile;" />
-		<method name="getPeerProfile()Landroid/net/sip/SipProfile;" />
-		<method name="getState()I" />
-		<method name="holdCall(I)V" />
-		<method name="isInCall()Z" />
-		<method name="isMuted()Z" />
-		<method name="isOnHold()Z" />
-		<method name="makeCall(Landroid/net/sip/SipProfile;Landroid/net/sip/SipSession;I)V" />
-		<method name="sendDtmf(I)V" />
-		<method name="sendDtmf(ILandroid/os/Message;)V" />
-		<method name="setListener(Landroid/net/sip/SipAudioCall$Listener;)V" />
-		<method name="setListener(Landroid/net/sip/SipAudioCall$Listener;Z)V" />
-		<method name="setSpeakerMode(Z)V" />
-		<method name="startAudio()V" />
-		<method name="toggleMute()V" />
-	</class>
-	<class name="android/net/sip/SipAudioCall$Listener" since="9">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="onCallBusy(Landroid/net/sip/SipAudioCall;)V" />
-		<method name="onCallEnded(Landroid/net/sip/SipAudioCall;)V" />
-		<method name="onCallEstablished(Landroid/net/sip/SipAudioCall;)V" />
-		<method name="onCallHeld(Landroid/net/sip/SipAudioCall;)V" />
-		<method name="onCalling(Landroid/net/sip/SipAudioCall;)V" />
-		<method name="onChanged(Landroid/net/sip/SipAudioCall;)V" />
-		<method name="onError(Landroid/net/sip/SipAudioCall;ILjava/lang/String;)V" />
-		<method name="onReadyToCall(Landroid/net/sip/SipAudioCall;)V" />
-		<method name="onRinging(Landroid/net/sip/SipAudioCall;Landroid/net/sip/SipProfile;)V" />
-		<method name="onRingingBack(Landroid/net/sip/SipAudioCall;)V" />
-	</class>
-	<class name="android/net/sip/SipErrorCode" since="9">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="toString(I)Ljava/lang/String;" />
-		<field name="CLIENT_ERROR" />
-		<field name="CROSS_DOMAIN_AUTHENTICATION" />
-		<field name="DATA_CONNECTION_LOST" />
-		<field name="INVALID_CREDENTIALS" />
-		<field name="INVALID_REMOTE_URI" />
-		<field name="IN_PROGRESS" />
-		<field name="NO_ERROR" />
-		<field name="PEER_NOT_REACHABLE" />
-		<field name="SERVER_ERROR" />
-		<field name="SERVER_UNREACHABLE" />
-		<field name="SOCKET_ERROR" />
-		<field name="TIME_OUT" />
-		<field name="TRANSACTION_TERMINTED" />
-	</class>
-	<class name="android/net/sip/SipException" since="9">
-		<extends name="java/lang/Exception" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="android/net/sip/SipManager" since="9">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="close(Ljava/lang/String;)V" />
-		<method name="createSipSession(Landroid/net/sip/SipProfile;Landroid/net/sip/SipSession$Listener;)Landroid/net/sip/SipSession;" />
-		<method name="getCallId(Landroid/content/Intent;)Ljava/lang/String;" />
-		<method name="getOfferSessionDescription(Landroid/content/Intent;)Ljava/lang/String;" />
-		<method name="getSessionFor(Landroid/content/Intent;)Landroid/net/sip/SipSession;" />
-		<method name="isApiSupported(Landroid/content/Context;)Z" />
-		<method name="isIncomingCallIntent(Landroid/content/Intent;)Z" />
-		<method name="isOpened(Ljava/lang/String;)Z" />
-		<method name="isRegistered(Ljava/lang/String;)Z" />
-		<method name="isSipWifiOnly(Landroid/content/Context;)Z" />
-		<method name="isVoipSupported(Landroid/content/Context;)Z" />
-		<method name="makeAudioCall(Landroid/net/sip/SipProfile;Landroid/net/sip/SipProfile;Landroid/net/sip/SipAudioCall$Listener;I)Landroid/net/sip/SipAudioCall;" />
-		<method name="makeAudioCall(Ljava/lang/String;Ljava/lang/String;Landroid/net/sip/SipAudioCall$Listener;I)Landroid/net/sip/SipAudioCall;" />
-		<method name="newInstance(Landroid/content/Context;)Landroid/net/sip/SipManager;" />
-		<method name="open(Landroid/net/sip/SipProfile;)V" />
-		<method name="open(Landroid/net/sip/SipProfile;Landroid/app/PendingIntent;Landroid/net/sip/SipRegistrationListener;)V" />
-		<method name="register(Landroid/net/sip/SipProfile;ILandroid/net/sip/SipRegistrationListener;)V" />
-		<method name="setRegistrationListener(Ljava/lang/String;Landroid/net/sip/SipRegistrationListener;)V" />
-		<method name="takeAudioCall(Landroid/content/Intent;Landroid/net/sip/SipAudioCall$Listener;)Landroid/net/sip/SipAudioCall;" />
-		<method name="unregister(Landroid/net/sip/SipProfile;Landroid/net/sip/SipRegistrationListener;)V" />
-		<field name="EXTRA_CALL_ID" />
-		<field name="EXTRA_OFFER_SD" />
-		<field name="INCOMING_CALL_RESULT_CODE" />
-	</class>
-	<class name="android/net/sip/SipProfile" since="9">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<implements name="java/io/Serializable" />
-		<implements name="java/lang/Cloneable" />
-		<method name="&lt;init>()V" />
-		<method name="getAuthUserName()Ljava/lang/String;" since="12" />
-		<method name="getAutoRegistration()Z" />
-		<method name="getDisplayName()Ljava/lang/String;" />
-		<method name="getPassword()Ljava/lang/String;" />
-		<method name="getPort()I" />
-		<method name="getProfileName()Ljava/lang/String;" />
-		<method name="getProtocol()Ljava/lang/String;" />
-		<method name="getProxyAddress()Ljava/lang/String;" />
-		<method name="getSendKeepAlive()Z" />
-		<method name="getSipDomain()Ljava/lang/String;" />
-		<method name="getUriString()Ljava/lang/String;" />
-		<method name="getUserName()Ljava/lang/String;" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/net/sip/SipProfile$Builder" since="9">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/net/sip/SipProfile;)V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="build()Landroid/net/sip/SipProfile;" />
-		<method name="setAuthUserName(Ljava/lang/String;)Landroid/net/sip/SipProfile$Builder;" since="12" />
-		<method name="setAutoRegistration(Z)Landroid/net/sip/SipProfile$Builder;" />
-		<method name="setDisplayName(Ljava/lang/String;)Landroid/net/sip/SipProfile$Builder;" />
-		<method name="setOutboundProxy(Ljava/lang/String;)Landroid/net/sip/SipProfile$Builder;" />
-		<method name="setPassword(Ljava/lang/String;)Landroid/net/sip/SipProfile$Builder;" />
-		<method name="setPort(I)Landroid/net/sip/SipProfile$Builder;" />
-		<method name="setProfileName(Ljava/lang/String;)Landroid/net/sip/SipProfile$Builder;" />
-		<method name="setProtocol(Ljava/lang/String;)Landroid/net/sip/SipProfile$Builder;" />
-		<method name="setSendKeepAlive(Z)Landroid/net/sip/SipProfile$Builder;" />
-	</class>
-	<class name="android/net/sip/SipRegistrationListener" since="9">
-		<extends name="java/lang/Object" />
-		<method name="onRegistering(Ljava/lang/String;)V" />
-		<method name="onRegistrationDone(Ljava/lang/String;J)V" />
-		<method name="onRegistrationFailed(Ljava/lang/String;ILjava/lang/String;)V" />
-	</class>
-	<class name="android/net/sip/SipSession" since="9">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="answerCall(Ljava/lang/String;I)V" />
-		<method name="changeCall(Ljava/lang/String;I)V" />
-		<method name="endCall()V" />
-		<method name="getCallId()Ljava/lang/String;" />
-		<method name="getLocalIp()Ljava/lang/String;" />
-		<method name="getLocalProfile()Landroid/net/sip/SipProfile;" />
-		<method name="getPeerProfile()Landroid/net/sip/SipProfile;" />
-		<method name="getState()I" />
-		<method name="isInCall()Z" />
-		<method name="makeCall(Landroid/net/sip/SipProfile;Ljava/lang/String;I)V" />
-		<method name="register(I)V" />
-		<method name="setListener(Landroid/net/sip/SipSession$Listener;)V" />
-		<method name="unregister()V" />
-	</class>
-	<class name="android/net/sip/SipSession$Listener" since="9">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="onCallBusy(Landroid/net/sip/SipSession;)V" />
-		<method name="onCallChangeFailed(Landroid/net/sip/SipSession;ILjava/lang/String;)V" />
-		<method name="onCallEnded(Landroid/net/sip/SipSession;)V" />
-		<method name="onCallEstablished(Landroid/net/sip/SipSession;Ljava/lang/String;)V" />
-		<method name="onCalling(Landroid/net/sip/SipSession;)V" />
-		<method name="onError(Landroid/net/sip/SipSession;ILjava/lang/String;)V" />
-		<method name="onRegistering(Landroid/net/sip/SipSession;)V" />
-		<method name="onRegistrationDone(Landroid/net/sip/SipSession;I)V" />
-		<method name="onRegistrationFailed(Landroid/net/sip/SipSession;ILjava/lang/String;)V" />
-		<method name="onRegistrationTimeout(Landroid/net/sip/SipSession;)V" />
-		<method name="onRinging(Landroid/net/sip/SipSession;Landroid/net/sip/SipProfile;Ljava/lang/String;)V" />
-		<method name="onRingingBack(Landroid/net/sip/SipSession;)V" />
-	</class>
-	<class name="android/net/sip/SipSession$State" since="9">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="toString(I)Ljava/lang/String;" />
-		<field name="DEREGISTERING" />
-		<field name="INCOMING_CALL" />
-		<field name="INCOMING_CALL_ANSWERING" />
-		<field name="IN_CALL" />
-		<field name="NOT_DEFINED" />
-		<field name="OUTGOING_CALL" />
-		<field name="OUTGOING_CALL_CANCELING" />
-		<field name="OUTGOING_CALL_RING_BACK" />
-		<field name="PINGING" />
-		<field name="READY_TO_CALL" />
-		<field name="REGISTERING" />
-	</class>
-	<class name="android/net/wifi/ScanResult" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<field name="BSSID" />
-		<field name="SSID" />
-		<field name="capabilities" />
-		<field name="frequency" />
-		<field name="level" />
-		<field name="timestamp" since="17" />
-	</class>
-	<class name="android/net/wifi/SupplicantState" since="1">
-		<extends name="java/lang/Enum" />
-		<implements name="android/os/Parcelable" />
-		<method name="isValidState(Landroid/net/wifi/SupplicantState;)Z" />
-		<method name="valueOf(Ljava/lang/String;)Landroid/net/wifi/SupplicantState;" />
-		<method name="values()[Landroid/net/wifi/SupplicantState;" />
-		<field name="ASSOCIATED" />
-		<field name="ASSOCIATING" />
-		<field name="AUTHENTICATING" since="14" />
-		<field name="COMPLETED" />
-		<field name="DISCONNECTED" />
-		<field name="DORMANT" />
-		<field name="FOUR_WAY_HANDSHAKE" />
-		<field name="GROUP_HANDSHAKE" />
-		<field name="INACTIVE" />
-		<field name="INTERFACE_DISABLED" since="14" />
-		<field name="INVALID" />
-		<field name="SCANNING" />
-		<field name="UNINITIALIZED" />
-	</class>
-	<class name="android/net/wifi/WifiConfiguration" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<field name="BSSID" />
-		<field name="SSID" />
-		<field name="allowedAuthAlgorithms" />
-		<field name="allowedGroupCiphers" />
-		<field name="allowedKeyManagement" />
-		<field name="allowedPairwiseCiphers" />
-		<field name="allowedProtocols" />
-		<field name="enterpriseConfig" since="18" />
-		<field name="hiddenSSID" />
-		<field name="networkId" />
-		<field name="preSharedKey" />
-		<field name="priority" />
-		<field name="status" />
-		<field name="wepKeys" />
-		<field name="wepTxKeyIndex" />
-	</class>
-	<class name="android/net/wifi/WifiConfiguration$AuthAlgorithm" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="LEAP" />
-		<field name="OPEN" />
-		<field name="SHARED" />
-		<field name="strings" />
-		<field name="varName" />
-	</class>
-	<class name="android/net/wifi/WifiConfiguration$GroupCipher" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="CCMP" />
-		<field name="TKIP" />
-		<field name="WEP104" />
-		<field name="WEP40" />
-		<field name="strings" />
-		<field name="varName" />
-	</class>
-	<class name="android/net/wifi/WifiConfiguration$KeyMgmt" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="IEEE8021X" />
-		<field name="NONE" />
-		<field name="WPA_EAP" />
-		<field name="WPA_PSK" />
-		<field name="strings" />
-		<field name="varName" />
-	</class>
-	<class name="android/net/wifi/WifiConfiguration$PairwiseCipher" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="CCMP" />
-		<field name="NONE" />
-		<field name="TKIP" />
-		<field name="strings" />
-		<field name="varName" />
-	</class>
-	<class name="android/net/wifi/WifiConfiguration$Protocol" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="RSN" />
-		<field name="WPA" />
-		<field name="strings" />
-		<field name="varName" />
-	</class>
-	<class name="android/net/wifi/WifiConfiguration$Status" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="CURRENT" />
-		<field name="DISABLED" />
-		<field name="ENABLED" />
-		<field name="strings" />
-	</class>
-	<class name="android/net/wifi/WifiEnterpriseConfig" since="18">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/net/wifi/WifiEnterpriseConfig;)V" />
-		<method name="getAnonymousIdentity()Ljava/lang/String;" />
-		<method name="getCaCertificate()Ljava/security/cert/X509Certificate;" />
-		<method name="getClientCertificate()Ljava/security/cert/X509Certificate;" />
-		<method name="getEapMethod()I" />
-		<method name="getIdentity()Ljava/lang/String;" />
-		<method name="getPassword()Ljava/lang/String;" />
-		<method name="getPhase2Method()I" />
-		<method name="getSubjectMatch()Ljava/lang/String;" />
-		<method name="setAnonymousIdentity(Ljava/lang/String;)V" />
-		<method name="setCaCertificate(Ljava/security/cert/X509Certificate;)V" />
-		<method name="setClientKeyEntry(Ljava/security/PrivateKey;Ljava/security/cert/X509Certificate;)V" />
-		<method name="setEapMethod(I)V" />
-		<method name="setIdentity(Ljava/lang/String;)V" />
-		<method name="setPassword(Ljava/lang/String;)V" />
-		<method name="setPhase2Method(I)V" />
-		<method name="setSubjectMatch(Ljava/lang/String;)V" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/net/wifi/WifiEnterpriseConfig$Eap" since="18">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="AKA" since="21" />
-		<field name="NONE" />
-		<field name="PEAP" />
-		<field name="PWD" />
-		<field name="SIM" since="21" />
-		<field name="TLS" />
-		<field name="TTLS" />
-	</class>
-	<class name="android/net/wifi/WifiEnterpriseConfig$Phase2" since="18">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="GTC" />
-		<field name="MSCHAP" />
-		<field name="MSCHAPV2" />
-		<field name="NONE" />
-		<field name="PAP" />
-	</class>
-	<class name="android/net/wifi/WifiInfo" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="getBSSID()Ljava/lang/String;" />
-		<method name="getDetailedStateOf(Landroid/net/wifi/SupplicantState;)Landroid/net/NetworkInfo$DetailedState;" />
-		<method name="getFrequency()I" since="21" />
-		<method name="getHiddenSSID()Z" />
-		<method name="getIpAddress()I" />
-		<method name="getLinkSpeed()I" />
-		<method name="getMacAddress()Ljava/lang/String;" />
-		<method name="getNetworkId()I" />
-		<method name="getRssi()I" />
-		<method name="getSSID()Ljava/lang/String;" />
-		<method name="getSupplicantState()Landroid/net/wifi/SupplicantState;" />
-		<field name="FREQUENCY_UNITS" since="21" />
-		<field name="LINK_SPEED_UNITS" />
-	</class>
-	<class name="android/net/wifi/WifiManager" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="addNetwork(Landroid/net/wifi/WifiConfiguration;)I" />
-		<method name="calculateSignalLevel(II)I" />
-		<method name="compareSignalLevel(II)I" />
-		<method name="createMulticastLock(Ljava/lang/String;)Landroid/net/wifi/WifiManager$MulticastLock;" since="4" />
-		<method name="createWifiLock(ILjava/lang/String;)Landroid/net/wifi/WifiManager$WifiLock;" since="3" />
-		<method name="createWifiLock(Ljava/lang/String;)Landroid/net/wifi/WifiManager$WifiLock;" />
-		<method name="disableNetwork(I)Z" />
-		<method name="disconnect()Z" />
-		<method name="enableNetwork(IZ)Z" />
-		<method name="getConfiguredNetworks()Ljava/util/List;" />
-		<method name="getConnectionInfo()Landroid/net/wifi/WifiInfo;" />
-		<method name="getDhcpInfo()Landroid/net/DhcpInfo;" />
-		<method name="getScanResults()Ljava/util/List;" />
-		<method name="getWifiState()I" />
-		<method name="isScanAlwaysAvailable()Z" since="18" />
-		<method name="isWifiEnabled()Z" />
-		<method name="pingSupplicant()Z" />
-		<method name="reassociate()Z" />
-		<method name="reconnect()Z" />
-		<method name="removeNetwork(I)Z" />
-		<method name="saveConfiguration()Z" />
-		<method name="setTdlsEnabled(Ljava/net/InetAddress;Z)V" since="19" />
-		<method name="setTdlsEnabledWithMacAddress(Ljava/lang/String;Z)V" since="19" />
-		<method name="setWifiEnabled(Z)Z" />
-		<method name="startScan()Z" />
-		<method name="updateNetwork(Landroid/net/wifi/WifiConfiguration;)I" />
-		<field name="ACTION_PICK_WIFI_NETWORK" />
-		<field name="ACTION_REQUEST_SCAN_ALWAYS_AVAILABLE" since="18" />
-		<field name="ERROR_AUTHENTICATING" />
-		<field name="EXTRA_BSSID" />
-		<field name="EXTRA_NETWORK_INFO" />
-		<field name="EXTRA_NEW_RSSI" />
-		<field name="EXTRA_NEW_STATE" />
-		<field name="EXTRA_PREVIOUS_WIFI_STATE" />
-		<field name="EXTRA_SUPPLICANT_CONNECTED" />
-		<field name="EXTRA_SUPPLICANT_ERROR" />
-		<field name="EXTRA_WIFI_INFO" since="14" />
-		<field name="EXTRA_WIFI_STATE" />
-		<field name="NETWORK_IDS_CHANGED_ACTION" />
-		<field name="NETWORK_STATE_CHANGED_ACTION" />
-		<field name="RSSI_CHANGED_ACTION" />
-		<field name="SCAN_RESULTS_AVAILABLE_ACTION" />
-		<field name="SUPPLICANT_CONNECTION_CHANGE_ACTION" />
-		<field name="SUPPLICANT_STATE_CHANGED_ACTION" />
-		<field name="WIFI_MODE_FULL" since="3" />
-		<field name="WIFI_MODE_FULL_HIGH_PERF" since="12" />
-		<field name="WIFI_MODE_SCAN_ONLY" since="3" />
-		<field name="WIFI_STATE_CHANGED_ACTION" />
-		<field name="WIFI_STATE_DISABLED" />
-		<field name="WIFI_STATE_DISABLING" />
-		<field name="WIFI_STATE_ENABLED" />
-		<field name="WIFI_STATE_ENABLING" />
-		<field name="WIFI_STATE_UNKNOWN" />
-	</class>
-	<class name="android/net/wifi/WifiManager$MulticastLock" since="4">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/net/wifi/WifiManager;)V" />
-		<method name="acquire()V" />
-		<method name="isHeld()Z" />
-		<method name="release()V" />
-		<method name="setReferenceCounted(Z)V" />
-	</class>
-	<class name="android/net/wifi/WifiManager$WifiLock" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/net/wifi/WifiManager;)V" />
-		<method name="acquire()V" />
-		<method name="isHeld()Z" />
-		<method name="release()V" />
-		<method name="setReferenceCounted(Z)V" />
-		<method name="setWorkSource(Landroid/os/WorkSource;)V" since="9" />
-	</class>
-	<class name="android/net/wifi/WpsInfo" since="14">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/net/wifi/WpsInfo;)V" />
-		<field name="CREATOR" />
-		<field name="DISPLAY" />
-		<field name="INVALID" />
-		<field name="KEYPAD" />
-		<field name="LABEL" />
-		<field name="PBC" />
-		<field name="pin" />
-		<field name="setup" />
-	</class>
-	<class name="android/net/wifi/p2p/WifiP2pConfig" since="14">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/net/wifi/p2p/WifiP2pConfig;)V" />
-		<field name="CREATOR" />
-		<field name="deviceAddress" />
-		<field name="groupOwnerIntent" />
-		<field name="wps" />
-	</class>
-	<class name="android/net/wifi/p2p/WifiP2pDevice" since="14">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/net/wifi/p2p/WifiP2pDevice;)V" />
-		<method name="isGroupOwner()Z" />
-		<method name="isServiceDiscoveryCapable()Z" />
-		<method name="wpsDisplaySupported()Z" />
-		<method name="wpsKeypadSupported()Z" />
-		<method name="wpsPbcSupported()Z" />
-		<field name="AVAILABLE" />
-		<field name="CONNECTED" />
-		<field name="CREATOR" />
-		<field name="FAILED" />
-		<field name="INVITED" />
-		<field name="UNAVAILABLE" />
-		<field name="deviceAddress" />
-		<field name="deviceName" />
-		<field name="primaryDeviceType" />
-		<field name="secondaryDeviceType" />
-		<field name="status" />
-	</class>
-	<class name="android/net/wifi/p2p/WifiP2pDeviceList" since="14">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/net/wifi/p2p/WifiP2pDeviceList;)V" />
-		<method name="get(Ljava/lang/String;)Landroid/net/wifi/p2p/WifiP2pDevice;" since="18" />
-		<method name="getDeviceList()Ljava/util/Collection;" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/net/wifi/p2p/WifiP2pGroup" since="14">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/net/wifi/p2p/WifiP2pGroup;)V" />
-		<method name="getClientList()Ljava/util/Collection;" />
-		<method name="getInterface()Ljava/lang/String;" />
-		<method name="getNetworkName()Ljava/lang/String;" />
-		<method name="getOwner()Landroid/net/wifi/p2p/WifiP2pDevice;" />
-		<method name="getPassphrase()Ljava/lang/String;" />
-		<method name="isGroupOwner()Z" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/net/wifi/p2p/WifiP2pInfo" since="14">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/net/wifi/p2p/WifiP2pInfo;)V" />
-		<field name="CREATOR" />
-		<field name="groupFormed" />
-		<field name="groupOwnerAddress" />
-		<field name="isGroupOwner" />
-	</class>
-	<class name="android/net/wifi/p2p/WifiP2pManager" since="14">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="addLocalService(Landroid/net/wifi/p2p/WifiP2pManager$Channel;Landroid/net/wifi/p2p/nsd/WifiP2pServiceInfo;Landroid/net/wifi/p2p/WifiP2pManager$ActionListener;)V" since="16" />
-		<method name="addServiceRequest(Landroid/net/wifi/p2p/WifiP2pManager$Channel;Landroid/net/wifi/p2p/nsd/WifiP2pServiceRequest;Landroid/net/wifi/p2p/WifiP2pManager$ActionListener;)V" since="16" />
-		<method name="cancelConnect(Landroid/net/wifi/p2p/WifiP2pManager$Channel;Landroid/net/wifi/p2p/WifiP2pManager$ActionListener;)V" />
-		<method name="clearLocalServices(Landroid/net/wifi/p2p/WifiP2pManager$Channel;Landroid/net/wifi/p2p/WifiP2pManager$ActionListener;)V" since="16" />
-		<method name="clearServiceRequests(Landroid/net/wifi/p2p/WifiP2pManager$Channel;Landroid/net/wifi/p2p/WifiP2pManager$ActionListener;)V" since="16" />
-		<method name="connect(Landroid/net/wifi/p2p/WifiP2pManager$Channel;Landroid/net/wifi/p2p/WifiP2pConfig;Landroid/net/wifi/p2p/WifiP2pManager$ActionListener;)V" />
-		<method name="createGroup(Landroid/net/wifi/p2p/WifiP2pManager$Channel;Landroid/net/wifi/p2p/WifiP2pManager$ActionListener;)V" />
-		<method name="discoverPeers(Landroid/net/wifi/p2p/WifiP2pManager$Channel;Landroid/net/wifi/p2p/WifiP2pManager$ActionListener;)V" />
-		<method name="discoverServices(Landroid/net/wifi/p2p/WifiP2pManager$Channel;Landroid/net/wifi/p2p/WifiP2pManager$ActionListener;)V" since="16" />
-		<method name="initialize(Landroid/content/Context;Landroid/os/Looper;Landroid/net/wifi/p2p/WifiP2pManager$ChannelListener;)Landroid/net/wifi/p2p/WifiP2pManager$Channel;" />
-		<method name="removeGroup(Landroid/net/wifi/p2p/WifiP2pManager$Channel;Landroid/net/wifi/p2p/WifiP2pManager$ActionListener;)V" />
-		<method name="removeLocalService(Landroid/net/wifi/p2p/WifiP2pManager$Channel;Landroid/net/wifi/p2p/nsd/WifiP2pServiceInfo;Landroid/net/wifi/p2p/WifiP2pManager$ActionListener;)V" since="16" />
-		<method name="removeServiceRequest(Landroid/net/wifi/p2p/WifiP2pManager$Channel;Landroid/net/wifi/p2p/nsd/WifiP2pServiceRequest;Landroid/net/wifi/p2p/WifiP2pManager$ActionListener;)V" since="16" />
-		<method name="requestConnectionInfo(Landroid/net/wifi/p2p/WifiP2pManager$Channel;Landroid/net/wifi/p2p/WifiP2pManager$ConnectionInfoListener;)V" />
-		<method name="requestGroupInfo(Landroid/net/wifi/p2p/WifiP2pManager$Channel;Landroid/net/wifi/p2p/WifiP2pManager$GroupInfoListener;)V" />
-		<method name="requestPeers(Landroid/net/wifi/p2p/WifiP2pManager$Channel;Landroid/net/wifi/p2p/WifiP2pManager$PeerListListener;)V" />
-		<method name="setDnsSdResponseListeners(Landroid/net/wifi/p2p/WifiP2pManager$Channel;Landroid/net/wifi/p2p/WifiP2pManager$DnsSdServiceResponseListener;Landroid/net/wifi/p2p/WifiP2pManager$DnsSdTxtRecordListener;)V" since="16" />
-		<method name="setServiceResponseListener(Landroid/net/wifi/p2p/WifiP2pManager$Channel;Landroid/net/wifi/p2p/WifiP2pManager$ServiceResponseListener;)V" since="16" />
-		<method name="setUpnpServiceResponseListener(Landroid/net/wifi/p2p/WifiP2pManager$Channel;Landroid/net/wifi/p2p/WifiP2pManager$UpnpServiceResponseListener;)V" since="16" />
-		<method name="stopPeerDiscovery(Landroid/net/wifi/p2p/WifiP2pManager$Channel;Landroid/net/wifi/p2p/WifiP2pManager$ActionListener;)V" since="16" />
-		<field name="BUSY" />
-		<field name="ERROR" />
-		<field name="EXTRA_DISCOVERY_STATE" since="16" />
-		<field name="EXTRA_NETWORK_INFO" />
-		<field name="EXTRA_P2P_DEVICE_LIST" since="18" />
-		<field name="EXTRA_WIFI_P2P_DEVICE" />
-		<field name="EXTRA_WIFI_P2P_GROUP" since="18" />
-		<field name="EXTRA_WIFI_P2P_INFO" />
-		<field name="EXTRA_WIFI_STATE" />
-		<field name="NO_SERVICE_REQUESTS" since="16" />
-		<field name="P2P_UNSUPPORTED" />
-		<field name="WIFI_P2P_CONNECTION_CHANGED_ACTION" />
-		<field name="WIFI_P2P_DISCOVERY_CHANGED_ACTION" since="16" />
-		<field name="WIFI_P2P_DISCOVERY_STARTED" since="16" />
-		<field name="WIFI_P2P_DISCOVERY_STOPPED" since="16" />
-		<field name="WIFI_P2P_PEERS_CHANGED_ACTION" />
-		<field name="WIFI_P2P_STATE_CHANGED_ACTION" />
-		<field name="WIFI_P2P_STATE_DISABLED" />
-		<field name="WIFI_P2P_STATE_ENABLED" />
-		<field name="WIFI_P2P_THIS_DEVICE_CHANGED_ACTION" />
-	</class>
-	<class name="android/net/wifi/p2p/WifiP2pManager$ActionListener" since="14">
-		<extends name="java/lang/Object" />
-		<method name="onFailure(I)V" />
-		<method name="onSuccess()V" />
-	</class>
-	<class name="android/net/wifi/p2p/WifiP2pManager$Channel" since="14">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="android/net/wifi/p2p/WifiP2pManager$ChannelListener" since="14">
-		<extends name="java/lang/Object" />
-		<method name="onChannelDisconnected()V" />
-	</class>
-	<class name="android/net/wifi/p2p/WifiP2pManager$ConnectionInfoListener" since="14">
-		<extends name="java/lang/Object" />
-		<method name="onConnectionInfoAvailable(Landroid/net/wifi/p2p/WifiP2pInfo;)V" />
-	</class>
-	<class name="android/net/wifi/p2p/WifiP2pManager$DnsSdServiceResponseListener" since="16">
-		<extends name="java/lang/Object" />
-		<method name="onDnsSdServiceAvailable(Ljava/lang/String;Ljava/lang/String;Landroid/net/wifi/p2p/WifiP2pDevice;)V" />
-	</class>
-	<class name="android/net/wifi/p2p/WifiP2pManager$DnsSdTxtRecordListener" since="16">
-		<extends name="java/lang/Object" />
-		<method name="onDnsSdTxtRecordAvailable(Ljava/lang/String;Ljava/util/Map;Landroid/net/wifi/p2p/WifiP2pDevice;)V" />
-	</class>
-	<class name="android/net/wifi/p2p/WifiP2pManager$GroupInfoListener" since="14">
-		<extends name="java/lang/Object" />
-		<method name="onGroupInfoAvailable(Landroid/net/wifi/p2p/WifiP2pGroup;)V" />
-	</class>
-	<class name="android/net/wifi/p2p/WifiP2pManager$PeerListListener" since="14">
-		<extends name="java/lang/Object" />
-		<method name="onPeersAvailable(Landroid/net/wifi/p2p/WifiP2pDeviceList;)V" />
-	</class>
-	<class name="android/net/wifi/p2p/WifiP2pManager$ServiceResponseListener" since="16">
-		<extends name="java/lang/Object" />
-		<method name="onServiceAvailable(I[BLandroid/net/wifi/p2p/WifiP2pDevice;)V" />
-	</class>
-	<class name="android/net/wifi/p2p/WifiP2pManager$UpnpServiceResponseListener" since="16">
-		<extends name="java/lang/Object" />
-		<method name="onUpnpServiceAvailable(Ljava/util/List;Landroid/net/wifi/p2p/WifiP2pDevice;)V" />
-	</class>
-	<class name="android/net/wifi/p2p/nsd/WifiP2pDnsSdServiceInfo" since="16">
-		<extends name="android/net/wifi/p2p/nsd/WifiP2pServiceInfo" />
-		<method name="&lt;init>()V" />
-		<method name="newInstance(Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;)Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceInfo;" />
-	</class>
-	<class name="android/net/wifi/p2p/nsd/WifiP2pDnsSdServiceRequest" since="16">
-		<extends name="android/net/wifi/p2p/nsd/WifiP2pServiceRequest" />
-		<method name="&lt;init>()V" />
-		<method name="newInstance()Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceRequest;" />
-		<method name="newInstance(Ljava/lang/String;)Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceRequest;" />
-		<method name="newInstance(Ljava/lang/String;Ljava/lang/String;)Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceRequest;" />
-	</class>
-	<class name="android/net/wifi/p2p/nsd/WifiP2pServiceInfo" since="16">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<field name="SERVICE_TYPE_ALL" />
-		<field name="SERVICE_TYPE_BONJOUR" />
-		<field name="SERVICE_TYPE_UPNP" />
-		<field name="SERVICE_TYPE_VENDOR_SPECIFIC" />
-	</class>
-	<class name="android/net/wifi/p2p/nsd/WifiP2pServiceRequest" since="16">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="newInstance(I)Landroid/net/wifi/p2p/nsd/WifiP2pServiceRequest;" />
-		<method name="newInstance(ILjava/lang/String;)Landroid/net/wifi/p2p/nsd/WifiP2pServiceRequest;" />
-	</class>
-	<class name="android/net/wifi/p2p/nsd/WifiP2pUpnpServiceInfo" since="16">
-		<extends name="android/net/wifi/p2p/nsd/WifiP2pServiceInfo" />
-		<method name="&lt;init>()V" />
-		<method name="newInstance(Ljava/lang/String;Ljava/lang/String;Ljava/util/List;)Landroid/net/wifi/p2p/nsd/WifiP2pUpnpServiceInfo;" />
-	</class>
-	<class name="android/net/wifi/p2p/nsd/WifiP2pUpnpServiceRequest" since="16">
-		<extends name="android/net/wifi/p2p/nsd/WifiP2pServiceRequest" />
-		<method name="&lt;init>()V" />
-		<method name="newInstance()Landroid/net/wifi/p2p/nsd/WifiP2pUpnpServiceRequest;" />
-		<method name="newInstance(Ljava/lang/String;)Landroid/net/wifi/p2p/nsd/WifiP2pUpnpServiceRequest;" />
-	</class>
-	<class name="android/nfc/FormatException" since="9">
-		<extends name="java/lang/Exception" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" since="16" />
-	</class>
-	<class name="android/nfc/NdefMessage" since="9">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>(Landroid/nfc/NdefRecord;[Landroid/nfc/NdefRecord;)V" since="16" />
-		<method name="&lt;init>([B)V" />
-		<method name="&lt;init>([Landroid/nfc/NdefRecord;)V" />
-		<method name="getByteArrayLength()I" since="16" />
-		<method name="getRecords()[Landroid/nfc/NdefRecord;" />
-		<method name="toByteArray()[B" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/nfc/NdefRecord" since="9">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>(S[B[B[B)V" />
-		<method name="&lt;init>([B)V" />
-		<method name="createApplicationRecord(Ljava/lang/String;)Landroid/nfc/NdefRecord;" since="14" />
-		<method name="createExternal(Ljava/lang/String;Ljava/lang/String;[B)Landroid/nfc/NdefRecord;" since="16" />
-		<method name="createMime(Ljava/lang/String;[B)Landroid/nfc/NdefRecord;" since="16" />
-		<method name="createTextRecord(Ljava/lang/String;Ljava/lang/String;)Landroid/nfc/NdefRecord;" since="21" />
-		<method name="createUri(Landroid/net/Uri;)Landroid/nfc/NdefRecord;" since="14" />
-		<method name="createUri(Ljava/lang/String;)Landroid/nfc/NdefRecord;" since="14" />
-		<method name="getId()[B" />
-		<method name="getPayload()[B" />
-		<method name="getTnf()S" />
-		<method name="getType()[B" />
-		<method name="toByteArray()[B" />
-		<method name="toMimeType()Ljava/lang/String;" since="16" />
-		<method name="toUri()Landroid/net/Uri;" since="16" />
-		<field name="CREATOR" />
-		<field name="RTD_ALTERNATIVE_CARRIER" />
-		<field name="RTD_HANDOVER_CARRIER" />
-		<field name="RTD_HANDOVER_REQUEST" />
-		<field name="RTD_HANDOVER_SELECT" />
-		<field name="RTD_SMART_POSTER" />
-		<field name="RTD_TEXT" />
-		<field name="RTD_URI" />
-		<field name="TNF_ABSOLUTE_URI" />
-		<field name="TNF_EMPTY" />
-		<field name="TNF_EXTERNAL_TYPE" />
-		<field name="TNF_MIME_MEDIA" />
-		<field name="TNF_UNCHANGED" />
-		<field name="TNF_UNKNOWN" />
-		<field name="TNF_WELL_KNOWN" />
-	</class>
-	<class name="android/nfc/NfcAdapter" since="9">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="disableForegroundDispatch(Landroid/app/Activity;)V" since="10" />
-		<method name="disableForegroundNdefPush(Landroid/app/Activity;)V" since="10" />
-		<method name="disableReaderMode(Landroid/app/Activity;)V" since="19" />
-		<method name="enableForegroundDispatch(Landroid/app/Activity;Landroid/app/PendingIntent;[Landroid/content/IntentFilter;[[Ljava/lang/String;)V" since="10" />
-		<method name="enableForegroundNdefPush(Landroid/app/Activity;Landroid/nfc/NdefMessage;)V" since="10" />
-		<method name="enableReaderMode(Landroid/app/Activity;Landroid/nfc/NfcAdapter$ReaderCallback;ILandroid/os/Bundle;)V" since="19" />
-		<method name="getDefaultAdapter()Landroid/nfc/NfcAdapter;" />
-		<method name="getDefaultAdapter(Landroid/content/Context;)Landroid/nfc/NfcAdapter;" since="10" />
-		<method name="invokeBeam(Landroid/app/Activity;)Z" since="21" />
-		<method name="isEnabled()Z" />
-		<method name="isNdefPushEnabled()Z" since="16" />
-		<method name="setBeamPushUris([Landroid/net/Uri;Landroid/app/Activity;)V" since="16" />
-		<method name="setBeamPushUrisCallback(Landroid/nfc/NfcAdapter$CreateBeamUrisCallback;Landroid/app/Activity;)V" since="16" />
-		<method name="setNdefPushMessage(Landroid/nfc/NdefMessage;Landroid/app/Activity;[Landroid/app/Activity;)V" since="14" />
-		<method name="setNdefPushMessageCallback(Landroid/nfc/NfcAdapter$CreateNdefMessageCallback;Landroid/app/Activity;[Landroid/app/Activity;)V" since="14" />
-		<method name="setOnNdefPushCompleteCallback(Landroid/nfc/NfcAdapter$OnNdefPushCompleteCallback;Landroid/app/Activity;[Landroid/app/Activity;)V" since="14" />
-		<field name="ACTION_ADAPTER_STATE_CHANGED" since="18" />
-		<field name="ACTION_NDEF_DISCOVERED" since="10" />
-		<field name="ACTION_TAG_DISCOVERED" />
-		<field name="ACTION_TECH_DISCOVERED" since="10" />
-		<field name="EXTRA_ADAPTER_STATE" since="18" />
-		<field name="EXTRA_ID" />
-		<field name="EXTRA_NDEF_MESSAGES" />
-		<field name="EXTRA_READER_PRESENCE_CHECK_DELAY" since="19" />
-		<field name="EXTRA_TAG" since="10" />
-		<field name="FLAG_READER_NFC_A" since="19" />
-		<field name="FLAG_READER_NFC_B" since="19" />
-		<field name="FLAG_READER_NFC_BARCODE" since="19" />
-		<field name="FLAG_READER_NFC_F" since="19" />
-		<field name="FLAG_READER_NFC_V" since="19" />
-		<field name="FLAG_READER_NO_PLATFORM_SOUNDS" since="19" />
-		<field name="FLAG_READER_SKIP_NDEF_CHECK" since="19" />
-		<field name="STATE_OFF" since="18" />
-		<field name="STATE_ON" since="18" />
-		<field name="STATE_TURNING_OFF" since="18" />
-		<field name="STATE_TURNING_ON" since="18" />
-	</class>
-	<class name="android/nfc/NfcAdapter$CreateBeamUrisCallback" since="16">
-		<extends name="java/lang/Object" />
-		<method name="createBeamUris(Landroid/nfc/NfcEvent;)[Landroid/net/Uri;" />
-	</class>
-	<class name="android/nfc/NfcAdapter$CreateNdefMessageCallback" since="14">
-		<extends name="java/lang/Object" />
-		<method name="createNdefMessage(Landroid/nfc/NfcEvent;)Landroid/nfc/NdefMessage;" />
-	</class>
-	<class name="android/nfc/NfcAdapter$OnNdefPushCompleteCallback" since="14">
-		<extends name="java/lang/Object" />
-		<method name="onNdefPushComplete(Landroid/nfc/NfcEvent;)V" />
-	</class>
-	<class name="android/nfc/NfcAdapter$ReaderCallback" since="19">
-		<extends name="java/lang/Object" />
-		<method name="onTagDiscovered(Landroid/nfc/Tag;)V" />
-	</class>
-	<class name="android/nfc/NfcEvent" since="14">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="nfcAdapter" />
-	</class>
-	<class name="android/nfc/NfcManager" since="10">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getDefaultAdapter()Landroid/nfc/NfcAdapter;" />
-	</class>
-	<class name="android/nfc/Tag" since="10">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="getId()[B" />
-		<method name="getTechList()[Ljava/lang/String;" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/nfc/TagLostException" since="10">
-		<extends name="java/io/IOException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/nfc/cardemulation/CardEmulation" since="19">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="categoryAllowsForegroundPreference(Ljava/lang/String;)Z" since="21" />
-		<method name="getAidsForService(Landroid/content/ComponentName;Ljava/lang/String;)Ljava/util/List;" since="21" />
-		<method name="getInstance(Landroid/nfc/NfcAdapter;)Landroid/nfc/cardemulation/CardEmulation;" />
-		<method name="getSelectionModeForCategory(Ljava/lang/String;)I" />
-		<method name="isDefaultServiceForAid(Landroid/content/ComponentName;Ljava/lang/String;)Z" />
-		<method name="isDefaultServiceForCategory(Landroid/content/ComponentName;Ljava/lang/String;)Z" />
-		<method name="registerAidsForService(Landroid/content/ComponentName;Ljava/lang/String;Ljava/util/List;)Z" since="21" />
-		<method name="removeAidsForService(Landroid/content/ComponentName;Ljava/lang/String;)Z" since="21" />
-		<method name="setPreferredService(Landroid/app/Activity;Landroid/content/ComponentName;)Z" since="21" />
-		<method name="unsetPreferredService(Landroid/app/Activity;)Z" since="21" />
-		<field name="ACTION_CHANGE_DEFAULT" />
-		<field name="CATEGORY_OTHER" />
-		<field name="CATEGORY_PAYMENT" />
-		<field name="EXTRA_CATEGORY" />
-		<field name="EXTRA_SERVICE_COMPONENT" />
-		<field name="SELECTION_MODE_ALWAYS_ASK" />
-		<field name="SELECTION_MODE_ASK_IF_CONFLICT" />
-		<field name="SELECTION_MODE_PREFER_DEFAULT" />
-	</class>
-	<class name="android/nfc/cardemulation/HostApduService" since="19">
-		<extends name="android/app/Service" />
-		<method name="&lt;init>()V" />
-		<method name="notifyUnhandled()V" />
-		<method name="onDeactivated(I)V" />
-		<method name="processCommandApdu([BLandroid/os/Bundle;)[B" />
-		<method name="sendResponseApdu([B)V" />
-		<field name="DEACTIVATION_DESELECTED" />
-		<field name="DEACTIVATION_LINK_LOSS" />
-		<field name="SERVICE_INTERFACE" />
-		<field name="SERVICE_META_DATA" />
-	</class>
-	<class name="android/nfc/cardemulation/OffHostApduService" since="19">
-		<extends name="android/app/Service" />
-		<method name="&lt;init>()V" />
-		<field name="SERVICE_INTERFACE" />
-		<field name="SERVICE_META_DATA" />
-	</class>
-	<class name="android/nfc/tech/BasicTagTechnology" since="10">
-		<extends name="java/lang/Object" />
-		<implements name="android/nfc/tech/TagTechnology" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="android/nfc/tech/IsoDep" since="10">
-		<extends name="android/nfc/tech/BasicTagTechnology" />
-		<method name="&lt;init>()V" />
-		<method name="get(Landroid/nfc/Tag;)Landroid/nfc/tech/IsoDep;" />
-		<method name="getHiLayerResponse()[B" />
-		<method name="getHistoricalBytes()[B" />
-		<method name="getMaxTransceiveLength()I" since="14" />
-		<method name="getTimeout()I" since="14" />
-		<method name="isExtendedLengthApduSupported()Z" since="16" />
-		<method name="setTimeout(I)V" />
-		<method name="transceive([B)[B" />
-	</class>
-	<class name="android/nfc/tech/MifareClassic" since="10">
-		<extends name="android/nfc/tech/BasicTagTechnology" />
-		<method name="&lt;init>()V" />
-		<method name="authenticateSectorWithKeyA(I[B)Z" />
-		<method name="authenticateSectorWithKeyB(I[B)Z" />
-		<method name="blockToSector(I)I" />
-		<method name="decrement(II)V" />
-		<method name="get(Landroid/nfc/Tag;)Landroid/nfc/tech/MifareClassic;" />
-		<method name="getBlockCount()I" />
-		<method name="getBlockCountInSector(I)I" />
-		<method name="getMaxTransceiveLength()I" since="14" />
-		<method name="getSectorCount()I" />
-		<method name="getSize()I" />
-		<method name="getTimeout()I" since="14" />
-		<method name="getType()I" />
-		<method name="increment(II)V" />
-		<method name="readBlock(I)[B" />
-		<method name="restore(I)V" />
-		<method name="sectorToBlock(I)I" />
-		<method name="setTimeout(I)V" since="14" />
-		<method name="transceive([B)[B" />
-		<method name="transfer(I)V" />
-		<method name="writeBlock(I[B)V" />
-		<field name="BLOCK_SIZE" />
-		<field name="KEY_DEFAULT" />
-		<field name="KEY_MIFARE_APPLICATION_DIRECTORY" />
-		<field name="KEY_NFC_FORUM" />
-		<field name="SIZE_1K" />
-		<field name="SIZE_2K" />
-		<field name="SIZE_4K" />
-		<field name="SIZE_MINI" />
-		<field name="TYPE_CLASSIC" />
-		<field name="TYPE_PLUS" />
-		<field name="TYPE_PRO" />
-		<field name="TYPE_UNKNOWN" />
-	</class>
-	<class name="android/nfc/tech/MifareUltralight" since="10">
-		<extends name="android/nfc/tech/BasicTagTechnology" />
-		<method name="&lt;init>()V" />
-		<method name="get(Landroid/nfc/Tag;)Landroid/nfc/tech/MifareUltralight;" />
-		<method name="getMaxTransceiveLength()I" since="14" />
-		<method name="getTimeout()I" since="14" />
-		<method name="getType()I" />
-		<method name="readPages(I)[B" />
-		<method name="setTimeout(I)V" since="14" />
-		<method name="transceive([B)[B" />
-		<method name="writePage(I[B)V" />
-		<field name="PAGE_SIZE" />
-		<field name="TYPE_ULTRALIGHT" />
-		<field name="TYPE_ULTRALIGHT_C" />
-		<field name="TYPE_UNKNOWN" />
-	</class>
-	<class name="android/nfc/tech/Ndef" since="10">
-		<extends name="android/nfc/tech/BasicTagTechnology" />
-		<method name="&lt;init>()V" />
-		<method name="canMakeReadOnly()Z" />
-		<method name="get(Landroid/nfc/Tag;)Landroid/nfc/tech/Ndef;" />
-		<method name="getCachedNdefMessage()Landroid/nfc/NdefMessage;" />
-		<method name="getMaxSize()I" />
-		<method name="getNdefMessage()Landroid/nfc/NdefMessage;" />
-		<method name="getType()Ljava/lang/String;" />
-		<method name="isWritable()Z" />
-		<method name="makeReadOnly()Z" />
-		<method name="writeNdefMessage(Landroid/nfc/NdefMessage;)V" />
-		<field name="MIFARE_CLASSIC" />
-		<field name="NFC_FORUM_TYPE_1" />
-		<field name="NFC_FORUM_TYPE_2" />
-		<field name="NFC_FORUM_TYPE_3" />
-		<field name="NFC_FORUM_TYPE_4" />
-	</class>
-	<class name="android/nfc/tech/NdefFormatable" since="10">
-		<extends name="android/nfc/tech/BasicTagTechnology" />
-		<method name="&lt;init>()V" />
-		<method name="format(Landroid/nfc/NdefMessage;)V" />
-		<method name="formatReadOnly(Landroid/nfc/NdefMessage;)V" />
-		<method name="get(Landroid/nfc/Tag;)Landroid/nfc/tech/NdefFormatable;" />
-	</class>
-	<class name="android/nfc/tech/NfcA" since="10">
-		<extends name="android/nfc/tech/BasicTagTechnology" />
-		<method name="&lt;init>()V" />
-		<method name="get(Landroid/nfc/Tag;)Landroid/nfc/tech/NfcA;" />
-		<method name="getAtqa()[B" />
-		<method name="getMaxTransceiveLength()I" since="14" />
-		<method name="getSak()S" />
-		<method name="getTimeout()I" since="14" />
-		<method name="setTimeout(I)V" since="14" />
-		<method name="transceive([B)[B" />
-	</class>
-	<class name="android/nfc/tech/NfcB" since="10">
-		<extends name="android/nfc/tech/BasicTagTechnology" />
-		<method name="&lt;init>()V" />
-		<method name="get(Landroid/nfc/Tag;)Landroid/nfc/tech/NfcB;" />
-		<method name="getApplicationData()[B" />
-		<method name="getMaxTransceiveLength()I" since="14" />
-		<method name="getProtocolInfo()[B" />
-		<method name="transceive([B)[B" />
-	</class>
-	<class name="android/nfc/tech/NfcBarcode" since="17">
-		<extends name="android/nfc/tech/BasicTagTechnology" />
-		<method name="&lt;init>()V" />
-		<method name="get(Landroid/nfc/Tag;)Landroid/nfc/tech/NfcBarcode;" />
-		<method name="getBarcode()[B" />
-		<method name="getType()I" />
-		<field name="TYPE_KOVIO" />
-		<field name="TYPE_UNKNOWN" />
-	</class>
-	<class name="android/nfc/tech/NfcF" since="10">
-		<extends name="android/nfc/tech/BasicTagTechnology" />
-		<method name="&lt;init>()V" />
-		<method name="get(Landroid/nfc/Tag;)Landroid/nfc/tech/NfcF;" />
-		<method name="getManufacturer()[B" />
-		<method name="getMaxTransceiveLength()I" since="14" />
-		<method name="getSystemCode()[B" />
-		<method name="getTimeout()I" since="14" />
-		<method name="setTimeout(I)V" since="14" />
-		<method name="transceive([B)[B" />
-	</class>
-	<class name="android/nfc/tech/NfcV" since="10">
-		<extends name="android/nfc/tech/BasicTagTechnology" />
-		<method name="&lt;init>()V" />
-		<method name="get(Landroid/nfc/Tag;)Landroid/nfc/tech/NfcV;" />
-		<method name="getDsfId()B" />
-		<method name="getMaxTransceiveLength()I" since="14" />
-		<method name="getResponseFlags()B" />
-		<method name="transceive([B)[B" />
-	</class>
-	<class name="android/nfc/tech/TagTechnology" since="10">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Closeable" />
-		<method name="connect()V" />
-		<method name="getTag()Landroid/nfc/Tag;" />
-		<method name="isConnected()Z" />
-	</class>
-	<class name="android/opengl/EGL14" since="17">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="eglBindAPI(I)Z" />
-		<method name="eglBindTexImage(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLSurface;I)Z" />
-		<method name="eglChooseConfig(Landroid/opengl/EGLDisplay;[II[Landroid/opengl/EGLConfig;II[II)Z" />
-		<method name="eglCopyBuffers(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLSurface;I)Z" />
-		<method name="eglCreateContext(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLConfig;Landroid/opengl/EGLContext;[II)Landroid/opengl/EGLContext;" />
-		<method name="eglCreatePbufferFromClientBuffer(Landroid/opengl/EGLDisplay;IILandroid/opengl/EGLConfig;[II)Landroid/opengl/EGLSurface;" />
-		<method name="eglCreatePbufferSurface(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLConfig;[II)Landroid/opengl/EGLSurface;" />
-		<method name="eglCreatePixmapSurface(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLConfig;I[II)Landroid/opengl/EGLSurface;" />
-		<method name="eglCreateWindowSurface(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLConfig;Ljava/lang/Object;[II)Landroid/opengl/EGLSurface;" />
-		<method name="eglDestroyContext(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLContext;)Z" />
-		<method name="eglDestroySurface(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLSurface;)Z" />
-		<method name="eglGetConfigAttrib(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLConfig;I[II)Z" />
-		<method name="eglGetConfigs(Landroid/opengl/EGLDisplay;[Landroid/opengl/EGLConfig;II[II)Z" />
-		<method name="eglGetCurrentContext()Landroid/opengl/EGLContext;" />
-		<method name="eglGetCurrentDisplay()Landroid/opengl/EGLDisplay;" />
-		<method name="eglGetCurrentSurface(I)Landroid/opengl/EGLSurface;" />
-		<method name="eglGetDisplay(I)Landroid/opengl/EGLDisplay;" />
-		<method name="eglGetError()I" />
-		<method name="eglInitialize(Landroid/opengl/EGLDisplay;[II[II)Z" />
-		<method name="eglMakeCurrent(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLSurface;Landroid/opengl/EGLSurface;Landroid/opengl/EGLContext;)Z" />
-		<method name="eglQueryAPI()I" />
-		<method name="eglQueryContext(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLContext;I[II)Z" />
-		<method name="eglQueryString(Landroid/opengl/EGLDisplay;I)Ljava/lang/String;" />
-		<method name="eglQuerySurface(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLSurface;I[II)Z" />
-		<method name="eglReleaseTexImage(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLSurface;I)Z" />
-		<method name="eglReleaseThread()Z" />
-		<method name="eglSurfaceAttrib(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLSurface;II)Z" />
-		<method name="eglSwapBuffers(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLSurface;)Z" />
-		<method name="eglSwapInterval(Landroid/opengl/EGLDisplay;I)Z" />
-		<method name="eglTerminate(Landroid/opengl/EGLDisplay;)Z" />
-		<method name="eglWaitClient()Z" />
-		<method name="eglWaitGL()Z" />
-		<method name="eglWaitNative(I)Z" />
-		<field name="EGL_ALPHA_MASK_SIZE" />
-		<field name="EGL_ALPHA_SIZE" />
-		<field name="EGL_BACK_BUFFER" />
-		<field name="EGL_BAD_ACCESS" />
-		<field name="EGL_BAD_ALLOC" />
-		<field name="EGL_BAD_ATTRIBUTE" />
-		<field name="EGL_BAD_CONFIG" />
-		<field name="EGL_BAD_CONTEXT" />
-		<field name="EGL_BAD_CURRENT_SURFACE" />
-		<field name="EGL_BAD_DISPLAY" />
-		<field name="EGL_BAD_MATCH" />
-		<field name="EGL_BAD_NATIVE_PIXMAP" />
-		<field name="EGL_BAD_NATIVE_WINDOW" />
-		<field name="EGL_BAD_PARAMETER" />
-		<field name="EGL_BAD_SURFACE" />
-		<field name="EGL_BIND_TO_TEXTURE_RGB" />
-		<field name="EGL_BIND_TO_TEXTURE_RGBA" />
-		<field name="EGL_BLUE_SIZE" />
-		<field name="EGL_BUFFER_DESTROYED" />
-		<field name="EGL_BUFFER_PRESERVED" />
-		<field name="EGL_BUFFER_SIZE" />
-		<field name="EGL_CLIENT_APIS" />
-		<field name="EGL_COLOR_BUFFER_TYPE" />
-		<field name="EGL_CONFIG_CAVEAT" />
-		<field name="EGL_CONFIG_ID" />
-		<field name="EGL_CONFORMANT" />
-		<field name="EGL_CONTEXT_CLIENT_TYPE" />
-		<field name="EGL_CONTEXT_CLIENT_VERSION" />
-		<field name="EGL_CONTEXT_LOST" />
-		<field name="EGL_CORE_NATIVE_ENGINE" />
-		<field name="EGL_DEFAULT_DISPLAY" />
-		<field name="EGL_DEPTH_SIZE" />
-		<field name="EGL_DISPLAY_SCALING" />
-		<field name="EGL_DRAW" />
-		<field name="EGL_EXTENSIONS" />
-		<field name="EGL_FALSE" />
-		<field name="EGL_GREEN_SIZE" />
-		<field name="EGL_HEIGHT" />
-		<field name="EGL_HORIZONTAL_RESOLUTION" />
-		<field name="EGL_LARGEST_PBUFFER" />
-		<field name="EGL_LEVEL" />
-		<field name="EGL_LUMINANCE_BUFFER" />
-		<field name="EGL_LUMINANCE_SIZE" />
-		<field name="EGL_MATCH_NATIVE_PIXMAP" />
-		<field name="EGL_MAX_PBUFFER_HEIGHT" />
-		<field name="EGL_MAX_PBUFFER_PIXELS" />
-		<field name="EGL_MAX_PBUFFER_WIDTH" />
-		<field name="EGL_MAX_SWAP_INTERVAL" />
-		<field name="EGL_MIN_SWAP_INTERVAL" />
-		<field name="EGL_MIPMAP_LEVEL" />
-		<field name="EGL_MIPMAP_TEXTURE" />
-		<field name="EGL_MULTISAMPLE_RESOLVE" />
-		<field name="EGL_MULTISAMPLE_RESOLVE_BOX" />
-		<field name="EGL_MULTISAMPLE_RESOLVE_BOX_BIT" />
-		<field name="EGL_MULTISAMPLE_RESOLVE_DEFAULT" />
-		<field name="EGL_NATIVE_RENDERABLE" />
-		<field name="EGL_NATIVE_VISUAL_ID" />
-		<field name="EGL_NATIVE_VISUAL_TYPE" />
-		<field name="EGL_NONE" />
-		<field name="EGL_NON_CONFORMANT_CONFIG" />
-		<field name="EGL_NOT_INITIALIZED" />
-		<field name="EGL_NO_CONTEXT" />
-		<field name="EGL_NO_DISPLAY" />
-		<field name="EGL_NO_SURFACE" />
-		<field name="EGL_NO_TEXTURE" />
-		<field name="EGL_OPENGL_API" />
-		<field name="EGL_OPENGL_BIT" />
-		<field name="EGL_OPENGL_ES2_BIT" />
-		<field name="EGL_OPENGL_ES_API" />
-		<field name="EGL_OPENGL_ES_BIT" />
-		<field name="EGL_OPENVG_API" />
-		<field name="EGL_OPENVG_BIT" />
-		<field name="EGL_OPENVG_IMAGE" />
-		<field name="EGL_PBUFFER_BIT" />
-		<field name="EGL_PIXEL_ASPECT_RATIO" />
-		<field name="EGL_PIXMAP_BIT" />
-		<field name="EGL_READ" />
-		<field name="EGL_RED_SIZE" />
-		<field name="EGL_RENDERABLE_TYPE" />
-		<field name="EGL_RENDER_BUFFER" />
-		<field name="EGL_RGB_BUFFER" />
-		<field name="EGL_SAMPLES" />
-		<field name="EGL_SAMPLE_BUFFERS" />
-		<field name="EGL_SINGLE_BUFFER" />
-		<field name="EGL_SLOW_CONFIG" />
-		<field name="EGL_STENCIL_SIZE" />
-		<field name="EGL_SUCCESS" />
-		<field name="EGL_SURFACE_TYPE" />
-		<field name="EGL_SWAP_BEHAVIOR" />
-		<field name="EGL_SWAP_BEHAVIOR_PRESERVED_BIT" />
-		<field name="EGL_TEXTURE_2D" />
-		<field name="EGL_TEXTURE_FORMAT" />
-		<field name="EGL_TEXTURE_RGB" />
-		<field name="EGL_TEXTURE_RGBA" />
-		<field name="EGL_TEXTURE_TARGET" />
-		<field name="EGL_TRANSPARENT_BLUE_VALUE" />
-		<field name="EGL_TRANSPARENT_GREEN_VALUE" />
-		<field name="EGL_TRANSPARENT_RED_VALUE" />
-		<field name="EGL_TRANSPARENT_RGB" />
-		<field name="EGL_TRANSPARENT_TYPE" />
-		<field name="EGL_TRUE" />
-		<field name="EGL_VENDOR" />
-		<field name="EGL_VERSION" />
-		<field name="EGL_VERTICAL_RESOLUTION" />
-		<field name="EGL_VG_ALPHA_FORMAT" />
-		<field name="EGL_VG_ALPHA_FORMAT_NONPRE" />
-		<field name="EGL_VG_ALPHA_FORMAT_PRE" />
-		<field name="EGL_VG_ALPHA_FORMAT_PRE_BIT" />
-		<field name="EGL_VG_COLORSPACE" />
-		<field name="EGL_VG_COLORSPACE_LINEAR" />
-		<field name="EGL_VG_COLORSPACE_LINEAR_BIT" />
-		<field name="EGL_VG_COLORSPACE_sRGB" />
-		<field name="EGL_WIDTH" />
-		<field name="EGL_WINDOW_BIT" />
-	</class>
-	<class name="android/opengl/EGLConfig" since="17">
-		<extends name="android/opengl/EGLObjectHandle" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="android/opengl/EGLContext" since="17">
-		<extends name="android/opengl/EGLObjectHandle" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="android/opengl/EGLDisplay" since="17">
-		<extends name="android/opengl/EGLObjectHandle" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="android/opengl/EGLExt" since="18">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="eglPresentationTimeANDROID(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLSurface;J)Z" />
-		<field name="EGL_CONTEXT_FLAGS_KHR" />
-		<field name="EGL_CONTEXT_MAJOR_VERSION_KHR" />
-		<field name="EGL_CONTEXT_MINOR_VERSION_KHR" />
-		<field name="EGL_OPENGL_ES3_BIT_KHR" />
-	</class>
-	<class name="android/opengl/EGLObjectHandle" since="17">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(I)V" />
-		<method name="&lt;init>(J)V" since="21" />
-		<method name="getHandle()I" />
-		<method name="getNativeHandle()J" since="21" />
-	</class>
-	<class name="android/opengl/EGLSurface" since="17">
-		<extends name="android/opengl/EGLObjectHandle" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="android/opengl/ETC1" since="8">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="decodeBlock(Ljava/nio/Buffer;Ljava/nio/Buffer;)V" />
-		<method name="decodeImage(Ljava/nio/Buffer;Ljava/nio/Buffer;IIII)V" />
-		<method name="encodeBlock(Ljava/nio/Buffer;ILjava/nio/Buffer;)V" />
-		<method name="encodeImage(Ljava/nio/Buffer;IIIILjava/nio/Buffer;)V" />
-		<method name="formatHeader(Ljava/nio/Buffer;II)V" />
-		<method name="getEncodedDataSize(II)I" />
-		<method name="getHeight(Ljava/nio/Buffer;)I" />
-		<method name="getWidth(Ljava/nio/Buffer;)I" />
-		<method name="isValid(Ljava/nio/Buffer;)Z" />
-		<field name="DECODED_BLOCK_SIZE" />
-		<field name="ENCODED_BLOCK_SIZE" />
-		<field name="ETC1_RGB8_OES" />
-		<field name="ETC_PKM_HEADER_SIZE" />
-	</class>
-	<class name="android/opengl/ETC1Util" since="8">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="compressTexture(Ljava/nio/Buffer;IIII)Landroid/opengl/ETC1Util$ETC1Texture;" />
-		<method name="createTexture(Ljava/io/InputStream;)Landroid/opengl/ETC1Util$ETC1Texture;" />
-		<method name="isETC1Supported()Z" />
-		<method name="loadTexture(IIIIILandroid/opengl/ETC1Util$ETC1Texture;)V" />
-		<method name="loadTexture(IIIIILjava/io/InputStream;)V" />
-		<method name="writeTexture(Landroid/opengl/ETC1Util$ETC1Texture;Ljava/io/OutputStream;)V" />
-	</class>
-	<class name="android/opengl/ETC1Util$ETC1Texture" since="8">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(IILjava/nio/ByteBuffer;)V" />
-		<method name="getData()Ljava/nio/ByteBuffer;" />
-		<method name="getHeight()I" />
-		<method name="getWidth()I" />
-	</class>
-	<class name="android/opengl/GLDebugHelper" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="wrap(Ljavax/microedition/khronos/egl/EGL;ILjava/io/Writer;)Ljavax/microedition/khronos/egl/EGL;" />
-		<method name="wrap(Ljavax/microedition/khronos/opengles/GL;ILjava/io/Writer;)Ljavax/microedition/khronos/opengles/GL;" />
-		<field name="CONFIG_CHECK_GL_ERROR" />
-		<field name="CONFIG_CHECK_THREAD" />
-		<field name="CONFIG_LOG_ARGUMENT_NAMES" />
-		<field name="ERROR_WRONG_THREAD" />
-	</class>
-	<class name="android/opengl/GLES10" since="4">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="glActiveTexture(I)V" />
-		<method name="glAlphaFunc(IF)V" />
-		<method name="glAlphaFuncx(II)V" />
-		<method name="glBindTexture(II)V" />
-		<method name="glBlendFunc(II)V" />
-		<method name="glClear(I)V" />
-		<method name="glClearColor(FFFF)V" />
-		<method name="glClearColorx(IIII)V" />
-		<method name="glClearDepthf(F)V" />
-		<method name="glClearDepthx(I)V" />
-		<method name="glClearStencil(I)V" />
-		<method name="glClientActiveTexture(I)V" />
-		<method name="glColor4f(FFFF)V" />
-		<method name="glColor4x(IIII)V" />
-		<method name="glColorMask(ZZZZ)V" />
-		<method name="glColorPointer(IIILjava/nio/Buffer;)V" />
-		<method name="glCompressedTexImage2D(IIIIIIILjava/nio/Buffer;)V" />
-		<method name="glCompressedTexSubImage2D(IIIIIIIILjava/nio/Buffer;)V" />
-		<method name="glCopyTexImage2D(IIIIIIII)V" />
-		<method name="glCopyTexSubImage2D(IIIIIIII)V" />
-		<method name="glCullFace(I)V" />
-		<method name="glDeleteTextures(ILjava/nio/IntBuffer;)V" />
-		<method name="glDeleteTextures(I[II)V" />
-		<method name="glDepthFunc(I)V" />
-		<method name="glDepthMask(Z)V" />
-		<method name="glDepthRangef(FF)V" />
-		<method name="glDepthRangex(II)V" />
-		<method name="glDisable(I)V" />
-		<method name="glDisableClientState(I)V" />
-		<method name="glDrawArrays(III)V" />
-		<method name="glDrawElements(IIILjava/nio/Buffer;)V" />
-		<method name="glEnable(I)V" />
-		<method name="glEnableClientState(I)V" />
-		<method name="glFinish()V" />
-		<method name="glFlush()V" />
-		<method name="glFogf(IF)V" />
-		<method name="glFogfv(ILjava/nio/FloatBuffer;)V" />
-		<method name="glFogfv(I[FI)V" />
-		<method name="glFogx(II)V" />
-		<method name="glFogxv(ILjava/nio/IntBuffer;)V" />
-		<method name="glFogxv(I[II)V" />
-		<method name="glFrontFace(I)V" />
-		<method name="glFrustumf(FFFFFF)V" />
-		<method name="glFrustumx(IIIIII)V" />
-		<method name="glGenTextures(ILjava/nio/IntBuffer;)V" />
-		<method name="glGenTextures(I[II)V" />
-		<method name="glGetError()I" />
-		<method name="glGetIntegerv(ILjava/nio/IntBuffer;)V" />
-		<method name="glGetIntegerv(I[II)V" />
-		<method name="glGetString(I)Ljava/lang/String;" />
-		<method name="glHint(II)V" />
-		<method name="glLightModelf(IF)V" />
-		<method name="glLightModelfv(ILjava/nio/FloatBuffer;)V" />
-		<method name="glLightModelfv(I[FI)V" />
-		<method name="glLightModelx(II)V" />
-		<method name="glLightModelxv(ILjava/nio/IntBuffer;)V" />
-		<method name="glLightModelxv(I[II)V" />
-		<method name="glLightf(IIF)V" />
-		<method name="glLightfv(IILjava/nio/FloatBuffer;)V" />
-		<method name="glLightfv(II[FI)V" />
-		<method name="glLightx(III)V" />
-		<method name="glLightxv(IILjava/nio/IntBuffer;)V" />
-		<method name="glLightxv(II[II)V" />
-		<method name="glLineWidth(F)V" />
-		<method name="glLineWidthx(I)V" />
-		<method name="glLoadIdentity()V" />
-		<method name="glLoadMatrixf(Ljava/nio/FloatBuffer;)V" />
-		<method name="glLoadMatrixf([FI)V" />
-		<method name="glLoadMatrixx(Ljava/nio/IntBuffer;)V" />
-		<method name="glLoadMatrixx([II)V" />
-		<method name="glLogicOp(I)V" />
-		<method name="glMaterialf(IIF)V" />
-		<method name="glMaterialfv(IILjava/nio/FloatBuffer;)V" />
-		<method name="glMaterialfv(II[FI)V" />
-		<method name="glMaterialx(III)V" />
-		<method name="glMaterialxv(IILjava/nio/IntBuffer;)V" />
-		<method name="glMaterialxv(II[II)V" />
-		<method name="glMatrixMode(I)V" />
-		<method name="glMultMatrixf(Ljava/nio/FloatBuffer;)V" />
-		<method name="glMultMatrixf([FI)V" />
-		<method name="glMultMatrixx(Ljava/nio/IntBuffer;)V" />
-		<method name="glMultMatrixx([II)V" />
-		<method name="glMultiTexCoord4f(IFFFF)V" />
-		<method name="glMultiTexCoord4x(IIIII)V" />
-		<method name="glNormal3f(FFF)V" />
-		<method name="glNormal3x(III)V" />
-		<method name="glNormalPointer(IILjava/nio/Buffer;)V" />
-		<method name="glOrthof(FFFFFF)V" />
-		<method name="glOrthox(IIIIII)V" />
-		<method name="glPixelStorei(II)V" />
-		<method name="glPointSize(F)V" />
-		<method name="glPointSizex(I)V" />
-		<method name="glPolygonOffset(FF)V" />
-		<method name="glPolygonOffsetx(II)V" />
-		<method name="glPopMatrix()V" />
-		<method name="glPushMatrix()V" />
-		<method name="glReadPixels(IIIIIILjava/nio/Buffer;)V" />
-		<method name="glRotatef(FFFF)V" />
-		<method name="glRotatex(IIII)V" />
-		<method name="glSampleCoverage(FZ)V" />
-		<method name="glSampleCoveragex(IZ)V" />
-		<method name="glScalef(FFF)V" />
-		<method name="glScalex(III)V" />
-		<method name="glScissor(IIII)V" />
-		<method name="glShadeModel(I)V" />
-		<method name="glStencilFunc(III)V" />
-		<method name="glStencilMask(I)V" />
-		<method name="glStencilOp(III)V" />
-		<method name="glTexCoordPointer(IIILjava/nio/Buffer;)V" />
-		<method name="glTexEnvf(IIF)V" />
-		<method name="glTexEnvfv(IILjava/nio/FloatBuffer;)V" />
-		<method name="glTexEnvfv(II[FI)V" />
-		<method name="glTexEnvx(III)V" />
-		<method name="glTexEnvxv(IILjava/nio/IntBuffer;)V" />
-		<method name="glTexEnvxv(II[II)V" />
-		<method name="glTexImage2D(IIIIIIIILjava/nio/Buffer;)V" />
-		<method name="glTexParameterf(IIF)V" />
-		<method name="glTexParameterx(III)V" />
-		<method name="glTexSubImage2D(IIIIIIIILjava/nio/Buffer;)V" />
-		<method name="glTranslatef(FFF)V" />
-		<method name="glTranslatex(III)V" />
-		<method name="glVertexPointer(IIILjava/nio/Buffer;)V" />
-		<method name="glViewport(IIII)V" />
-		<field name="GL_ADD" />
-		<field name="GL_ALIASED_LINE_WIDTH_RANGE" />
-		<field name="GL_ALIASED_POINT_SIZE_RANGE" />
-		<field name="GL_ALPHA" />
-		<field name="GL_ALPHA_BITS" />
-		<field name="GL_ALPHA_TEST" />
-		<field name="GL_ALWAYS" />
-		<field name="GL_AMBIENT" />
-		<field name="GL_AMBIENT_AND_DIFFUSE" />
-		<field name="GL_AND" />
-		<field name="GL_AND_INVERTED" />
-		<field name="GL_AND_REVERSE" />
-		<field name="GL_BACK" />
-		<field name="GL_BLEND" />
-		<field name="GL_BLUE_BITS" />
-		<field name="GL_BYTE" />
-		<field name="GL_CCW" />
-		<field name="GL_CLAMP_TO_EDGE" />
-		<field name="GL_CLEAR" />
-		<field name="GL_COLOR_ARRAY" />
-		<field name="GL_COLOR_BUFFER_BIT" />
-		<field name="GL_COLOR_LOGIC_OP" />
-		<field name="GL_COLOR_MATERIAL" />
-		<field name="GL_COMPRESSED_TEXTURE_FORMATS" />
-		<field name="GL_CONSTANT_ATTENUATION" />
-		<field name="GL_COPY" />
-		<field name="GL_COPY_INVERTED" />
-		<field name="GL_CULL_FACE" />
-		<field name="GL_CW" />
-		<field name="GL_DECAL" />
-		<field name="GL_DECR" />
-		<field name="GL_DEPTH_BITS" />
-		<field name="GL_DEPTH_BUFFER_BIT" />
-		<field name="GL_DEPTH_TEST" />
-		<field name="GL_DIFFUSE" />
-		<field name="GL_DITHER" />
-		<field name="GL_DONT_CARE" />
-		<field name="GL_DST_ALPHA" />
-		<field name="GL_DST_COLOR" />
-		<field name="GL_EMISSION" />
-		<field name="GL_EQUAL" />
-		<field name="GL_EQUIV" />
-		<field name="GL_EXP" />
-		<field name="GL_EXP2" />
-		<field name="GL_EXTENSIONS" />
-		<field name="GL_FALSE" />
-		<field name="GL_FASTEST" />
-		<field name="GL_FIXED" />
-		<field name="GL_FLAT" />
-		<field name="GL_FLOAT" />
-		<field name="GL_FOG" />
-		<field name="GL_FOG_COLOR" />
-		<field name="GL_FOG_DENSITY" />
-		<field name="GL_FOG_END" />
-		<field name="GL_FOG_HINT" />
-		<field name="GL_FOG_MODE" />
-		<field name="GL_FOG_START" />
-		<field name="GL_FRONT" />
-		<field name="GL_FRONT_AND_BACK" />
-		<field name="GL_GEQUAL" />
-		<field name="GL_GREATER" />
-		<field name="GL_GREEN_BITS" />
-		<field name="GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES" />
-		<field name="GL_IMPLEMENTATION_COLOR_READ_TYPE_OES" />
-		<field name="GL_INCR" />
-		<field name="GL_INVALID_ENUM" />
-		<field name="GL_INVALID_OPERATION" />
-		<field name="GL_INVALID_VALUE" />
-		<field name="GL_INVERT" />
-		<field name="GL_KEEP" />
-		<field name="GL_LEQUAL" />
-		<field name="GL_LESS" />
-		<field name="GL_LIGHT0" />
-		<field name="GL_LIGHT1" />
-		<field name="GL_LIGHT2" />
-		<field name="GL_LIGHT3" />
-		<field name="GL_LIGHT4" />
-		<field name="GL_LIGHT5" />
-		<field name="GL_LIGHT6" />
-		<field name="GL_LIGHT7" />
-		<field name="GL_LIGHTING" />
-		<field name="GL_LIGHT_MODEL_AMBIENT" />
-		<field name="GL_LIGHT_MODEL_TWO_SIDE" />
-		<field name="GL_LINEAR" />
-		<field name="GL_LINEAR_ATTENUATION" />
-		<field name="GL_LINEAR_MIPMAP_LINEAR" />
-		<field name="GL_LINEAR_MIPMAP_NEAREST" />
-		<field name="GL_LINES" />
-		<field name="GL_LINE_LOOP" />
-		<field name="GL_LINE_SMOOTH" />
-		<field name="GL_LINE_SMOOTH_HINT" />
-		<field name="GL_LINE_STRIP" />
-		<field name="GL_LUMINANCE" />
-		<field name="GL_LUMINANCE_ALPHA" />
-		<field name="GL_MAX_ELEMENTS_INDICES" />
-		<field name="GL_MAX_ELEMENTS_VERTICES" />
-		<field name="GL_MAX_LIGHTS" />
-		<field name="GL_MAX_MODELVIEW_STACK_DEPTH" />
-		<field name="GL_MAX_PROJECTION_STACK_DEPTH" />
-		<field name="GL_MAX_TEXTURE_SIZE" />
-		<field name="GL_MAX_TEXTURE_STACK_DEPTH" />
-		<field name="GL_MAX_TEXTURE_UNITS" />
-		<field name="GL_MAX_VIEWPORT_DIMS" />
-		<field name="GL_MODELVIEW" />
-		<field name="GL_MODULATE" />
-		<field name="GL_MULTISAMPLE" />
-		<field name="GL_NAND" />
-		<field name="GL_NEAREST" />
-		<field name="GL_NEAREST_MIPMAP_LINEAR" />
-		<field name="GL_NEAREST_MIPMAP_NEAREST" />
-		<field name="GL_NEVER" />
-		<field name="GL_NICEST" />
-		<field name="GL_NOOP" />
-		<field name="GL_NOR" />
-		<field name="GL_NORMALIZE" />
-		<field name="GL_NORMAL_ARRAY" />
-		<field name="GL_NOTEQUAL" />
-		<field name="GL_NO_ERROR" />
-		<field name="GL_NUM_COMPRESSED_TEXTURE_FORMATS" />
-		<field name="GL_ONE" />
-		<field name="GL_ONE_MINUS_DST_ALPHA" />
-		<field name="GL_ONE_MINUS_DST_COLOR" />
-		<field name="GL_ONE_MINUS_SRC_ALPHA" />
-		<field name="GL_ONE_MINUS_SRC_COLOR" />
-		<field name="GL_OR" />
-		<field name="GL_OR_INVERTED" />
-		<field name="GL_OR_REVERSE" />
-		<field name="GL_OUT_OF_MEMORY" />
-		<field name="GL_PACK_ALIGNMENT" />
-		<field name="GL_PALETTE4_R5_G6_B5_OES" />
-		<field name="GL_PALETTE4_RGB5_A1_OES" />
-		<field name="GL_PALETTE4_RGB8_OES" />
-		<field name="GL_PALETTE4_RGBA4_OES" />
-		<field name="GL_PALETTE4_RGBA8_OES" />
-		<field name="GL_PALETTE8_R5_G6_B5_OES" />
-		<field name="GL_PALETTE8_RGB5_A1_OES" />
-		<field name="GL_PALETTE8_RGB8_OES" />
-		<field name="GL_PALETTE8_RGBA4_OES" />
-		<field name="GL_PALETTE8_RGBA8_OES" />
-		<field name="GL_PERSPECTIVE_CORRECTION_HINT" />
-		<field name="GL_POINTS" />
-		<field name="GL_POINT_FADE_THRESHOLD_SIZE" />
-		<field name="GL_POINT_SIZE" />
-		<field name="GL_POINT_SMOOTH" />
-		<field name="GL_POINT_SMOOTH_HINT" />
-		<field name="GL_POLYGON_OFFSET_FILL" />
-		<field name="GL_POLYGON_SMOOTH_HINT" />
-		<field name="GL_POSITION" />
-		<field name="GL_PROJECTION" />
-		<field name="GL_QUADRATIC_ATTENUATION" />
-		<field name="GL_RED_BITS" />
-		<field name="GL_RENDERER" />
-		<field name="GL_REPEAT" />
-		<field name="GL_REPLACE" />
-		<field name="GL_RESCALE_NORMAL" />
-		<field name="GL_RGB" />
-		<field name="GL_RGBA" />
-		<field name="GL_SAMPLE_ALPHA_TO_COVERAGE" />
-		<field name="GL_SAMPLE_ALPHA_TO_ONE" />
-		<field name="GL_SAMPLE_COVERAGE" />
-		<field name="GL_SCISSOR_TEST" />
-		<field name="GL_SET" />
-		<field name="GL_SHININESS" />
-		<field name="GL_SHORT" />
-		<field name="GL_SMOOTH" />
-		<field name="GL_SMOOTH_LINE_WIDTH_RANGE" />
-		<field name="GL_SMOOTH_POINT_SIZE_RANGE" />
-		<field name="GL_SPECULAR" />
-		<field name="GL_SPOT_CUTOFF" />
-		<field name="GL_SPOT_DIRECTION" />
-		<field name="GL_SPOT_EXPONENT" />
-		<field name="GL_SRC_ALPHA" />
-		<field name="GL_SRC_ALPHA_SATURATE" />
-		<field name="GL_SRC_COLOR" />
-		<field name="GL_STACK_OVERFLOW" />
-		<field name="GL_STACK_UNDERFLOW" />
-		<field name="GL_STENCIL_BITS" />
-		<field name="GL_STENCIL_BUFFER_BIT" />
-		<field name="GL_STENCIL_TEST" />
-		<field name="GL_SUBPIXEL_BITS" />
-		<field name="GL_TEXTURE" />
-		<field name="GL_TEXTURE0" />
-		<field name="GL_TEXTURE1" />
-		<field name="GL_TEXTURE10" />
-		<field name="GL_TEXTURE11" />
-		<field name="GL_TEXTURE12" />
-		<field name="GL_TEXTURE13" />
-		<field name="GL_TEXTURE14" />
-		<field name="GL_TEXTURE15" />
-		<field name="GL_TEXTURE16" />
-		<field name="GL_TEXTURE17" />
-		<field name="GL_TEXTURE18" />
-		<field name="GL_TEXTURE19" />
-		<field name="GL_TEXTURE2" />
-		<field name="GL_TEXTURE20" />
-		<field name="GL_TEXTURE21" />
-		<field name="GL_TEXTURE22" />
-		<field name="GL_TEXTURE23" />
-		<field name="GL_TEXTURE24" />
-		<field name="GL_TEXTURE25" />
-		<field name="GL_TEXTURE26" />
-		<field name="GL_TEXTURE27" />
-		<field name="GL_TEXTURE28" />
-		<field name="GL_TEXTURE29" />
-		<field name="GL_TEXTURE3" />
-		<field name="GL_TEXTURE30" />
-		<field name="GL_TEXTURE31" />
-		<field name="GL_TEXTURE4" />
-		<field name="GL_TEXTURE5" />
-		<field name="GL_TEXTURE6" />
-		<field name="GL_TEXTURE7" />
-		<field name="GL_TEXTURE8" />
-		<field name="GL_TEXTURE9" />
-		<field name="GL_TEXTURE_2D" />
-		<field name="GL_TEXTURE_COORD_ARRAY" />
-		<field name="GL_TEXTURE_ENV" />
-		<field name="GL_TEXTURE_ENV_COLOR" />
-		<field name="GL_TEXTURE_ENV_MODE" />
-		<field name="GL_TEXTURE_MAG_FILTER" />
-		<field name="GL_TEXTURE_MIN_FILTER" />
-		<field name="GL_TEXTURE_WRAP_S" />
-		<field name="GL_TEXTURE_WRAP_T" />
-		<field name="GL_TRIANGLES" />
-		<field name="GL_TRIANGLE_FAN" />
-		<field name="GL_TRIANGLE_STRIP" />
-		<field name="GL_TRUE" />
-		<field name="GL_UNPACK_ALIGNMENT" />
-		<field name="GL_UNSIGNED_BYTE" />
-		<field name="GL_UNSIGNED_SHORT" />
-		<field name="GL_UNSIGNED_SHORT_4_4_4_4" />
-		<field name="GL_UNSIGNED_SHORT_5_5_5_1" />
-		<field name="GL_UNSIGNED_SHORT_5_6_5" />
-		<field name="GL_VENDOR" />
-		<field name="GL_VERSION" />
-		<field name="GL_VERTEX_ARRAY" />
-		<field name="GL_XOR" />
-		<field name="GL_ZERO" />
-	</class>
-	<class name="android/opengl/GLES10Ext" since="4">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="glQueryMatrixxOES(Ljava/nio/IntBuffer;Ljava/nio/IntBuffer;)I" />
-		<method name="glQueryMatrixxOES([II[II)I" />
-	</class>
-	<class name="android/opengl/GLES11" since="4">
-		<extends name="android/opengl/GLES10" />
-		<method name="&lt;init>()V" />
-		<method name="glBindBuffer(II)V" />
-		<method name="glBufferData(IILjava/nio/Buffer;I)V" />
-		<method name="glBufferSubData(IIILjava/nio/Buffer;)V" />
-		<method name="glClipPlanef(ILjava/nio/FloatBuffer;)V" />
-		<method name="glClipPlanef(I[FI)V" />
-		<method name="glClipPlanex(ILjava/nio/IntBuffer;)V" />
-		<method name="glClipPlanex(I[II)V" />
-		<method name="glColor4ub(BBBB)V" />
-		<method name="glColorPointer(IIII)V" />
-		<method name="glDeleteBuffers(ILjava/nio/IntBuffer;)V" />
-		<method name="glDeleteBuffers(I[II)V" />
-		<method name="glDrawElements(IIII)V" />
-		<method name="glGenBuffers(ILjava/nio/IntBuffer;)V" />
-		<method name="glGenBuffers(I[II)V" />
-		<method name="glGetBooleanv(ILjava/nio/IntBuffer;)V" />
-		<method name="glGetBooleanv(I[ZI)V" />
-		<method name="glGetBufferParameteriv(IILjava/nio/IntBuffer;)V" />
-		<method name="glGetBufferParameteriv(II[II)V" />
-		<method name="glGetClipPlanef(ILjava/nio/FloatBuffer;)V" />
-		<method name="glGetClipPlanef(I[FI)V" />
-		<method name="glGetClipPlanex(ILjava/nio/IntBuffer;)V" />
-		<method name="glGetClipPlanex(I[II)V" />
-		<method name="glGetFixedv(ILjava/nio/IntBuffer;)V" />
-		<method name="glGetFixedv(I[II)V" />
-		<method name="glGetFloatv(ILjava/nio/FloatBuffer;)V" />
-		<method name="glGetFloatv(I[FI)V" />
-		<method name="glGetLightfv(IILjava/nio/FloatBuffer;)V" />
-		<method name="glGetLightfv(II[FI)V" />
-		<method name="glGetLightxv(IILjava/nio/IntBuffer;)V" />
-		<method name="glGetLightxv(II[II)V" />
-		<method name="glGetMaterialfv(IILjava/nio/FloatBuffer;)V" />
-		<method name="glGetMaterialfv(II[FI)V" />
-		<method name="glGetMaterialxv(IILjava/nio/IntBuffer;)V" />
-		<method name="glGetMaterialxv(II[II)V" />
-		<method name="glGetTexEnvfv(IILjava/nio/FloatBuffer;)V" />
-		<method name="glGetTexEnvfv(II[FI)V" />
-		<method name="glGetTexEnviv(IILjava/nio/IntBuffer;)V" />
-		<method name="glGetTexEnviv(II[II)V" />
-		<method name="glGetTexEnvxv(IILjava/nio/IntBuffer;)V" />
-		<method name="glGetTexEnvxv(II[II)V" />
-		<method name="glGetTexParameterfv(IILjava/nio/FloatBuffer;)V" />
-		<method name="glGetTexParameterfv(II[FI)V" />
-		<method name="glGetTexParameteriv(IILjava/nio/IntBuffer;)V" />
-		<method name="glGetTexParameteriv(II[II)V" />
-		<method name="glGetTexParameterxv(IILjava/nio/IntBuffer;)V" />
-		<method name="glGetTexParameterxv(II[II)V" />
-		<method name="glIsBuffer(I)Z" />
-		<method name="glIsEnabled(I)Z" />
-		<method name="glIsTexture(I)Z" />
-		<method name="glNormalPointer(III)V" />
-		<method name="glPointParameterf(IF)V" />
-		<method name="glPointParameterfv(ILjava/nio/FloatBuffer;)V" />
-		<method name="glPointParameterfv(I[FI)V" />
-		<method name="glPointParameterx(II)V" />
-		<method name="glPointParameterxv(ILjava/nio/IntBuffer;)V" />
-		<method name="glPointParameterxv(I[II)V" />
-		<method name="glPointSizePointerOES(IILjava/nio/Buffer;)V" />
-		<method name="glTexCoordPointer(IIII)V" />
-		<method name="glTexEnvi(III)V" />
-		<method name="glTexEnviv(IILjava/nio/IntBuffer;)V" />
-		<method name="glTexEnviv(II[II)V" />
-		<method name="glTexParameterfv(IILjava/nio/FloatBuffer;)V" />
-		<method name="glTexParameterfv(II[FI)V" />
-		<method name="glTexParameteri(III)V" />
-		<method name="glTexParameteriv(IILjava/nio/IntBuffer;)V" />
-		<method name="glTexParameteriv(II[II)V" />
-		<method name="glTexParameterxv(IILjava/nio/IntBuffer;)V" />
-		<method name="glTexParameterxv(II[II)V" />
-		<method name="glVertexPointer(IIII)V" />
-		<field name="GL_ACTIVE_TEXTURE" />
-		<field name="GL_ADD_SIGNED" />
-		<field name="GL_ALPHA_SCALE" />
-		<field name="GL_ALPHA_TEST_FUNC" />
-		<field name="GL_ALPHA_TEST_REF" />
-		<field name="GL_ARRAY_BUFFER" />
-		<field name="GL_ARRAY_BUFFER_BINDING" />
-		<field name="GL_BLEND_DST" />
-		<field name="GL_BLEND_SRC" />
-		<field name="GL_BUFFER_ACCESS" />
-		<field name="GL_BUFFER_SIZE" />
-		<field name="GL_BUFFER_USAGE" />
-		<field name="GL_CLIENT_ACTIVE_TEXTURE" />
-		<field name="GL_CLIP_PLANE0" />
-		<field name="GL_CLIP_PLANE1" />
-		<field name="GL_CLIP_PLANE2" />
-		<field name="GL_CLIP_PLANE3" />
-		<field name="GL_CLIP_PLANE4" />
-		<field name="GL_CLIP_PLANE5" />
-		<field name="GL_COLOR_ARRAY_BUFFER_BINDING" />
-		<field name="GL_COLOR_ARRAY_POINTER" />
-		<field name="GL_COLOR_ARRAY_SIZE" />
-		<field name="GL_COLOR_ARRAY_STRIDE" />
-		<field name="GL_COLOR_ARRAY_TYPE" />
-		<field name="GL_COLOR_CLEAR_VALUE" />
-		<field name="GL_COLOR_WRITEMASK" />
-		<field name="GL_COMBINE" />
-		<field name="GL_COMBINE_ALPHA" />
-		<field name="GL_COMBINE_RGB" />
-		<field name="GL_CONSTANT" />
-		<field name="GL_COORD_REPLACE_OES" />
-		<field name="GL_CULL_FACE_MODE" />
-		<field name="GL_CURRENT_COLOR" />
-		<field name="GL_CURRENT_NORMAL" />
-		<field name="GL_CURRENT_TEXTURE_COORDS" />
-		<field name="GL_DEPTH_CLEAR_VALUE" />
-		<field name="GL_DEPTH_FUNC" />
-		<field name="GL_DEPTH_RANGE" />
-		<field name="GL_DEPTH_WRITEMASK" />
-		<field name="GL_DOT3_RGB" />
-		<field name="GL_DOT3_RGBA" />
-		<field name="GL_DYNAMIC_DRAW" />
-		<field name="GL_ELEMENT_ARRAY_BUFFER" />
-		<field name="GL_ELEMENT_ARRAY_BUFFER_BINDING" />
-		<field name="GL_FRONT_FACE" />
-		<field name="GL_GENERATE_MIPMAP" />
-		<field name="GL_GENERATE_MIPMAP_HINT" />
-		<field name="GL_INTERPOLATE" />
-		<field name="GL_LINE_WIDTH" />
-		<field name="GL_LOGIC_OP_MODE" />
-		<field name="GL_MATRIX_MODE" />
-		<field name="GL_MAX_CLIP_PLANES" />
-		<field name="GL_MODELVIEW_MATRIX" />
-		<field name="GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES" />
-		<field name="GL_MODELVIEW_STACK_DEPTH" />
-		<field name="GL_NORMAL_ARRAY_BUFFER_BINDING" />
-		<field name="GL_NORMAL_ARRAY_POINTER" />
-		<field name="GL_NORMAL_ARRAY_STRIDE" />
-		<field name="GL_NORMAL_ARRAY_TYPE" />
-		<field name="GL_OPERAND0_ALPHA" />
-		<field name="GL_OPERAND0_RGB" />
-		<field name="GL_OPERAND1_ALPHA" />
-		<field name="GL_OPERAND1_RGB" />
-		<field name="GL_OPERAND2_ALPHA" />
-		<field name="GL_OPERAND2_RGB" />
-		<field name="GL_POINT_DISTANCE_ATTENUATION" />
-		<field name="GL_POINT_FADE_THRESHOLD_SIZE" />
-		<field name="GL_POINT_SIZE" />
-		<field name="GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES" />
-		<field name="GL_POINT_SIZE_ARRAY_OES" />
-		<field name="GL_POINT_SIZE_ARRAY_POINTER_OES" />
-		<field name="GL_POINT_SIZE_ARRAY_STRIDE_OES" />
-		<field name="GL_POINT_SIZE_ARRAY_TYPE_OES" />
-		<field name="GL_POINT_SIZE_MAX" />
-		<field name="GL_POINT_SIZE_MIN" />
-		<field name="GL_POINT_SPRITE_OES" />
-		<field name="GL_POLYGON_OFFSET_FACTOR" />
-		<field name="GL_POLYGON_OFFSET_UNITS" />
-		<field name="GL_PREVIOUS" />
-		<field name="GL_PRIMARY_COLOR" />
-		<field name="GL_PROJECTION_MATRIX" />
-		<field name="GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES" />
-		<field name="GL_PROJECTION_STACK_DEPTH" />
-		<field name="GL_RGB_SCALE" />
-		<field name="GL_SAMPLES" />
-		<field name="GL_SAMPLE_BUFFERS" />
-		<field name="GL_SAMPLE_COVERAGE_INVERT" />
-		<field name="GL_SAMPLE_COVERAGE_VALUE" />
-		<field name="GL_SCISSOR_BOX" />
-		<field name="GL_SHADE_MODEL" />
-		<field name="GL_SRC0_ALPHA" />
-		<field name="GL_SRC0_RGB" />
-		<field name="GL_SRC1_ALPHA" />
-		<field name="GL_SRC1_RGB" />
-		<field name="GL_SRC2_ALPHA" />
-		<field name="GL_SRC2_RGB" />
-		<field name="GL_STATIC_DRAW" />
-		<field name="GL_STENCIL_CLEAR_VALUE" />
-		<field name="GL_STENCIL_FAIL" />
-		<field name="GL_STENCIL_FUNC" />
-		<field name="GL_STENCIL_PASS_DEPTH_FAIL" />
-		<field name="GL_STENCIL_PASS_DEPTH_PASS" />
-		<field name="GL_STENCIL_REF" />
-		<field name="GL_STENCIL_VALUE_MASK" />
-		<field name="GL_STENCIL_WRITEMASK" />
-		<field name="GL_SUBTRACT" />
-		<field name="GL_TEXTURE_BINDING_2D" />
-		<field name="GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING" />
-		<field name="GL_TEXTURE_COORD_ARRAY_POINTER" />
-		<field name="GL_TEXTURE_COORD_ARRAY_SIZE" />
-		<field name="GL_TEXTURE_COORD_ARRAY_STRIDE" />
-		<field name="GL_TEXTURE_COORD_ARRAY_TYPE" />
-		<field name="GL_TEXTURE_MATRIX" />
-		<field name="GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES" />
-		<field name="GL_TEXTURE_STACK_DEPTH" />
-		<field name="GL_VERTEX_ARRAY_BUFFER_BINDING" />
-		<field name="GL_VERTEX_ARRAY_POINTER" />
-		<field name="GL_VERTEX_ARRAY_SIZE" />
-		<field name="GL_VERTEX_ARRAY_STRIDE" />
-		<field name="GL_VERTEX_ARRAY_TYPE" />
-		<field name="GL_VIEWPORT" />
-		<field name="GL_WRITE_ONLY" />
-	</class>
-	<class name="android/opengl/GLES11Ext" since="4">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="glAlphaFuncxOES(II)V" />
-		<method name="glBindFramebufferOES(II)V" />
-		<method name="glBindRenderbufferOES(II)V" />
-		<method name="glBlendEquationOES(I)V" />
-		<method name="glBlendEquationSeparateOES(II)V" />
-		<method name="glBlendFuncSeparateOES(IIII)V" />
-		<method name="glCheckFramebufferStatusOES(I)I" />
-		<method name="glClearColorxOES(IIII)V" />
-		<method name="glClearDepthfOES(F)V" />
-		<method name="glClearDepthxOES(I)V" />
-		<method name="glClipPlanefOES(ILjava/nio/FloatBuffer;)V" />
-		<method name="glClipPlanefOES(I[FI)V" />
-		<method name="glClipPlanexOES(ILjava/nio/IntBuffer;)V" />
-		<method name="glClipPlanexOES(I[II)V" />
-		<method name="glColor4xOES(IIII)V" />
-		<method name="glCurrentPaletteMatrixOES(I)V" />
-		<method name="glDeleteFramebuffersOES(ILjava/nio/IntBuffer;)V" />
-		<method name="glDeleteFramebuffersOES(I[II)V" />
-		<method name="glDeleteRenderbuffersOES(ILjava/nio/IntBuffer;)V" />
-		<method name="glDeleteRenderbuffersOES(I[II)V" />
-		<method name="glDepthRangefOES(FF)V" />
-		<method name="glDepthRangexOES(II)V" />
-		<method name="glDrawTexfOES(FFFFF)V" />
-		<method name="glDrawTexfvOES(Ljava/nio/FloatBuffer;)V" />
-		<method name="glDrawTexfvOES([FI)V" />
-		<method name="glDrawTexiOES(IIIII)V" />
-		<method name="glDrawTexivOES(Ljava/nio/IntBuffer;)V" />
-		<method name="glDrawTexivOES([II)V" />
-		<method name="glDrawTexsOES(SSSSS)V" />
-		<method name="glDrawTexsvOES(Ljava/nio/ShortBuffer;)V" />
-		<method name="glDrawTexsvOES([SI)V" />
-		<method name="glDrawTexxOES(IIIII)V" />
-		<method name="glDrawTexxvOES(Ljava/nio/IntBuffer;)V" />
-		<method name="glDrawTexxvOES([II)V" />
-		<method name="glEGLImageTargetRenderbufferStorageOES(ILjava/nio/Buffer;)V" />
-		<method name="glEGLImageTargetTexture2DOES(ILjava/nio/Buffer;)V" />
-		<method name="glFogxOES(II)V" />
-		<method name="glFogxvOES(ILjava/nio/IntBuffer;)V" />
-		<method name="glFogxvOES(I[II)V" />
-		<method name="glFramebufferRenderbufferOES(IIII)V" />
-		<method name="glFramebufferTexture2DOES(IIIII)V" />
-		<method name="glFrustumfOES(FFFFFF)V" />
-		<method name="glFrustumxOES(IIIIII)V" />
-		<method name="glGenFramebuffersOES(ILjava/nio/IntBuffer;)V" />
-		<method name="glGenFramebuffersOES(I[II)V" />
-		<method name="glGenRenderbuffersOES(ILjava/nio/IntBuffer;)V" />
-		<method name="glGenRenderbuffersOES(I[II)V" />
-		<method name="glGenerateMipmapOES(I)V" />
-		<method name="glGetClipPlanefOES(ILjava/nio/FloatBuffer;)V" />
-		<method name="glGetClipPlanefOES(I[FI)V" />
-		<method name="glGetClipPlanexOES(ILjava/nio/IntBuffer;)V" />
-		<method name="glGetClipPlanexOES(I[II)V" />
-		<method name="glGetFixedvOES(ILjava/nio/IntBuffer;)V" />
-		<method name="glGetFixedvOES(I[II)V" />
-		<method name="glGetFramebufferAttachmentParameterivOES(IIILjava/nio/IntBuffer;)V" />
-		<method name="glGetFramebufferAttachmentParameterivOES(III[II)V" />
-		<method name="glGetLightxvOES(IILjava/nio/IntBuffer;)V" />
-		<method name="glGetLightxvOES(II[II)V" />
-		<method name="glGetMaterialxvOES(IILjava/nio/IntBuffer;)V" />
-		<method name="glGetMaterialxvOES(II[II)V" />
-		<method name="glGetRenderbufferParameterivOES(IILjava/nio/IntBuffer;)V" />
-		<method name="glGetRenderbufferParameterivOES(II[II)V" />
-		<method name="glGetTexEnvxvOES(IILjava/nio/IntBuffer;)V" />
-		<method name="glGetTexEnvxvOES(II[II)V" />
-		<method name="glGetTexGenfvOES(IILjava/nio/FloatBuffer;)V" />
-		<method name="glGetTexGenfvOES(II[FI)V" />
-		<method name="glGetTexGenivOES(IILjava/nio/IntBuffer;)V" />
-		<method name="glGetTexGenivOES(II[II)V" />
-		<method name="glGetTexGenxvOES(IILjava/nio/IntBuffer;)V" />
-		<method name="glGetTexGenxvOES(II[II)V" />
-		<method name="glGetTexParameterxvOES(IILjava/nio/IntBuffer;)V" />
-		<method name="glGetTexParameterxvOES(II[II)V" />
-		<method name="glIsFramebufferOES(I)Z" />
-		<method name="glIsRenderbufferOES(I)Z" />
-		<method name="glLightModelxOES(II)V" />
-		<method name="glLightModelxvOES(ILjava/nio/IntBuffer;)V" />
-		<method name="glLightModelxvOES(I[II)V" />
-		<method name="glLightxOES(III)V" />
-		<method name="glLightxvOES(IILjava/nio/IntBuffer;)V" />
-		<method name="glLightxvOES(II[II)V" />
-		<method name="glLineWidthxOES(I)V" />
-		<method name="glLoadMatrixxOES(Ljava/nio/IntBuffer;)V" />
-		<method name="glLoadMatrixxOES([II)V" />
-		<method name="glLoadPaletteFromModelViewMatrixOES()V" />
-		<method name="glMaterialxOES(III)V" />
-		<method name="glMaterialxvOES(IILjava/nio/IntBuffer;)V" />
-		<method name="glMaterialxvOES(II[II)V" />
-		<method name="glMatrixIndexPointerOES(IIILjava/nio/Buffer;)V" />
-		<method name="glMultMatrixxOES(Ljava/nio/IntBuffer;)V" />
-		<method name="glMultMatrixxOES([II)V" />
-		<method name="glMultiTexCoord4xOES(IIIII)V" />
-		<method name="glNormal3xOES(III)V" />
-		<method name="glOrthofOES(FFFFFF)V" />
-		<method name="glOrthoxOES(IIIIII)V" />
-		<method name="glPointParameterxOES(II)V" />
-		<method name="glPointParameterxvOES(ILjava/nio/IntBuffer;)V" />
-		<method name="glPointParameterxvOES(I[II)V" />
-		<method name="glPointSizexOES(I)V" />
-		<method name="glPolygonOffsetxOES(II)V" />
-		<method name="glRenderbufferStorageOES(IIII)V" />
-		<method name="glRotatexOES(IIII)V" />
-		<method name="glSampleCoveragexOES(IZ)V" />
-		<method name="glScalexOES(III)V" />
-		<method name="glTexEnvxOES(III)V" />
-		<method name="glTexEnvxvOES(IILjava/nio/IntBuffer;)V" />
-		<method name="glTexEnvxvOES(II[II)V" />
-		<method name="glTexGenfOES(IIF)V" />
-		<method name="glTexGenfvOES(IILjava/nio/FloatBuffer;)V" />
-		<method name="glTexGenfvOES(II[FI)V" />
-		<method name="glTexGeniOES(III)V" />
-		<method name="glTexGenivOES(IILjava/nio/IntBuffer;)V" />
-		<method name="glTexGenivOES(II[II)V" />
-		<method name="glTexGenxOES(III)V" />
-		<method name="glTexGenxvOES(IILjava/nio/IntBuffer;)V" />
-		<method name="glTexGenxvOES(II[II)V" />
-		<method name="glTexParameterxOES(III)V" />
-		<method name="glTexParameterxvOES(IILjava/nio/IntBuffer;)V" />
-		<method name="glTexParameterxvOES(II[II)V" />
-		<method name="glTranslatexOES(III)V" />
-		<method name="glWeightPointerOES(IIILjava/nio/Buffer;)V" />
-		<field name="GL_3DC_XY_AMD" />
-		<field name="GL_3DC_X_AMD" />
-		<field name="GL_ATC_RGBA_EXPLICIT_ALPHA_AMD" />
-		<field name="GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD" />
-		<field name="GL_ATC_RGB_AMD" />
-		<field name="GL_BGRA" />
-		<field name="GL_BLEND_DST_ALPHA_OES" />
-		<field name="GL_BLEND_DST_RGB_OES" />
-		<field name="GL_BLEND_EQUATION_ALPHA_OES" />
-		<field name="GL_BLEND_EQUATION_OES" />
-		<field name="GL_BLEND_EQUATION_RGB_OES" />
-		<field name="GL_BLEND_SRC_ALPHA_OES" />
-		<field name="GL_BLEND_SRC_RGB_OES" />
-		<field name="GL_BUFFER_ACCESS_OES" />
-		<field name="GL_BUFFER_MAPPED_OES" />
-		<field name="GL_BUFFER_MAP_POINTER_OES" />
-		<field name="GL_COLOR_ATTACHMENT0_OES" />
-		<field name="GL_CURRENT_PALETTE_MATRIX_OES" />
-		<field name="GL_DECR_WRAP_OES" />
-		<field name="GL_DEPTH24_STENCIL8_OES" />
-		<field name="GL_DEPTH_ATTACHMENT_OES" />
-		<field name="GL_DEPTH_COMPONENT16_OES" />
-		<field name="GL_DEPTH_COMPONENT24_OES" />
-		<field name="GL_DEPTH_COMPONENT32_OES" />
-		<field name="GL_DEPTH_STENCIL_OES" />
-		<field name="GL_ETC1_RGB8_OES" />
-		<field name="GL_FIXED_OES" />
-		<field name="GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES" />
-		<field name="GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES" />
-		<field name="GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES" />
-		<field name="GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES" />
-		<field name="GL_FRAMEBUFFER_BINDING_OES" />
-		<field name="GL_FRAMEBUFFER_COMPLETE_OES" />
-		<field name="GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES" />
-		<field name="GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES" />
-		<field name="GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES" />
-		<field name="GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES" />
-		<field name="GL_FRAMEBUFFER_OES" />
-		<field name="GL_FRAMEBUFFER_UNSUPPORTED_OES" />
-		<field name="GL_FUNC_ADD_OES" />
-		<field name="GL_FUNC_REVERSE_SUBTRACT_OES" />
-		<field name="GL_FUNC_SUBTRACT_OES" />
-		<field name="GL_INCR_WRAP_OES" />
-		<field name="GL_INVALID_FRAMEBUFFER_OPERATION_OES" />
-		<field name="GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES" />
-		<field name="GL_MATRIX_INDEX_ARRAY_OES" />
-		<field name="GL_MATRIX_INDEX_ARRAY_POINTER_OES" />
-		<field name="GL_MATRIX_INDEX_ARRAY_SIZE_OES" />
-		<field name="GL_MATRIX_INDEX_ARRAY_STRIDE_OES" />
-		<field name="GL_MATRIX_INDEX_ARRAY_TYPE_OES" />
-		<field name="GL_MATRIX_PALETTE_OES" />
-		<field name="GL_MAX_CUBE_MAP_TEXTURE_SIZE_OES" />
-		<field name="GL_MAX_PALETTE_MATRICES_OES" />
-		<field name="GL_MAX_RENDERBUFFER_SIZE_OES" />
-		<field name="GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT" />
-		<field name="GL_MAX_VERTEX_UNITS_OES" />
-		<field name="GL_MIRRORED_REPEAT_OES" />
-		<field name="GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES" />
-		<field name="GL_NONE_OES" />
-		<field name="GL_NORMAL_MAP_OES" />
-		<field name="GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES" />
-		<field name="GL_REFLECTION_MAP_OES" />
-		<field name="GL_RENDERBUFFER_ALPHA_SIZE_OES" />
-		<field name="GL_RENDERBUFFER_BINDING_OES" />
-		<field name="GL_RENDERBUFFER_BLUE_SIZE_OES" />
-		<field name="GL_RENDERBUFFER_DEPTH_SIZE_OES" />
-		<field name="GL_RENDERBUFFER_GREEN_SIZE_OES" />
-		<field name="GL_RENDERBUFFER_HEIGHT_OES" />
-		<field name="GL_RENDERBUFFER_INTERNAL_FORMAT_OES" />
-		<field name="GL_RENDERBUFFER_OES" />
-		<field name="GL_RENDERBUFFER_RED_SIZE_OES" />
-		<field name="GL_RENDERBUFFER_STENCIL_SIZE_OES" />
-		<field name="GL_RENDERBUFFER_WIDTH_OES" />
-		<field name="GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES" since="15" />
-		<field name="GL_RGB565_OES" />
-		<field name="GL_RGB5_A1_OES" />
-		<field name="GL_RGB8_OES" />
-		<field name="GL_RGBA4_OES" />
-		<field name="GL_RGBA8_OES" />
-		<field name="GL_SAMPLER_EXTERNAL_OES" since="15" />
-		<field name="GL_STENCIL_ATTACHMENT_OES" />
-		<field name="GL_STENCIL_INDEX1_OES" />
-		<field name="GL_STENCIL_INDEX4_OES" />
-		<field name="GL_STENCIL_INDEX8_OES" />
-		<field name="GL_TEXTURE_BINDING_CUBE_MAP_OES" />
-		<field name="GL_TEXTURE_BINDING_EXTERNAL_OES" since="15" />
-		<field name="GL_TEXTURE_CROP_RECT_OES" />
-		<field name="GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES" />
-		<field name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES" />
-		<field name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES" />
-		<field name="GL_TEXTURE_CUBE_MAP_OES" />
-		<field name="GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES" />
-		<field name="GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES" />
-		<field name="GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES" />
-		<field name="GL_TEXTURE_EXTERNAL_OES" since="15" />
-		<field name="GL_TEXTURE_GEN_MODE_OES" />
-		<field name="GL_TEXTURE_GEN_STR_OES" />
-		<field name="GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES" />
-		<field name="GL_TEXTURE_MAX_ANISOTROPY_EXT" />
-		<field name="GL_UNSIGNED_INT_24_8_OES" />
-		<field name="GL_WEIGHT_ARRAY_BUFFER_BINDING_OES" />
-		<field name="GL_WEIGHT_ARRAY_OES" />
-		<field name="GL_WEIGHT_ARRAY_POINTER_OES" />
-		<field name="GL_WEIGHT_ARRAY_SIZE_OES" />
-		<field name="GL_WEIGHT_ARRAY_STRIDE_OES" />
-		<field name="GL_WEIGHT_ARRAY_TYPE_OES" />
-		<field name="GL_WRITE_ONLY_OES" />
-	</class>
-	<class name="android/opengl/GLES20" since="8">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="glActiveTexture(I)V" />
-		<method name="glAttachShader(II)V" />
-		<method name="glBindAttribLocation(IILjava/lang/String;)V" />
-		<method name="glBindBuffer(II)V" />
-		<method name="glBindFramebuffer(II)V" />
-		<method name="glBindRenderbuffer(II)V" />
-		<method name="glBindTexture(II)V" />
-		<method name="glBlendColor(FFFF)V" />
-		<method name="glBlendEquation(I)V" />
-		<method name="glBlendEquationSeparate(II)V" />
-		<method name="glBlendFunc(II)V" />
-		<method name="glBlendFuncSeparate(IIII)V" />
-		<method name="glBufferData(IILjava/nio/Buffer;I)V" />
-		<method name="glBufferSubData(IIILjava/nio/Buffer;)V" />
-		<method name="glCheckFramebufferStatus(I)I" />
-		<method name="glClear(I)V" />
-		<method name="glClearColor(FFFF)V" />
-		<method name="glClearDepthf(F)V" />
-		<method name="glClearStencil(I)V" />
-		<method name="glColorMask(ZZZZ)V" />
-		<method name="glCompileShader(I)V" />
-		<method name="glCompressedTexImage2D(IIIIIIILjava/nio/Buffer;)V" />
-		<method name="glCompressedTexSubImage2D(IIIIIIIILjava/nio/Buffer;)V" />
-		<method name="glCopyTexImage2D(IIIIIIII)V" />
-		<method name="glCopyTexSubImage2D(IIIIIIII)V" />
-		<method name="glCreateProgram()I" />
-		<method name="glCreateShader(I)I" />
-		<method name="glCullFace(I)V" />
-		<method name="glDeleteBuffers(ILjava/nio/IntBuffer;)V" />
-		<method name="glDeleteBuffers(I[II)V" />
-		<method name="glDeleteFramebuffers(ILjava/nio/IntBuffer;)V" />
-		<method name="glDeleteFramebuffers(I[II)V" />
-		<method name="glDeleteProgram(I)V" />
-		<method name="glDeleteRenderbuffers(ILjava/nio/IntBuffer;)V" />
-		<method name="glDeleteRenderbuffers(I[II)V" />
-		<method name="glDeleteShader(I)V" />
-		<method name="glDeleteTextures(ILjava/nio/IntBuffer;)V" />
-		<method name="glDeleteTextures(I[II)V" />
-		<method name="glDepthFunc(I)V" />
-		<method name="glDepthMask(Z)V" />
-		<method name="glDepthRangef(FF)V" />
-		<method name="glDetachShader(II)V" />
-		<method name="glDisable(I)V" />
-		<method name="glDisableVertexAttribArray(I)V" />
-		<method name="glDrawArrays(III)V" />
-		<method name="glDrawElements(IIII)V" since="9" />
-		<method name="glDrawElements(IIILjava/nio/Buffer;)V" />
-		<method name="glEnable(I)V" />
-		<method name="glEnableVertexAttribArray(I)V" />
-		<method name="glFinish()V" />
-		<method name="glFlush()V" />
-		<method name="glFramebufferRenderbuffer(IIII)V" />
-		<method name="glFramebufferTexture2D(IIIII)V" />
-		<method name="glFrontFace(I)V" />
-		<method name="glGenBuffers(ILjava/nio/IntBuffer;)V" />
-		<method name="glGenBuffers(I[II)V" />
-		<method name="glGenFramebuffers(ILjava/nio/IntBuffer;)V" />
-		<method name="glGenFramebuffers(I[II)V" />
-		<method name="glGenRenderbuffers(ILjava/nio/IntBuffer;)V" />
-		<method name="glGenRenderbuffers(I[II)V" />
-		<method name="glGenTextures(ILjava/nio/IntBuffer;)V" />
-		<method name="glGenTextures(I[II)V" />
-		<method name="glGenerateMipmap(I)V" />
-		<method name="glGetActiveAttrib(IIILjava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/IntBuffer;B)V" />
-		<method name="glGetActiveAttrib(III[II[II[II[BI)V" />
-		<method name="glGetActiveAttrib(IILjava/nio/IntBuffer;Ljava/nio/IntBuffer;)Ljava/lang/String;" since="17" />
-		<method name="glGetActiveAttrib(II[II[II)Ljava/lang/String;" since="17" />
-		<method name="glGetActiveUniform(IIILjava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/IntBuffer;B)V" />
-		<method name="glGetActiveUniform(III[II[II[II[BI)V" />
-		<method name="glGetActiveUniform(IILjava/nio/IntBuffer;Ljava/nio/IntBuffer;)Ljava/lang/String;" since="17" />
-		<method name="glGetActiveUniform(II[II[II)Ljava/lang/String;" since="17" />
-		<method name="glGetAttachedShaders(IILjava/nio/IntBuffer;Ljava/nio/IntBuffer;)V" />
-		<method name="glGetAttachedShaders(II[II[II)V" />
-		<method name="glGetAttribLocation(ILjava/lang/String;)I" />
-		<method name="glGetBooleanv(ILjava/nio/IntBuffer;)V" />
-		<method name="glGetBooleanv(I[ZI)V" />
-		<method name="glGetBufferParameteriv(IILjava/nio/IntBuffer;)V" />
-		<method name="glGetBufferParameteriv(II[II)V" />
-		<method name="glGetError()I" />
-		<method name="glGetFloatv(ILjava/nio/FloatBuffer;)V" />
-		<method name="glGetFloatv(I[FI)V" />
-		<method name="glGetFramebufferAttachmentParameteriv(IIILjava/nio/IntBuffer;)V" />
-		<method name="glGetFramebufferAttachmentParameteriv(III[II)V" />
-		<method name="glGetIntegerv(ILjava/nio/IntBuffer;)V" />
-		<method name="glGetIntegerv(I[II)V" />
-		<method name="glGetProgramInfoLog(I)Ljava/lang/String;" />
-		<method name="glGetProgramiv(IILjava/nio/IntBuffer;)V" />
-		<method name="glGetProgramiv(II[II)V" />
-		<method name="glGetRenderbufferParameteriv(IILjava/nio/IntBuffer;)V" />
-		<method name="glGetRenderbufferParameteriv(II[II)V" />
-		<method name="glGetShaderInfoLog(I)Ljava/lang/String;" />
-		<method name="glGetShaderPrecisionFormat(IILjava/nio/IntBuffer;Ljava/nio/IntBuffer;)V" />
-		<method name="glGetShaderPrecisionFormat(II[II[II)V" />
-		<method name="glGetShaderSource(I)Ljava/lang/String;" since="17" />
-		<method name="glGetShaderSource(IILjava/nio/IntBuffer;B)V" />
-		<method name="glGetShaderSource(II[II[BI)V" />
-		<method name="glGetShaderiv(IILjava/nio/IntBuffer;)V" />
-		<method name="glGetShaderiv(II[II)V" />
-		<method name="glGetString(I)Ljava/lang/String;" />
-		<method name="glGetTexParameterfv(IILjava/nio/FloatBuffer;)V" />
-		<method name="glGetTexParameterfv(II[FI)V" />
-		<method name="glGetTexParameteriv(IILjava/nio/IntBuffer;)V" />
-		<method name="glGetTexParameteriv(II[II)V" />
-		<method name="glGetUniformLocation(ILjava/lang/String;)I" />
-		<method name="glGetUniformfv(IILjava/nio/FloatBuffer;)V" />
-		<method name="glGetUniformfv(II[FI)V" />
-		<method name="glGetUniformiv(IILjava/nio/IntBuffer;)V" />
-		<method name="glGetUniformiv(II[II)V" />
-		<method name="glGetVertexAttribfv(IILjava/nio/FloatBuffer;)V" />
-		<method name="glGetVertexAttribfv(II[FI)V" />
-		<method name="glGetVertexAttribiv(IILjava/nio/IntBuffer;)V" />
-		<method name="glGetVertexAttribiv(II[II)V" />
-		<method name="glHint(II)V" />
-		<method name="glIsBuffer(I)Z" />
-		<method name="glIsEnabled(I)Z" />
-		<method name="glIsFramebuffer(I)Z" />
-		<method name="glIsProgram(I)Z" />
-		<method name="glIsRenderbuffer(I)Z" />
-		<method name="glIsShader(I)Z" />
-		<method name="glIsTexture(I)Z" />
-		<method name="glLineWidth(F)V" />
-		<method name="glLinkProgram(I)V" />
-		<method name="glPixelStorei(II)V" />
-		<method name="glPolygonOffset(FF)V" />
-		<method name="glReadPixels(IIIIIILjava/nio/Buffer;)V" />
-		<method name="glReleaseShaderCompiler()V" />
-		<method name="glRenderbufferStorage(IIII)V" />
-		<method name="glSampleCoverage(FZ)V" />
-		<method name="glScissor(IIII)V" />
-		<method name="glShaderBinary(ILjava/nio/IntBuffer;ILjava/nio/Buffer;I)V" />
-		<method name="glShaderBinary(I[IIILjava/nio/Buffer;I)V" />
-		<method name="glShaderSource(ILjava/lang/String;)V" />
-		<method name="glStencilFunc(III)V" />
-		<method name="glStencilFuncSeparate(IIII)V" />
-		<method name="glStencilMask(I)V" />
-		<method name="glStencilMaskSeparate(II)V" />
-		<method name="glStencilOp(III)V" />
-		<method name="glStencilOpSeparate(IIII)V" />
-		<method name="glTexImage2D(IIIIIIIILjava/nio/Buffer;)V" />
-		<method name="glTexParameterf(IIF)V" />
-		<method name="glTexParameterfv(IILjava/nio/FloatBuffer;)V" />
-		<method name="glTexParameterfv(II[FI)V" />
-		<method name="glTexParameteri(III)V" />
-		<method name="glTexParameteriv(IILjava/nio/IntBuffer;)V" />
-		<method name="glTexParameteriv(II[II)V" />
-		<method name="glTexSubImage2D(IIIIIIIILjava/nio/Buffer;)V" />
-		<method name="glUniform1f(IF)V" />
-		<method name="glUniform1fv(IILjava/nio/FloatBuffer;)V" />
-		<method name="glUniform1fv(II[FI)V" />
-		<method name="glUniform1i(II)V" />
-		<method name="glUniform1iv(IILjava/nio/IntBuffer;)V" />
-		<method name="glUniform1iv(II[II)V" />
-		<method name="glUniform2f(IFF)V" />
-		<method name="glUniform2fv(IILjava/nio/FloatBuffer;)V" />
-		<method name="glUniform2fv(II[FI)V" />
-		<method name="glUniform2i(III)V" />
-		<method name="glUniform2iv(IILjava/nio/IntBuffer;)V" />
-		<method name="glUniform2iv(II[II)V" />
-		<method name="glUniform3f(IFFF)V" />
-		<method name="glUniform3fv(IILjava/nio/FloatBuffer;)V" />
-		<method name="glUniform3fv(II[FI)V" />
-		<method name="glUniform3i(IIII)V" />
-		<method name="glUniform3iv(IILjava/nio/IntBuffer;)V" />
-		<method name="glUniform3iv(II[II)V" />
-		<method name="glUniform4f(IFFFF)V" />
-		<method name="glUniform4fv(IILjava/nio/FloatBuffer;)V" />
-		<method name="glUniform4fv(II[FI)V" />
-		<method name="glUniform4i(IIIII)V" />
-		<method name="glUniform4iv(IILjava/nio/IntBuffer;)V" />
-		<method name="glUniform4iv(II[II)V" />
-		<method name="glUniformMatrix2fv(IIZLjava/nio/FloatBuffer;)V" />
-		<method name="glUniformMatrix2fv(IIZ[FI)V" />
-		<method name="glUniformMatrix3fv(IIZLjava/nio/FloatBuffer;)V" />
-		<method name="glUniformMatrix3fv(IIZ[FI)V" />
-		<method name="glUniformMatrix4fv(IIZLjava/nio/FloatBuffer;)V" />
-		<method name="glUniformMatrix4fv(IIZ[FI)V" />
-		<method name="glUseProgram(I)V" />
-		<method name="glValidateProgram(I)V" />
-		<method name="glVertexAttrib1f(IF)V" />
-		<method name="glVertexAttrib1fv(ILjava/nio/FloatBuffer;)V" />
-		<method name="glVertexAttrib1fv(I[FI)V" />
-		<method name="glVertexAttrib2f(IFF)V" />
-		<method name="glVertexAttrib2fv(ILjava/nio/FloatBuffer;)V" />
-		<method name="glVertexAttrib2fv(I[FI)V" />
-		<method name="glVertexAttrib3f(IFFF)V" />
-		<method name="glVertexAttrib3fv(ILjava/nio/FloatBuffer;)V" />
-		<method name="glVertexAttrib3fv(I[FI)V" />
-		<method name="glVertexAttrib4f(IFFFF)V" />
-		<method name="glVertexAttrib4fv(ILjava/nio/FloatBuffer;)V" />
-		<method name="glVertexAttrib4fv(I[FI)V" />
-		<method name="glVertexAttribPointer(IIIZII)V" since="9" />
-		<method name="glVertexAttribPointer(IIIZILjava/nio/Buffer;)V" />
-		<method name="glViewport(IIII)V" />
-		<field name="GL_ACTIVE_ATTRIBUTES" />
-		<field name="GL_ACTIVE_ATTRIBUTE_MAX_LENGTH" />
-		<field name="GL_ACTIVE_TEXTURE" />
-		<field name="GL_ACTIVE_UNIFORMS" />
-		<field name="GL_ACTIVE_UNIFORM_MAX_LENGTH" />
-		<field name="GL_ALIASED_LINE_WIDTH_RANGE" />
-		<field name="GL_ALIASED_POINT_SIZE_RANGE" />
-		<field name="GL_ALPHA" />
-		<field name="GL_ALPHA_BITS" />
-		<field name="GL_ALWAYS" />
-		<field name="GL_ARRAY_BUFFER" />
-		<field name="GL_ARRAY_BUFFER_BINDING" />
-		<field name="GL_ATTACHED_SHADERS" />
-		<field name="GL_BACK" />
-		<field name="GL_BLEND" />
-		<field name="GL_BLEND_COLOR" />
-		<field name="GL_BLEND_DST_ALPHA" />
-		<field name="GL_BLEND_DST_RGB" />
-		<field name="GL_BLEND_EQUATION" />
-		<field name="GL_BLEND_EQUATION_ALPHA" />
-		<field name="GL_BLEND_EQUATION_RGB" />
-		<field name="GL_BLEND_SRC_ALPHA" />
-		<field name="GL_BLEND_SRC_RGB" />
-		<field name="GL_BLUE_BITS" />
-		<field name="GL_BOOL" />
-		<field name="GL_BOOL_VEC2" />
-		<field name="GL_BOOL_VEC3" />
-		<field name="GL_BOOL_VEC4" />
-		<field name="GL_BUFFER_SIZE" />
-		<field name="GL_BUFFER_USAGE" />
-		<field name="GL_BYTE" />
-		<field name="GL_CCW" />
-		<field name="GL_CLAMP_TO_EDGE" />
-		<field name="GL_COLOR_ATTACHMENT0" />
-		<field name="GL_COLOR_BUFFER_BIT" />
-		<field name="GL_COLOR_CLEAR_VALUE" />
-		<field name="GL_COLOR_WRITEMASK" />
-		<field name="GL_COMPILE_STATUS" />
-		<field name="GL_COMPRESSED_TEXTURE_FORMATS" />
-		<field name="GL_CONSTANT_ALPHA" />
-		<field name="GL_CONSTANT_COLOR" />
-		<field name="GL_CULL_FACE" />
-		<field name="GL_CULL_FACE_MODE" />
-		<field name="GL_CURRENT_PROGRAM" />
-		<field name="GL_CURRENT_VERTEX_ATTRIB" />
-		<field name="GL_CW" />
-		<field name="GL_DECR" />
-		<field name="GL_DECR_WRAP" />
-		<field name="GL_DELETE_STATUS" />
-		<field name="GL_DEPTH_ATTACHMENT" />
-		<field name="GL_DEPTH_BITS" />
-		<field name="GL_DEPTH_BUFFER_BIT" />
-		<field name="GL_DEPTH_CLEAR_VALUE" />
-		<field name="GL_DEPTH_COMPONENT" />
-		<field name="GL_DEPTH_COMPONENT16" />
-		<field name="GL_DEPTH_FUNC" />
-		<field name="GL_DEPTH_RANGE" />
-		<field name="GL_DEPTH_TEST" />
-		<field name="GL_DEPTH_WRITEMASK" />
-		<field name="GL_DITHER" />
-		<field name="GL_DONT_CARE" />
-		<field name="GL_DST_ALPHA" />
-		<field name="GL_DST_COLOR" />
-		<field name="GL_DYNAMIC_DRAW" />
-		<field name="GL_ELEMENT_ARRAY_BUFFER" />
-		<field name="GL_ELEMENT_ARRAY_BUFFER_BINDING" />
-		<field name="GL_EQUAL" />
-		<field name="GL_EXTENSIONS" />
-		<field name="GL_FALSE" />
-		<field name="GL_FASTEST" />
-		<field name="GL_FIXED" />
-		<field name="GL_FLOAT" />
-		<field name="GL_FLOAT_MAT2" />
-		<field name="GL_FLOAT_MAT3" />
-		<field name="GL_FLOAT_MAT4" />
-		<field name="GL_FLOAT_VEC2" />
-		<field name="GL_FLOAT_VEC3" />
-		<field name="GL_FLOAT_VEC4" />
-		<field name="GL_FRAGMENT_SHADER" />
-		<field name="GL_FRAMEBUFFER" />
-		<field name="GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME" />
-		<field name="GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE" />
-		<field name="GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE" />
-		<field name="GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL" />
-		<field name="GL_FRAMEBUFFER_BINDING" />
-		<field name="GL_FRAMEBUFFER_COMPLETE" />
-		<field name="GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT" />
-		<field name="GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS" />
-		<field name="GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT" />
-		<field name="GL_FRAMEBUFFER_UNSUPPORTED" />
-		<field name="GL_FRONT" />
-		<field name="GL_FRONT_AND_BACK" />
-		<field name="GL_FRONT_FACE" />
-		<field name="GL_FUNC_ADD" />
-		<field name="GL_FUNC_REVERSE_SUBTRACT" />
-		<field name="GL_FUNC_SUBTRACT" />
-		<field name="GL_GENERATE_MIPMAP_HINT" />
-		<field name="GL_GEQUAL" />
-		<field name="GL_GREATER" />
-		<field name="GL_GREEN_BITS" />
-		<field name="GL_HIGH_FLOAT" />
-		<field name="GL_HIGH_INT" />
-		<field name="GL_IMPLEMENTATION_COLOR_READ_FORMAT" />
-		<field name="GL_IMPLEMENTATION_COLOR_READ_TYPE" />
-		<field name="GL_INCR" />
-		<field name="GL_INCR_WRAP" />
-		<field name="GL_INFO_LOG_LENGTH" />
-		<field name="GL_INT" />
-		<field name="GL_INT_VEC2" />
-		<field name="GL_INT_VEC3" />
-		<field name="GL_INT_VEC4" />
-		<field name="GL_INVALID_ENUM" />
-		<field name="GL_INVALID_FRAMEBUFFER_OPERATION" />
-		<field name="GL_INVALID_OPERATION" />
-		<field name="GL_INVALID_VALUE" />
-		<field name="GL_INVERT" />
-		<field name="GL_KEEP" />
-		<field name="GL_LEQUAL" />
-		<field name="GL_LESS" />
-		<field name="GL_LINEAR" />
-		<field name="GL_LINEAR_MIPMAP_LINEAR" />
-		<field name="GL_LINEAR_MIPMAP_NEAREST" />
-		<field name="GL_LINES" />
-		<field name="GL_LINE_LOOP" />
-		<field name="GL_LINE_STRIP" />
-		<field name="GL_LINE_WIDTH" />
-		<field name="GL_LINK_STATUS" />
-		<field name="GL_LOW_FLOAT" />
-		<field name="GL_LOW_INT" />
-		<field name="GL_LUMINANCE" />
-		<field name="GL_LUMINANCE_ALPHA" />
-		<field name="GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS" />
-		<field name="GL_MAX_CUBE_MAP_TEXTURE_SIZE" />
-		<field name="GL_MAX_FRAGMENT_UNIFORM_VECTORS" />
-		<field name="GL_MAX_RENDERBUFFER_SIZE" />
-		<field name="GL_MAX_TEXTURE_IMAGE_UNITS" />
-		<field name="GL_MAX_TEXTURE_SIZE" />
-		<field name="GL_MAX_VARYING_VECTORS" />
-		<field name="GL_MAX_VERTEX_ATTRIBS" />
-		<field name="GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS" />
-		<field name="GL_MAX_VERTEX_UNIFORM_VECTORS" />
-		<field name="GL_MAX_VIEWPORT_DIMS" />
-		<field name="GL_MEDIUM_FLOAT" />
-		<field name="GL_MEDIUM_INT" />
-		<field name="GL_MIRRORED_REPEAT" />
-		<field name="GL_NEAREST" />
-		<field name="GL_NEAREST_MIPMAP_LINEAR" />
-		<field name="GL_NEAREST_MIPMAP_NEAREST" />
-		<field name="GL_NEVER" />
-		<field name="GL_NICEST" />
-		<field name="GL_NONE" />
-		<field name="GL_NOTEQUAL" />
-		<field name="GL_NO_ERROR" />
-		<field name="GL_NUM_COMPRESSED_TEXTURE_FORMATS" />
-		<field name="GL_NUM_SHADER_BINARY_FORMATS" />
-		<field name="GL_ONE" />
-		<field name="GL_ONE_MINUS_CONSTANT_ALPHA" />
-		<field name="GL_ONE_MINUS_CONSTANT_COLOR" />
-		<field name="GL_ONE_MINUS_DST_ALPHA" />
-		<field name="GL_ONE_MINUS_DST_COLOR" />
-		<field name="GL_ONE_MINUS_SRC_ALPHA" />
-		<field name="GL_ONE_MINUS_SRC_COLOR" />
-		<field name="GL_OUT_OF_MEMORY" />
-		<field name="GL_PACK_ALIGNMENT" />
-		<field name="GL_POINTS" />
-		<field name="GL_POLYGON_OFFSET_FACTOR" />
-		<field name="GL_POLYGON_OFFSET_FILL" />
-		<field name="GL_POLYGON_OFFSET_UNITS" />
-		<field name="GL_RED_BITS" />
-		<field name="GL_RENDERBUFFER" />
-		<field name="GL_RENDERBUFFER_ALPHA_SIZE" />
-		<field name="GL_RENDERBUFFER_BINDING" />
-		<field name="GL_RENDERBUFFER_BLUE_SIZE" />
-		<field name="GL_RENDERBUFFER_DEPTH_SIZE" />
-		<field name="GL_RENDERBUFFER_GREEN_SIZE" />
-		<field name="GL_RENDERBUFFER_HEIGHT" />
-		<field name="GL_RENDERBUFFER_INTERNAL_FORMAT" />
-		<field name="GL_RENDERBUFFER_RED_SIZE" />
-		<field name="GL_RENDERBUFFER_STENCIL_SIZE" />
-		<field name="GL_RENDERBUFFER_WIDTH" />
-		<field name="GL_RENDERER" />
-		<field name="GL_REPEAT" />
-		<field name="GL_REPLACE" />
-		<field name="GL_RGB" />
-		<field name="GL_RGB565" />
-		<field name="GL_RGB5_A1" />
-		<field name="GL_RGBA" />
-		<field name="GL_RGBA4" />
-		<field name="GL_SAMPLER_2D" />
-		<field name="GL_SAMPLER_CUBE" />
-		<field name="GL_SAMPLES" />
-		<field name="GL_SAMPLE_ALPHA_TO_COVERAGE" />
-		<field name="GL_SAMPLE_BUFFERS" />
-		<field name="GL_SAMPLE_COVERAGE" />
-		<field name="GL_SAMPLE_COVERAGE_INVERT" />
-		<field name="GL_SAMPLE_COVERAGE_VALUE" />
-		<field name="GL_SCISSOR_BOX" />
-		<field name="GL_SCISSOR_TEST" />
-		<field name="GL_SHADER_BINARY_FORMATS" />
-		<field name="GL_SHADER_COMPILER" />
-		<field name="GL_SHADER_SOURCE_LENGTH" />
-		<field name="GL_SHADER_TYPE" />
-		<field name="GL_SHADING_LANGUAGE_VERSION" />
-		<field name="GL_SHORT" />
-		<field name="GL_SRC_ALPHA" />
-		<field name="GL_SRC_ALPHA_SATURATE" />
-		<field name="GL_SRC_COLOR" />
-		<field name="GL_STATIC_DRAW" />
-		<field name="GL_STENCIL_ATTACHMENT" />
-		<field name="GL_STENCIL_BACK_FAIL" />
-		<field name="GL_STENCIL_BACK_FUNC" />
-		<field name="GL_STENCIL_BACK_PASS_DEPTH_FAIL" />
-		<field name="GL_STENCIL_BACK_PASS_DEPTH_PASS" />
-		<field name="GL_STENCIL_BACK_REF" />
-		<field name="GL_STENCIL_BACK_VALUE_MASK" />
-		<field name="GL_STENCIL_BACK_WRITEMASK" />
-		<field name="GL_STENCIL_BITS" />
-		<field name="GL_STENCIL_BUFFER_BIT" />
-		<field name="GL_STENCIL_CLEAR_VALUE" />
-		<field name="GL_STENCIL_FAIL" />
-		<field name="GL_STENCIL_FUNC" />
-		<field name="GL_STENCIL_INDEX" />
-		<field name="GL_STENCIL_INDEX8" />
-		<field name="GL_STENCIL_PASS_DEPTH_FAIL" />
-		<field name="GL_STENCIL_PASS_DEPTH_PASS" />
-		<field name="GL_STENCIL_REF" />
-		<field name="GL_STENCIL_TEST" />
-		<field name="GL_STENCIL_VALUE_MASK" />
-		<field name="GL_STENCIL_WRITEMASK" />
-		<field name="GL_STREAM_DRAW" />
-		<field name="GL_SUBPIXEL_BITS" />
-		<field name="GL_TEXTURE" />
-		<field name="GL_TEXTURE0" />
-		<field name="GL_TEXTURE1" />
-		<field name="GL_TEXTURE10" />
-		<field name="GL_TEXTURE11" />
-		<field name="GL_TEXTURE12" />
-		<field name="GL_TEXTURE13" />
-		<field name="GL_TEXTURE14" />
-		<field name="GL_TEXTURE15" />
-		<field name="GL_TEXTURE16" />
-		<field name="GL_TEXTURE17" />
-		<field name="GL_TEXTURE18" />
-		<field name="GL_TEXTURE19" />
-		<field name="GL_TEXTURE2" />
-		<field name="GL_TEXTURE20" />
-		<field name="GL_TEXTURE21" />
-		<field name="GL_TEXTURE22" />
-		<field name="GL_TEXTURE23" />
-		<field name="GL_TEXTURE24" />
-		<field name="GL_TEXTURE25" />
-		<field name="GL_TEXTURE26" />
-		<field name="GL_TEXTURE27" />
-		<field name="GL_TEXTURE28" />
-		<field name="GL_TEXTURE29" />
-		<field name="GL_TEXTURE3" />
-		<field name="GL_TEXTURE30" />
-		<field name="GL_TEXTURE31" />
-		<field name="GL_TEXTURE4" />
-		<field name="GL_TEXTURE5" />
-		<field name="GL_TEXTURE6" />
-		<field name="GL_TEXTURE7" />
-		<field name="GL_TEXTURE8" />
-		<field name="GL_TEXTURE9" />
-		<field name="GL_TEXTURE_2D" />
-		<field name="GL_TEXTURE_BINDING_2D" />
-		<field name="GL_TEXTURE_BINDING_CUBE_MAP" />
-		<field name="GL_TEXTURE_CUBE_MAP" />
-		<field name="GL_TEXTURE_CUBE_MAP_NEGATIVE_X" />
-		<field name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Y" />
-		<field name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Z" />
-		<field name="GL_TEXTURE_CUBE_MAP_POSITIVE_X" />
-		<field name="GL_TEXTURE_CUBE_MAP_POSITIVE_Y" />
-		<field name="GL_TEXTURE_CUBE_MAP_POSITIVE_Z" />
-		<field name="GL_TEXTURE_MAG_FILTER" />
-		<field name="GL_TEXTURE_MIN_FILTER" />
-		<field name="GL_TEXTURE_WRAP_S" />
-		<field name="GL_TEXTURE_WRAP_T" />
-		<field name="GL_TRIANGLES" />
-		<field name="GL_TRIANGLE_FAN" />
-		<field name="GL_TRIANGLE_STRIP" />
-		<field name="GL_TRUE" />
-		<field name="GL_UNPACK_ALIGNMENT" />
-		<field name="GL_UNSIGNED_BYTE" />
-		<field name="GL_UNSIGNED_INT" />
-		<field name="GL_UNSIGNED_SHORT" />
-		<field name="GL_UNSIGNED_SHORT_4_4_4_4" />
-		<field name="GL_UNSIGNED_SHORT_5_5_5_1" />
-		<field name="GL_UNSIGNED_SHORT_5_6_5" />
-		<field name="GL_VALIDATE_STATUS" />
-		<field name="GL_VENDOR" />
-		<field name="GL_VERSION" />
-		<field name="GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING" />
-		<field name="GL_VERTEX_ATTRIB_ARRAY_ENABLED" />
-		<field name="GL_VERTEX_ATTRIB_ARRAY_NORMALIZED" />
-		<field name="GL_VERTEX_ATTRIB_ARRAY_POINTER" />
-		<field name="GL_VERTEX_ATTRIB_ARRAY_SIZE" />
-		<field name="GL_VERTEX_ATTRIB_ARRAY_STRIDE" />
-		<field name="GL_VERTEX_ATTRIB_ARRAY_TYPE" />
-		<field name="GL_VERTEX_SHADER" />
-		<field name="GL_VIEWPORT" />
-		<field name="GL_ZERO" />
-	</class>
-	<class name="android/opengl/GLES30" since="18">
-		<extends name="android/opengl/GLES20" />
-		<method name="&lt;init>()V" />
-		<method name="glBeginQuery(II)V" />
-		<method name="glBeginTransformFeedback(I)V" />
-		<method name="glBindBufferBase(III)V" />
-		<method name="glBindBufferRange(IIIII)V" />
-		<method name="glBindSampler(II)V" />
-		<method name="glBindTransformFeedback(II)V" />
-		<method name="glBindVertexArray(I)V" />
-		<method name="glBlitFramebuffer(IIIIIIIIII)V" />
-		<method name="glClearBufferfi(IIFI)V" />
-		<method name="glClearBufferfv(IILjava/nio/FloatBuffer;)V" />
-		<method name="glClearBufferfv(II[FI)V" />
-		<method name="glClearBufferiv(IILjava/nio/IntBuffer;)V" />
-		<method name="glClearBufferiv(II[II)V" />
-		<method name="glClearBufferuiv(IILjava/nio/IntBuffer;)V" />
-		<method name="glClearBufferuiv(II[II)V" />
-		<method name="glClientWaitSync(JIJ)I" />
-		<method name="glCompressedTexImage3D(IIIIIIIII)V" />
-		<method name="glCompressedTexImage3D(IIIIIIIILjava/nio/Buffer;)V" />
-		<method name="glCompressedTexSubImage3D(IIIIIIIIIII)V" />
-		<method name="glCompressedTexSubImage3D(IIIIIIIIIILjava/nio/Buffer;)V" />
-		<method name="glCopyBufferSubData(IIIII)V" />
-		<method name="glCopyTexSubImage3D(IIIIIIIII)V" />
-		<method name="glDeleteQueries(ILjava/nio/IntBuffer;)V" />
-		<method name="glDeleteQueries(I[II)V" />
-		<method name="glDeleteSamplers(ILjava/nio/IntBuffer;)V" />
-		<method name="glDeleteSamplers(I[II)V" />
-		<method name="glDeleteSync(J)V" />
-		<method name="glDeleteTransformFeedbacks(ILjava/nio/IntBuffer;)V" />
-		<method name="glDeleteTransformFeedbacks(I[II)V" />
-		<method name="glDeleteVertexArrays(ILjava/nio/IntBuffer;)V" />
-		<method name="glDeleteVertexArrays(I[II)V" />
-		<method name="glDrawArraysInstanced(IIII)V" />
-		<method name="glDrawBuffers(ILjava/nio/IntBuffer;)V" />
-		<method name="glDrawBuffers(I[II)V" />
-		<method name="glDrawElementsInstanced(IIIII)V" />
-		<method name="glDrawElementsInstanced(IIILjava/nio/Buffer;I)V" />
-		<method name="glDrawRangeElements(IIIIII)V" />
-		<method name="glDrawRangeElements(IIIIILjava/nio/Buffer;)V" />
-		<method name="glEndQuery(I)V" />
-		<method name="glEndTransformFeedback()V" />
-		<method name="glFenceSync(II)J" />
-		<method name="glFlushMappedBufferRange(III)V" />
-		<method name="glFramebufferTextureLayer(IIIII)V" />
-		<method name="glGenQueries(ILjava/nio/IntBuffer;)V" />
-		<method name="glGenQueries(I[II)V" />
-		<method name="glGenSamplers(ILjava/nio/IntBuffer;)V" />
-		<method name="glGenSamplers(I[II)V" />
-		<method name="glGenTransformFeedbacks(ILjava/nio/IntBuffer;)V" />
-		<method name="glGenTransformFeedbacks(I[II)V" />
-		<method name="glGenVertexArrays(ILjava/nio/IntBuffer;)V" />
-		<method name="glGenVertexArrays(I[II)V" />
-		<method name="glGetActiveUniformBlockName(II)Ljava/lang/String;" />
-		<method name="glGetActiveUniformBlockName(III[II[BI)V" />
-		<method name="glGetActiveUniformBlockName(IILjava/nio/Buffer;Ljava/nio/Buffer;)V" />
-		<method name="glGetActiveUniformBlockiv(IIILjava/nio/IntBuffer;)V" />
-		<method name="glGetActiveUniformBlockiv(III[II)V" />
-		<method name="glGetActiveUniformsiv(IILjava/nio/IntBuffer;ILjava/nio/IntBuffer;)V" />
-		<method name="glGetActiveUniformsiv(II[III[II)V" />
-		<method name="glGetBufferParameteri64v(IILjava/nio/LongBuffer;)V" />
-		<method name="glGetBufferParameteri64v(II[JI)V" />
-		<method name="glGetBufferPointerv(II)Ljava/nio/Buffer;" />
-		<method name="glGetFragDataLocation(ILjava/lang/String;)I" />
-		<method name="glGetInteger64i_v(IILjava/nio/LongBuffer;)V" />
-		<method name="glGetInteger64i_v(II[JI)V" />
-		<method name="glGetInteger64v(ILjava/nio/LongBuffer;)V" />
-		<method name="glGetInteger64v(I[JI)V" />
-		<method name="glGetIntegeri_v(IILjava/nio/IntBuffer;)V" />
-		<method name="glGetIntegeri_v(II[II)V" />
-		<method name="glGetInternalformativ(IIIILjava/nio/IntBuffer;)V" />
-		<method name="glGetInternalformativ(IIII[II)V" />
-		<method name="glGetProgramBinary(IILjava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/Buffer;)V" />
-		<method name="glGetProgramBinary(II[II[IILjava/nio/Buffer;)V" />
-		<method name="glGetQueryObjectuiv(IILjava/nio/IntBuffer;)V" />
-		<method name="glGetQueryObjectuiv(II[II)V" />
-		<method name="glGetQueryiv(IILjava/nio/IntBuffer;)V" />
-		<method name="glGetQueryiv(II[II)V" />
-		<method name="glGetSamplerParameterfv(IILjava/nio/FloatBuffer;)V" />
-		<method name="glGetSamplerParameterfv(II[FI)V" />
-		<method name="glGetSamplerParameteriv(IILjava/nio/IntBuffer;)V" />
-		<method name="glGetSamplerParameteriv(II[II)V" />
-		<method name="glGetStringi(II)Ljava/lang/String;" />
-		<method name="glGetSynciv(JIILjava/nio/IntBuffer;Ljava/nio/IntBuffer;)V" />
-		<method name="glGetSynciv(JII[II[II)V" />
-		<method name="glGetTransformFeedbackVarying(IIILjava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/IntBuffer;B)V" />
-		<method name="glGetTransformFeedbackVarying(III[II[II[II[BI)V" />
-		<method name="glGetTransformFeedbackVarying(IILjava/nio/IntBuffer;Ljava/nio/IntBuffer;)Ljava/lang/String;" />
-		<method name="glGetTransformFeedbackVarying(II[II[II)Ljava/lang/String;" />
-		<method name="glGetUniformBlockIndex(ILjava/lang/String;)I" />
-		<method name="glGetUniformIndices(I[Ljava/lang/String;Ljava/nio/IntBuffer;)V" />
-		<method name="glGetUniformIndices(I[Ljava/lang/String;[II)V" />
-		<method name="glGetUniformuiv(IILjava/nio/IntBuffer;)V" />
-		<method name="glGetUniformuiv(II[II)V" />
-		<method name="glGetVertexAttribIiv(IILjava/nio/IntBuffer;)V" />
-		<method name="glGetVertexAttribIiv(II[II)V" />
-		<method name="glGetVertexAttribIuiv(IILjava/nio/IntBuffer;)V" />
-		<method name="glGetVertexAttribIuiv(II[II)V" />
-		<method name="glInvalidateFramebuffer(IILjava/nio/IntBuffer;)V" />
-		<method name="glInvalidateFramebuffer(II[II)V" />
-		<method name="glInvalidateSubFramebuffer(IILjava/nio/IntBuffer;IIII)V" />
-		<method name="glInvalidateSubFramebuffer(II[IIIIII)V" />
-		<method name="glIsQuery(I)Z" />
-		<method name="glIsSampler(I)Z" />
-		<method name="glIsSync(J)Z" />
-		<method name="glIsTransformFeedback(I)Z" />
-		<method name="glIsVertexArray(I)Z" />
-		<method name="glMapBufferRange(IIII)Ljava/nio/Buffer;" />
-		<method name="glPauseTransformFeedback()V" />
-		<method name="glProgramBinary(IILjava/nio/Buffer;I)V" />
-		<method name="glProgramParameteri(III)V" />
-		<method name="glReadBuffer(I)V" />
-		<method name="glRenderbufferStorageMultisample(IIIII)V" />
-		<method name="glResumeTransformFeedback()V" />
-		<method name="glSamplerParameterf(IIF)V" />
-		<method name="glSamplerParameterfv(IILjava/nio/FloatBuffer;)V" />
-		<method name="glSamplerParameterfv(II[FI)V" />
-		<method name="glSamplerParameteri(III)V" />
-		<method name="glSamplerParameteriv(IILjava/nio/IntBuffer;)V" />
-		<method name="glSamplerParameteriv(II[II)V" />
-		<method name="glTexImage3D(IIIIIIIIII)V" />
-		<method name="glTexImage3D(IIIIIIIIILjava/nio/Buffer;)V" />
-		<method name="glTexStorage2D(IIIII)V" />
-		<method name="glTexStorage3D(IIIIII)V" />
-		<method name="glTexSubImage3D(IIIIIIIIIII)V" />
-		<method name="glTexSubImage3D(IIIIIIIIIILjava/nio/Buffer;)V" />
-		<method name="glTransformFeedbackVaryings(I[Ljava/lang/String;I)V" />
-		<method name="glUniform1ui(II)V" />
-		<method name="glUniform1uiv(IILjava/nio/IntBuffer;)V" />
-		<method name="glUniform1uiv(II[II)V" />
-		<method name="glUniform2ui(III)V" />
-		<method name="glUniform2uiv(IILjava/nio/IntBuffer;)V" />
-		<method name="glUniform2uiv(II[II)V" />
-		<method name="glUniform3ui(IIII)V" />
-		<method name="glUniform3uiv(IILjava/nio/IntBuffer;)V" />
-		<method name="glUniform3uiv(II[II)V" />
-		<method name="glUniform4ui(IIIII)V" />
-		<method name="glUniform4uiv(IILjava/nio/IntBuffer;)V" />
-		<method name="glUniform4uiv(II[II)V" />
-		<method name="glUniformBlockBinding(III)V" />
-		<method name="glUniformMatrix2x3fv(IIZLjava/nio/FloatBuffer;)V" />
-		<method name="glUniformMatrix2x3fv(IIZ[FI)V" />
-		<method name="glUniformMatrix2x4fv(IIZLjava/nio/FloatBuffer;)V" />
-		<method name="glUniformMatrix2x4fv(IIZ[FI)V" />
-		<method name="glUniformMatrix3x2fv(IIZLjava/nio/FloatBuffer;)V" />
-		<method name="glUniformMatrix3x2fv(IIZ[FI)V" />
-		<method name="glUniformMatrix3x4fv(IIZLjava/nio/FloatBuffer;)V" />
-		<method name="glUniformMatrix3x4fv(IIZ[FI)V" />
-		<method name="glUniformMatrix4x2fv(IIZLjava/nio/FloatBuffer;)V" />
-		<method name="glUniformMatrix4x2fv(IIZ[FI)V" />
-		<method name="glUniformMatrix4x3fv(IIZLjava/nio/FloatBuffer;)V" />
-		<method name="glUniformMatrix4x3fv(IIZ[FI)V" />
-		<method name="glUnmapBuffer(I)Z" />
-		<method name="glVertexAttribDivisor(II)V" />
-		<method name="glVertexAttribI4i(IIIII)V" />
-		<method name="glVertexAttribI4iv(ILjava/nio/IntBuffer;)V" />
-		<method name="glVertexAttribI4iv(I[II)V" />
-		<method name="glVertexAttribI4ui(IIIII)V" />
-		<method name="glVertexAttribI4uiv(ILjava/nio/IntBuffer;)V" />
-		<method name="glVertexAttribI4uiv(I[II)V" />
-		<method name="glVertexAttribIPointer(IIIII)V" />
-		<method name="glVertexAttribIPointer(IIIILjava/nio/Buffer;)V" />
-		<method name="glWaitSync(JIJ)V" />
-		<field name="GL_ACTIVE_UNIFORM_BLOCKS" />
-		<field name="GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH" />
-		<field name="GL_ALREADY_SIGNALED" />
-		<field name="GL_ANY_SAMPLES_PASSED" />
-		<field name="GL_ANY_SAMPLES_PASSED_CONSERVATIVE" />
-		<field name="GL_BLUE" />
-		<field name="GL_BUFFER_ACCESS_FLAGS" />
-		<field name="GL_BUFFER_MAPPED" />
-		<field name="GL_BUFFER_MAP_LENGTH" />
-		<field name="GL_BUFFER_MAP_OFFSET" />
-		<field name="GL_BUFFER_MAP_POINTER" />
-		<field name="GL_COLOR" />
-		<field name="GL_COLOR_ATTACHMENT1" />
-		<field name="GL_COLOR_ATTACHMENT10" />
-		<field name="GL_COLOR_ATTACHMENT11" />
-		<field name="GL_COLOR_ATTACHMENT12" />
-		<field name="GL_COLOR_ATTACHMENT13" />
-		<field name="GL_COLOR_ATTACHMENT14" />
-		<field name="GL_COLOR_ATTACHMENT15" />
-		<field name="GL_COLOR_ATTACHMENT2" />
-		<field name="GL_COLOR_ATTACHMENT3" />
-		<field name="GL_COLOR_ATTACHMENT4" />
-		<field name="GL_COLOR_ATTACHMENT5" />
-		<field name="GL_COLOR_ATTACHMENT6" />
-		<field name="GL_COLOR_ATTACHMENT7" />
-		<field name="GL_COLOR_ATTACHMENT8" />
-		<field name="GL_COLOR_ATTACHMENT9" />
-		<field name="GL_COMPARE_REF_TO_TEXTURE" />
-		<field name="GL_COMPRESSED_R11_EAC" />
-		<field name="GL_COMPRESSED_RG11_EAC" />
-		<field name="GL_COMPRESSED_RGB8_ETC2" />
-		<field name="GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2" />
-		<field name="GL_COMPRESSED_RGBA8_ETC2_EAC" />
-		<field name="GL_COMPRESSED_SIGNED_R11_EAC" />
-		<field name="GL_COMPRESSED_SIGNED_RG11_EAC" />
-		<field name="GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC" />
-		<field name="GL_COMPRESSED_SRGB8_ETC2" />
-		<field name="GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2" />
-		<field name="GL_CONDITION_SATISFIED" />
-		<field name="GL_COPY_READ_BUFFER" />
-		<field name="GL_COPY_READ_BUFFER_BINDING" />
-		<field name="GL_COPY_WRITE_BUFFER" />
-		<field name="GL_COPY_WRITE_BUFFER_BINDING" />
-		<field name="GL_CURRENT_QUERY" />
-		<field name="GL_DEPTH" />
-		<field name="GL_DEPTH24_STENCIL8" />
-		<field name="GL_DEPTH32F_STENCIL8" />
-		<field name="GL_DEPTH_COMPONENT24" />
-		<field name="GL_DEPTH_COMPONENT32F" />
-		<field name="GL_DEPTH_STENCIL" />
-		<field name="GL_DEPTH_STENCIL_ATTACHMENT" />
-		<field name="GL_DRAW_BUFFER0" />
-		<field name="GL_DRAW_BUFFER1" />
-		<field name="GL_DRAW_BUFFER10" />
-		<field name="GL_DRAW_BUFFER11" />
-		<field name="GL_DRAW_BUFFER12" />
-		<field name="GL_DRAW_BUFFER13" />
-		<field name="GL_DRAW_BUFFER14" />
-		<field name="GL_DRAW_BUFFER15" />
-		<field name="GL_DRAW_BUFFER2" />
-		<field name="GL_DRAW_BUFFER3" />
-		<field name="GL_DRAW_BUFFER4" />
-		<field name="GL_DRAW_BUFFER5" />
-		<field name="GL_DRAW_BUFFER6" />
-		<field name="GL_DRAW_BUFFER7" />
-		<field name="GL_DRAW_BUFFER8" />
-		<field name="GL_DRAW_BUFFER9" />
-		<field name="GL_DRAW_FRAMEBUFFER" />
-		<field name="GL_DRAW_FRAMEBUFFER_BINDING" />
-		<field name="GL_DYNAMIC_COPY" />
-		<field name="GL_DYNAMIC_READ" />
-		<field name="GL_FLOAT_32_UNSIGNED_INT_24_8_REV" />
-		<field name="GL_FLOAT_MAT2x3" />
-		<field name="GL_FLOAT_MAT2x4" />
-		<field name="GL_FLOAT_MAT3x2" />
-		<field name="GL_FLOAT_MAT3x4" />
-		<field name="GL_FLOAT_MAT4x2" />
-		<field name="GL_FLOAT_MAT4x3" />
-		<field name="GL_FRAGMENT_SHADER_DERIVATIVE_HINT" />
-		<field name="GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE" />
-		<field name="GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE" />
-		<field name="GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING" />
-		<field name="GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE" />
-		<field name="GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE" />
-		<field name="GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE" />
-		<field name="GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE" />
-		<field name="GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE" />
-		<field name="GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER" />
-		<field name="GL_FRAMEBUFFER_DEFAULT" />
-		<field name="GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE" />
-		<field name="GL_FRAMEBUFFER_UNDEFINED" />
-		<field name="GL_GREEN" />
-		<field name="GL_HALF_FLOAT" />
-		<field name="GL_INTERLEAVED_ATTRIBS" />
-		<field name="GL_INT_2_10_10_10_REV" />
-		<field name="GL_INT_SAMPLER_2D" />
-		<field name="GL_INT_SAMPLER_2D_ARRAY" />
-		<field name="GL_INT_SAMPLER_3D" />
-		<field name="GL_INT_SAMPLER_CUBE" />
-		<field name="GL_INVALID_INDEX" />
-		<field name="GL_MAJOR_VERSION" />
-		<field name="GL_MAP_FLUSH_EXPLICIT_BIT" />
-		<field name="GL_MAP_INVALIDATE_BUFFER_BIT" />
-		<field name="GL_MAP_INVALIDATE_RANGE_BIT" />
-		<field name="GL_MAP_READ_BIT" />
-		<field name="GL_MAP_UNSYNCHRONIZED_BIT" />
-		<field name="GL_MAP_WRITE_BIT" />
-		<field name="GL_MAX" />
-		<field name="GL_MAX_3D_TEXTURE_SIZE" />
-		<field name="GL_MAX_ARRAY_TEXTURE_LAYERS" />
-		<field name="GL_MAX_COLOR_ATTACHMENTS" />
-		<field name="GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS" />
-		<field name="GL_MAX_COMBINED_UNIFORM_BLOCKS" />
-		<field name="GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS" />
-		<field name="GL_MAX_DRAW_BUFFERS" />
-		<field name="GL_MAX_ELEMENTS_INDICES" />
-		<field name="GL_MAX_ELEMENTS_VERTICES" />
-		<field name="GL_MAX_ELEMENT_INDEX" />
-		<field name="GL_MAX_FRAGMENT_INPUT_COMPONENTS" />
-		<field name="GL_MAX_FRAGMENT_UNIFORM_BLOCKS" />
-		<field name="GL_MAX_FRAGMENT_UNIFORM_COMPONENTS" />
-		<field name="GL_MAX_PROGRAM_TEXEL_OFFSET" />
-		<field name="GL_MAX_SAMPLES" />
-		<field name="GL_MAX_SERVER_WAIT_TIMEOUT" />
-		<field name="GL_MAX_TEXTURE_LOD_BIAS" />
-		<field name="GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS" />
-		<field name="GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS" />
-		<field name="GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS" />
-		<field name="GL_MAX_UNIFORM_BLOCK_SIZE" />
-		<field name="GL_MAX_UNIFORM_BUFFER_BINDINGS" />
-		<field name="GL_MAX_VARYING_COMPONENTS" />
-		<field name="GL_MAX_VERTEX_OUTPUT_COMPONENTS" />
-		<field name="GL_MAX_VERTEX_UNIFORM_BLOCKS" />
-		<field name="GL_MAX_VERTEX_UNIFORM_COMPONENTS" />
-		<field name="GL_MIN" />
-		<field name="GL_MINOR_VERSION" />
-		<field name="GL_MIN_PROGRAM_TEXEL_OFFSET" />
-		<field name="GL_NUM_EXTENSIONS" />
-		<field name="GL_NUM_PROGRAM_BINARY_FORMATS" />
-		<field name="GL_NUM_SAMPLE_COUNTS" />
-		<field name="GL_OBJECT_TYPE" />
-		<field name="GL_PACK_ROW_LENGTH" />
-		<field name="GL_PACK_SKIP_PIXELS" />
-		<field name="GL_PACK_SKIP_ROWS" />
-		<field name="GL_PIXEL_PACK_BUFFER" />
-		<field name="GL_PIXEL_PACK_BUFFER_BINDING" />
-		<field name="GL_PIXEL_UNPACK_BUFFER" />
-		<field name="GL_PIXEL_UNPACK_BUFFER_BINDING" />
-		<field name="GL_PRIMITIVE_RESTART_FIXED_INDEX" />
-		<field name="GL_PROGRAM_BINARY_FORMATS" />
-		<field name="GL_PROGRAM_BINARY_LENGTH" />
-		<field name="GL_PROGRAM_BINARY_RETRIEVABLE_HINT" />
-		<field name="GL_QUERY_RESULT" />
-		<field name="GL_QUERY_RESULT_AVAILABLE" />
-		<field name="GL_R11F_G11F_B10F" />
-		<field name="GL_R16F" />
-		<field name="GL_R16I" />
-		<field name="GL_R16UI" />
-		<field name="GL_R32F" />
-		<field name="GL_R32I" />
-		<field name="GL_R32UI" />
-		<field name="GL_R8" />
-		<field name="GL_R8I" />
-		<field name="GL_R8UI" />
-		<field name="GL_R8_SNORM" />
-		<field name="GL_RASTERIZER_DISCARD" />
-		<field name="GL_READ_BUFFER" />
-		<field name="GL_READ_FRAMEBUFFER" />
-		<field name="GL_READ_FRAMEBUFFER_BINDING" />
-		<field name="GL_RED" />
-		<field name="GL_RED_INTEGER" />
-		<field name="GL_RENDERBUFFER_SAMPLES" />
-		<field name="GL_RG" />
-		<field name="GL_RG16F" />
-		<field name="GL_RG16I" />
-		<field name="GL_RG16UI" />
-		<field name="GL_RG32F" />
-		<field name="GL_RG32I" />
-		<field name="GL_RG32UI" />
-		<field name="GL_RG8" />
-		<field name="GL_RG8I" />
-		<field name="GL_RG8UI" />
-		<field name="GL_RG8_SNORM" />
-		<field name="GL_RGB10_A2" />
-		<field name="GL_RGB10_A2UI" />
-		<field name="GL_RGB16F" />
-		<field name="GL_RGB16I" />
-		<field name="GL_RGB16UI" />
-		<field name="GL_RGB32F" />
-		<field name="GL_RGB32I" />
-		<field name="GL_RGB32UI" />
-		<field name="GL_RGB8" />
-		<field name="GL_RGB8I" />
-		<field name="GL_RGB8UI" />
-		<field name="GL_RGB8_SNORM" />
-		<field name="GL_RGB9_E5" />
-		<field name="GL_RGBA16F" />
-		<field name="GL_RGBA16I" />
-		<field name="GL_RGBA16UI" />
-		<field name="GL_RGBA32F" />
-		<field name="GL_RGBA32I" />
-		<field name="GL_RGBA32UI" />
-		<field name="GL_RGBA8" />
-		<field name="GL_RGBA8I" />
-		<field name="GL_RGBA8UI" />
-		<field name="GL_RGBA8_SNORM" />
-		<field name="GL_RGBA_INTEGER" />
-		<field name="GL_RGB_INTEGER" />
-		<field name="GL_RG_INTEGER" />
-		<field name="GL_SAMPLER_2D_ARRAY" />
-		<field name="GL_SAMPLER_2D_ARRAY_SHADOW" />
-		<field name="GL_SAMPLER_2D_SHADOW" />
-		<field name="GL_SAMPLER_3D" />
-		<field name="GL_SAMPLER_BINDING" />
-		<field name="GL_SAMPLER_CUBE_SHADOW" />
-		<field name="GL_SEPARATE_ATTRIBS" />
-		<field name="GL_SIGNALED" />
-		<field name="GL_SIGNED_NORMALIZED" />
-		<field name="GL_SRGB" />
-		<field name="GL_SRGB8" />
-		<field name="GL_SRGB8_ALPHA8" />
-		<field name="GL_STATIC_COPY" />
-		<field name="GL_STATIC_READ" />
-		<field name="GL_STENCIL" />
-		<field name="GL_STREAM_COPY" />
-		<field name="GL_STREAM_READ" />
-		<field name="GL_SYNC_CONDITION" />
-		<field name="GL_SYNC_FENCE" />
-		<field name="GL_SYNC_FLAGS" />
-		<field name="GL_SYNC_FLUSH_COMMANDS_BIT" />
-		<field name="GL_SYNC_GPU_COMMANDS_COMPLETE" />
-		<field name="GL_SYNC_STATUS" />
-		<field name="GL_TEXTURE_2D_ARRAY" />
-		<field name="GL_TEXTURE_3D" />
-		<field name="GL_TEXTURE_BASE_LEVEL" />
-		<field name="GL_TEXTURE_BINDING_2D_ARRAY" />
-		<field name="GL_TEXTURE_BINDING_3D" />
-		<field name="GL_TEXTURE_COMPARE_FUNC" />
-		<field name="GL_TEXTURE_COMPARE_MODE" />
-		<field name="GL_TEXTURE_IMMUTABLE_FORMAT" />
-		<field name="GL_TEXTURE_IMMUTABLE_LEVELS" />
-		<field name="GL_TEXTURE_MAX_LEVEL" />
-		<field name="GL_TEXTURE_MAX_LOD" />
-		<field name="GL_TEXTURE_MIN_LOD" />
-		<field name="GL_TEXTURE_SWIZZLE_A" />
-		<field name="GL_TEXTURE_SWIZZLE_B" />
-		<field name="GL_TEXTURE_SWIZZLE_G" />
-		<field name="GL_TEXTURE_SWIZZLE_R" />
-		<field name="GL_TEXTURE_WRAP_R" />
-		<field name="GL_TIMEOUT_EXPIRED" />
-		<field name="GL_TIMEOUT_IGNORED" />
-		<field name="GL_TRANSFORM_FEEDBACK" />
-		<field name="GL_TRANSFORM_FEEDBACK_ACTIVE" />
-		<field name="GL_TRANSFORM_FEEDBACK_BINDING" />
-		<field name="GL_TRANSFORM_FEEDBACK_BUFFER" />
-		<field name="GL_TRANSFORM_FEEDBACK_BUFFER_BINDING" />
-		<field name="GL_TRANSFORM_FEEDBACK_BUFFER_MODE" />
-		<field name="GL_TRANSFORM_FEEDBACK_BUFFER_SIZE" />
-		<field name="GL_TRANSFORM_FEEDBACK_BUFFER_START" />
-		<field name="GL_TRANSFORM_FEEDBACK_PAUSED" />
-		<field name="GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN" />
-		<field name="GL_TRANSFORM_FEEDBACK_VARYINGS" />
-		<field name="GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH" />
-		<field name="GL_UNIFORM_ARRAY_STRIDE" />
-		<field name="GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS" />
-		<field name="GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES" />
-		<field name="GL_UNIFORM_BLOCK_BINDING" />
-		<field name="GL_UNIFORM_BLOCK_DATA_SIZE" />
-		<field name="GL_UNIFORM_BLOCK_INDEX" />
-		<field name="GL_UNIFORM_BLOCK_NAME_LENGTH" />
-		<field name="GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER" />
-		<field name="GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER" />
-		<field name="GL_UNIFORM_BUFFER" />
-		<field name="GL_UNIFORM_BUFFER_BINDING" />
-		<field name="GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT" />
-		<field name="GL_UNIFORM_BUFFER_SIZE" />
-		<field name="GL_UNIFORM_BUFFER_START" />
-		<field name="GL_UNIFORM_IS_ROW_MAJOR" />
-		<field name="GL_UNIFORM_MATRIX_STRIDE" />
-		<field name="GL_UNIFORM_NAME_LENGTH" />
-		<field name="GL_UNIFORM_OFFSET" />
-		<field name="GL_UNIFORM_SIZE" />
-		<field name="GL_UNIFORM_TYPE" />
-		<field name="GL_UNPACK_IMAGE_HEIGHT" />
-		<field name="GL_UNPACK_ROW_LENGTH" />
-		<field name="GL_UNPACK_SKIP_IMAGES" />
-		<field name="GL_UNPACK_SKIP_PIXELS" />
-		<field name="GL_UNPACK_SKIP_ROWS" />
-		<field name="GL_UNSIGNALED" />
-		<field name="GL_UNSIGNED_INT_10F_11F_11F_REV" />
-		<field name="GL_UNSIGNED_INT_24_8" />
-		<field name="GL_UNSIGNED_INT_2_10_10_10_REV" />
-		<field name="GL_UNSIGNED_INT_5_9_9_9_REV" />
-		<field name="GL_UNSIGNED_INT_SAMPLER_2D" />
-		<field name="GL_UNSIGNED_INT_SAMPLER_2D_ARRAY" />
-		<field name="GL_UNSIGNED_INT_SAMPLER_3D" />
-		<field name="GL_UNSIGNED_INT_SAMPLER_CUBE" />
-		<field name="GL_UNSIGNED_INT_VEC2" />
-		<field name="GL_UNSIGNED_INT_VEC3" />
-		<field name="GL_UNSIGNED_INT_VEC4" />
-		<field name="GL_UNSIGNED_NORMALIZED" />
-		<field name="GL_VERTEX_ARRAY_BINDING" />
-		<field name="GL_VERTEX_ATTRIB_ARRAY_DIVISOR" />
-		<field name="GL_VERTEX_ATTRIB_ARRAY_INTEGER" />
-		<field name="GL_WAIT_FAILED" />
-	</class>
-	<class name="android/opengl/GLES31" since="21">
-		<extends name="android/opengl/GLES30" />
-		<method name="&lt;init>()V" />
-		<method name="glActiveShaderProgram(II)V" />
-		<method name="glBindImageTexture(IIIZIII)V" />
-		<method name="glBindProgramPipeline(I)V" />
-		<method name="glBindVertexBuffer(IIJI)V" />
-		<method name="glCreateShaderProgramv(I[Ljava/lang/String;)I" />
-		<method name="glDeleteProgramPipelines(ILjava/nio/IntBuffer;)V" />
-		<method name="glDeleteProgramPipelines(I[II)V" />
-		<method name="glDispatchCompute(III)V" />
-		<method name="glDispatchComputeIndirect(J)V" />
-		<method name="glDrawArraysIndirect(IJ)V" />
-		<method name="glDrawElementsIndirect(IIJ)V" />
-		<method name="glFramebufferParameteri(III)V" />
-		<method name="glGenProgramPipelines(ILjava/nio/IntBuffer;)V" />
-		<method name="glGenProgramPipelines(I[II)V" />
-		<method name="glGetBooleani_v(IILjava/nio/IntBuffer;)V" />
-		<method name="glGetBooleani_v(II[ZI)V" />
-		<method name="glGetFramebufferParameteriv(IILjava/nio/IntBuffer;)V" />
-		<method name="glGetFramebufferParameteriv(II[II)V" />
-		<method name="glGetMultisamplefv(IILjava/nio/FloatBuffer;)V" />
-		<method name="glGetMultisamplefv(II[FI)V" />
-		<method name="glGetProgramInterfaceiv(IIILjava/nio/IntBuffer;)V" />
-		<method name="glGetProgramInterfaceiv(III[II)V" />
-		<method name="glGetProgramPipelineInfoLog(I)Ljava/lang/String;" />
-		<method name="glGetProgramPipelineiv(IILjava/nio/IntBuffer;)V" />
-		<method name="glGetProgramPipelineiv(II[II)V" />
-		<method name="glGetProgramResourceIndex(IILjava/lang/String;)I" />
-		<method name="glGetProgramResourceLocation(IILjava/lang/String;)I" />
-		<method name="glGetProgramResourceName(III)Ljava/lang/String;" />
-		<method name="glGetProgramResourceiv(IIIILjava/nio/IntBuffer;ILjava/nio/IntBuffer;Ljava/nio/IntBuffer;)V" />
-		<method name="glGetProgramResourceiv(IIII[III[II[II)V" />
-		<method name="glGetTexLevelParameterfv(IIILjava/nio/FloatBuffer;)V" />
-		<method name="glGetTexLevelParameterfv(III[FI)V" />
-		<method name="glGetTexLevelParameteriv(IIILjava/nio/IntBuffer;)V" />
-		<method name="glGetTexLevelParameteriv(III[II)V" />
-		<method name="glIsProgramPipeline(I)Z" />
-		<method name="glMemoryBarrier(I)V" />
-		<method name="glMemoryBarrierByRegion(I)V" />
-		<method name="glProgramUniform1f(IIF)V" />
-		<method name="glProgramUniform1fv(IIILjava/nio/FloatBuffer;)V" />
-		<method name="glProgramUniform1fv(III[FI)V" />
-		<method name="glProgramUniform1i(III)V" />
-		<method name="glProgramUniform1iv(IIILjava/nio/IntBuffer;)V" />
-		<method name="glProgramUniform1iv(III[II)V" />
-		<method name="glProgramUniform1ui(III)V" />
-		<method name="glProgramUniform1uiv(IIILjava/nio/IntBuffer;)V" />
-		<method name="glProgramUniform1uiv(III[II)V" />
-		<method name="glProgramUniform2f(IIFF)V" />
-		<method name="glProgramUniform2fv(IIILjava/nio/FloatBuffer;)V" />
-		<method name="glProgramUniform2fv(III[FI)V" />
-		<method name="glProgramUniform2i(IIII)V" />
-		<method name="glProgramUniform2iv(IIILjava/nio/IntBuffer;)V" />
-		<method name="glProgramUniform2iv(III[II)V" />
-		<method name="glProgramUniform2ui(IIII)V" />
-		<method name="glProgramUniform2uiv(IIILjava/nio/IntBuffer;)V" />
-		<method name="glProgramUniform2uiv(III[II)V" />
-		<method name="glProgramUniform3f(IIFFF)V" />
-		<method name="glProgramUniform3fv(IIILjava/nio/FloatBuffer;)V" />
-		<method name="glProgramUniform3fv(III[FI)V" />
-		<method name="glProgramUniform3i(IIIII)V" />
-		<method name="glProgramUniform3iv(IIILjava/nio/IntBuffer;)V" />
-		<method name="glProgramUniform3iv(III[II)V" />
-		<method name="glProgramUniform3ui(IIIII)V" />
-		<method name="glProgramUniform3uiv(IIILjava/nio/IntBuffer;)V" />
-		<method name="glProgramUniform3uiv(III[II)V" />
-		<method name="glProgramUniform4f(IIFFFF)V" />
-		<method name="glProgramUniform4fv(IIILjava/nio/FloatBuffer;)V" />
-		<method name="glProgramUniform4fv(III[FI)V" />
-		<method name="glProgramUniform4i(IIIIII)V" />
-		<method name="glProgramUniform4iv(IIILjava/nio/IntBuffer;)V" />
-		<method name="glProgramUniform4iv(III[II)V" />
-		<method name="glProgramUniform4ui(IIIIII)V" />
-		<method name="glProgramUniform4uiv(IIILjava/nio/IntBuffer;)V" />
-		<method name="glProgramUniform4uiv(III[II)V" />
-		<method name="glProgramUniformMatrix2fv(IIIZLjava/nio/FloatBuffer;)V" />
-		<method name="glProgramUniformMatrix2fv(IIIZ[FI)V" />
-		<method name="glProgramUniformMatrix2x3fv(IIIZLjava/nio/FloatBuffer;)V" />
-		<method name="glProgramUniformMatrix2x3fv(IIIZ[FI)V" />
-		<method name="glProgramUniformMatrix2x4fv(IIIZLjava/nio/FloatBuffer;)V" />
-		<method name="glProgramUniformMatrix2x4fv(IIIZ[FI)V" />
-		<method name="glProgramUniformMatrix3fv(IIIZLjava/nio/FloatBuffer;)V" />
-		<method name="glProgramUniformMatrix3fv(IIIZ[FI)V" />
-		<method name="glProgramUniformMatrix3x2fv(IIIZLjava/nio/FloatBuffer;)V" />
-		<method name="glProgramUniformMatrix3x2fv(IIIZ[FI)V" />
-		<method name="glProgramUniformMatrix3x4fv(IIIZLjava/nio/FloatBuffer;)V" />
-		<method name="glProgramUniformMatrix3x4fv(IIIZ[FI)V" />
-		<method name="glProgramUniformMatrix4fv(IIIZLjava/nio/FloatBuffer;)V" />
-		<method name="glProgramUniformMatrix4fv(IIIZ[FI)V" />
-		<method name="glProgramUniformMatrix4x2fv(IIIZLjava/nio/FloatBuffer;)V" />
-		<method name="glProgramUniformMatrix4x2fv(IIIZ[FI)V" />
-		<method name="glProgramUniformMatrix4x3fv(IIIZLjava/nio/FloatBuffer;)V" />
-		<method name="glProgramUniformMatrix4x3fv(IIIZ[FI)V" />
-		<method name="glSampleMaski(II)V" />
-		<method name="glTexStorage2DMultisample(IIIIIZ)V" />
-		<method name="glUseProgramStages(III)V" />
-		<method name="glValidateProgramPipeline(I)V" />
-		<method name="glVertexAttribBinding(II)V" />
-		<method name="glVertexAttribFormat(IIIZI)V" />
-		<method name="glVertexAttribIFormat(IIII)V" />
-		<method name="glVertexBindingDivisor(II)V" />
-		<field name="GL_ACTIVE_ATOMIC_COUNTER_BUFFERS" />
-		<field name="GL_ACTIVE_PROGRAM" />
-		<field name="GL_ACTIVE_RESOURCES" />
-		<field name="GL_ACTIVE_VARIABLES" />
-		<field name="GL_ALL_SHADER_BITS" />
-		<field name="GL_ARRAY_SIZE" />
-		<field name="GL_ARRAY_STRIDE" />
-		<field name="GL_ATOMIC_COUNTER_BARRIER_BIT" />
-		<field name="GL_ATOMIC_COUNTER_BUFFER" />
-		<field name="GL_ATOMIC_COUNTER_BUFFER_BINDING" />
-		<field name="GL_ATOMIC_COUNTER_BUFFER_INDEX" />
-		<field name="GL_ATOMIC_COUNTER_BUFFER_SIZE" />
-		<field name="GL_ATOMIC_COUNTER_BUFFER_START" />
-		<field name="GL_BLOCK_INDEX" />
-		<field name="GL_BUFFER_BINDING" />
-		<field name="GL_BUFFER_DATA_SIZE" />
-		<field name="GL_BUFFER_UPDATE_BARRIER_BIT" />
-		<field name="GL_BUFFER_VARIABLE" />
-		<field name="GL_COMMAND_BARRIER_BIT" />
-		<field name="GL_COMPUTE_SHADER" />
-		<field name="GL_COMPUTE_SHADER_BIT" />
-		<field name="GL_COMPUTE_WORK_GROUP_SIZE" />
-		<field name="GL_DEPTH_STENCIL_TEXTURE_MODE" />
-		<field name="GL_DISPATCH_INDIRECT_BUFFER" />
-		<field name="GL_DISPATCH_INDIRECT_BUFFER_BINDING" />
-		<field name="GL_DRAW_INDIRECT_BUFFER" />
-		<field name="GL_DRAW_INDIRECT_BUFFER_BINDING" />
-		<field name="GL_FRAGMENT_SHADER_BIT" />
-		<field name="GL_FRAMEBUFFER_BARRIER_BIT" />
-		<field name="GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS" />
-		<field name="GL_FRAMEBUFFER_DEFAULT_HEIGHT" />
-		<field name="GL_FRAMEBUFFER_DEFAULT_SAMPLES" />
-		<field name="GL_FRAMEBUFFER_DEFAULT_WIDTH" />
-		<field name="GL_IMAGE_2D" />
-		<field name="GL_IMAGE_2D_ARRAY" />
-		<field name="GL_IMAGE_3D" />
-		<field name="GL_IMAGE_BINDING_ACCESS" />
-		<field name="GL_IMAGE_BINDING_FORMAT" />
-		<field name="GL_IMAGE_BINDING_LAYER" />
-		<field name="GL_IMAGE_BINDING_LAYERED" />
-		<field name="GL_IMAGE_BINDING_LEVEL" />
-		<field name="GL_IMAGE_BINDING_NAME" />
-		<field name="GL_IMAGE_CUBE" />
-		<field name="GL_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS" />
-		<field name="GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE" />
-		<field name="GL_IMAGE_FORMAT_COMPATIBILITY_TYPE" />
-		<field name="GL_INT_IMAGE_2D" />
-		<field name="GL_INT_IMAGE_2D_ARRAY" />
-		<field name="GL_INT_IMAGE_3D" />
-		<field name="GL_INT_IMAGE_CUBE" />
-		<field name="GL_INT_SAMPLER_2D_MULTISAMPLE" />
-		<field name="GL_IS_ROW_MAJOR" />
-		<field name="GL_LOCATION" />
-		<field name="GL_MATRIX_STRIDE" />
-		<field name="GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS" />
-		<field name="GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE" />
-		<field name="GL_MAX_COLOR_TEXTURE_SAMPLES" />
-		<field name="GL_MAX_COMBINED_ATOMIC_COUNTERS" />
-		<field name="GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS" />
-		<field name="GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS" />
-		<field name="GL_MAX_COMBINED_IMAGE_UNIFORMS" />
-		<field name="GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES" />
-		<field name="GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS" />
-		<field name="GL_MAX_COMPUTE_ATOMIC_COUNTERS" />
-		<field name="GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS" />
-		<field name="GL_MAX_COMPUTE_IMAGE_UNIFORMS" />
-		<field name="GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS" />
-		<field name="GL_MAX_COMPUTE_SHARED_MEMORY_SIZE" />
-		<field name="GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS" />
-		<field name="GL_MAX_COMPUTE_UNIFORM_BLOCKS" />
-		<field name="GL_MAX_COMPUTE_UNIFORM_COMPONENTS" />
-		<field name="GL_MAX_COMPUTE_WORK_GROUP_COUNT" />
-		<field name="GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS" />
-		<field name="GL_MAX_COMPUTE_WORK_GROUP_SIZE" />
-		<field name="GL_MAX_DEPTH_TEXTURE_SAMPLES" />
-		<field name="GL_MAX_FRAGMENT_ATOMIC_COUNTERS" />
-		<field name="GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS" />
-		<field name="GL_MAX_FRAGMENT_IMAGE_UNIFORMS" />
-		<field name="GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS" />
-		<field name="GL_MAX_FRAMEBUFFER_HEIGHT" />
-		<field name="GL_MAX_FRAMEBUFFER_SAMPLES" />
-		<field name="GL_MAX_FRAMEBUFFER_WIDTH" />
-		<field name="GL_MAX_IMAGE_UNITS" />
-		<field name="GL_MAX_INTEGER_SAMPLES" />
-		<field name="GL_MAX_NAME_LENGTH" />
-		<field name="GL_MAX_NUM_ACTIVE_VARIABLES" />
-		<field name="GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET" />
-		<field name="GL_MAX_SAMPLE_MASK_WORDS" />
-		<field name="GL_MAX_SHADER_STORAGE_BLOCK_SIZE" />
-		<field name="GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS" />
-		<field name="GL_MAX_UNIFORM_LOCATIONS" />
-		<field name="GL_MAX_VERTEX_ATOMIC_COUNTERS" />
-		<field name="GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS" />
-		<field name="GL_MAX_VERTEX_ATTRIB_BINDINGS" />
-		<field name="GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET" />
-		<field name="GL_MAX_VERTEX_ATTRIB_STRIDE" />
-		<field name="GL_MAX_VERTEX_IMAGE_UNIFORMS" />
-		<field name="GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS" />
-		<field name="GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET" />
-		<field name="GL_NAME_LENGTH" />
-		<field name="GL_NUM_ACTIVE_VARIABLES" />
-		<field name="GL_OFFSET" />
-		<field name="GL_PIXEL_BUFFER_BARRIER_BIT" />
-		<field name="GL_PROGRAM_INPUT" />
-		<field name="GL_PROGRAM_OUTPUT" />
-		<field name="GL_PROGRAM_PIPELINE_BINDING" />
-		<field name="GL_PROGRAM_SEPARABLE" />
-		<field name="GL_READ_ONLY" />
-		<field name="GL_READ_WRITE" />
-		<field name="GL_REFERENCED_BY_COMPUTE_SHADER" />
-		<field name="GL_REFERENCED_BY_FRAGMENT_SHADER" />
-		<field name="GL_REFERENCED_BY_VERTEX_SHADER" />
-		<field name="GL_SAMPLER_2D_MULTISAMPLE" />
-		<field name="GL_SAMPLE_MASK" />
-		<field name="GL_SAMPLE_MASK_VALUE" />
-		<field name="GL_SAMPLE_POSITION" />
-		<field name="GL_SHADER_STORAGE_BARRIER_BIT" />
-		<field name="GL_SHADER_STORAGE_BLOCK" />
-		<field name="GL_SHADER_STORAGE_BUFFER" />
-		<field name="GL_SHADER_STORAGE_BUFFER_BINDING" />
-		<field name="GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT" />
-		<field name="GL_SHADER_STORAGE_BUFFER_SIZE" />
-		<field name="GL_SHADER_STORAGE_BUFFER_START" />
-		<field name="GL_STENCIL_INDEX" />
-		<field name="GL_TEXTURE_2D_MULTISAMPLE" />
-		<field name="GL_TEXTURE_ALPHA_SIZE" />
-		<field name="GL_TEXTURE_ALPHA_TYPE" />
-		<field name="GL_TEXTURE_BINDING_2D_MULTISAMPLE" />
-		<field name="GL_TEXTURE_BLUE_SIZE" />
-		<field name="GL_TEXTURE_BLUE_TYPE" />
-		<field name="GL_TEXTURE_COMPRESSED" />
-		<field name="GL_TEXTURE_DEPTH" />
-		<field name="GL_TEXTURE_DEPTH_SIZE" />
-		<field name="GL_TEXTURE_DEPTH_TYPE" />
-		<field name="GL_TEXTURE_FETCH_BARRIER_BIT" />
-		<field name="GL_TEXTURE_FIXED_SAMPLE_LOCATIONS" />
-		<field name="GL_TEXTURE_GREEN_SIZE" />
-		<field name="GL_TEXTURE_GREEN_TYPE" />
-		<field name="GL_TEXTURE_HEIGHT" />
-		<field name="GL_TEXTURE_INTERNAL_FORMAT" />
-		<field name="GL_TEXTURE_RED_SIZE" />
-		<field name="GL_TEXTURE_RED_TYPE" />
-		<field name="GL_TEXTURE_SAMPLES" />
-		<field name="GL_TEXTURE_SHARED_SIZE" />
-		<field name="GL_TEXTURE_STENCIL_SIZE" />
-		<field name="GL_TEXTURE_UPDATE_BARRIER_BIT" />
-		<field name="GL_TEXTURE_WIDTH" />
-		<field name="GL_TOP_LEVEL_ARRAY_SIZE" />
-		<field name="GL_TOP_LEVEL_ARRAY_STRIDE" />
-		<field name="GL_TRANSFORM_FEEDBACK_BARRIER_BIT" />
-		<field name="GL_TRANSFORM_FEEDBACK_VARYING" />
-		<field name="GL_TYPE" />
-		<field name="GL_UNIFORM" />
-		<field name="GL_UNIFORM_BARRIER_BIT" />
-		<field name="GL_UNIFORM_BLOCK" />
-		<field name="GL_UNSIGNED_INT_ATOMIC_COUNTER" />
-		<field name="GL_UNSIGNED_INT_IMAGE_2D" />
-		<field name="GL_UNSIGNED_INT_IMAGE_2D_ARRAY" />
-		<field name="GL_UNSIGNED_INT_IMAGE_3D" />
-		<field name="GL_UNSIGNED_INT_IMAGE_CUBE" />
-		<field name="GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE" />
-		<field name="GL_VERTEX_ATTRIB_BINDING" />
-		<field name="GL_VERTEX_ATTRIB_RELATIVE_OFFSET" />
-		<field name="GL_VERTEX_BINDING_BUFFER" />
-		<field name="GL_VERTEX_BINDING_DIVISOR" />
-		<field name="GL_VERTEX_BINDING_OFFSET" />
-		<field name="GL_VERTEX_BINDING_STRIDE" />
-		<field name="GL_VERTEX_SHADER_BIT" />
-		<field name="GL_WRITE_ONLY" />
-	</class>
-	<class name="android/opengl/GLES31Ext" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="glBlendBarrierKHR()V" />
-		<method name="glBlendEquationSeparateiEXT(III)V" />
-		<method name="glBlendEquationiEXT(II)V" />
-		<method name="glBlendFuncSeparateiEXT(IIIII)V" />
-		<method name="glBlendFunciEXT(III)V" />
-		<method name="glColorMaskiEXT(IZZZZ)V" />
-		<method name="glCopyImageSubDataEXT(IIIIIIIIIIIIIII)V" />
-		<method name="glDebugMessageCallbackKHR(Landroid/opengl/GLES31Ext$DebugProcKHR;)V" />
-		<method name="glDebugMessageControlKHR(IIIILjava/nio/IntBuffer;Z)V" />
-		<method name="glDebugMessageControlKHR(IIII[IIZ)V" />
-		<method name="glDebugMessageInsertKHR(IIIILjava/lang/String;)V" />
-		<method name="glDisableiEXT(II)V" />
-		<method name="glEnableiEXT(II)V" />
-		<method name="glFramebufferTextureEXT(IIII)V" />
-		<method name="glGetDebugMessageCallbackKHR()Landroid/opengl/GLES31Ext$DebugProcKHR;" />
-		<method name="glGetDebugMessageLogKHR(II[II[II[II[II[II[BI)I" />
-		<method name="glGetDebugMessageLogKHR(ILjava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/IntBuffer;)[Ljava/lang/String;" />
-		<method name="glGetDebugMessageLogKHR(ILjava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/ByteBuffer;)I" />
-		<method name="glGetDebugMessageLogKHR(I[II[II[II[II)[Ljava/lang/String;" />
-		<method name="glGetObjectLabelKHR(II)Ljava/lang/String;" />
-		<method name="glGetObjectPtrLabelKHR(J)Ljava/lang/String;" />
-		<method name="glGetSamplerParameterIivEXT(IILjava/nio/IntBuffer;)V" />
-		<method name="glGetSamplerParameterIivEXT(II[II)V" />
-		<method name="glGetSamplerParameterIuivEXT(IILjava/nio/IntBuffer;)V" />
-		<method name="glGetSamplerParameterIuivEXT(II[II)V" />
-		<method name="glGetTexParameterIivEXT(IILjava/nio/IntBuffer;)V" />
-		<method name="glGetTexParameterIivEXT(II[II)V" />
-		<method name="glGetTexParameterIuivEXT(IILjava/nio/IntBuffer;)V" />
-		<method name="glGetTexParameterIuivEXT(II[II)V" />
-		<method name="glIsEnablediEXT(II)Z" />
-		<method name="glMinSampleShadingOES(F)V" />
-		<method name="glObjectLabelKHR(IIILjava/lang/String;)V" />
-		<method name="glObjectPtrLabelKHR(JLjava/lang/String;)V" />
-		<method name="glPatchParameteriEXT(II)V" />
-		<method name="glPopDebugGroupKHR()V" />
-		<method name="glPrimitiveBoundingBoxEXT(FFFFFFFF)V" />
-		<method name="glPushDebugGroupKHR(IIILjava/lang/String;)V" />
-		<method name="glSamplerParameterIivEXT(IILjava/nio/IntBuffer;)V" />
-		<method name="glSamplerParameterIivEXT(II[II)V" />
-		<method name="glSamplerParameterIuivEXT(IILjava/nio/IntBuffer;)V" />
-		<method name="glSamplerParameterIuivEXT(II[II)V" />
-		<method name="glTexBufferEXT(III)V" />
-		<method name="glTexBufferRangeEXT(IIIII)V" />
-		<method name="glTexParameterIivEXT(IILjava/nio/IntBuffer;)V" />
-		<method name="glTexParameterIivEXT(II[II)V" />
-		<method name="glTexParameterIuivEXT(IILjava/nio/IntBuffer;)V" />
-		<method name="glTexParameterIuivEXT(II[II)V" />
-		<method name="glTexStorage3DMultisampleOES(IIIIIIZ)V" />
-		<field name="GL_BLEND_ADVANCED_COHERENT_KHR" />
-		<field name="GL_BUFFER_KHR" />
-		<field name="GL_CLAMP_TO_BORDER_EXT" />
-		<field name="GL_COLORBURN_KHR" />
-		<field name="GL_COLORDODGE_KHR" />
-		<field name="GL_COMPRESSED_RGBA_ASTC_10x10_KHR" />
-		<field name="GL_COMPRESSED_RGBA_ASTC_10x5_KHR" />
-		<field name="GL_COMPRESSED_RGBA_ASTC_10x6_KHR" />
-		<field name="GL_COMPRESSED_RGBA_ASTC_10x8_KHR" />
-		<field name="GL_COMPRESSED_RGBA_ASTC_12x10_KHR" />
-		<field name="GL_COMPRESSED_RGBA_ASTC_12x12_KHR" />
-		<field name="GL_COMPRESSED_RGBA_ASTC_4x4_KHR" />
-		<field name="GL_COMPRESSED_RGBA_ASTC_5x4_KHR" />
-		<field name="GL_COMPRESSED_RGBA_ASTC_5x5_KHR" />
-		<field name="GL_COMPRESSED_RGBA_ASTC_6x5_KHR" />
-		<field name="GL_COMPRESSED_RGBA_ASTC_6x6_KHR" />
-		<field name="GL_COMPRESSED_RGBA_ASTC_8x5_KHR" />
-		<field name="GL_COMPRESSED_RGBA_ASTC_8x6_KHR" />
-		<field name="GL_COMPRESSED_RGBA_ASTC_8x8_KHR" />
-		<field name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR" />
-		<field name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR" />
-		<field name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR" />
-		<field name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR" />
-		<field name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR" />
-		<field name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR" />
-		<field name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR" />
-		<field name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR" />
-		<field name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR" />
-		<field name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR" />
-		<field name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR" />
-		<field name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR" />
-		<field name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR" />
-		<field name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR" />
-		<field name="GL_CONTEXT_FLAG_DEBUG_BIT_KHR" />
-		<field name="GL_DARKEN_KHR" />
-		<field name="GL_DEBUG_CALLBACK_FUNCTION_KHR" />
-		<field name="GL_DEBUG_CALLBACK_USER_PARAM_KHR" />
-		<field name="GL_DEBUG_GROUP_STACK_DEPTH_KHR" />
-		<field name="GL_DEBUG_LOGGED_MESSAGES_KHR" />
-		<field name="GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_KHR" />
-		<field name="GL_DEBUG_OUTPUT_KHR" />
-		<field name="GL_DEBUG_OUTPUT_SYNCHRONOUS_KHR" />
-		<field name="GL_DEBUG_SEVERITY_HIGH_KHR" />
-		<field name="GL_DEBUG_SEVERITY_LOW_KHR" />
-		<field name="GL_DEBUG_SEVERITY_MEDIUM_KHR" />
-		<field name="GL_DEBUG_SEVERITY_NOTIFICATION_KHR" />
-		<field name="GL_DEBUG_SOURCE_API_KHR" />
-		<field name="GL_DEBUG_SOURCE_APPLICATION_KHR" />
-		<field name="GL_DEBUG_SOURCE_OTHER_KHR" />
-		<field name="GL_DEBUG_SOURCE_SHADER_COMPILER_KHR" />
-		<field name="GL_DEBUG_SOURCE_THIRD_PARTY_KHR" />
-		<field name="GL_DEBUG_SOURCE_WINDOW_SYSTEM_KHR" />
-		<field name="GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_KHR" />
-		<field name="GL_DEBUG_TYPE_ERROR_KHR" />
-		<field name="GL_DEBUG_TYPE_MARKER_KHR" />
-		<field name="GL_DEBUG_TYPE_OTHER_KHR" />
-		<field name="GL_DEBUG_TYPE_PERFORMANCE_KHR" />
-		<field name="GL_DEBUG_TYPE_POP_GROUP_KHR" />
-		<field name="GL_DEBUG_TYPE_PORTABILITY_KHR" />
-		<field name="GL_DEBUG_TYPE_PUSH_GROUP_KHR" />
-		<field name="GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_KHR" />
-		<field name="GL_DECODE_EXT" />
-		<field name="GL_DIFFERENCE_KHR" />
-		<field name="GL_EXCLUSION_KHR" />
-		<field name="GL_FIRST_VERTEX_CONVENTION_EXT" />
-		<field name="GL_FRACTIONAL_EVEN_EXT" />
-		<field name="GL_FRACTIONAL_ODD_EXT" />
-		<field name="GL_FRAGMENT_INTERPOLATION_OFFSET_BITS_OES" />
-		<field name="GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT" />
-		<field name="GL_FRAMEBUFFER_DEFAULT_LAYERS_EXT" />
-		<field name="GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT" />
-		<field name="GL_GEOMETRY_LINKED_INPUT_TYPE_EXT" />
-		<field name="GL_GEOMETRY_LINKED_OUTPUT_TYPE_EXT" />
-		<field name="GL_GEOMETRY_LINKED_VERTICES_OUT_EXT" />
-		<field name="GL_GEOMETRY_SHADER_BIT_EXT" />
-		<field name="GL_GEOMETRY_SHADER_EXT" />
-		<field name="GL_GEOMETRY_SHADER_INVOCATIONS_EXT" />
-		<field name="GL_HARDLIGHT_KHR" />
-		<field name="GL_HSL_COLOR_KHR" />
-		<field name="GL_HSL_HUE_KHR" />
-		<field name="GL_HSL_LUMINOSITY_KHR" />
-		<field name="GL_HSL_SATURATION_KHR" />
-		<field name="GL_IMAGE_BUFFER_EXT" />
-		<field name="GL_IMAGE_CUBE_MAP_ARRAY_EXT" />
-		<field name="GL_INT_IMAGE_BUFFER_EXT" />
-		<field name="GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT" />
-		<field name="GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES" />
-		<field name="GL_INT_SAMPLER_BUFFER_EXT" />
-		<field name="GL_INT_SAMPLER_CUBE_MAP_ARRAY_EXT" />
-		<field name="GL_ISOLINES_EXT" />
-		<field name="GL_IS_PER_PATCH_EXT" />
-		<field name="GL_LAST_VERTEX_CONVENTION_EXT" />
-		<field name="GL_LAYER_PROVOKING_VERTEX_EXT" />
-		<field name="GL_LIGHTEN_KHR" />
-		<field name="GL_LINES_ADJACENCY_EXT" />
-		<field name="GL_LINE_STRIP_ADJACENCY_EXT" />
-		<field name="GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_EXT" />
-		<field name="GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS_EXT" />
-		<field name="GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT" />
-		<field name="GL_MAX_DEBUG_GROUP_STACK_DEPTH_KHR" />
-		<field name="GL_MAX_DEBUG_LOGGED_MESSAGES_KHR" />
-		<field name="GL_MAX_DEBUG_MESSAGE_LENGTH_KHR" />
-		<field name="GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_OES" />
-		<field name="GL_MAX_FRAMEBUFFER_LAYERS_EXT" />
-		<field name="GL_MAX_GEOMETRY_ATOMIC_COUNTERS_EXT" />
-		<field name="GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_EXT" />
-		<field name="GL_MAX_GEOMETRY_IMAGE_UNIFORMS_EXT" />
-		<field name="GL_MAX_GEOMETRY_INPUT_COMPONENTS_EXT" />
-		<field name="GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_EXT" />
-		<field name="GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT" />
-		<field name="GL_MAX_GEOMETRY_SHADER_INVOCATIONS_EXT" />
-		<field name="GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_EXT" />
-		<field name="GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT" />
-		<field name="GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT" />
-		<field name="GL_MAX_GEOMETRY_UNIFORM_BLOCKS_EXT" />
-		<field name="GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT" />
-		<field name="GL_MAX_LABEL_LENGTH_KHR" />
-		<field name="GL_MAX_PATCH_VERTICES_EXT" />
-		<field name="GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS_EXT" />
-		<field name="GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS_EXT" />
-		<field name="GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS_EXT" />
-		<field name="GL_MAX_TESS_CONTROL_INPUT_COMPONENTS_EXT" />
-		<field name="GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS_EXT" />
-		<field name="GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS_EXT" />
-		<field name="GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS_EXT" />
-		<field name="GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS_EXT" />
-		<field name="GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS_EXT" />
-		<field name="GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS_EXT" />
-		<field name="GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS_EXT" />
-		<field name="GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS_EXT" />
-		<field name="GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS_EXT" />
-		<field name="GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS_EXT" />
-		<field name="GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS_EXT" />
-		<field name="GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS_EXT" />
-		<field name="GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS_EXT" />
-		<field name="GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS_EXT" />
-		<field name="GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT" />
-		<field name="GL_MAX_TESS_GEN_LEVEL_EXT" />
-		<field name="GL_MAX_TESS_PATCH_COMPONENTS_EXT" />
-		<field name="GL_MAX_TEXTURE_BUFFER_SIZE_EXT" />
-		<field name="GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_OES" />
-		<field name="GL_MIN_SAMPLE_SHADING_VALUE_OES" />
-		<field name="GL_MULTIPLY_KHR" />
-		<field name="GL_OVERLAY_KHR" />
-		<field name="GL_PATCHES_EXT" />
-		<field name="GL_PATCH_VERTICES_EXT" />
-		<field name="GL_PRIMITIVES_GENERATED_EXT" />
-		<field name="GL_PRIMITIVE_BOUNDING_BOX_EXT" />
-		<field name="GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED" />
-		<field name="GL_PROGRAM_KHR" />
-		<field name="GL_QUADS_EXT" />
-		<field name="GL_QUERY_KHR" />
-		<field name="GL_REFERENCED_BY_GEOMETRY_SHADER_EXT" />
-		<field name="GL_REFERENCED_BY_TESS_CONTROL_SHADER_EXT" />
-		<field name="GL_REFERENCED_BY_TESS_EVALUATION_SHADER_EXT" />
-		<field name="GL_SAMPLER_2D_MULTISAMPLE_ARRAY_OES" />
-		<field name="GL_SAMPLER_BUFFER_EXT" />
-		<field name="GL_SAMPLER_CUBE_MAP_ARRAY_EXT" />
-		<field name="GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_EXT" />
-		<field name="GL_SAMPLER_KHR" />
-		<field name="GL_SAMPLE_SHADING_OES" />
-		<field name="GL_SCREEN_KHR" />
-		<field name="GL_SHADER_KHR" />
-		<field name="GL_SKIP_DECODE_EXT" />
-		<field name="GL_SOFTLIGHT_KHR" />
-		<field name="GL_STACK_OVERFLOW_KHR" />
-		<field name="GL_STACK_UNDERFLOW_KHR" />
-		<field name="GL_STENCIL_INDEX8_OES" />
-		<field name="GL_STENCIL_INDEX_OES" />
-		<field name="GL_TESS_CONTROL_OUTPUT_VERTICES_EXT" />
-		<field name="GL_TESS_CONTROL_SHADER_BIT_EXT" />
-		<field name="GL_TESS_CONTROL_SHADER_EXT" />
-		<field name="GL_TESS_EVALUATION_SHADER_BIT_EXT" />
-		<field name="GL_TESS_EVALUATION_SHADER_EXT" />
-		<field name="GL_TESS_GEN_MODE_EXT" />
-		<field name="GL_TESS_GEN_POINT_MODE_EXT" />
-		<field name="GL_TESS_GEN_SPACING_EXT" />
-		<field name="GL_TESS_GEN_VERTEX_ORDER_EXT" />
-		<field name="GL_TEXTURE_2D_MULTISAMPLE_ARRAY_OES" />
-		<field name="GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY_OES" />
-		<field name="GL_TEXTURE_BINDING_BUFFER_EXT" />
-		<field name="GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_EXT" />
-		<field name="GL_TEXTURE_BORDER_COLOR_EXT" />
-		<field name="GL_TEXTURE_BUFFER_BINDING_EXT" />
-		<field name="GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT" />
-		<field name="GL_TEXTURE_BUFFER_EXT" />
-		<field name="GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT_EXT" />
-		<field name="GL_TEXTURE_BUFFER_OFFSET_EXT" />
-		<field name="GL_TEXTURE_BUFFER_SIZE_EXT" />
-		<field name="GL_TEXTURE_CUBE_MAP_ARRAY_EXT" />
-		<field name="GL_TEXTURE_SRGB_DECODE_EXT" />
-		<field name="GL_TRIANGLES_ADJACENCY_EXT" />
-		<field name="GL_TRIANGLE_STRIP_ADJACENCY_EXT" />
-		<field name="GL_UNDEFINED_VERTEX_EXT" />
-		<field name="GL_UNSIGNED_INT_IMAGE_BUFFER_EXT" />
-		<field name="GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT" />
-		<field name="GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES" />
-		<field name="GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT" />
-		<field name="GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_EXT" />
-		<field name="GL_VERTEX_ARRAY_KHR" />
-	</class>
-	<class name="android/opengl/GLES31Ext$DebugProcKHR" since="21">
-		<extends name="java/lang/Object" />
-		<method name="onMessage(IIIILjava/lang/String;)V" />
-	</class>
-	<class name="android/opengl/GLException" since="1">
-		<extends name="java/lang/RuntimeException" />
-		<method name="&lt;init>(I)V" />
-		<method name="&lt;init>(ILjava/lang/String;)V" />
-	</class>
-	<class name="android/opengl/GLSurfaceView" since="3">
-		<extends name="android/view/SurfaceView" />
-		<implements name="android/view/SurfaceHolder$Callback" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="getDebugFlags()I" />
-		<method name="getPreserveEGLContextOnPause()Z" since="11" />
-		<method name="getRenderMode()I" />
-		<method name="onPause()V" />
-		<method name="onResume()V" />
-		<method name="queueEvent(Ljava/lang/Runnable;)V" />
-		<method name="requestRender()V" />
-		<method name="setDebugFlags(I)V" />
-		<method name="setEGLConfigChooser(IIIIII)V" />
-		<method name="setEGLConfigChooser(Landroid/opengl/GLSurfaceView$EGLConfigChooser;)V" />
-		<method name="setEGLConfigChooser(Z)V" />
-		<method name="setEGLContextClientVersion(I)V" since="8" />
-		<method name="setEGLContextFactory(Landroid/opengl/GLSurfaceView$EGLContextFactory;)V" since="5" />
-		<method name="setEGLWindowSurfaceFactory(Landroid/opengl/GLSurfaceView$EGLWindowSurfaceFactory;)V" since="5" />
-		<method name="setGLWrapper(Landroid/opengl/GLSurfaceView$GLWrapper;)V" />
-		<method name="setPreserveEGLContextOnPause(Z)V" since="11" />
-		<method name="setRenderMode(I)V" />
-		<method name="setRenderer(Landroid/opengl/GLSurfaceView$Renderer;)V" />
-		<field name="DEBUG_CHECK_GL_ERROR" />
-		<field name="DEBUG_LOG_GL_CALLS" />
-		<field name="RENDERMODE_CONTINUOUSLY" />
-		<field name="RENDERMODE_WHEN_DIRTY" />
-	</class>
-	<class name="android/opengl/GLSurfaceView$EGLConfigChooser" since="3">
-		<extends name="java/lang/Object" />
-		<method name="chooseConfig(Ljavax/microedition/khronos/egl/EGL10;Ljavax/microedition/khronos/egl/EGLDisplay;)Ljavax/microedition/khronos/egl/EGLConfig;" />
-	</class>
-	<class name="android/opengl/GLSurfaceView$EGLContextFactory" since="5">
-		<extends name="java/lang/Object" />
-		<method name="createContext(Ljavax/microedition/khronos/egl/EGL10;Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLConfig;)Ljavax/microedition/khronos/egl/EGLContext;" />
-		<method name="destroyContext(Ljavax/microedition/khronos/egl/EGL10;Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLContext;)V" />
-	</class>
-	<class name="android/opengl/GLSurfaceView$EGLWindowSurfaceFactory" since="5">
-		<extends name="java/lang/Object" />
-		<method name="createWindowSurface(Ljavax/microedition/khronos/egl/EGL10;Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLConfig;Ljava/lang/Object;)Ljavax/microedition/khronos/egl/EGLSurface;" />
-		<method name="destroySurface(Ljavax/microedition/khronos/egl/EGL10;Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLSurface;)V" />
-	</class>
-	<class name="android/opengl/GLSurfaceView$GLWrapper" since="3">
-		<extends name="java/lang/Object" />
-		<method name="wrap(Ljavax/microedition/khronos/opengles/GL;)Ljavax/microedition/khronos/opengles/GL;" />
-	</class>
-	<class name="android/opengl/GLSurfaceView$Renderer" since="3">
-		<extends name="java/lang/Object" />
-		<method name="onDrawFrame(Ljavax/microedition/khronos/opengles/GL10;)V" />
-		<method name="onSurfaceChanged(Ljavax/microedition/khronos/opengles/GL10;II)V" />
-		<method name="onSurfaceCreated(Ljavax/microedition/khronos/opengles/GL10;Ljavax/microedition/khronos/egl/EGLConfig;)V" />
-	</class>
-	<class name="android/opengl/GLU" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="gluErrorString(I)Ljava/lang/String;" />
-		<method name="gluLookAt(Ljavax/microedition/khronos/opengles/GL10;FFFFFFFFF)V" />
-		<method name="gluOrtho2D(Ljavax/microedition/khronos/opengles/GL10;FFFF)V" />
-		<method name="gluPerspective(Ljavax/microedition/khronos/opengles/GL10;FFFF)V" />
-		<method name="gluProject(FFF[FI[FI[II[FI)I" />
-		<method name="gluUnProject(FFF[FI[FI[II[FI)I" />
-	</class>
-	<class name="android/opengl/GLUtils" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getEGLErrorString(I)Ljava/lang/String;" since="14" />
-		<method name="getInternalFormat(Landroid/graphics/Bitmap;)I" />
-		<method name="getType(Landroid/graphics/Bitmap;)I" />
-		<method name="texImage2D(IIILandroid/graphics/Bitmap;I)V" />
-		<method name="texImage2D(IIILandroid/graphics/Bitmap;II)V" />
-		<method name="texImage2D(IILandroid/graphics/Bitmap;I)V" />
-		<method name="texSubImage2D(IIIILandroid/graphics/Bitmap;)V" />
-		<method name="texSubImage2D(IIIILandroid/graphics/Bitmap;II)V" />
-	</class>
-	<class name="android/opengl/Matrix" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="frustumM([FIFFFFFF)V" />
-		<method name="invertM([FI[FI)Z" />
-		<method name="length(FFF)F" />
-		<method name="multiplyMM([FI[FI[FI)V" />
-		<method name="multiplyMV([FI[FI[FI)V" />
-		<method name="orthoM([FIFFFFFF)V" />
-		<method name="perspectiveM([FIFFFF)V" since="14" />
-		<method name="rotateM([FIFFFF)V" />
-		<method name="rotateM([FI[FIFFFF)V" />
-		<method name="scaleM([FIFFF)V" />
-		<method name="scaleM([FI[FIFFF)V" />
-		<method name="setIdentityM([FI)V" />
-		<method name="setLookAtM([FIFFFFFFFFF)V" since="8" />
-		<method name="setRotateEulerM([FIFFF)V" />
-		<method name="setRotateM([FIFFFF)V" />
-		<method name="translateM([FIFFF)V" />
-		<method name="translateM([FI[FIFFF)V" />
-		<method name="transposeM([FI[FI)V" />
-	</class>
-	<class name="android/opengl/Visibility" since="3">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="computeBoundingSphere([FII[FI)V" />
-		<method name="frustumCullSpheres([FI[FII[III)I" />
-		<method name="visibilityTest([FI[FI[CII)I" />
-	</class>
-	<class name="android/os/AsyncTask" since="3">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="cancel(Z)Z" />
-		<method name="doInBackground([Ljava/lang/Object;)Ljava/lang/Object;" />
-		<method name="execute(Ljava/lang/Runnable;)V" since="11" />
-		<method name="execute([Ljava/lang/Object;)Landroid/os/AsyncTask;" />
-		<method name="executeOnExecutor(Ljava/util/concurrent/Executor;[Ljava/lang/Object;)Landroid/os/AsyncTask;" since="11" />
-		<method name="get()Ljava/lang/Object;" />
-		<method name="get(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object;" />
-		<method name="getStatus()Landroid/os/AsyncTask$Status;" />
-		<method name="isCancelled()Z" />
-		<method name="onCancelled()V" />
-		<method name="onCancelled(Ljava/lang/Object;)V" since="11" />
-		<method name="onPostExecute(Ljava/lang/Object;)V" />
-		<method name="onPreExecute()V" />
-		<method name="onProgressUpdate([Ljava/lang/Object;)V" />
-		<method name="publishProgress([Ljava/lang/Object;)V" />
-		<field name="SERIAL_EXECUTOR" since="11" />
-		<field name="THREAD_POOL_EXECUTOR" since="11" />
-	</class>
-	<class name="android/os/AsyncTask$Status" since="3">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Landroid/os/AsyncTask$Status;" />
-		<method name="values()[Landroid/os/AsyncTask$Status;" />
-		<field name="FINISHED" />
-		<field name="PENDING" />
-		<field name="RUNNING" />
-	</class>
-	<class name="android/os/BadParcelableException" since="1">
-		<extends name="android/util/AndroidRuntimeException" />
-		<method name="&lt;init>(Ljava/lang/Exception;)V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/os/BaseBundle" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="clear()V" />
-		<method name="containsKey(Ljava/lang/String;)Z" />
-		<method name="get(Ljava/lang/String;)Ljava/lang/Object;" />
-		<method name="getDouble(Ljava/lang/String;)D" />
-		<method name="getDouble(Ljava/lang/String;D)D" />
-		<method name="getDoubleArray(Ljava/lang/String;)[D" />
-		<method name="getInt(Ljava/lang/String;)I" />
-		<method name="getInt(Ljava/lang/String;I)I" />
-		<method name="getIntArray(Ljava/lang/String;)[I" />
-		<method name="getLong(Ljava/lang/String;)J" />
-		<method name="getLong(Ljava/lang/String;J)J" />
-		<method name="getLongArray(Ljava/lang/String;)[J" />
-		<method name="getString(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="getStringArray(Ljava/lang/String;)[Ljava/lang/String;" />
-		<method name="isEmpty()Z" />
-		<method name="keySet()Ljava/util/Set;" />
-		<method name="putAll(Landroid/os/PersistableBundle;)V" />
-		<method name="putDouble(Ljava/lang/String;D)V" />
-		<method name="putDoubleArray(Ljava/lang/String;[D)V" />
-		<method name="putInt(Ljava/lang/String;I)V" />
-		<method name="putIntArray(Ljava/lang/String;[I)V" />
-		<method name="putLong(Ljava/lang/String;J)V" />
-		<method name="putLongArray(Ljava/lang/String;[J)V" />
-		<method name="putString(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="putStringArray(Ljava/lang/String;[Ljava/lang/String;)V" />
-		<method name="remove(Ljava/lang/String;)V" />
-		<method name="size()I" />
-	</class>
-	<class name="android/os/BatteryManager" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getIntProperty(I)I" since="21" />
-		<method name="getLongProperty(I)J" since="21" />
-		<field name="BATTERY_HEALTH_COLD" since="11" />
-		<field name="BATTERY_HEALTH_DEAD" />
-		<field name="BATTERY_HEALTH_GOOD" />
-		<field name="BATTERY_HEALTH_OVERHEAT" />
-		<field name="BATTERY_HEALTH_OVER_VOLTAGE" />
-		<field name="BATTERY_HEALTH_UNKNOWN" />
-		<field name="BATTERY_HEALTH_UNSPECIFIED_FAILURE" />
-		<field name="BATTERY_PLUGGED_AC" />
-		<field name="BATTERY_PLUGGED_USB" />
-		<field name="BATTERY_PLUGGED_WIRELESS" since="17" />
-		<field name="BATTERY_PROPERTY_CAPACITY" since="21" />
-		<field name="BATTERY_PROPERTY_CHARGE_COUNTER" since="21" />
-		<field name="BATTERY_PROPERTY_CURRENT_AVERAGE" since="21" />
-		<field name="BATTERY_PROPERTY_CURRENT_NOW" since="21" />
-		<field name="BATTERY_PROPERTY_ENERGY_COUNTER" since="21" />
-		<field name="BATTERY_STATUS_CHARGING" />
-		<field name="BATTERY_STATUS_DISCHARGING" />
-		<field name="BATTERY_STATUS_FULL" />
-		<field name="BATTERY_STATUS_NOT_CHARGING" />
-		<field name="BATTERY_STATUS_UNKNOWN" />
-		<field name="EXTRA_HEALTH" since="5" />
-		<field name="EXTRA_ICON_SMALL" since="5" />
-		<field name="EXTRA_LEVEL" since="5" />
-		<field name="EXTRA_PLUGGED" since="5" />
-		<field name="EXTRA_PRESENT" since="5" />
-		<field name="EXTRA_SCALE" since="5" />
-		<field name="EXTRA_STATUS" since="5" />
-		<field name="EXTRA_TECHNOLOGY" since="5" />
-		<field name="EXTRA_TEMPERATURE" since="5" />
-		<field name="EXTRA_VOLTAGE" since="5" />
-	</class>
-	<class name="android/os/Binder" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/IBinder" />
-		<method name="&lt;init>()V" />
-		<method name="attachInterface(Landroid/os/IInterface;Ljava/lang/String;)V" />
-		<method name="clearCallingIdentity()J" />
-		<method name="dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V" />
-		<method name="flushPendingCommands()V" />
-		<method name="getCallingPid()I" />
-		<method name="getCallingUid()I" />
-		<method name="getCallingUserHandle()Landroid/os/UserHandle;" since="17" />
-		<method name="joinThreadPool()V" />
-		<method name="onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z" />
-		<method name="restoreCallingIdentity(J)V" />
-	</class>
-	<class name="android/os/Build" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getRadioVersion()Ljava/lang/String;" since="14" />
-		<field name="BOARD" />
-		<field name="BOOTLOADER" since="8" />
-		<field name="BRAND" />
-		<field name="CPU_ABI" since="4" />
-		<field name="CPU_ABI2" since="8" />
-		<field name="DEVICE" />
-		<field name="DISPLAY" since="3" />
-		<field name="FINGERPRINT" />
-		<field name="HARDWARE" since="8" />
-		<field name="HOST" />
-		<field name="ID" />
-		<field name="MANUFACTURER" since="4" />
-		<field name="MODEL" />
-		<field name="PRODUCT" />
-		<field name="RADIO" since="8" />
-		<field name="SERIAL" since="9" />
-		<field name="TAGS" />
-		<field name="TIME" />
-		<field name="TYPE" />
-		<field name="UNKNOWN" since="8" />
-		<field name="USER" />
-	</class>
-	<class name="android/os/Build$VERSION" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="CODENAME" since="4" />
-		<field name="INCREMENTAL" />
-		<field name="RELEASE" />
-		<field name="SDK" />
-		<field name="SDK_INT" since="4" />
-	</class>
-	<class name="android/os/Build$VERSION_CODES" since="4">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="BASE" />
-		<field name="BASE_1_1" />
-		<field name="CUPCAKE" />
-		<field name="CUR_DEVELOPMENT" />
-		<field name="DONUT" />
-		<field name="ECLAIR" since="5" />
-		<field name="ECLAIR_0_1" since="6" />
-		<field name="ECLAIR_MR1" since="7" />
-		<field name="FROYO" since="8" />
-		<field name="GINGERBREAD" since="9" />
-		<field name="GINGERBREAD_MR1" since="10" />
-		<field name="HONEYCOMB" since="11" />
-		<field name="HONEYCOMB_MR1" since="12" />
-		<field name="HONEYCOMB_MR2" since="13" />
-		<field name="ICE_CREAM_SANDWICH" since="14" />
-		<field name="ICE_CREAM_SANDWICH_MR1" since="15" />
-		<field name="JELLY_BEAN" since="16" />
-		<field name="JELLY_BEAN_MR1" since="17" />
-		<field name="JELLY_BEAN_MR2" since="18" />
-		<field name="KITKAT" since="19" />
-		<field name="KITKAT_WATCH" since="20" />
-		<field name="L" since="21" />
-	</class>
-	<class name="android/os/Bundle" since="1">
-		<extends name="android/os/BaseBundle" since="21" />
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<implements name="java/lang/Cloneable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(I)V" />
-		<method name="&lt;init>(Landroid/os/Bundle;)V" />
-		<method name="&lt;init>(Landroid/os/PersistableBundle;)V" since="21" />
-		<method name="&lt;init>(Ljava/lang/ClassLoader;)V" />
-		<method name="clear()V" />
-		<method name="containsKey(Ljava/lang/String;)Z" />
-		<method name="get(Ljava/lang/String;)Ljava/lang/Object;" />
-		<method name="getBinder(Ljava/lang/String;)Landroid/os/IBinder;" since="18" />
-		<method name="getBoolean(Ljava/lang/String;)Z" />
-		<method name="getBoolean(Ljava/lang/String;Z)Z" />
-		<method name="getBooleanArray(Ljava/lang/String;)[Z" />
-		<method name="getBundle(Ljava/lang/String;)Landroid/os/Bundle;" />
-		<method name="getByte(Ljava/lang/String;)B" />
-		<method name="getByte(Ljava/lang/String;B)Ljava/lang/Byte;" />
-		<method name="getByteArray(Ljava/lang/String;)[B" />
-		<method name="getChar(Ljava/lang/String;)C" />
-		<method name="getChar(Ljava/lang/String;C)C" />
-		<method name="getCharArray(Ljava/lang/String;)[C" />
-		<method name="getCharSequence(Ljava/lang/String;)Ljava/lang/CharSequence;" />
-		<method name="getCharSequence(Ljava/lang/String;Ljava/lang/CharSequence;)Ljava/lang/CharSequence;" since="12" />
-		<method name="getCharSequenceArray(Ljava/lang/String;)[Ljava/lang/CharSequence;" since="8" />
-		<method name="getCharSequenceArrayList(Ljava/lang/String;)Ljava/util/ArrayList;" since="8" />
-		<method name="getClassLoader()Ljava/lang/ClassLoader;" since="11" />
-		<method name="getDouble(Ljava/lang/String;)D" />
-		<method name="getDouble(Ljava/lang/String;D)D" />
-		<method name="getDoubleArray(Ljava/lang/String;)[D" />
-		<method name="getFloat(Ljava/lang/String;)F" />
-		<method name="getFloat(Ljava/lang/String;F)F" />
-		<method name="getFloatArray(Ljava/lang/String;)[F" />
-		<method name="getInt(Ljava/lang/String;)I" />
-		<method name="getInt(Ljava/lang/String;I)I" />
-		<method name="getIntArray(Ljava/lang/String;)[I" />
-		<method name="getIntegerArrayList(Ljava/lang/String;)Ljava/util/ArrayList;" />
-		<method name="getLong(Ljava/lang/String;)J" />
-		<method name="getLong(Ljava/lang/String;J)J" />
-		<method name="getLongArray(Ljava/lang/String;)[J" />
-		<method name="getParcelable(Ljava/lang/String;)Landroid/os/Parcelable;" />
-		<method name="getParcelableArray(Ljava/lang/String;)[Landroid/os/Parcelable;" />
-		<method name="getParcelableArrayList(Ljava/lang/String;)Ljava/util/ArrayList;" />
-		<method name="getSerializable(Ljava/lang/String;)Ljava/io/Serializable;" />
-		<method name="getShort(Ljava/lang/String;)S" />
-		<method name="getShort(Ljava/lang/String;S)S" />
-		<method name="getShortArray(Ljava/lang/String;)[S" />
-		<method name="getSparseParcelableArray(Ljava/lang/String;)Landroid/util/SparseArray;" />
-		<method name="getString(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" since="12" />
-		<method name="getStringArray(Ljava/lang/String;)[Ljava/lang/String;" />
-		<method name="getStringArrayList(Ljava/lang/String;)Ljava/util/ArrayList;" />
-		<method name="hasFileDescriptors()Z" />
-		<method name="isEmpty()Z" />
-		<method name="keySet()Ljava/util/Set;" />
-		<method name="putAll(Landroid/os/Bundle;)V" />
-		<method name="putBinder(Ljava/lang/String;Landroid/os/IBinder;)V" since="18" />
-		<method name="putBoolean(Ljava/lang/String;Z)V" />
-		<method name="putBooleanArray(Ljava/lang/String;[Z)V" />
-		<method name="putBundle(Ljava/lang/String;Landroid/os/Bundle;)V" />
-		<method name="putByte(Ljava/lang/String;B)V" />
-		<method name="putByteArray(Ljava/lang/String;[B)V" />
-		<method name="putChar(Ljava/lang/String;C)V" />
-		<method name="putCharArray(Ljava/lang/String;[C)V" />
-		<method name="putCharSequence(Ljava/lang/String;Ljava/lang/CharSequence;)V" />
-		<method name="putCharSequenceArray(Ljava/lang/String;[Ljava/lang/CharSequence;)V" since="8" />
-		<method name="putCharSequenceArrayList(Ljava/lang/String;Ljava/util/ArrayList;)V" since="8" />
-		<method name="putDouble(Ljava/lang/String;D)V" />
-		<method name="putDoubleArray(Ljava/lang/String;[D)V" />
-		<method name="putFloat(Ljava/lang/String;F)V" />
-		<method name="putFloatArray(Ljava/lang/String;[F)V" />
-		<method name="putInt(Ljava/lang/String;I)V" />
-		<method name="putIntArray(Ljava/lang/String;[I)V" />
-		<method name="putIntegerArrayList(Ljava/lang/String;Ljava/util/ArrayList;)V" />
-		<method name="putLong(Ljava/lang/String;J)V" />
-		<method name="putLongArray(Ljava/lang/String;[J)V" />
-		<method name="putParcelable(Ljava/lang/String;Landroid/os/Parcelable;)V" />
-		<method name="putParcelableArray(Ljava/lang/String;[Landroid/os/Parcelable;)V" />
-		<method name="putParcelableArrayList(Ljava/lang/String;Ljava/util/ArrayList;)V" />
-		<method name="putSerializable(Ljava/lang/String;Ljava/io/Serializable;)V" />
-		<method name="putShort(Ljava/lang/String;S)V" />
-		<method name="putShortArray(Ljava/lang/String;[S)V" />
-		<method name="putSparseParcelableArray(Ljava/lang/String;Landroid/util/SparseArray;)V" />
-		<method name="putString(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="putStringArray(Ljava/lang/String;[Ljava/lang/String;)V" />
-		<method name="putStringArrayList(Ljava/lang/String;Ljava/util/ArrayList;)V" />
-		<method name="readFromParcel(Landroid/os/Parcel;)V" />
-		<method name="remove(Ljava/lang/String;)V" />
-		<method name="setClassLoader(Ljava/lang/ClassLoader;)V" />
-		<method name="size()I" />
-		<field name="CREATOR" />
-		<field name="EMPTY" />
-	</class>
-	<class name="android/os/CancellationSignal" since="16">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="cancel()V" />
-		<method name="isCanceled()Z" />
-		<method name="setOnCancelListener(Landroid/os/CancellationSignal$OnCancelListener;)V" />
-		<method name="throwIfCanceled()V" />
-	</class>
-	<class name="android/os/CancellationSignal$OnCancelListener" since="16">
-		<extends name="java/lang/Object" />
-		<method name="onCancel()V" />
-	</class>
-	<class name="android/os/ConditionVariable" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Z)V" />
-		<method name="block()V" />
-		<method name="block(J)Z" />
-		<method name="close()V" />
-		<method name="open()V" />
-	</class>
-	<class name="android/os/CountDownTimer" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(JJ)V" />
-		<method name="cancel()V" />
-		<method name="onFinish()V" />
-		<method name="onTick(J)V" />
-		<method name="start()Landroid/os/CountDownTimer;" />
-	</class>
-	<class name="android/os/DeadObjectException" since="1">
-		<extends name="android/os/RemoteException" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="android/os/Debug" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="changeDebugPort(I)V" />
-		<method name="dumpHprofData(Ljava/lang/String;)V" since="3" />
-		<method name="dumpService(Ljava/lang/String;Ljava/io/FileDescriptor;[Ljava/lang/String;)Z" since="8" />
-		<method name="enableEmulatorTraceOutput()V" />
-		<method name="getBinderDeathObjectCount()I" />
-		<method name="getBinderLocalObjectCount()I" />
-		<method name="getBinderProxyObjectCount()I" />
-		<method name="getBinderReceivedTransactions()I" />
-		<method name="getBinderSentTransactions()I" />
-		<method name="getGlobalAllocCount()I" />
-		<method name="getGlobalAllocSize()I" />
-		<method name="getGlobalClassInitCount()I" since="8" />
-		<method name="getGlobalClassInitTime()I" since="8" />
-		<method name="getGlobalExternalAllocCount()I" />
-		<method name="getGlobalExternalAllocSize()I" />
-		<method name="getGlobalExternalFreedCount()I" />
-		<method name="getGlobalExternalFreedSize()I" />
-		<method name="getGlobalFreedCount()I" />
-		<method name="getGlobalFreedSize()I" />
-		<method name="getGlobalGcInvocationCount()I" />
-		<method name="getLoadedClassCount()I" />
-		<method name="getMemoryInfo(Landroid/os/Debug$MemoryInfo;)V" />
-		<method name="getNativeHeapAllocatedSize()J" />
-		<method name="getNativeHeapFreeSize()J" />
-		<method name="getNativeHeapSize()J" />
-		<method name="getPss()J" since="14" />
-		<method name="getThreadAllocCount()I" />
-		<method name="getThreadAllocSize()I" />
-		<method name="getThreadExternalAllocCount()I" />
-		<method name="getThreadExternalAllocSize()I" />
-		<method name="getThreadGcInvocationCount()I" />
-		<method name="isDebuggerConnected()Z" />
-		<method name="printLoadedClasses(I)V" />
-		<method name="resetAllCounts()V" />
-		<method name="resetGlobalAllocCount()V" />
-		<method name="resetGlobalAllocSize()V" />
-		<method name="resetGlobalClassInitCount()V" since="8" />
-		<method name="resetGlobalClassInitTime()V" since="8" />
-		<method name="resetGlobalExternalAllocCount()V" />
-		<method name="resetGlobalExternalAllocSize()V" />
-		<method name="resetGlobalExternalFreedCount()V" />
-		<method name="resetGlobalExternalFreedSize()V" />
-		<method name="resetGlobalFreedCount()V" />
-		<method name="resetGlobalFreedSize()V" />
-		<method name="resetGlobalGcInvocationCount()V" />
-		<method name="resetThreadAllocCount()V" />
-		<method name="resetThreadAllocSize()V" />
-		<method name="resetThreadExternalAllocCount()V" />
-		<method name="resetThreadExternalAllocSize()V" />
-		<method name="resetThreadGcInvocationCount()V" />
-		<method name="setAllocationLimit(I)I" />
-		<method name="setGlobalAllocationLimit(I)I" />
-		<method name="startAllocCounting()V" />
-		<method name="startMethodTracing()V" />
-		<method name="startMethodTracing(Ljava/lang/String;)V" />
-		<method name="startMethodTracing(Ljava/lang/String;I)V" />
-		<method name="startMethodTracing(Ljava/lang/String;II)V" />
-		<method name="startMethodTracingSampling(Ljava/lang/String;II)V" since="21" />
-		<method name="startNativeTracing()V" />
-		<method name="stopAllocCounting()V" />
-		<method name="stopMethodTracing()V" />
-		<method name="stopNativeTracing()V" />
-		<method name="threadCpuTimeNanos()J" />
-		<method name="waitForDebugger()V" />
-		<method name="waitingForDebugger()Z" />
-		<field name="SHOW_CLASSLOADER" />
-		<field name="SHOW_FULL_DETAIL" />
-		<field name="SHOW_INITIALIZED" />
-		<field name="TRACE_COUNT_ALLOCS" />
-	</class>
-	<class name="android/os/Debug$InstructionCount" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="collect()Z" />
-		<method name="globalMethodInvocations()I" />
-		<method name="globalTotal()I" />
-		<method name="resetAndStart()Z" />
-	</class>
-	<class name="android/os/Debug$MemoryInfo" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" since="5" />
-		<method name="&lt;init>()V" />
-		<method name="getOtherLabel(I)Ljava/lang/String;" since="14" />
-		<method name="getOtherPrivateDirty(I)I" since="14" />
-		<method name="getOtherPss(I)I" since="14" />
-		<method name="getOtherSharedDirty(I)I" since="14" />
-		<method name="getTotalPrivateClean()I" since="19" />
-		<method name="getTotalPrivateDirty()I" since="5" />
-		<method name="getTotalPss()I" since="5" />
-		<method name="getTotalSharedClean()I" since="19" />
-		<method name="getTotalSharedDirty()I" since="5" />
-		<method name="getTotalSwappablePss()I" since="19" />
-		<method name="readFromParcel(Landroid/os/Parcel;)V" since="5" />
-		<field name="CREATOR" since="5" />
-		<field name="dalvikPrivateDirty" />
-		<field name="dalvikPss" />
-		<field name="dalvikSharedDirty" />
-		<field name="nativePrivateDirty" />
-		<field name="nativePss" />
-		<field name="nativeSharedDirty" />
-		<field name="otherPrivateDirty" />
-		<field name="otherPss" />
-		<field name="otherSharedDirty" />
-	</class>
-	<class name="android/os/DropBoxManager" since="8">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="addData(Ljava/lang/String;[BI)V" />
-		<method name="addFile(Ljava/lang/String;Ljava/io/File;I)V" />
-		<method name="addText(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="getNextEntry(Ljava/lang/String;J)Landroid/os/DropBoxManager$Entry;" />
-		<method name="isTagEnabled(Ljava/lang/String;)Z" />
-		<field name="ACTION_DROPBOX_ENTRY_ADDED" since="11" />
-		<field name="EXTRA_TAG" since="11" />
-		<field name="EXTRA_TIME" since="11" />
-		<field name="IS_EMPTY" />
-		<field name="IS_GZIPPED" />
-		<field name="IS_TEXT" />
-	</class>
-	<class name="android/os/DropBoxManager$Entry" since="8">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<implements name="java/io/Closeable" since="9" />
-		<method name="&lt;init>(Ljava/lang/String;J)V" />
-		<method name="&lt;init>(Ljava/lang/String;JLandroid/os/ParcelFileDescriptor;I)V" />
-		<method name="&lt;init>(Ljava/lang/String;JLjava/io/File;I)V" />
-		<method name="&lt;init>(Ljava/lang/String;JLjava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;J[BI)V" />
-		<method name="close()V" />
-		<method name="getFlags()I" />
-		<method name="getInputStream()Ljava/io/InputStream;" />
-		<method name="getTag()Ljava/lang/String;" />
-		<method name="getText(I)Ljava/lang/String;" />
-		<method name="getTimeMillis()J" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/os/Environment" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getDataDirectory()Ljava/io/File;" />
-		<method name="getDownloadCacheDirectory()Ljava/io/File;" />
-		<method name="getExternalStorageDirectory()Ljava/io/File;" />
-		<method name="getExternalStoragePublicDirectory(Ljava/lang/String;)Ljava/io/File;" since="8" />
-		<method name="getExternalStorageState()Ljava/lang/String;" />
-		<method name="getExternalStorageState(Ljava/io/File;)Ljava/lang/String;" since="21" />
-		<method name="getRootDirectory()Ljava/io/File;" />
-		<method name="getStorageState(Ljava/io/File;)Ljava/lang/String;" since="19" />
-		<method name="isExternalStorageEmulated()Z" since="11" />
-		<method name="isExternalStorageEmulated(Ljava/io/File;)Z" since="21" />
-		<method name="isExternalStorageRemovable()Z" since="9" />
-		<method name="isExternalStorageRemovable(Ljava/io/File;)Z" since="21" />
-		<field name="DIRECTORY_ALARMS" since="8" />
-		<field name="DIRECTORY_DCIM" since="8" />
-		<field name="DIRECTORY_DOCUMENTS" since="19" />
-		<field name="DIRECTORY_DOWNLOADS" since="8" />
-		<field name="DIRECTORY_MOVIES" since="8" />
-		<field name="DIRECTORY_MUSIC" since="8" />
-		<field name="DIRECTORY_NOTIFICATIONS" since="8" />
-		<field name="DIRECTORY_PICTURES" since="8" />
-		<field name="DIRECTORY_PODCASTS" since="8" />
-		<field name="DIRECTORY_RINGTONES" since="8" />
-		<field name="MEDIA_BAD_REMOVAL" />
-		<field name="MEDIA_CHECKING" since="3" />
-		<field name="MEDIA_MOUNTED" />
-		<field name="MEDIA_MOUNTED_READ_ONLY" />
-		<field name="MEDIA_NOFS" since="3" />
-		<field name="MEDIA_REMOVED" />
-		<field name="MEDIA_SHARED" />
-		<field name="MEDIA_UNKNOWN" since="19" />
-		<field name="MEDIA_UNMOUNTABLE" />
-		<field name="MEDIA_UNMOUNTED" />
-	</class>
-	<class name="android/os/FileObserver" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;I)V" />
-		<method name="onEvent(ILjava/lang/String;)V" />
-		<method name="startWatching()V" />
-		<method name="stopWatching()V" />
-		<field name="ACCESS" />
-		<field name="ALL_EVENTS" />
-		<field name="ATTRIB" />
-		<field name="CLOSE_NOWRITE" />
-		<field name="CLOSE_WRITE" />
-		<field name="CREATE" />
-		<field name="DELETE" />
-		<field name="DELETE_SELF" />
-		<field name="MODIFY" />
-		<field name="MOVED_FROM" />
-		<field name="MOVED_TO" />
-		<field name="MOVE_SELF" />
-		<field name="OPEN" />
-	</class>
-	<class name="android/os/Handler" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/os/Handler$Callback;)V" since="3" />
-		<method name="&lt;init>(Landroid/os/Looper;)V" />
-		<method name="&lt;init>(Landroid/os/Looper;Landroid/os/Handler$Callback;)V" since="3" />
-		<method name="dispatchMessage(Landroid/os/Message;)V" />
-		<method name="dump(Landroid/util/Printer;Ljava/lang/String;)V" />
-		<method name="getLooper()Landroid/os/Looper;" />
-		<method name="getMessageName(Landroid/os/Message;)Ljava/lang/String;" since="14" />
-		<method name="handleMessage(Landroid/os/Message;)V" />
-		<method name="hasMessages(I)Z" />
-		<method name="hasMessages(ILjava/lang/Object;)Z" />
-		<method name="obtainMessage()Landroid/os/Message;" />
-		<method name="obtainMessage(I)Landroid/os/Message;" />
-		<method name="obtainMessage(III)Landroid/os/Message;" />
-		<method name="obtainMessage(IIILjava/lang/Object;)Landroid/os/Message;" />
-		<method name="obtainMessage(ILjava/lang/Object;)Landroid/os/Message;" />
-		<method name="post(Ljava/lang/Runnable;)Z" />
-		<method name="postAtFrontOfQueue(Ljava/lang/Runnable;)Z" />
-		<method name="postAtTime(Ljava/lang/Runnable;J)Z" />
-		<method name="postAtTime(Ljava/lang/Runnable;Ljava/lang/Object;J)Z" />
-		<method name="postDelayed(Ljava/lang/Runnable;J)Z" />
-		<method name="removeCallbacks(Ljava/lang/Runnable;)V" />
-		<method name="removeCallbacks(Ljava/lang/Runnable;Ljava/lang/Object;)V" />
-		<method name="removeCallbacksAndMessages(Ljava/lang/Object;)V" />
-		<method name="removeMessages(I)V" />
-		<method name="removeMessages(ILjava/lang/Object;)V" />
-		<method name="sendEmptyMessage(I)Z" />
-		<method name="sendEmptyMessageAtTime(IJ)Z" />
-		<method name="sendEmptyMessageDelayed(IJ)Z" />
-		<method name="sendMessage(Landroid/os/Message;)Z" />
-		<method name="sendMessageAtFrontOfQueue(Landroid/os/Message;)Z" />
-		<method name="sendMessageAtTime(Landroid/os/Message;J)Z" />
-		<method name="sendMessageDelayed(Landroid/os/Message;J)Z" />
-	</class>
-	<class name="android/os/Handler$Callback" since="3">
-		<extends name="java/lang/Object" />
-		<method name="handleMessage(Landroid/os/Message;)Z" />
-	</class>
-	<class name="android/os/HandlerThread" since="1">
-		<extends name="java/lang/Thread" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;I)V" />
-		<method name="getLooper()Landroid/os/Looper;" />
-		<method name="getThreadId()I" />
-		<method name="onLooperPrepared()V" />
-		<method name="quit()Z" since="5" />
-		<method name="quitSafely()Z" since="18" />
-	</class>
-	<class name="android/os/IBinder" since="1">
-		<extends name="java/lang/Object" />
-		<method name="dump(Ljava/io/FileDescriptor;[Ljava/lang/String;)V" since="3" />
-		<method name="dumpAsync(Ljava/io/FileDescriptor;[Ljava/lang/String;)V" since="13" />
-		<method name="getInterfaceDescriptor()Ljava/lang/String;" />
-		<method name="isBinderAlive()Z" />
-		<method name="linkToDeath(Landroid/os/IBinder$DeathRecipient;I)V" />
-		<method name="pingBinder()Z" />
-		<method name="queryLocalInterface(Ljava/lang/String;)Landroid/os/IInterface;" />
-		<method name="transact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z" />
-		<method name="unlinkToDeath(Landroid/os/IBinder$DeathRecipient;I)Z" />
-		<field name="DUMP_TRANSACTION" />
-		<field name="FIRST_CALL_TRANSACTION" />
-		<field name="FLAG_ONEWAY" />
-		<field name="INTERFACE_TRANSACTION" />
-		<field name="LAST_CALL_TRANSACTION" />
-		<field name="LIKE_TRANSACTION" since="15" />
-		<field name="PING_TRANSACTION" />
-		<field name="TWEET_TRANSACTION" since="13" />
-	</class>
-	<class name="android/os/IBinder$DeathRecipient" since="1">
-		<extends name="java/lang/Object" />
-		<method name="binderDied()V" />
-	</class>
-	<class name="android/os/IInterface" since="1">
-		<extends name="java/lang/Object" />
-		<method name="asBinder()Landroid/os/IBinder;" />
-	</class>
-	<class name="android/os/Looper" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="dump(Landroid/util/Printer;Ljava/lang/String;)V" />
-		<method name="getMainLooper()Landroid/os/Looper;" />
-		<method name="getThread()Ljava/lang/Thread;" since="3" />
-		<method name="loop()V" />
-		<method name="myLooper()Landroid/os/Looper;" />
-		<method name="myQueue()Landroid/os/MessageQueue;" />
-		<method name="prepare()V" />
-		<method name="prepareMainLooper()V" />
-		<method name="quit()V" />
-		<method name="quitSafely()V" since="18" />
-		<method name="setMessageLogging(Landroid/util/Printer;)V" />
-	</class>
-	<class name="android/os/MemoryFile" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/lang/String;I)V" />
-		<method name="allowPurging(Z)Z" />
-		<method name="close()V" />
-		<method name="getInputStream()Ljava/io/InputStream;" />
-		<method name="getOutputStream()Ljava/io/OutputStream;" />
-		<method name="isPurgingAllowed()Z" />
-		<method name="length()I" />
-		<method name="readBytes([BIII)I" />
-		<method name="writeBytes([BIII)V" />
-	</class>
-	<class name="android/os/Message" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="copyFrom(Landroid/os/Message;)V" />
-		<method name="getCallback()Ljava/lang/Runnable;" />
-		<method name="getData()Landroid/os/Bundle;" />
-		<method name="getTarget()Landroid/os/Handler;" />
-		<method name="getWhen()J" />
-		<method name="obtain()Landroid/os/Message;" />
-		<method name="obtain(Landroid/os/Handler;)Landroid/os/Message;" />
-		<method name="obtain(Landroid/os/Handler;I)Landroid/os/Message;" />
-		<method name="obtain(Landroid/os/Handler;III)Landroid/os/Message;" />
-		<method name="obtain(Landroid/os/Handler;IIILjava/lang/Object;)Landroid/os/Message;" />
-		<method name="obtain(Landroid/os/Handler;ILjava/lang/Object;)Landroid/os/Message;" />
-		<method name="obtain(Landroid/os/Handler;Ljava/lang/Runnable;)Landroid/os/Message;" />
-		<method name="obtain(Landroid/os/Message;)Landroid/os/Message;" />
-		<method name="peekData()Landroid/os/Bundle;" />
-		<method name="recycle()V" />
-		<method name="sendToTarget()V" />
-		<method name="setData(Landroid/os/Bundle;)V" />
-		<method name="setTarget(Landroid/os/Handler;)V" />
-		<field name="CREATOR" />
-		<field name="arg1" />
-		<field name="arg2" />
-		<field name="obj" />
-		<field name="replyTo" />
-		<field name="what" />
-	</class>
-	<class name="android/os/MessageQueue" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="addIdleHandler(Landroid/os/MessageQueue$IdleHandler;)V" />
-		<method name="removeIdleHandler(Landroid/os/MessageQueue$IdleHandler;)V" />
-	</class>
-	<class name="android/os/MessageQueue$IdleHandler" since="1">
-		<extends name="java/lang/Object" />
-		<method name="queueIdle()Z" />
-	</class>
-	<class name="android/os/Messenger" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>(Landroid/os/Handler;)V" />
-		<method name="&lt;init>(Landroid/os/IBinder;)V" />
-		<method name="getBinder()Landroid/os/IBinder;" />
-		<method name="readMessengerOrNullFromParcel(Landroid/os/Parcel;)Landroid/os/Messenger;" />
-		<method name="send(Landroid/os/Message;)V" />
-		<method name="writeMessengerOrNullToParcel(Landroid/os/Messenger;Landroid/os/Parcel;)V" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/os/NetworkOnMainThreadException" since="11">
-		<extends name="java/lang/RuntimeException" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="android/os/OperationCanceledException" since="16">
-		<extends name="java/lang/RuntimeException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/os/Parcel" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="appendFrom(Landroid/os/Parcel;II)V" />
-		<method name="createBinderArray()[Landroid/os/IBinder;" />
-		<method name="createBinderArrayList()Ljava/util/ArrayList;" />
-		<method name="createBooleanArray()[Z" />
-		<method name="createByteArray()[B" />
-		<method name="createCharArray()[C" />
-		<method name="createDoubleArray()[D" />
-		<method name="createFloatArray()[F" />
-		<method name="createIntArray()[I" />
-		<method name="createLongArray()[J" />
-		<method name="createStringArray()[Ljava/lang/String;" />
-		<method name="createStringArrayList()Ljava/util/ArrayList;" />
-		<method name="createTypedArray(Landroid/os/Parcelable$Creator;)[Ljava/lang/Object;" />
-		<method name="createTypedArrayList(Landroid/os/Parcelable$Creator;)Ljava/util/ArrayList;" />
-		<method name="dataAvail()I" />
-		<method name="dataCapacity()I" />
-		<method name="dataPosition()I" />
-		<method name="dataSize()I" />
-		<method name="enforceInterface(Ljava/lang/String;)V" />
-		<method name="hasFileDescriptors()Z" />
-		<method name="marshall()[B" />
-		<method name="obtain()Landroid/os/Parcel;" />
-		<method name="obtain(I)Landroid/os/Parcel;" />
-		<method name="readArray(Ljava/lang/ClassLoader;)[Ljava/lang/Object;" />
-		<method name="readArrayList(Ljava/lang/ClassLoader;)Ljava/util/ArrayList;" />
-		<method name="readBinderArray([Landroid/os/IBinder;)V" />
-		<method name="readBinderList(Ljava/util/List;)V" />
-		<method name="readBooleanArray([Z)V" />
-		<method name="readBundle()Landroid/os/Bundle;" />
-		<method name="readBundle(Ljava/lang/ClassLoader;)Landroid/os/Bundle;" />
-		<method name="readByte()B" />
-		<method name="readByteArray([B)V" />
-		<method name="readCharArray([C)V" />
-		<method name="readDouble()D" />
-		<method name="readDoubleArray([D)V" />
-		<method name="readException()V" />
-		<method name="readException(ILjava/lang/String;)V" />
-		<method name="readFileDescriptor()Landroid/os/ParcelFileDescriptor;" />
-		<method name="readFloat()F" />
-		<method name="readFloatArray([F)V" />
-		<method name="readHashMap(Ljava/lang/ClassLoader;)Ljava/util/HashMap;" />
-		<method name="readInt()I" />
-		<method name="readIntArray([I)V" />
-		<method name="readList(Ljava/util/List;Ljava/lang/ClassLoader;)V" />
-		<method name="readLong()J" />
-		<method name="readLongArray([J)V" />
-		<method name="readMap(Ljava/util/Map;Ljava/lang/ClassLoader;)V" />
-		<method name="readParcelable(Ljava/lang/ClassLoader;)Landroid/os/Parcelable;" />
-		<method name="readParcelableArray(Ljava/lang/ClassLoader;)[Landroid/os/Parcelable;" />
-		<method name="readPersistableBundle()Landroid/os/PersistableBundle;" since="21" />
-		<method name="readPersistableBundle(Ljava/lang/ClassLoader;)Landroid/os/PersistableBundle;" since="21" />
-		<method name="readSerializable()Ljava/io/Serializable;" />
-		<method name="readSparseArray(Ljava/lang/ClassLoader;)Landroid/util/SparseArray;" />
-		<method name="readSparseBooleanArray()Landroid/util/SparseBooleanArray;" />
-		<method name="readString()Ljava/lang/String;" />
-		<method name="readStringArray([Ljava/lang/String;)V" />
-		<method name="readStringList(Ljava/util/List;)V" />
-		<method name="readStrongBinder()Landroid/os/IBinder;" />
-		<method name="readTypedArray([Ljava/lang/Object;Landroid/os/Parcelable$Creator;)V" />
-		<method name="readTypedList(Ljava/util/List;Landroid/os/Parcelable$Creator;)V" />
-		<method name="readValue(Ljava/lang/ClassLoader;)Ljava/lang/Object;" />
-		<method name="recycle()V" />
-		<method name="setDataCapacity(I)V" />
-		<method name="setDataPosition(I)V" />
-		<method name="setDataSize(I)V" />
-		<method name="unmarshall([BII)V" />
-		<method name="writeArray([Ljava/lang/Object;)V" />
-		<method name="writeBinderArray([Landroid/os/IBinder;)V" />
-		<method name="writeBinderList(Ljava/util/List;)V" />
-		<method name="writeBooleanArray([Z)V" />
-		<method name="writeBundle(Landroid/os/Bundle;)V" />
-		<method name="writeByte(B)V" />
-		<method name="writeByteArray([B)V" />
-		<method name="writeByteArray([BII)V" />
-		<method name="writeCharArray([C)V" />
-		<method name="writeDouble(D)V" />
-		<method name="writeDoubleArray([D)V" />
-		<method name="writeException(Ljava/lang/Exception;)V" />
-		<method name="writeFileDescriptor(Ljava/io/FileDescriptor;)V" />
-		<method name="writeFloat(F)V" />
-		<method name="writeFloatArray([F)V" />
-		<method name="writeInt(I)V" />
-		<method name="writeIntArray([I)V" />
-		<method name="writeInterfaceToken(Ljava/lang/String;)V" />
-		<method name="writeList(Ljava/util/List;)V" />
-		<method name="writeLong(J)V" />
-		<method name="writeLongArray([J)V" />
-		<method name="writeMap(Ljava/util/Map;)V" />
-		<method name="writeNoException()V" />
-		<method name="writeParcelable(Landroid/os/Parcelable;I)V" />
-		<method name="writeParcelableArray([Landroid/os/Parcelable;I)V" />
-		<method name="writePersistableBundle(Landroid/os/PersistableBundle;)V" since="21" />
-		<method name="writeSerializable(Ljava/io/Serializable;)V" />
-		<method name="writeSparseArray(Landroid/util/SparseArray;)V" />
-		<method name="writeSparseBooleanArray(Landroid/util/SparseBooleanArray;)V" />
-		<method name="writeString(Ljava/lang/String;)V" />
-		<method name="writeStringArray([Ljava/lang/String;)V" />
-		<method name="writeStringList(Ljava/util/List;)V" />
-		<method name="writeStrongBinder(Landroid/os/IBinder;)V" />
-		<method name="writeStrongInterface(Landroid/os/IInterface;)V" />
-		<method name="writeTypedArray([Landroid/os/Parcelable;I)V" />
-		<method name="writeTypedList(Ljava/util/List;)V" />
-		<method name="writeValue(Ljava/lang/Object;)V" />
-		<field name="STRING_CREATOR" />
-	</class>
-	<class name="android/os/ParcelFileDescriptor" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<implements name="java/io/Closeable" since="16" />
-		<method name="&lt;init>(Landroid/os/ParcelFileDescriptor;)V" />
-		<method name="adoptFd(I)Landroid/os/ParcelFileDescriptor;" since="13" />
-		<method name="canDetectErrors()Z" since="19" />
-		<method name="checkError()V" since="19" />
-		<method name="close()V" />
-		<method name="closeWithError(Ljava/lang/String;)V" since="19" />
-		<method name="createPipe()[Landroid/os/ParcelFileDescriptor;" since="9" />
-		<method name="createReliablePipe()[Landroid/os/ParcelFileDescriptor;" since="19" />
-		<method name="createReliableSocketPair()[Landroid/os/ParcelFileDescriptor;" since="19" />
-		<method name="createSocketPair()[Landroid/os/ParcelFileDescriptor;" since="19" />
-		<method name="detachFd()I" since="12" />
-		<method name="dup()Landroid/os/ParcelFileDescriptor;" since="14" />
-		<method name="dup(Ljava/io/FileDescriptor;)Landroid/os/ParcelFileDescriptor;" since="13" />
-		<method name="fromDatagramSocket(Ljava/net/DatagramSocket;)Landroid/os/ParcelFileDescriptor;" since="14" />
-		<method name="fromFd(I)Landroid/os/ParcelFileDescriptor;" since="13" />
-		<method name="fromSocket(Ljava/net/Socket;)Landroid/os/ParcelFileDescriptor;" />
-		<method name="getFd()I" since="12" />
-		<method name="getFileDescriptor()Ljava/io/FileDescriptor;" />
-		<method name="getStatSize()J" since="3" />
-		<method name="open(Ljava/io/File;I)Landroid/os/ParcelFileDescriptor;" />
-		<method name="open(Ljava/io/File;ILandroid/os/Handler;Landroid/os/ParcelFileDescriptor$OnCloseListener;)Landroid/os/ParcelFileDescriptor;" since="19" />
-		<method name="parseMode(Ljava/lang/String;)I" since="19" />
-		<field name="CREATOR" />
-		<field name="MODE_APPEND" since="3" />
-		<field name="MODE_CREATE" />
-		<field name="MODE_READ_ONLY" />
-		<field name="MODE_READ_WRITE" />
-		<field name="MODE_TRUNCATE" />
-		<field name="MODE_WORLD_READABLE" />
-		<field name="MODE_WORLD_WRITEABLE" />
-		<field name="MODE_WRITE_ONLY" />
-	</class>
-	<class name="android/os/ParcelFileDescriptor$AutoCloseInputStream" since="1">
-		<extends name="java/io/FileInputStream" />
-		<method name="&lt;init>(Landroid/os/ParcelFileDescriptor;)V" />
-	</class>
-	<class name="android/os/ParcelFileDescriptor$AutoCloseOutputStream" since="1">
-		<extends name="java/io/FileOutputStream" />
-		<method name="&lt;init>(Landroid/os/ParcelFileDescriptor;)V" />
-	</class>
-	<class name="android/os/ParcelFileDescriptor$FileDescriptorDetachedException" since="19">
-		<extends name="java/io/IOException" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="android/os/ParcelFileDescriptor$OnCloseListener" since="19">
-		<extends name="java/lang/Object" />
-		<method name="onClose(Ljava/io/IOException;)V" />
-	</class>
-	<class name="android/os/ParcelFormatException" since="1">
-		<extends name="java/lang/RuntimeException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/os/ParcelUuid" since="5">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>(Ljava/util/UUID;)V" />
-		<method name="fromString(Ljava/lang/String;)Landroid/os/ParcelUuid;" />
-		<method name="getUuid()Ljava/util/UUID;" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/os/Parcelable" since="1">
-		<extends name="java/lang/Object" />
-		<method name="describeContents()I" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
-		<field name="CONTENTS_FILE_DESCRIPTOR" />
-		<field name="PARCELABLE_WRITE_RETURN_VALUE" />
-	</class>
-	<class name="android/os/Parcelable$ClassLoaderCreator" since="13">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable$Creator" />
-		<method name="createFromParcel(Landroid/os/Parcel;Ljava/lang/ClassLoader;)Ljava/lang/Object;" />
-	</class>
-	<class name="android/os/Parcelable$Creator" since="1">
-		<extends name="java/lang/Object" />
-		<method name="createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;" />
-		<method name="newArray(I)[Ljava/lang/Object;" />
-	</class>
-	<class name="android/os/PatternMatcher" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>(Landroid/os/Parcel;)V" />
-		<method name="&lt;init>(Ljava/lang/String;I)V" />
-		<method name="getPath()Ljava/lang/String;" />
-		<method name="getType()I" />
-		<method name="match(Ljava/lang/String;)Z" />
-		<field name="CREATOR" />
-		<field name="PATTERN_LITERAL" />
-		<field name="PATTERN_PREFIX" />
-		<field name="PATTERN_SIMPLE_GLOB" />
-	</class>
-	<class name="android/os/PersistableBundle" since="21">
-		<extends name="android/os/BaseBundle" />
-		<implements name="android/os/Parcelable" />
-		<implements name="java/lang/Cloneable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(I)V" />
-		<method name="&lt;init>(Landroid/os/PersistableBundle;)V" />
-		<method name="getPersistableBundle(Ljava/lang/String;)Landroid/os/PersistableBundle;" />
-		<method name="putPersistableBundle(Ljava/lang/String;Landroid/os/PersistableBundle;)V" />
-		<field name="CREATOR" />
-		<field name="EMPTY" />
-	</class>
-	<class name="android/os/PowerManager" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="goToSleep(J)V" />
-		<method name="isInteractive()Z" since="20" />
-		<method name="isPowerSaveMode()Z" since="21" />
-		<method name="isScreenOn()Z" since="7" />
-		<method name="newWakeLock(ILjava/lang/String;)Landroid/os/PowerManager$WakeLock;" />
-		<method name="reboot(Ljava/lang/String;)V" since="8" />
-		<method name="userActivity(JZ)V" />
-		<method name="wakeUp(J)V" since="17" />
-		<field name="ACQUIRE_CAUSES_WAKEUP" />
-		<field name="ACTION_POWER_SAVE_MODE_CHANGED" since="21" />
-		<field name="FULL_WAKE_LOCK" />
-		<field name="ON_AFTER_RELEASE" />
-		<field name="PARTIAL_WAKE_LOCK" />
-		<field name="REBOOT_RECOVERY" since="21" />
-		<field name="SCREEN_BRIGHT_WAKE_LOCK" />
-		<field name="SCREEN_DIM_WAKE_LOCK" />
-	</class>
-	<class name="android/os/PowerManager$WakeLock" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/os/PowerManager;)V" />
-		<method name="acquire()V" />
-		<method name="acquire(J)V" />
-		<method name="isHeld()Z" />
-		<method name="release()V" />
-		<method name="setReferenceCounted(Z)V" />
-		<method name="setWorkSource(Landroid/os/WorkSource;)V" since="9" />
-	</class>
-	<class name="android/os/Process" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getElapsedCpuTime()J" />
-		<method name="getGidForName(Ljava/lang/String;)I" />
-		<method name="getThreadPriority(I)I" />
-		<method name="getUidForName(Ljava/lang/String;)I" />
-		<method name="killProcess(I)V" />
-		<method name="myPid()I" />
-		<method name="myTid()I" />
-		<method name="myUid()I" since="2" />
-		<method name="myUserHandle()Landroid/os/UserHandle;" since="17" />
-		<method name="sendSignal(II)V" />
-		<method name="setThreadPriority(I)V" />
-		<method name="setThreadPriority(II)V" />
-		<method name="supportsProcesses()Z" />
-		<field name="BLUETOOTH_GID" />
-		<field name="FIRST_APPLICATION_UID" />
-		<field name="LAST_APPLICATION_UID" />
-		<field name="PHONE_UID" />
-		<field name="SIGNAL_KILL" />
-		<field name="SIGNAL_QUIT" />
-		<field name="SIGNAL_USR1" />
-		<field name="SYSTEM_UID" />
-		<field name="THREAD_PRIORITY_AUDIO" />
-		<field name="THREAD_PRIORITY_BACKGROUND" />
-		<field name="THREAD_PRIORITY_DEFAULT" />
-		<field name="THREAD_PRIORITY_DISPLAY" />
-		<field name="THREAD_PRIORITY_FOREGROUND" />
-		<field name="THREAD_PRIORITY_LESS_FAVORABLE" />
-		<field name="THREAD_PRIORITY_LOWEST" />
-		<field name="THREAD_PRIORITY_MORE_FAVORABLE" />
-		<field name="THREAD_PRIORITY_URGENT_AUDIO" />
-		<field name="THREAD_PRIORITY_URGENT_DISPLAY" />
-	</class>
-	<class name="android/os/RecoverySystem" since="8">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="installPackage(Landroid/content/Context;Ljava/io/File;)V" />
-		<method name="rebootWipeCache(Landroid/content/Context;)V" since="14" />
-		<method name="rebootWipeUserData(Landroid/content/Context;)V" />
-		<method name="verifyPackage(Ljava/io/File;Landroid/os/RecoverySystem$ProgressListener;Ljava/io/File;)V" />
-	</class>
-	<class name="android/os/RecoverySystem$ProgressListener" since="8">
-		<extends name="java/lang/Object" />
-		<method name="onProgress(I)V" />
-	</class>
-	<class name="android/os/RemoteCallbackList" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="beginBroadcast()I" />
-		<method name="finishBroadcast()V" />
-		<method name="getBroadcastCookie(I)Ljava/lang/Object;" since="4" />
-		<method name="getBroadcastItem(I)Landroid/os/IInterface;" />
-		<method name="getRegisteredCallbackCount()I" since="17" />
-		<method name="kill()V" />
-		<method name="onCallbackDied(Landroid/os/IInterface;)V" />
-		<method name="onCallbackDied(Landroid/os/IInterface;Ljava/lang/Object;)V" since="4" />
-		<method name="register(Landroid/os/IInterface;)Z" />
-		<method name="register(Landroid/os/IInterface;Ljava/lang/Object;)Z" since="4" />
-		<method name="unregister(Landroid/os/IInterface;)Z" />
-	</class>
-	<class name="android/os/RemoteException" since="1">
-		<extends name="android/util/AndroidException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" since="15" />
-	</class>
-	<class name="android/os/ResultReceiver" since="3">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>(Landroid/os/Handler;)V" />
-		<method name="onReceiveResult(ILandroid/os/Bundle;)V" />
-		<method name="send(ILandroid/os/Bundle;)V" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/os/StatFs" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="getAvailableBlocks()I" />
-		<method name="getAvailableBlocksLong()J" since="18" />
-		<method name="getAvailableBytes()J" since="18" />
-		<method name="getBlockCount()I" />
-		<method name="getBlockCountLong()J" since="18" />
-		<method name="getBlockSize()I" />
-		<method name="getBlockSizeLong()J" since="18" />
-		<method name="getFreeBlocks()I" />
-		<method name="getFreeBlocksLong()J" since="18" />
-		<method name="getFreeBytes()J" since="18" />
-		<method name="getTotalBytes()J" since="18" />
-		<method name="restat(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/os/StrictMode" since="9">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="allowThreadDiskReads()Landroid/os/StrictMode$ThreadPolicy;" />
-		<method name="allowThreadDiskWrites()Landroid/os/StrictMode$ThreadPolicy;" />
-		<method name="enableDefaults()V" />
-		<method name="getThreadPolicy()Landroid/os/StrictMode$ThreadPolicy;" />
-		<method name="getVmPolicy()Landroid/os/StrictMode$VmPolicy;" />
-		<method name="noteSlowCall(Ljava/lang/String;)V" since="11" />
-		<method name="setThreadPolicy(Landroid/os/StrictMode$ThreadPolicy;)V" />
-		<method name="setVmPolicy(Landroid/os/StrictMode$VmPolicy;)V" />
-	</class>
-	<class name="android/os/StrictMode$ThreadPolicy" since="9">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="LAX" />
-	</class>
-	<class name="android/os/StrictMode$ThreadPolicy$Builder" since="9">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/os/StrictMode$ThreadPolicy;)V" />
-		<method name="build()Landroid/os/StrictMode$ThreadPolicy;" />
-		<method name="detectAll()Landroid/os/StrictMode$ThreadPolicy$Builder;" />
-		<method name="detectCustomSlowCalls()Landroid/os/StrictMode$ThreadPolicy$Builder;" since="11" />
-		<method name="detectDiskReads()Landroid/os/StrictMode$ThreadPolicy$Builder;" />
-		<method name="detectDiskWrites()Landroid/os/StrictMode$ThreadPolicy$Builder;" />
-		<method name="detectNetwork()Landroid/os/StrictMode$ThreadPolicy$Builder;" />
-		<method name="penaltyDeath()Landroid/os/StrictMode$ThreadPolicy$Builder;" />
-		<method name="penaltyDeathOnNetwork()Landroid/os/StrictMode$ThreadPolicy$Builder;" since="11" />
-		<method name="penaltyDialog()Landroid/os/StrictMode$ThreadPolicy$Builder;" />
-		<method name="penaltyDropBox()Landroid/os/StrictMode$ThreadPolicy$Builder;" />
-		<method name="penaltyFlashScreen()Landroid/os/StrictMode$ThreadPolicy$Builder;" since="11" />
-		<method name="penaltyLog()Landroid/os/StrictMode$ThreadPolicy$Builder;" />
-		<method name="permitAll()Landroid/os/StrictMode$ThreadPolicy$Builder;" />
-		<method name="permitCustomSlowCalls()Landroid/os/StrictMode$ThreadPolicy$Builder;" since="11" />
-		<method name="permitDiskReads()Landroid/os/StrictMode$ThreadPolicy$Builder;" />
-		<method name="permitDiskWrites()Landroid/os/StrictMode$ThreadPolicy$Builder;" />
-		<method name="permitNetwork()Landroid/os/StrictMode$ThreadPolicy$Builder;" />
-	</class>
-	<class name="android/os/StrictMode$VmPolicy" since="9">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="LAX" />
-	</class>
-	<class name="android/os/StrictMode$VmPolicy$Builder" since="9">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/os/StrictMode$VmPolicy;)V" since="11" />
-		<method name="build()Landroid/os/StrictMode$VmPolicy;" />
-		<method name="detectActivityLeaks()Landroid/os/StrictMode$VmPolicy$Builder;" since="11" />
-		<method name="detectAll()Landroid/os/StrictMode$VmPolicy$Builder;" />
-		<method name="detectFileUriExposure()Landroid/os/StrictMode$VmPolicy$Builder;" since="18" />
-		<method name="detectLeakedClosableObjects()Landroid/os/StrictMode$VmPolicy$Builder;" since="11" />
-		<method name="detectLeakedRegistrationObjects()Landroid/os/StrictMode$VmPolicy$Builder;" since="16" />
-		<method name="detectLeakedSqlLiteObjects()Landroid/os/StrictMode$VmPolicy$Builder;" />
-		<method name="penaltyDeath()Landroid/os/StrictMode$VmPolicy$Builder;" />
-		<method name="penaltyDropBox()Landroid/os/StrictMode$VmPolicy$Builder;" />
-		<method name="penaltyLog()Landroid/os/StrictMode$VmPolicy$Builder;" />
-		<method name="setClassInstanceLimit(Ljava/lang/Class;I)Landroid/os/StrictMode$VmPolicy$Builder;" since="11" />
-	</class>
-	<class name="android/os/SystemClock" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="currentThreadTimeMillis()J" />
-		<method name="elapsedRealtime()J" />
-		<method name="elapsedRealtimeNanos()J" since="17" />
-		<method name="setCurrentTimeMillis(J)Z" />
-		<method name="sleep(J)V" />
-		<method name="uptimeMillis()J" />
-	</class>
-	<class name="android/os/TokenWatcher" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/os/Handler;Ljava/lang/String;)V" />
-		<method name="acquire(Landroid/os/IBinder;Ljava/lang/String;)V" />
-		<method name="acquired()V" />
-		<method name="cleanup(Landroid/os/IBinder;Z)V" />
-		<method name="dump()V" />
-		<method name="dump(Ljava/io/PrintWriter;)V" since="16" />
-		<method name="isAcquired()Z" />
-		<method name="release(Landroid/os/IBinder;)V" />
-		<method name="released()V" />
-	</class>
-	<class name="android/os/Trace" since="18">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="beginSection(Ljava/lang/String;)V" />
-		<method name="endSection()V" />
-	</class>
-	<class name="android/os/TransactionTooLargeException" since="15">
-		<extends name="android/os/RemoteException" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="android/os/UserHandle" since="17">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>(Landroid/os/Parcel;)V" />
-		<method name="readFromParcel(Landroid/os/Parcel;)Landroid/os/UserHandle;" />
-		<method name="writeToParcel(Landroid/os/UserHandle;Landroid/os/Parcel;)V" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/os/UserManager" since="17">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getApplicationRestrictions(Ljava/lang/String;)Landroid/os/Bundle;" since="18" />
-		<method name="getBadgedDrawableForUser(Landroid/graphics/drawable/Drawable;Landroid/os/UserHandle;)Landroid/graphics/drawable/Drawable;" since="21" />
-		<method name="getSerialNumberForUser(Landroid/os/UserHandle;)J" />
-		<method name="getUserCount()I" />
-		<method name="getUserForSerialNumber(J)Landroid/os/UserHandle;" />
-		<method name="getUserName()Ljava/lang/String;" />
-		<method name="getUserProfiles()Ljava/util/List;" since="21" />
-		<method name="getUserRestrictions()Landroid/os/Bundle;" since="18" />
-		<method name="getUserRestrictions(Landroid/os/UserHandle;)Landroid/os/Bundle;" since="18" />
-		<method name="isUserAGoat()Z" />
-		<method name="isUserRunning(Landroid/os/UserHandle;)Z" />
-		<method name="isUserRunningOrStopping(Landroid/os/UserHandle;)Z" />
-		<method name="setRestrictionsChallenge(Ljava/lang/String;)Z" since="19" />
-		<method name="setUserRestriction(Ljava/lang/String;Z)V" since="18" />
-		<method name="setUserRestrictions(Landroid/os/Bundle;)V" since="18" />
-		<method name="setUserRestrictions(Landroid/os/Bundle;Landroid/os/UserHandle;)V" since="18" />
-		<field name="DISALLOW_ADD_USER" since="21" />
-		<field name="DISALLOW_ADJUST_VOLUME" since="21" />
-		<field name="DISALLOW_CONFIG_APPS" since="21" />
-		<field name="DISALLOW_CONFIG_BLUETOOTH" since="18" />
-		<field name="DISALLOW_CONFIG_CELL_BROADCASTS" since="21" />
-		<field name="DISALLOW_CONFIG_CREDENTIALS" since="18" />
-		<field name="DISALLOW_CONFIG_MOBILE_NETWORKS" since="21" />
-		<field name="DISALLOW_CONFIG_TETHERING" since="21" />
-		<field name="DISALLOW_CONFIG_VPN" since="21" />
-		<field name="DISALLOW_CONFIG_WIFI" since="18" />
-		<field name="DISALLOW_DEBUGGING_FEATURES" since="21" />
-		<field name="DISALLOW_FACTORY_RESET" since="21" />
-		<field name="DISALLOW_INSTALL_APPS" since="18" />
-		<field name="DISALLOW_INSTALL_UNKNOWN_SOURCES" since="18" />
-		<field name="DISALLOW_MODIFY_ACCOUNTS" since="18" />
-		<field name="DISALLOW_MOUNT_PHYSICAL_MEDIA" since="21" />
-		<field name="DISALLOW_REMOVE_USER" since="18" />
-		<field name="DISALLOW_SHARE_LOCATION" since="18" />
-		<field name="DISALLOW_TELEPHONY" since="21" />
-		<field name="DISALLOW_UNINSTALL_APPS" since="18" />
-		<field name="DISALLOW_UNMUTE_MICROPHONE" since="21" />
-		<field name="DISALLOW_USB_FILE_TRANSFER" since="18" />
-		<field name="ENSURE_VERIFY_APPS" since="21" />
-	</class>
-	<class name="android/os/Vibrator" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="cancel()V" />
-		<method name="hasVibrator()Z" since="11" />
-		<method name="vibrate(J)V" />
-		<method name="vibrate([JI)V" />
-	</class>
-	<class name="android/os/WorkSource" since="9">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/os/WorkSource;)V" />
-		<method name="add(Landroid/os/WorkSource;)Z" />
-		<method name="clear()V" />
-		<method name="diff(Landroid/os/WorkSource;)Z" />
-		<method name="remove(Landroid/os/WorkSource;)Z" />
-		<method name="set(Landroid/os/WorkSource;)V" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/os/storage/OnObbStateChangeListener" since="9">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="onObbStateChange(Ljava/lang/String;I)V" />
-		<field name="ERROR_ALREADY_MOUNTED" />
-		<field name="ERROR_COULD_NOT_MOUNT" />
-		<field name="ERROR_COULD_NOT_UNMOUNT" />
-		<field name="ERROR_INTERNAL" />
-		<field name="ERROR_NOT_MOUNTED" />
-		<field name="ERROR_PERMISSION_DENIED" />
-		<field name="MOUNTED" />
-		<field name="UNMOUNTED" />
-	</class>
-	<class name="android/os/storage/StorageManager" since="9">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getMountedObbPath(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="isObbMounted(Ljava/lang/String;)Z" />
-		<method name="mountObb(Ljava/lang/String;Ljava/lang/String;Landroid/os/storage/OnObbStateChangeListener;)Z" />
-		<method name="unmountObb(Ljava/lang/String;ZLandroid/os/storage/OnObbStateChangeListener;)Z" />
-	</class>
-	<class name="android/preference/CheckBoxPreference" since="1">
-		<extends name="android/preference/Preference" />
-		<extends name="android/preference/TwoStatePreference" since="14" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-		<method name="getDisableDependentsState()Z" />
-		<method name="getSummaryOff()Ljava/lang/CharSequence;" />
-		<method name="getSummaryOn()Ljava/lang/CharSequence;" />
-		<method name="isChecked()Z" />
-		<method name="setChecked(Z)V" />
-		<method name="setDisableDependentsState(Z)V" />
-		<method name="setSummaryOff(I)V" />
-		<method name="setSummaryOff(Ljava/lang/CharSequence;)V" />
-		<method name="setSummaryOn(I)V" />
-		<method name="setSummaryOn(Ljava/lang/CharSequence;)V" />
-	</class>
-	<class name="android/preference/DialogPreference" since="1">
-		<extends name="android/preference/Preference" />
-		<implements name="android/content/DialogInterface$OnClickListener" />
-		<implements name="android/content/DialogInterface$OnDismissListener" />
-		<implements name="android/preference/PreferenceManager$OnActivityDestroyListener" />
-		<method name="&lt;init>(Landroid/content/Context;)V" since="21" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-		<method name="getDialog()Landroid/app/Dialog;" since="3" />
-		<method name="getDialogIcon()Landroid/graphics/drawable/Drawable;" />
-		<method name="getDialogLayoutResource()I" />
-		<method name="getDialogMessage()Ljava/lang/CharSequence;" />
-		<method name="getDialogTitle()Ljava/lang/CharSequence;" />
-		<method name="getNegativeButtonText()Ljava/lang/CharSequence;" />
-		<method name="getPositiveButtonText()Ljava/lang/CharSequence;" />
-		<method name="onBindDialogView(Landroid/view/View;)V" />
-		<method name="onCreateDialogView()Landroid/view/View;" />
-		<method name="onDialogClosed(Z)V" />
-		<method name="onPrepareDialogBuilder(Landroid/app/AlertDialog$Builder;)V" />
-		<method name="setDialogIcon(I)V" />
-		<method name="setDialogIcon(Landroid/graphics/drawable/Drawable;)V" />
-		<method name="setDialogLayoutResource(I)V" />
-		<method name="setDialogMessage(I)V" />
-		<method name="setDialogMessage(Ljava/lang/CharSequence;)V" />
-		<method name="setDialogTitle(I)V" />
-		<method name="setDialogTitle(Ljava/lang/CharSequence;)V" />
-		<method name="setNegativeButtonText(I)V" />
-		<method name="setNegativeButtonText(Ljava/lang/CharSequence;)V" />
-		<method name="setPositiveButtonText(I)V" />
-		<method name="setPositiveButtonText(Ljava/lang/CharSequence;)V" />
-		<method name="showDialog(Landroid/os/Bundle;)V" />
-	</class>
-	<class name="android/preference/EditTextPreference" since="1">
-		<extends name="android/preference/DialogPreference" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-		<method name="getEditText()Landroid/widget/EditText;" />
-		<method name="getText()Ljava/lang/String;" />
-		<method name="onAddEditTextToDialogView(Landroid/view/View;Landroid/widget/EditText;)V" />
-		<method name="setText(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/preference/ListPreference" since="1">
-		<extends name="android/preference/DialogPreference" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" since="21" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-		<method name="findIndexOfValue(Ljava/lang/String;)I" />
-		<method name="getEntries()[Ljava/lang/CharSequence;" />
-		<method name="getEntry()Ljava/lang/CharSequence;" />
-		<method name="getEntryValues()[Ljava/lang/CharSequence;" />
-		<method name="getValue()Ljava/lang/String;" />
-		<method name="setEntries(I)V" />
-		<method name="setEntries([Ljava/lang/CharSequence;)V" />
-		<method name="setEntryValues(I)V" />
-		<method name="setEntryValues([Ljava/lang/CharSequence;)V" />
-		<method name="setValue(Ljava/lang/String;)V" />
-		<method name="setValueIndex(I)V" />
-	</class>
-	<class name="android/preference/MultiSelectListPreference" since="11">
-		<extends name="android/preference/DialogPreference" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" since="21" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-		<method name="findIndexOfValue(Ljava/lang/String;)I" />
-		<method name="getEntries()[Ljava/lang/CharSequence;" />
-		<method name="getEntryValues()[Ljava/lang/CharSequence;" />
-		<method name="getValues()Ljava/util/Set;" />
-		<method name="setEntries(I)V" />
-		<method name="setEntries([Ljava/lang/CharSequence;)V" />
-		<method name="setEntryValues(I)V" />
-		<method name="setEntryValues([Ljava/lang/CharSequence;)V" />
-		<method name="setValues(Ljava/util/Set;)V" />
-	</class>
-	<class name="android/preference/Preference" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/Comparable" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-		<method name="callChangeListener(Ljava/lang/Object;)Z" />
-		<method name="compareTo(Landroid/preference/Preference;)I" />
-		<method name="findPreferenceInHierarchy(Ljava/lang/String;)Landroid/preference/Preference;" />
-		<method name="getContext()Landroid/content/Context;" />
-		<method name="getDependency()Ljava/lang/String;" />
-		<method name="getEditor()Landroid/content/SharedPreferences$Editor;" />
-		<method name="getExtras()Landroid/os/Bundle;" since="11" />
-		<method name="getFragment()Ljava/lang/String;" since="11" />
-		<method name="getIcon()Landroid/graphics/drawable/Drawable;" since="11" />
-		<method name="getIntent()Landroid/content/Intent;" />
-		<method name="getKey()Ljava/lang/String;" />
-		<method name="getLayoutResource()I" />
-		<method name="getOnPreferenceChangeListener()Landroid/preference/Preference$OnPreferenceChangeListener;" />
-		<method name="getOnPreferenceClickListener()Landroid/preference/Preference$OnPreferenceClickListener;" />
-		<method name="getOrder()I" />
-		<method name="getPersistedBoolean(Z)Z" />
-		<method name="getPersistedFloat(F)F" />
-		<method name="getPersistedInt(I)I" />
-		<method name="getPersistedLong(J)J" />
-		<method name="getPersistedString(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="getPreferenceManager()Landroid/preference/PreferenceManager;" />
-		<method name="getSharedPreferences()Landroid/content/SharedPreferences;" />
-		<method name="getShouldDisableView()Z" />
-		<method name="getSummary()Ljava/lang/CharSequence;" />
-		<method name="getTitle()Ljava/lang/CharSequence;" />
-		<method name="getTitleRes()I" since="14" />
-		<method name="getView(Landroid/view/View;Landroid/view/ViewGroup;)Landroid/view/View;" />
-		<method name="getWidgetLayoutResource()I" />
-		<method name="hasKey()Z" />
-		<method name="isEnabled()Z" />
-		<method name="isPersistent()Z" />
-		<method name="isSelectable()Z" />
-		<method name="notifyChanged()V" />
-		<method name="notifyDependencyChange(Z)V" />
-		<method name="notifyHierarchyChanged()V" />
-		<method name="onAttachedToActivity()V" />
-		<method name="onAttachedToHierarchy(Landroid/preference/PreferenceManager;)V" />
-		<method name="onBindView(Landroid/view/View;)V" />
-		<method name="onClick()V" />
-		<method name="onCreateView(Landroid/view/ViewGroup;)Landroid/view/View;" />
-		<method name="onDependencyChanged(Landroid/preference/Preference;Z)V" />
-		<method name="onGetDefaultValue(Landroid/content/res/TypedArray;I)Ljava/lang/Object;" />
-		<method name="onParentChanged(Landroid/preference/Preference;Z)V" since="19" />
-		<method name="onPrepareForRemoval()V" />
-		<method name="onRestoreInstanceState(Landroid/os/Parcelable;)V" />
-		<method name="onSaveInstanceState()Landroid/os/Parcelable;" />
-		<method name="onSetInitialValue(ZLjava/lang/Object;)V" />
-		<method name="peekExtras()Landroid/os/Bundle;" since="11" />
-		<method name="persistBoolean(Z)Z" />
-		<method name="persistFloat(F)Z" />
-		<method name="persistInt(I)Z" />
-		<method name="persistLong(J)Z" />
-		<method name="persistString(Ljava/lang/String;)Z" />
-		<method name="restoreHierarchyState(Landroid/os/Bundle;)V" />
-		<method name="saveHierarchyState(Landroid/os/Bundle;)V" />
-		<method name="setDefaultValue(Ljava/lang/Object;)V" />
-		<method name="setDependency(Ljava/lang/String;)V" />
-		<method name="setEnabled(Z)V" />
-		<method name="setFragment(Ljava/lang/String;)V" since="11" />
-		<method name="setIcon(I)V" since="11" />
-		<method name="setIcon(Landroid/graphics/drawable/Drawable;)V" since="11" />
-		<method name="setIntent(Landroid/content/Intent;)V" />
-		<method name="setKey(Ljava/lang/String;)V" />
-		<method name="setLayoutResource(I)V" />
-		<method name="setOnPreferenceChangeListener(Landroid/preference/Preference$OnPreferenceChangeListener;)V" />
-		<method name="setOnPreferenceClickListener(Landroid/preference/Preference$OnPreferenceClickListener;)V" />
-		<method name="setOrder(I)V" />
-		<method name="setPersistent(Z)V" />
-		<method name="setSelectable(Z)V" />
-		<method name="setShouldDisableView(Z)V" />
-		<method name="setSummary(I)V" />
-		<method name="setSummary(Ljava/lang/CharSequence;)V" />
-		<method name="setTitle(I)V" />
-		<method name="setTitle(Ljava/lang/CharSequence;)V" />
-		<method name="setWidgetLayoutResource(I)V" />
-		<method name="shouldCommit()Z" />
-		<method name="shouldDisableDependents()Z" />
-		<method name="shouldPersist()Z" />
-		<field name="DEFAULT_ORDER" />
-	</class>
-	<class name="android/preference/Preference$BaseSavedState" since="1">
-		<extends name="android/view/AbsSavedState" />
-		<method name="&lt;init>(Landroid/os/Parcel;)V" />
-		<method name="&lt;init>(Landroid/os/Parcelable;)V" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/preference/Preference$OnPreferenceChangeListener" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onPreferenceChange(Landroid/preference/Preference;Ljava/lang/Object;)Z" />
-	</class>
-	<class name="android/preference/Preference$OnPreferenceClickListener" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onPreferenceClick(Landroid/preference/Preference;)Z" />
-	</class>
-	<class name="android/preference/PreferenceActivity" since="1">
-		<extends name="android/app/ListActivity" />
-		<implements name="android/preference/PreferenceFragment$OnPreferenceStartFragmentCallback" since="11" />
-		<method name="&lt;init>()V" />
-		<method name="addPreferencesFromIntent(Landroid/content/Intent;)V" />
-		<method name="addPreferencesFromResource(I)V" />
-		<method name="findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference;" />
-		<method name="finishPreferencePanel(Landroid/app/Fragment;ILandroid/content/Intent;)V" since="11" />
-		<method name="getPreferenceManager()Landroid/preference/PreferenceManager;" />
-		<method name="getPreferenceScreen()Landroid/preference/PreferenceScreen;" />
-		<method name="hasHeaders()Z" since="11" />
-		<method name="invalidateHeaders()V" since="11" />
-		<method name="isMultiPane()Z" since="11" />
-		<method name="isValidFragment(Ljava/lang/String;)Z" since="19" />
-		<method name="loadHeadersFromResource(ILjava/util/List;)V" since="11" />
-		<method name="onBuildHeaders(Ljava/util/List;)V" since="11" />
-		<method name="onBuildStartFragmentIntent(Ljava/lang/String;Landroid/os/Bundle;II)Landroid/content/Intent;" since="14" />
-		<method name="onGetInitialHeader()Landroid/preference/PreferenceActivity$Header;" since="11" />
-		<method name="onGetNewHeader()Landroid/preference/PreferenceActivity$Header;" since="11" />
-		<method name="onHeaderClick(Landroid/preference/PreferenceActivity$Header;I)V" since="11" />
-		<method name="onIsHidingHeaders()Z" since="11" />
-		<method name="onIsMultiPane()Z" since="11" />
-		<method name="onPreferenceTreeClick(Landroid/preference/PreferenceScreen;Landroid/preference/Preference;)Z" />
-		<method name="setListFooter(Landroid/view/View;)V" since="11" />
-		<method name="setParentTitle(Ljava/lang/CharSequence;Ljava/lang/CharSequence;Landroid/view/View$OnClickListener;)V" since="11" />
-		<method name="setPreferenceScreen(Landroid/preference/PreferenceScreen;)V" />
-		<method name="showBreadCrumbs(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)V" since="11" />
-		<method name="startPreferenceFragment(Landroid/app/Fragment;Z)V" since="11" />
-		<method name="startPreferencePanel(Ljava/lang/String;Landroid/os/Bundle;ILjava/lang/CharSequence;Landroid/app/Fragment;I)V" since="11" />
-		<method name="startWithFragment(Ljava/lang/String;Landroid/os/Bundle;Landroid/app/Fragment;I)V" since="11" />
-		<method name="startWithFragment(Ljava/lang/String;Landroid/os/Bundle;Landroid/app/Fragment;III)V" since="14" />
-		<method name="switchToHeader(Landroid/preference/PreferenceActivity$Header;)V" since="11" />
-		<method name="switchToHeader(Ljava/lang/String;Landroid/os/Bundle;)V" since="11" />
-		<field name="EXTRA_NO_HEADERS" since="11" />
-		<field name="EXTRA_SHOW_FRAGMENT" since="11" />
-		<field name="EXTRA_SHOW_FRAGMENT_ARGUMENTS" since="11" />
-		<field name="EXTRA_SHOW_FRAGMENT_SHORT_TITLE" since="14" />
-		<field name="EXTRA_SHOW_FRAGMENT_TITLE" since="14" />
-		<field name="HEADER_ID_UNDEFINED" since="11" />
-	</class>
-	<class name="android/preference/PreferenceActivity$Header" since="11">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="getBreadCrumbShortTitle(Landroid/content/res/Resources;)Ljava/lang/CharSequence;" />
-		<method name="getBreadCrumbTitle(Landroid/content/res/Resources;)Ljava/lang/CharSequence;" />
-		<method name="getSummary(Landroid/content/res/Resources;)Ljava/lang/CharSequence;" />
-		<method name="getTitle(Landroid/content/res/Resources;)Ljava/lang/CharSequence;" />
-		<method name="readFromParcel(Landroid/os/Parcel;)V" />
-		<field name="CREATOR" />
-		<field name="breadCrumbShortTitle" />
-		<field name="breadCrumbShortTitleRes" />
-		<field name="breadCrumbTitle" />
-		<field name="breadCrumbTitleRes" />
-		<field name="extras" />
-		<field name="fragment" />
-		<field name="fragmentArguments" />
-		<field name="iconRes" />
-		<field name="id" />
-		<field name="intent" />
-		<field name="summary" />
-		<field name="summaryRes" />
-		<field name="title" />
-		<field name="titleRes" />
-	</class>
-	<class name="android/preference/PreferenceCategory" since="1">
-		<extends name="android/preference/PreferenceGroup" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-	</class>
-	<class name="android/preference/PreferenceFragment" since="11">
-		<extends name="android/app/Fragment" />
-		<method name="&lt;init>()V" />
-		<method name="addPreferencesFromIntent(Landroid/content/Intent;)V" />
-		<method name="addPreferencesFromResource(I)V" />
-		<method name="findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference;" />
-		<method name="getPreferenceManager()Landroid/preference/PreferenceManager;" />
-		<method name="getPreferenceScreen()Landroid/preference/PreferenceScreen;" />
-		<method name="onPreferenceTreeClick(Landroid/preference/PreferenceScreen;Landroid/preference/Preference;)Z" />
-		<method name="setPreferenceScreen(Landroid/preference/PreferenceScreen;)V" />
-	</class>
-	<class name="android/preference/PreferenceFragment$OnPreferenceStartFragmentCallback" since="11">
-		<extends name="java/lang/Object" />
-		<method name="onPreferenceStartFragment(Landroid/preference/PreferenceFragment;Landroid/preference/Preference;)Z" />
-	</class>
-	<class name="android/preference/PreferenceGroup" since="1">
-		<extends name="android/preference/Preference" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-		<method name="addItemFromInflater(Landroid/preference/Preference;)V" />
-		<method name="addPreference(Landroid/preference/Preference;)Z" />
-		<method name="dispatchRestoreInstanceState(Landroid/os/Bundle;)V" />
-		<method name="dispatchSaveInstanceState(Landroid/os/Bundle;)V" />
-		<method name="findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference;" />
-		<method name="getPreference(I)Landroid/preference/Preference;" />
-		<method name="getPreferenceCount()I" />
-		<method name="isOnSameScreenAsChildren()Z" />
-		<method name="isOrderingAsAdded()Z" />
-		<method name="onPrepareAddPreference(Landroid/preference/Preference;)Z" />
-		<method name="removeAll()V" />
-		<method name="removePreference(Landroid/preference/Preference;)Z" />
-		<method name="setOrderingAsAdded(Z)V" />
-	</class>
-	<class name="android/preference/PreferenceManager" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="createPreferenceScreen(Landroid/content/Context;)Landroid/preference/PreferenceScreen;" />
-		<method name="findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference;" />
-		<method name="getDefaultSharedPreferences(Landroid/content/Context;)Landroid/content/SharedPreferences;" />
-		<method name="getSharedPreferences()Landroid/content/SharedPreferences;" />
-		<method name="getSharedPreferencesMode()I" />
-		<method name="getSharedPreferencesName()Ljava/lang/String;" />
-		<method name="setDefaultValues(Landroid/content/Context;IZ)V" />
-		<method name="setDefaultValues(Landroid/content/Context;Ljava/lang/String;IIZ)V" />
-		<method name="setSharedPreferencesMode(I)V" />
-		<method name="setSharedPreferencesName(Ljava/lang/String;)V" />
-		<field name="KEY_HAS_SET_DEFAULT_VALUES" />
-		<field name="METADATA_KEY_PREFERENCES" />
-	</class>
-	<class name="android/preference/PreferenceManager$OnActivityDestroyListener" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onActivityDestroy()V" />
-	</class>
-	<class name="android/preference/PreferenceManager$OnActivityResultListener" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onActivityResult(IILandroid/content/Intent;)Z" />
-	</class>
-	<class name="android/preference/PreferenceManager$OnActivityStopListener" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onActivityStop()V" />
-	</class>
-	<class name="android/preference/PreferenceScreen" since="1">
-		<extends name="android/preference/PreferenceGroup" />
-		<implements name="android/content/DialogInterface$OnDismissListener" />
-		<implements name="android/widget/AdapterView$OnItemClickListener" />
-		<method name="&lt;init>()V" />
-		<method name="bind(Landroid/widget/ListView;)V" />
-		<method name="getDialog()Landroid/app/Dialog;" />
-		<method name="getRootAdapter()Landroid/widget/ListAdapter;" />
-		<method name="onCreateRootAdapter()Landroid/widget/ListAdapter;" />
-	</class>
-	<class name="android/preference/RingtonePreference" since="1">
-		<extends name="android/preference/Preference" />
-		<implements name="android/preference/PreferenceManager$OnActivityResultListener" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-		<method name="getRingtoneType()I" />
-		<method name="getShowDefault()Z" />
-		<method name="getShowSilent()Z" />
-		<method name="onPrepareRingtonePickerIntent(Landroid/content/Intent;)V" />
-		<method name="onRestoreRingtone()Landroid/net/Uri;" />
-		<method name="onSaveRingtone(Landroid/net/Uri;)V" />
-		<method name="setRingtoneType(I)V" />
-		<method name="setShowDefault(Z)V" />
-		<method name="setShowSilent(Z)V" />
-	</class>
-	<class name="android/preference/SwitchPreference" since="14">
-		<extends name="android/preference/TwoStatePreference" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-		<method name="getSwitchTextOff()Ljava/lang/CharSequence;" />
-		<method name="getSwitchTextOn()Ljava/lang/CharSequence;" />
-		<method name="setSwitchTextOff(I)V" />
-		<method name="setSwitchTextOff(Ljava/lang/CharSequence;)V" />
-		<method name="setSwitchTextOn(I)V" />
-		<method name="setSwitchTextOn(Ljava/lang/CharSequence;)V" />
-	</class>
-	<class name="android/preference/TwoStatePreference" since="14">
-		<extends name="android/preference/Preference" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-		<method name="getDisableDependentsState()Z" />
-		<method name="getSummaryOff()Ljava/lang/CharSequence;" />
-		<method name="getSummaryOn()Ljava/lang/CharSequence;" />
-		<method name="isChecked()Z" />
-		<method name="setChecked(Z)V" />
-		<method name="setDisableDependentsState(Z)V" />
-		<method name="setSummaryOff(I)V" />
-		<method name="setSummaryOff(Ljava/lang/CharSequence;)V" />
-		<method name="setSummaryOn(I)V" />
-		<method name="setSummaryOn(Ljava/lang/CharSequence;)V" />
-	</class>
-	<class name="android/print/PageRange" since="19">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>(II)V" />
-		<method name="getEnd()I" />
-		<method name="getStart()I" />
-		<field name="ALL_PAGES" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/print/PrintAttributes" since="19">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="getColorMode()I" />
-		<method name="getMediaSize()Landroid/print/PrintAttributes$MediaSize;" />
-		<method name="getMinMargins()Landroid/print/PrintAttributes$Margins;" />
-		<method name="getResolution()Landroid/print/PrintAttributes$Resolution;" />
-		<field name="COLOR_MODE_COLOR" />
-		<field name="COLOR_MODE_MONOCHROME" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/print/PrintAttributes$Builder" since="19">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="build()Landroid/print/PrintAttributes;" />
-		<method name="setColorMode(I)Landroid/print/PrintAttributes$Builder;" />
-		<method name="setMediaSize(Landroid/print/PrintAttributes$MediaSize;)Landroid/print/PrintAttributes$Builder;" />
-		<method name="setMinMargins(Landroid/print/PrintAttributes$Margins;)Landroid/print/PrintAttributes$Builder;" />
-		<method name="setResolution(Landroid/print/PrintAttributes$Resolution;)Landroid/print/PrintAttributes$Builder;" />
-	</class>
-	<class name="android/print/PrintAttributes$Margins" since="19">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(IIII)V" />
-		<method name="getBottomMils()I" />
-		<method name="getLeftMils()I" />
-		<method name="getRightMils()I" />
-		<method name="getTopMils()I" />
-		<field name="NO_MARGINS" />
-	</class>
-	<class name="android/print/PrintAttributes$MediaSize" since="19">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;II)V" />
-		<method name="asLandscape()Landroid/print/PrintAttributes$MediaSize;" />
-		<method name="asPortrait()Landroid/print/PrintAttributes$MediaSize;" />
-		<method name="getHeightMils()I" />
-		<method name="getId()Ljava/lang/String;" />
-		<method name="getLabel(Landroid/content/pm/PackageManager;)Ljava/lang/String;" />
-		<method name="getWidthMils()I" />
-		<method name="isPortrait()Z" />
-		<field name="ISO_A0" />
-		<field name="ISO_A1" />
-		<field name="ISO_A10" />
-		<field name="ISO_A2" />
-		<field name="ISO_A3" />
-		<field name="ISO_A4" />
-		<field name="ISO_A5" />
-		<field name="ISO_A6" />
-		<field name="ISO_A7" />
-		<field name="ISO_A8" />
-		<field name="ISO_A9" />
-		<field name="ISO_B0" />
-		<field name="ISO_B1" />
-		<field name="ISO_B10" />
-		<field name="ISO_B2" />
-		<field name="ISO_B3" />
-		<field name="ISO_B4" />
-		<field name="ISO_B5" />
-		<field name="ISO_B6" />
-		<field name="ISO_B7" />
-		<field name="ISO_B8" />
-		<field name="ISO_B9" />
-		<field name="ISO_C0" />
-		<field name="ISO_C1" />
-		<field name="ISO_C10" />
-		<field name="ISO_C2" />
-		<field name="ISO_C3" />
-		<field name="ISO_C4" />
-		<field name="ISO_C5" />
-		<field name="ISO_C6" />
-		<field name="ISO_C7" />
-		<field name="ISO_C8" />
-		<field name="ISO_C9" />
-		<field name="JIS_B0" />
-		<field name="JIS_B1" />
-		<field name="JIS_B10" />
-		<field name="JIS_B2" />
-		<field name="JIS_B3" />
-		<field name="JIS_B4" />
-		<field name="JIS_B5" />
-		<field name="JIS_B6" />
-		<field name="JIS_B7" />
-		<field name="JIS_B8" />
-		<field name="JIS_B9" />
-		<field name="JIS_EXEC" />
-		<field name="JPN_CHOU2" />
-		<field name="JPN_CHOU3" />
-		<field name="JPN_CHOU4" />
-		<field name="JPN_HAGAKI" />
-		<field name="JPN_KAHU" />
-		<field name="JPN_KAKU2" />
-		<field name="JPN_OUFUKU" />
-		<field name="JPN_YOU4" />
-		<field name="NA_FOOLSCAP" />
-		<field name="NA_GOVT_LETTER" />
-		<field name="NA_INDEX_3X5" />
-		<field name="NA_INDEX_4X6" />
-		<field name="NA_INDEX_5X8" />
-		<field name="NA_JUNIOR_LEGAL" />
-		<field name="NA_LEDGER" />
-		<field name="NA_LEGAL" />
-		<field name="NA_LETTER" />
-		<field name="NA_MONARCH" />
-		<field name="NA_QUARTO" />
-		<field name="NA_TABLOID" />
-		<field name="OM_DAI_PA_KAI" />
-		<field name="OM_JUURO_KU_KAI" />
-		<field name="OM_PA_KAI" />
-		<field name="PRC_1" />
-		<field name="PRC_10" />
-		<field name="PRC_16K" />
-		<field name="PRC_2" />
-		<field name="PRC_3" />
-		<field name="PRC_4" />
-		<field name="PRC_5" />
-		<field name="PRC_6" />
-		<field name="PRC_7" />
-		<field name="PRC_8" />
-		<field name="PRC_9" />
-		<field name="ROC_16K" />
-		<field name="ROC_8K" />
-		<field name="UNKNOWN_LANDSCAPE" />
-		<field name="UNKNOWN_PORTRAIT" />
-	</class>
-	<class name="android/print/PrintAttributes$Resolution" since="19">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;II)V" />
-		<method name="getHorizontalDpi()I" />
-		<method name="getId()Ljava/lang/String;" />
-		<method name="getLabel()Ljava/lang/String;" />
-		<method name="getVerticalDpi()I" />
-	</class>
-	<class name="android/print/PrintDocumentAdapter" since="19">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="onFinish()V" />
-		<method name="onLayout(Landroid/print/PrintAttributes;Landroid/print/PrintAttributes;Landroid/os/CancellationSignal;Landroid/print/PrintDocumentAdapter$LayoutResultCallback;Landroid/os/Bundle;)V" />
-		<method name="onStart()V" />
-		<method name="onWrite([Landroid/print/PageRange;Landroid/os/ParcelFileDescriptor;Landroid/os/CancellationSignal;Landroid/print/PrintDocumentAdapter$WriteResultCallback;)V" />
-		<field name="EXTRA_PRINT_PREVIEW" />
-	</class>
-	<class name="android/print/PrintDocumentAdapter$LayoutResultCallback" since="19">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="onLayoutCancelled()V" />
-		<method name="onLayoutFailed(Ljava/lang/CharSequence;)V" />
-		<method name="onLayoutFinished(Landroid/print/PrintDocumentInfo;Z)V" />
-	</class>
-	<class name="android/print/PrintDocumentAdapter$WriteResultCallback" since="19">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="onWriteCancelled()V" />
-		<method name="onWriteFailed(Ljava/lang/CharSequence;)V" />
-		<method name="onWriteFinished([Landroid/print/PageRange;)V" />
-	</class>
-	<class name="android/print/PrintDocumentInfo" since="19">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="getContentType()I" />
-		<method name="getDataSize()J" />
-		<method name="getName()Ljava/lang/String;" />
-		<method name="getPageCount()I" />
-		<field name="CONTENT_TYPE_DOCUMENT" />
-		<field name="CONTENT_TYPE_PHOTO" />
-		<field name="CONTENT_TYPE_UNKNOWN" />
-		<field name="CREATOR" />
-		<field name="PAGE_COUNT_UNKNOWN" />
-	</class>
-	<class name="android/print/PrintDocumentInfo$Builder" since="19">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="build()Landroid/print/PrintDocumentInfo;" />
-		<method name="setContentType(I)Landroid/print/PrintDocumentInfo$Builder;" />
-		<method name="setPageCount(I)Landroid/print/PrintDocumentInfo$Builder;" />
-	</class>
-	<class name="android/print/PrintJob" since="19">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="cancel()V" />
-		<method name="getId()Landroid/print/PrintJobId;" />
-		<method name="getInfo()Landroid/print/PrintJobInfo;" />
-		<method name="isBlocked()Z" />
-		<method name="isCancelled()Z" />
-		<method name="isCompleted()Z" />
-		<method name="isFailed()Z" />
-		<method name="isQueued()Z" />
-		<method name="isStarted()Z" />
-		<method name="restart()V" />
-	</class>
-	<class name="android/print/PrintJobId" since="19">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/print/PrintJobInfo" since="19">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="getAttributes()Landroid/print/PrintAttributes;" />
-		<method name="getCopies()I" />
-		<method name="getCreationTime()J" />
-		<method name="getId()Landroid/print/PrintJobId;" />
-		<method name="getLabel()Ljava/lang/String;" />
-		<method name="getPages()[Landroid/print/PageRange;" />
-		<method name="getPrinterId()Landroid/print/PrinterId;" />
-		<method name="getState()I" />
-		<field name="CREATOR" />
-		<field name="STATE_BLOCKED" />
-		<field name="STATE_CANCELED" />
-		<field name="STATE_COMPLETED" />
-		<field name="STATE_CREATED" />
-		<field name="STATE_FAILED" />
-		<field name="STATE_QUEUED" />
-		<field name="STATE_STARTED" />
-	</class>
-	<class name="android/print/PrintJobInfo$Builder" since="19">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/print/PrintJobInfo;)V" />
-		<method name="build()Landroid/print/PrintJobInfo;" />
-		<method name="putAdvancedOption(Ljava/lang/String;I)V" />
-		<method name="putAdvancedOption(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="setAttributes(Landroid/print/PrintAttributes;)V" />
-		<method name="setCopies(I)V" />
-		<method name="setPages([Landroid/print/PageRange;)V" />
-	</class>
-	<class name="android/print/PrintManager" since="19">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getPrintJobs()Ljava/util/List;" />
-		<method name="print(Ljava/lang/String;Landroid/print/PrintDocumentAdapter;Landroid/print/PrintAttributes;)Landroid/print/PrintJob;" />
-	</class>
-	<class name="android/print/PrinterCapabilitiesInfo" since="19">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="getColorModes()I" />
-		<method name="getDefaults()Landroid/print/PrintAttributes;" />
-		<method name="getMediaSizes()Ljava/util/List;" />
-		<method name="getMinMargins()Landroid/print/PrintAttributes$Margins;" />
-		<method name="getResolutions()Ljava/util/List;" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/print/PrinterCapabilitiesInfo$Builder" since="19">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/print/PrinterId;)V" />
-		<method name="addMediaSize(Landroid/print/PrintAttributes$MediaSize;Z)Landroid/print/PrinterCapabilitiesInfo$Builder;" />
-		<method name="addResolution(Landroid/print/PrintAttributes$Resolution;Z)Landroid/print/PrinterCapabilitiesInfo$Builder;" />
-		<method name="build()Landroid/print/PrinterCapabilitiesInfo;" />
-		<method name="setColorModes(II)Landroid/print/PrinterCapabilitiesInfo$Builder;" />
-		<method name="setMinMargins(Landroid/print/PrintAttributes$Margins;)Landroid/print/PrinterCapabilitiesInfo$Builder;" />
-	</class>
-	<class name="android/print/PrinterId" since="19">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="getLocalId()Ljava/lang/String;" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/print/PrinterInfo" since="19">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="getCapabilities()Landroid/print/PrinterCapabilitiesInfo;" />
-		<method name="getDescription()Ljava/lang/String;" />
-		<method name="getId()Landroid/print/PrinterId;" />
-		<method name="getName()Ljava/lang/String;" />
-		<method name="getStatus()I" />
-		<field name="CREATOR" />
-		<field name="STATUS_BUSY" />
-		<field name="STATUS_IDLE" />
-		<field name="STATUS_UNAVAILABLE" />
-	</class>
-	<class name="android/print/PrinterInfo$Builder" since="19">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/print/PrinterId;Ljava/lang/String;I)V" />
-		<method name="&lt;init>(Landroid/print/PrinterInfo;)V" />
-		<method name="build()Landroid/print/PrinterInfo;" />
-		<method name="setCapabilities(Landroid/print/PrinterCapabilitiesInfo;)Landroid/print/PrinterInfo$Builder;" />
-		<method name="setDescription(Ljava/lang/String;)Landroid/print/PrinterInfo$Builder;" />
-		<method name="setName(Ljava/lang/String;)Landroid/print/PrinterInfo$Builder;" />
-		<method name="setStatus(I)Landroid/print/PrinterInfo$Builder;" />
-	</class>
-	<class name="android/print/pdf/PrintedPdfDocument" since="19">
-		<extends name="android/graphics/pdf/PdfDocument" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/print/PrintAttributes;)V" />
-		<method name="getPageContentRect()Landroid/graphics/Rect;" />
-		<method name="getPageHeight()I" />
-		<method name="getPageWidth()I" />
-		<method name="startPage(I)Landroid/graphics/pdf/PdfDocument$Page;" />
-	</class>
-	<class name="android/printservice/PrintDocument" since="19">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getData()Landroid/os/ParcelFileDescriptor;" />
-		<method name="getInfo()Landroid/print/PrintDocumentInfo;" />
-	</class>
-	<class name="android/printservice/PrintJob" since="19">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="block(Ljava/lang/String;)Z" />
-		<method name="cancel()Z" />
-		<method name="complete()Z" />
-		<method name="fail(Ljava/lang/String;)Z" />
-		<method name="getAdvancedIntOption(Ljava/lang/String;)I" />
-		<method name="getAdvancedStringOption(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="getDocument()Landroid/printservice/PrintDocument;" />
-		<method name="getId()Landroid/print/PrintJobId;" />
-		<method name="getInfo()Landroid/print/PrintJobInfo;" />
-		<method name="getTag()Ljava/lang/String;" />
-		<method name="hasAdvancedOption(Ljava/lang/String;)Z" />
-		<method name="isBlocked()Z" />
-		<method name="isCancelled()Z" />
-		<method name="isCompleted()Z" />
-		<method name="isFailed()Z" />
-		<method name="isQueued()Z" />
-		<method name="isStarted()Z" />
-		<method name="setTag(Ljava/lang/String;)Z" />
-		<method name="start()Z" />
-	</class>
-	<class name="android/printservice/PrintService" since="19">
-		<extends name="android/app/Service" />
-		<method name="&lt;init>()V" />
-		<method name="generatePrinterId(Ljava/lang/String;)Landroid/print/PrinterId;" />
-		<method name="getActivePrintJobs()Ljava/util/List;" />
-		<method name="onConnected()V" />
-		<method name="onCreatePrinterDiscoverySession()Landroid/printservice/PrinterDiscoverySession;" />
-		<method name="onDisconnected()V" />
-		<method name="onPrintJobQueued(Landroid/printservice/PrintJob;)V" />
-		<method name="onRequestCancelPrintJob(Landroid/printservice/PrintJob;)V" />
-		<field name="EXTRA_PRINT_JOB_INFO" />
-		<field name="SERVICE_INTERFACE" />
-		<field name="SERVICE_META_DATA" />
-	</class>
-	<class name="android/printservice/PrinterDiscoverySession" since="19">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="addPrinters(Ljava/util/List;)V" />
-		<method name="getPrinters()Ljava/util/List;" />
-		<method name="getTrackedPrinters()Ljava/util/List;" />
-		<method name="isDestroyed()Z" />
-		<method name="isPrinterDiscoveryStarted()Z" />
-		<method name="onDestroy()V" />
-		<method name="onStartPrinterDiscovery(Ljava/util/List;)V" />
-		<method name="onStartPrinterStateTracking(Landroid/print/PrinterId;)V" />
-		<method name="onStopPrinterDiscovery()V" />
-		<method name="onStopPrinterStateTracking(Landroid/print/PrinterId;)V" />
-		<method name="onValidatePrinters(Ljava/util/List;)V" />
-		<method name="removePrinters(Ljava/util/List;)V" />
-	</class>
-	<class name="android/provider/AlarmClock" since="9">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="ACTION_SET_ALARM" />
-		<field name="ACTION_SET_TIMER" since="19" />
-		<field name="ACTION_SHOW_ALARMS" since="19" />
-		<field name="EXTRA_DAYS" since="19" />
-		<field name="EXTRA_HOUR" />
-		<field name="EXTRA_LENGTH" since="19" />
-		<field name="EXTRA_MESSAGE" />
-		<field name="EXTRA_MINUTES" />
-		<field name="EXTRA_RINGTONE" since="19" />
-		<field name="EXTRA_SKIP_UI" since="11" />
-		<field name="EXTRA_VIBRATE" since="19" />
-		<field name="VALUE_RINGTONE_SILENT" since="19" />
-	</class>
-	<class name="android/provider/BaseColumns" since="1">
-		<extends name="java/lang/Object" />
-		<field name="_COUNT" />
-		<field name="_ID" />
-	</class>
-	<class name="android/provider/Browser" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="addSearchUrl(Landroid/content/ContentResolver;Ljava/lang/String;)V" />
-		<method name="canClearHistory(Landroid/content/ContentResolver;)Z" />
-		<method name="clearHistory(Landroid/content/ContentResolver;)V" />
-		<method name="clearSearches(Landroid/content/ContentResolver;)V" />
-		<method name="deleteFromHistory(Landroid/content/ContentResolver;Ljava/lang/String;)V" />
-		<method name="deleteHistoryTimeFrame(Landroid/content/ContentResolver;JJ)V" />
-		<method name="getAllBookmarks(Landroid/content/ContentResolver;)Landroid/database/Cursor;" />
-		<method name="getAllVisitedUrls(Landroid/content/ContentResolver;)Landroid/database/Cursor;" />
-		<method name="requestAllIcons(Landroid/content/ContentResolver;Ljava/lang/String;Landroid/webkit/WebIconDatabase$IconListener;)V" />
-		<method name="saveBookmark(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="sendString(Landroid/content/Context;Ljava/lang/String;)V" />
-		<method name="truncateHistory(Landroid/content/ContentResolver;)V" />
-		<method name="updateVisitedHistory(Landroid/content/ContentResolver;Ljava/lang/String;Z)V" />
-		<field name="BOOKMARKS_URI" />
-		<field name="EXTRA_APPLICATION_ID" since="3" />
-		<field name="EXTRA_CREATE_NEW_TAB" since="12" />
-		<field name="EXTRA_HEADERS" since="8" />
-		<field name="HISTORY_PROJECTION" />
-		<field name="HISTORY_PROJECTION_BOOKMARK_INDEX" />
-		<field name="HISTORY_PROJECTION_DATE_INDEX" />
-		<field name="HISTORY_PROJECTION_FAVICON_INDEX" />
-		<field name="HISTORY_PROJECTION_ID_INDEX" />
-		<field name="HISTORY_PROJECTION_TITLE_INDEX" />
-		<field name="HISTORY_PROJECTION_URL_INDEX" />
-		<field name="HISTORY_PROJECTION_VISITS_INDEX" />
-		<field name="INITIAL_ZOOM_LEVEL" />
-		<field name="SEARCHES_PROJECTION" />
-		<field name="SEARCHES_PROJECTION_DATE_INDEX" />
-		<field name="SEARCHES_PROJECTION_SEARCH_INDEX" />
-		<field name="SEARCHES_URI" />
-		<field name="TRUNCATE_HISTORY_PROJECTION" />
-		<field name="TRUNCATE_HISTORY_PROJECTION_ID_INDEX" />
-		<field name="TRUNCATE_N_OLDEST" />
-	</class>
-	<class name="android/provider/Browser$BookmarkColumns" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<method name="&lt;init>()V" />
-		<field name="BOOKMARK" />
-		<field name="CREATED" />
-		<field name="DATE" />
-		<field name="FAVICON" />
-		<field name="TITLE" />
-		<field name="URL" />
-		<field name="VISITS" />
-	</class>
-	<class name="android/provider/Browser$SearchColumns" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<method name="&lt;init>()V" />
-		<field name="DATE" />
-		<field name="SEARCH" />
-		<field name="URL" />
-	</class>
-	<class name="android/provider/CalendarContract" since="14">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="ACCOUNT_TYPE_LOCAL" />
-		<field name="ACTION_EVENT_REMINDER" />
-		<field name="ACTION_HANDLE_CUSTOM_EVENT" since="16" />
-		<field name="AUTHORITY" />
-		<field name="CALLER_IS_SYNCADAPTER" />
-		<field name="CONTENT_URI" />
-		<field name="EXTRA_CUSTOM_APP_URI" since="16" />
-		<field name="EXTRA_EVENT_ALL_DAY" />
-		<field name="EXTRA_EVENT_BEGIN_TIME" />
-		<field name="EXTRA_EVENT_END_TIME" />
-	</class>
-	<class name="android/provider/CalendarContract$Attendees" since="14">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<implements name="android/provider/CalendarContract$AttendeesColumns" />
-		<implements name="android/provider/CalendarContract$EventsColumns" />
-		<method name="&lt;init>()V" />
-		<method name="query(Landroid/content/ContentResolver;J[Ljava/lang/String;)Landroid/database/Cursor;" />
-		<field name="CONTENT_URI" />
-	</class>
-	<class name="android/provider/CalendarContract$AttendeesColumns" since="14">
-		<extends name="java/lang/Object" />
-		<field name="ATTENDEE_EMAIL" />
-		<field name="ATTENDEE_IDENTITY" since="16" />
-		<field name="ATTENDEE_ID_NAMESPACE" since="16" />
-		<field name="ATTENDEE_NAME" />
-		<field name="ATTENDEE_RELATIONSHIP" />
-		<field name="ATTENDEE_STATUS" />
-		<field name="ATTENDEE_STATUS_ACCEPTED" />
-		<field name="ATTENDEE_STATUS_DECLINED" />
-		<field name="ATTENDEE_STATUS_INVITED" />
-		<field name="ATTENDEE_STATUS_NONE" />
-		<field name="ATTENDEE_STATUS_TENTATIVE" />
-		<field name="ATTENDEE_TYPE" />
-		<field name="EVENT_ID" />
-		<field name="RELATIONSHIP_ATTENDEE" />
-		<field name="RELATIONSHIP_NONE" />
-		<field name="RELATIONSHIP_ORGANIZER" />
-		<field name="RELATIONSHIP_PERFORMER" />
-		<field name="RELATIONSHIP_SPEAKER" />
-		<field name="TYPE_NONE" />
-		<field name="TYPE_OPTIONAL" />
-		<field name="TYPE_REQUIRED" />
-		<field name="TYPE_RESOURCE" since="15" />
-	</class>
-	<class name="android/provider/CalendarContract$CalendarAlerts" since="14">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<implements name="android/provider/CalendarContract$CalendarAlertsColumns" />
-		<implements name="android/provider/CalendarContract$CalendarColumns" />
-		<implements name="android/provider/CalendarContract$EventsColumns" />
-		<method name="&lt;init>()V" />
-		<field name="CONTENT_URI" />
-		<field name="CONTENT_URI_BY_INSTANCE" />
-	</class>
-	<class name="android/provider/CalendarContract$CalendarAlertsColumns" since="14">
-		<extends name="java/lang/Object" />
-		<field name="ALARM_TIME" />
-		<field name="BEGIN" />
-		<field name="CREATION_TIME" />
-		<field name="DEFAULT_SORT_ORDER" />
-		<field name="END" />
-		<field name="EVENT_ID" />
-		<field name="MINUTES" />
-		<field name="NOTIFY_TIME" />
-		<field name="RECEIVED_TIME" />
-		<field name="STATE" />
-		<field name="STATE_DISMISSED" />
-		<field name="STATE_FIRED" />
-		<field name="STATE_SCHEDULED" />
-	</class>
-	<class name="android/provider/CalendarContract$CalendarCache" since="14">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/CalendarContract$CalendarCacheColumns" />
-		<method name="&lt;init>()V" />
-		<field name="KEY_TIMEZONE_INSTANCES" />
-		<field name="KEY_TIMEZONE_INSTANCES_PREVIOUS" />
-		<field name="KEY_TIMEZONE_TYPE" />
-		<field name="TIMEZONE_TYPE_AUTO" />
-		<field name="TIMEZONE_TYPE_HOME" />
-		<field name="URI" />
-	</class>
-	<class name="android/provider/CalendarContract$CalendarCacheColumns" since="14">
-		<extends name="java/lang/Object" />
-		<field name="KEY" />
-		<field name="VALUE" />
-	</class>
-	<class name="android/provider/CalendarContract$CalendarColumns" since="14">
-		<extends name="java/lang/Object" />
-		<field name="ALLOWED_ATTENDEE_TYPES" since="15" />
-		<field name="ALLOWED_AVAILABILITY" since="15" />
-		<field name="ALLOWED_REMINDERS" />
-		<field name="CALENDAR_ACCESS_LEVEL" />
-		<field name="CALENDAR_COLOR" />
-		<field name="CALENDAR_COLOR_KEY" since="15" />
-		<field name="CALENDAR_DISPLAY_NAME" />
-		<field name="CALENDAR_TIME_ZONE" />
-		<field name="CAL_ACCESS_CONTRIBUTOR" />
-		<field name="CAL_ACCESS_EDITOR" />
-		<field name="CAL_ACCESS_FREEBUSY" />
-		<field name="CAL_ACCESS_NONE" />
-		<field name="CAL_ACCESS_OVERRIDE" />
-		<field name="CAL_ACCESS_OWNER" />
-		<field name="CAL_ACCESS_READ" />
-		<field name="CAL_ACCESS_RESPOND" />
-		<field name="CAL_ACCESS_ROOT" />
-		<field name="CAN_MODIFY_TIME_ZONE" />
-		<field name="CAN_ORGANIZER_RESPOND" />
-		<field name="IS_PRIMARY" since="17" />
-		<field name="MAX_REMINDERS" />
-		<field name="OWNER_ACCOUNT" />
-		<field name="SYNC_EVENTS" />
-		<field name="VISIBLE" />
-	</class>
-	<class name="android/provider/CalendarContract$CalendarEntity" since="14">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<implements name="android/provider/CalendarContract$CalendarColumns" />
-		<implements name="android/provider/CalendarContract$SyncColumns" />
-		<method name="&lt;init>()V" />
-		<method name="newEntityIterator(Landroid/database/Cursor;)Landroid/content/EntityIterator;" />
-		<field name="CONTENT_URI" />
-	</class>
-	<class name="android/provider/CalendarContract$CalendarSyncColumns" since="14">
-		<extends name="java/lang/Object" />
-		<field name="CAL_SYNC1" />
-		<field name="CAL_SYNC10" />
-		<field name="CAL_SYNC2" />
-		<field name="CAL_SYNC3" />
-		<field name="CAL_SYNC4" />
-		<field name="CAL_SYNC5" />
-		<field name="CAL_SYNC6" />
-		<field name="CAL_SYNC7" />
-		<field name="CAL_SYNC8" />
-		<field name="CAL_SYNC9" />
-	</class>
-	<class name="android/provider/CalendarContract$Calendars" since="14">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<implements name="android/provider/CalendarContract$CalendarColumns" />
-		<implements name="android/provider/CalendarContract$SyncColumns" />
-		<method name="&lt;init>()V" />
-		<field name="CALENDAR_LOCATION" />
-		<field name="CONTENT_URI" />
-		<field name="DEFAULT_SORT_ORDER" />
-		<field name="NAME" />
-	</class>
-	<class name="android/provider/CalendarContract$Colors" since="15">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/CalendarContract$ColorsColumns" />
-		<method name="&lt;init>()V" />
-		<field name="CONTENT_URI" />
-	</class>
-	<class name="android/provider/CalendarContract$ColorsColumns" since="15">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/SyncStateContract$Columns" />
-		<field name="COLOR" />
-		<field name="COLOR_KEY" />
-		<field name="COLOR_TYPE" />
-		<field name="TYPE_CALENDAR" />
-		<field name="TYPE_EVENT" />
-	</class>
-	<class name="android/provider/CalendarContract$EventDays" since="14">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/CalendarContract$EventDaysColumns" />
-		<method name="&lt;init>()V" />
-		<method name="query(Landroid/content/ContentResolver;II[Ljava/lang/String;)Landroid/database/Cursor;" />
-		<field name="CONTENT_URI" />
-	</class>
-	<class name="android/provider/CalendarContract$EventDaysColumns" since="14">
-		<extends name="java/lang/Object" />
-		<field name="ENDDAY" />
-		<field name="STARTDAY" />
-	</class>
-	<class name="android/provider/CalendarContract$Events" since="14">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<implements name="android/provider/CalendarContract$CalendarColumns" />
-		<implements name="android/provider/CalendarContract$EventsColumns" />
-		<implements name="android/provider/CalendarContract$SyncColumns" />
-		<method name="&lt;init>()V" />
-		<field name="CONTENT_EXCEPTION_URI" />
-		<field name="CONTENT_URI" />
-	</class>
-	<class name="android/provider/CalendarContract$EventsColumns" since="14">
-		<extends name="java/lang/Object" />
-		<field name="ACCESS_CONFIDENTIAL" />
-		<field name="ACCESS_DEFAULT" />
-		<field name="ACCESS_LEVEL" />
-		<field name="ACCESS_PRIVATE" />
-		<field name="ACCESS_PUBLIC" />
-		<field name="ALL_DAY" />
-		<field name="AVAILABILITY" />
-		<field name="AVAILABILITY_BUSY" />
-		<field name="AVAILABILITY_FREE" />
-		<field name="AVAILABILITY_TENTATIVE" since="15" />
-		<field name="CALENDAR_ID" />
-		<field name="CAN_INVITE_OTHERS" />
-		<field name="CUSTOM_APP_PACKAGE" since="16" />
-		<field name="CUSTOM_APP_URI" since="16" />
-		<field name="DESCRIPTION" />
-		<field name="DISPLAY_COLOR" since="16" />
-		<field name="DTEND" />
-		<field name="DTSTART" />
-		<field name="DURATION" />
-		<field name="EVENT_COLOR" />
-		<field name="EVENT_COLOR_KEY" since="15" />
-		<field name="EVENT_END_TIMEZONE" />
-		<field name="EVENT_LOCATION" />
-		<field name="EVENT_TIMEZONE" />
-		<field name="EXDATE" />
-		<field name="EXRULE" />
-		<field name="GUESTS_CAN_INVITE_OTHERS" />
-		<field name="GUESTS_CAN_MODIFY" />
-		<field name="GUESTS_CAN_SEE_GUESTS" />
-		<field name="HAS_ALARM" />
-		<field name="HAS_ATTENDEE_DATA" />
-		<field name="HAS_EXTENDED_PROPERTIES" />
-		<field name="IS_ORGANIZER" since="17" />
-		<field name="LAST_DATE" />
-		<field name="LAST_SYNCED" />
-		<field name="ORGANIZER" />
-		<field name="ORIGINAL_ALL_DAY" />
-		<field name="ORIGINAL_ID" />
-		<field name="ORIGINAL_INSTANCE_TIME" />
-		<field name="ORIGINAL_SYNC_ID" />
-		<field name="RDATE" />
-		<field name="RRULE" />
-		<field name="SELF_ATTENDEE_STATUS" />
-		<field name="STATUS" />
-		<field name="STATUS_CANCELED" />
-		<field name="STATUS_CONFIRMED" />
-		<field name="STATUS_TENTATIVE" />
-		<field name="SYNC_DATA1" />
-		<field name="SYNC_DATA10" />
-		<field name="SYNC_DATA2" />
-		<field name="SYNC_DATA3" />
-		<field name="SYNC_DATA4" />
-		<field name="SYNC_DATA5" />
-		<field name="SYNC_DATA6" />
-		<field name="SYNC_DATA7" />
-		<field name="SYNC_DATA8" />
-		<field name="SYNC_DATA9" />
-		<field name="TITLE" />
-		<field name="UID_2445" since="17" />
-	</class>
-	<class name="android/provider/CalendarContract$EventsEntity" since="14">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<implements name="android/provider/CalendarContract$EventsColumns" />
-		<implements name="android/provider/CalendarContract$SyncColumns" />
-		<method name="&lt;init>()V" />
-		<method name="newEntityIterator(Landroid/database/Cursor;Landroid/content/ContentProviderClient;)Landroid/content/EntityIterator;" />
-		<method name="newEntityIterator(Landroid/database/Cursor;Landroid/content/ContentResolver;)Landroid/content/EntityIterator;" />
-		<field name="CONTENT_URI" />
-	</class>
-	<class name="android/provider/CalendarContract$ExtendedProperties" since="14">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<implements name="android/provider/CalendarContract$EventsColumns" />
-		<implements name="android/provider/CalendarContract$ExtendedPropertiesColumns" />
-		<method name="&lt;init>()V" />
-		<field name="CONTENT_URI" />
-	</class>
-	<class name="android/provider/CalendarContract$ExtendedPropertiesColumns" since="14">
-		<extends name="java/lang/Object" />
-		<field name="EVENT_ID" />
-		<field name="NAME" />
-		<field name="VALUE" />
-	</class>
-	<class name="android/provider/CalendarContract$Instances" since="14">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<implements name="android/provider/CalendarContract$CalendarColumns" />
-		<implements name="android/provider/CalendarContract$EventsColumns" />
-		<method name="&lt;init>()V" />
-		<method name="query(Landroid/content/ContentResolver;[Ljava/lang/String;JJ)Landroid/database/Cursor;" />
-		<method name="query(Landroid/content/ContentResolver;[Ljava/lang/String;JJLjava/lang/String;)Landroid/database/Cursor;" />
-		<field name="BEGIN" />
-		<field name="CONTENT_BY_DAY_URI" />
-		<field name="CONTENT_SEARCH_BY_DAY_URI" />
-		<field name="CONTENT_SEARCH_URI" />
-		<field name="CONTENT_URI" />
-		<field name="END" />
-		<field name="END_DAY" />
-		<field name="END_MINUTE" />
-		<field name="EVENT_ID" />
-		<field name="START_DAY" />
-		<field name="START_MINUTE" />
-	</class>
-	<class name="android/provider/CalendarContract$Reminders" since="14">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<implements name="android/provider/CalendarContract$EventsColumns" />
-		<implements name="android/provider/CalendarContract$RemindersColumns" />
-		<method name="&lt;init>()V" />
-		<method name="query(Landroid/content/ContentResolver;J[Ljava/lang/String;)Landroid/database/Cursor;" />
-		<field name="CONTENT_URI" />
-	</class>
-	<class name="android/provider/CalendarContract$RemindersColumns" since="14">
-		<extends name="java/lang/Object" />
-		<field name="EVENT_ID" />
-		<field name="METHOD" />
-		<field name="METHOD_ALARM" since="16" />
-		<field name="METHOD_ALERT" />
-		<field name="METHOD_DEFAULT" />
-		<field name="METHOD_EMAIL" />
-		<field name="METHOD_SMS" />
-		<field name="MINUTES" />
-		<field name="MINUTES_DEFAULT" />
-	</class>
-	<class name="android/provider/CalendarContract$SyncColumns" since="14">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/CalendarContract$CalendarSyncColumns" />
-		<field name="ACCOUNT_NAME" />
-		<field name="ACCOUNT_TYPE" />
-		<field name="CAN_PARTIALLY_UPDATE" />
-		<field name="DELETED" />
-		<field name="DIRTY" />
-		<field name="MUTATORS" since="18" />
-		<field name="_SYNC_ID" />
-	</class>
-	<class name="android/provider/CalendarContract$SyncState" since="14">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/SyncStateContract$Columns" />
-		<method name="&lt;init>()V" />
-		<field name="CONTENT_URI" />
-	</class>
-	<class name="android/provider/CallLog" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="AUTHORITY" />
-		<field name="CONTENT_URI" />
-	</class>
-	<class name="android/provider/CallLog$Calls" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<method name="&lt;init>()V" />
-		<method name="getLastOutgoingCall(Landroid/content/Context;)Ljava/lang/String;" since="8" />
-		<field name="CACHED_FORMATTED_NUMBER" since="21" />
-		<field name="CACHED_LOOKUP_URI" since="21" />
-		<field name="CACHED_MATCHED_NUMBER" since="21" />
-		<field name="CACHED_NAME" />
-		<field name="CACHED_NORMALIZED_NUMBER" since="21" />
-		<field name="CACHED_NUMBER_LABEL" />
-		<field name="CACHED_NUMBER_TYPE" />
-		<field name="CACHED_PHOTO_ID" since="21" />
-		<field name="CONTENT_FILTER_URI" />
-		<field name="CONTENT_ITEM_TYPE" />
-		<field name="CONTENT_TYPE" />
-		<field name="CONTENT_URI" />
-		<field name="CONTENT_URI_WITH_VOICEMAIL" since="21" />
-		<field name="COUNTRY_ISO" since="21" />
-		<field name="DATE" />
-		<field name="DEFAULT_SORT_ORDER" />
-		<field name="DURATION" />
-		<field name="GEOCODED_LOCATION" since="21" />
-		<field name="INCOMING_TYPE" />
-		<field name="IS_READ" since="14" />
-		<field name="LIMIT_PARAM_KEY" since="17" />
-		<field name="MISSED_TYPE" />
-		<field name="NEW" />
-		<field name="NUMBER" />
-		<field name="NUMBER_PRESENTATION" since="19" />
-		<field name="OFFSET_PARAM_KEY" since="17" />
-		<field name="OUTGOING_TYPE" />
-		<field name="PRESENTATION_ALLOWED" since="19" />
-		<field name="PRESENTATION_PAYPHONE" since="19" />
-		<field name="PRESENTATION_RESTRICTED" since="19" />
-		<field name="PRESENTATION_UNKNOWN" since="19" />
-		<field name="TYPE" />
-		<field name="VOICEMAIL_TYPE" since="21" />
-		<field name="VOICEMAIL_URI" since="21" />
-	</class>
-	<class name="android/provider/Contacts" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="AUTHORITY" />
-		<field name="CONTENT_URI" />
-		<field name="KIND_EMAIL" />
-		<field name="KIND_IM" />
-		<field name="KIND_ORGANIZATION" />
-		<field name="KIND_PHONE" />
-		<field name="KIND_POSTAL" />
-	</class>
-	<class name="android/provider/Contacts$ContactMethods" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<implements name="android/provider/Contacts$ContactMethodsColumns" />
-		<implements name="android/provider/Contacts$PeopleColumns" />
-		<method name="&lt;init>()V" />
-		<method name="addPostalLocation(Landroid/content/Context;JDD)V" />
-		<method name="decodeImProtocol(Ljava/lang/String;)Ljava/lang/Object;" />
-		<method name="encodeCustomImProtocol(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="encodePredefinedImProtocol(I)Ljava/lang/String;" />
-		<method name="getDisplayLabel(Landroid/content/Context;IILjava/lang/CharSequence;)Ljava/lang/CharSequence;" />
-		<field name="CONTENT_EMAIL_ITEM_TYPE" />
-		<field name="CONTENT_EMAIL_TYPE" />
-		<field name="CONTENT_EMAIL_URI" />
-		<field name="CONTENT_IM_ITEM_TYPE" />
-		<field name="CONTENT_POSTAL_ITEM_TYPE" />
-		<field name="CONTENT_POSTAL_TYPE" />
-		<field name="CONTENT_TYPE" />
-		<field name="CONTENT_URI" />
-		<field name="DEFAULT_SORT_ORDER" />
-		<field name="PERSON_ID" />
-		<field name="POSTAL_LOCATION_LATITUDE" />
-		<field name="POSTAL_LOCATION_LONGITUDE" />
-		<field name="PROTOCOL_AIM" />
-		<field name="PROTOCOL_GOOGLE_TALK" />
-		<field name="PROTOCOL_ICQ" />
-		<field name="PROTOCOL_JABBER" />
-		<field name="PROTOCOL_MSN" />
-		<field name="PROTOCOL_QQ" />
-		<field name="PROTOCOL_SKYPE" />
-		<field name="PROTOCOL_YAHOO" />
-	</class>
-	<class name="android/provider/Contacts$ContactMethodsColumns" since="1">
-		<extends name="java/lang/Object" />
-		<field name="AUX_DATA" />
-		<field name="DATA" />
-		<field name="ISPRIMARY" />
-		<field name="KIND" />
-		<field name="LABEL" />
-		<field name="TYPE" />
-		<field name="TYPE_CUSTOM" />
-		<field name="TYPE_HOME" />
-		<field name="TYPE_OTHER" />
-		<field name="TYPE_WORK" />
-	</class>
-	<class name="android/provider/Contacts$Extensions" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<implements name="android/provider/Contacts$ExtensionsColumns" />
-		<method name="&lt;init>()V" />
-		<field name="CONTENT_ITEM_TYPE" />
-		<field name="CONTENT_TYPE" />
-		<field name="CONTENT_URI" />
-		<field name="DEFAULT_SORT_ORDER" />
-		<field name="PERSON_ID" />
-	</class>
-	<class name="android/provider/Contacts$ExtensionsColumns" since="1">
-		<extends name="java/lang/Object" />
-		<field name="NAME" />
-		<field name="VALUE" />
-	</class>
-	<class name="android/provider/Contacts$GroupMembership" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<implements name="android/provider/Contacts$GroupsColumns" />
-		<method name="&lt;init>()V" />
-		<field name="CONTENT_DIRECTORY" />
-		<field name="CONTENT_ITEM_TYPE" />
-		<field name="CONTENT_TYPE" />
-		<field name="CONTENT_URI" />
-		<field name="DEFAULT_SORT_ORDER" />
-		<field name="GROUP_ID" />
-		<field name="GROUP_SYNC_ACCOUNT" />
-		<field name="GROUP_SYNC_ACCOUNT_TYPE" since="5" />
-		<field name="GROUP_SYNC_ID" />
-		<field name="PERSON_ID" />
-		<field name="RAW_CONTENT_URI" />
-	</class>
-	<class name="android/provider/Contacts$Groups" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<implements name="android/provider/Contacts$GroupsColumns" />
-		<method name="&lt;init>()V" />
-		<field name="CONTENT_ITEM_TYPE" />
-		<field name="CONTENT_TYPE" />
-		<field name="CONTENT_URI" />
-		<field name="DEFAULT_SORT_ORDER" />
-		<field name="DELETED_CONTENT_URI" />
-		<field name="GROUP_ANDROID_STARRED" />
-		<field name="GROUP_MY_CONTACTS" />
-	</class>
-	<class name="android/provider/Contacts$GroupsColumns" since="1">
-		<extends name="java/lang/Object" />
-		<field name="NAME" />
-		<field name="NOTES" />
-		<field name="SHOULD_SYNC" />
-		<field name="SYSTEM_ID" />
-	</class>
-	<class name="android/provider/Contacts$Intents" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="ATTACH_IMAGE" />
-		<field name="EXTRA_CREATE_DESCRIPTION" since="3" />
-		<field name="EXTRA_FORCE_CREATE" since="3" />
-		<field name="SEARCH_SUGGESTION_CLICKED" />
-		<field name="SEARCH_SUGGESTION_CREATE_CONTACT_CLICKED" />
-		<field name="SEARCH_SUGGESTION_DIAL_NUMBER_CLICKED" />
-		<field name="SHOW_OR_CREATE_CONTACT" since="3" />
-	</class>
-	<class name="android/provider/Contacts$Intents$Insert" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="ACTION" />
-		<field name="COMPANY" />
-		<field name="EMAIL" />
-		<field name="EMAIL_ISPRIMARY" />
-		<field name="EMAIL_TYPE" />
-		<field name="FULL_MODE" />
-		<field name="IM_HANDLE" />
-		<field name="IM_ISPRIMARY" />
-		<field name="IM_PROTOCOL" />
-		<field name="JOB_TITLE" />
-		<field name="NAME" />
-		<field name="NOTES" />
-		<field name="PHONE" />
-		<field name="PHONETIC_NAME" since="3" />
-		<field name="PHONE_ISPRIMARY" />
-		<field name="PHONE_TYPE" />
-		<field name="POSTAL" />
-		<field name="POSTAL_ISPRIMARY" />
-		<field name="POSTAL_TYPE" />
-		<field name="SECONDARY_EMAIL" since="3" />
-		<field name="SECONDARY_EMAIL_TYPE" since="3" />
-		<field name="SECONDARY_PHONE" since="3" />
-		<field name="SECONDARY_PHONE_TYPE" since="3" />
-		<field name="TERTIARY_EMAIL" since="3" />
-		<field name="TERTIARY_EMAIL_TYPE" since="3" />
-		<field name="TERTIARY_PHONE" since="3" />
-		<field name="TERTIARY_PHONE_TYPE" since="3" />
-	</class>
-	<class name="android/provider/Contacts$Intents$UI" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="FILTER_CONTACTS_ACTION" />
-		<field name="FILTER_TEXT_EXTRA_KEY" />
-		<field name="GROUP_NAME_EXTRA_KEY" />
-		<field name="LIST_ALL_CONTACTS_ACTION" />
-		<field name="LIST_CONTACTS_WITH_PHONES_ACTION" />
-		<field name="LIST_DEFAULT" />
-		<field name="LIST_FREQUENT_ACTION" />
-		<field name="LIST_GROUP_ACTION" />
-		<field name="LIST_STARRED_ACTION" />
-		<field name="LIST_STREQUENT_ACTION" />
-		<field name="TITLE_EXTRA_KEY" />
-	</class>
-	<class name="android/provider/Contacts$OrganizationColumns" since="1">
-		<extends name="java/lang/Object" />
-		<field name="COMPANY" />
-		<field name="ISPRIMARY" />
-		<field name="LABEL" />
-		<field name="PERSON_ID" />
-		<field name="TITLE" />
-		<field name="TYPE" />
-		<field name="TYPE_CUSTOM" />
-		<field name="TYPE_OTHER" />
-		<field name="TYPE_WORK" />
-	</class>
-	<class name="android/provider/Contacts$Organizations" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<implements name="android/provider/Contacts$OrganizationColumns" />
-		<method name="&lt;init>()V" />
-		<method name="getDisplayLabel(Landroid/content/Context;ILjava/lang/CharSequence;)Ljava/lang/CharSequence;" />
-		<field name="CONTENT_DIRECTORY" />
-		<field name="CONTENT_URI" />
-		<field name="DEFAULT_SORT_ORDER" />
-	</class>
-	<class name="android/provider/Contacts$People" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<implements name="android/provider/Contacts$PeopleColumns" />
-		<implements name="android/provider/Contacts$PhonesColumns" />
-		<implements name="android/provider/Contacts$PresenceColumns" />
-		<method name="&lt;init>()V" />
-		<method name="addToGroup(Landroid/content/ContentResolver;JJ)Landroid/net/Uri;" />
-		<method name="addToGroup(Landroid/content/ContentResolver;JLjava/lang/String;)Landroid/net/Uri;" />
-		<method name="addToMyContactsGroup(Landroid/content/ContentResolver;J)Landroid/net/Uri;" />
-		<method name="createPersonInMyContactsGroup(Landroid/content/ContentResolver;Landroid/content/ContentValues;)Landroid/net/Uri;" />
-		<method name="loadContactPhoto(Landroid/content/Context;Landroid/net/Uri;ILandroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;" />
-		<method name="markAsContacted(Landroid/content/ContentResolver;J)V" />
-		<method name="openContactPhotoInputStream(Landroid/content/ContentResolver;Landroid/net/Uri;)Ljava/io/InputStream;" />
-		<method name="queryGroups(Landroid/content/ContentResolver;J)Landroid/database/Cursor;" />
-		<method name="setPhotoData(Landroid/content/ContentResolver;Landroid/net/Uri;[B)V" />
-		<field name="CONTENT_FILTER_URI" />
-		<field name="CONTENT_ITEM_TYPE" />
-		<field name="CONTENT_TYPE" />
-		<field name="CONTENT_URI" />
-		<field name="DEFAULT_SORT_ORDER" />
-		<field name="DELETED_CONTENT_URI" />
-		<field name="PRIMARY_EMAIL_ID" />
-		<field name="PRIMARY_ORGANIZATION_ID" />
-		<field name="PRIMARY_PHONE_ID" />
-	</class>
-	<class name="android/provider/Contacts$People$ContactMethods" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<implements name="android/provider/Contacts$ContactMethodsColumns" />
-		<implements name="android/provider/Contacts$PeopleColumns" />
-		<method name="&lt;init>()V" />
-		<field name="CONTENT_DIRECTORY" />
-		<field name="DEFAULT_SORT_ORDER" />
-	</class>
-	<class name="android/provider/Contacts$People$Extensions" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<implements name="android/provider/Contacts$ExtensionsColumns" />
-		<method name="&lt;init>()V" />
-		<field name="CONTENT_DIRECTORY" />
-		<field name="DEFAULT_SORT_ORDER" />
-		<field name="PERSON_ID" />
-	</class>
-	<class name="android/provider/Contacts$People$Phones" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<implements name="android/provider/Contacts$PeopleColumns" />
-		<implements name="android/provider/Contacts$PhonesColumns" />
-		<method name="&lt;init>()V" />
-		<field name="CONTENT_DIRECTORY" />
-		<field name="DEFAULT_SORT_ORDER" />
-	</class>
-	<class name="android/provider/Contacts$PeopleColumns" since="1">
-		<extends name="java/lang/Object" />
-		<field name="CUSTOM_RINGTONE" />
-		<field name="DISPLAY_NAME" />
-		<field name="LAST_TIME_CONTACTED" />
-		<field name="NAME" />
-		<field name="NOTES" />
-		<field name="PHONETIC_NAME" since="3" />
-		<field name="PHOTO_VERSION" />
-		<field name="SEND_TO_VOICEMAIL" />
-		<field name="STARRED" />
-		<field name="TIMES_CONTACTED" />
-	</class>
-	<class name="android/provider/Contacts$Phones" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<implements name="android/provider/Contacts$PeopleColumns" />
-		<implements name="android/provider/Contacts$PhonesColumns" />
-		<method name="&lt;init>()V" />
-		<method name="getDisplayLabel(Landroid/content/Context;ILjava/lang/CharSequence;)Ljava/lang/CharSequence;" />
-		<method name="getDisplayLabel(Landroid/content/Context;ILjava/lang/CharSequence;[Ljava/lang/CharSequence;)Ljava/lang/CharSequence;" />
-		<field name="CONTENT_FILTER_URL" />
-		<field name="CONTENT_ITEM_TYPE" />
-		<field name="CONTENT_TYPE" />
-		<field name="CONTENT_URI" />
-		<field name="DEFAULT_SORT_ORDER" />
-		<field name="PERSON_ID" />
-	</class>
-	<class name="android/provider/Contacts$PhonesColumns" since="1">
-		<extends name="java/lang/Object" />
-		<field name="ISPRIMARY" />
-		<field name="LABEL" />
-		<field name="NUMBER" />
-		<field name="NUMBER_KEY" />
-		<field name="TYPE" />
-		<field name="TYPE_CUSTOM" />
-		<field name="TYPE_FAX_HOME" />
-		<field name="TYPE_FAX_WORK" />
-		<field name="TYPE_HOME" />
-		<field name="TYPE_MOBILE" />
-		<field name="TYPE_OTHER" />
-		<field name="TYPE_PAGER" />
-		<field name="TYPE_WORK" />
-	</class>
-	<class name="android/provider/Contacts$Photos" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<implements name="android/provider/Contacts$PhotosColumns" />
-		<method name="&lt;init>()V" />
-		<field name="CONTENT_DIRECTORY" />
-		<field name="CONTENT_URI" />
-		<field name="DEFAULT_SORT_ORDER" />
-	</class>
-	<class name="android/provider/Contacts$PhotosColumns" since="1">
-		<extends name="java/lang/Object" />
-		<field name="DATA" />
-		<field name="DOWNLOAD_REQUIRED" />
-		<field name="EXISTS_ON_SERVER" />
-		<field name="LOCAL_VERSION" />
-		<field name="PERSON_ID" />
-		<field name="SYNC_ERROR" />
-	</class>
-	<class name="android/provider/Contacts$PresenceColumns" since="1">
-		<extends name="java/lang/Object" />
-		<field name="AVAILABLE" since="8" />
-		<field name="AWAY" since="8" />
-		<field name="DO_NOT_DISTURB" since="8" />
-		<field name="IDLE" since="8" />
-		<field name="IM_ACCOUNT" />
-		<field name="IM_HANDLE" />
-		<field name="IM_PROTOCOL" />
-		<field name="INVISIBLE" since="8" />
-		<field name="OFFLINE" since="8" />
-		<field name="PRESENCE_CUSTOM_STATUS" since="8" />
-		<field name="PRESENCE_STATUS" since="8" />
-		<field name="PRIORITY" since="8" />
-	</class>
-	<class name="android/provider/Contacts$Settings" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<implements name="android/provider/Contacts$SettingsColumns" />
-		<method name="&lt;init>()V" />
-		<method name="getSetting(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="setSetting(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
-		<field name="CONTENT_DIRECTORY" />
-		<field name="CONTENT_URI" />
-		<field name="DEFAULT_SORT_ORDER" />
-		<field name="SYNC_EVERYTHING" />
-	</class>
-	<class name="android/provider/Contacts$SettingsColumns" since="1">
-		<extends name="java/lang/Object" />
-		<field name="KEY" />
-		<field name="VALUE" />
-		<field name="_SYNC_ACCOUNT" />
-		<field name="_SYNC_ACCOUNT_TYPE" since="5" />
-	</class>
-	<class name="android/provider/ContactsContract" since="5">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="isProfileId(J)Z" since="14" />
-		<field name="AUTHORITY" />
-		<field name="AUTHORITY_URI" />
-		<field name="CALLER_IS_SYNCADAPTER" />
-		<field name="DIRECTORY_PARAM_KEY" since="11" />
-		<field name="LIMIT_PARAM_KEY" since="11" />
-		<field name="PRIMARY_ACCOUNT_NAME" since="14" />
-		<field name="PRIMARY_ACCOUNT_TYPE" since="14" />
-		<field name="REMOVE_DUPLICATE_ENTRIES" since="21" />
-		<field name="STREQUENT_PHONE_ONLY" since="21" />
-	</class>
-	<class name="android/provider/ContactsContract$AggregationExceptions" since="5">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<method name="&lt;init>()V" />
-		<field name="CONTENT_ITEM_TYPE" />
-		<field name="CONTENT_TYPE" />
-		<field name="CONTENT_URI" />
-		<field name="RAW_CONTACT_ID1" />
-		<field name="RAW_CONTACT_ID2" />
-		<field name="TYPE" />
-		<field name="TYPE_AUTOMATIC" />
-		<field name="TYPE_KEEP_SEPARATE" />
-		<field name="TYPE_KEEP_TOGETHER" />
-	</class>
-	<class name="android/provider/ContactsContract$BaseSyncColumns" since="5">
-		<extends name="java/lang/Object" />
-		<field name="SYNC1" />
-		<field name="SYNC2" />
-		<field name="SYNC3" />
-		<field name="SYNC4" />
-	</class>
-	<class name="android/provider/ContactsContract$CommonDataKinds" since="5">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="android/provider/ContactsContract$CommonDataKinds$BaseTypes" since="5">
-		<extends name="java/lang/Object" />
-		<field name="TYPE_CUSTOM" />
-	</class>
-	<class name="android/provider/ContactsContract$CommonDataKinds$Callable" since="21">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/ContactsContract$CommonDataKinds$CommonColumns" />
-		<implements name="android/provider/ContactsContract$DataColumnsWithJoins" />
-		<method name="&lt;init>()V" />
-		<field name="CONTENT_FILTER_URI" />
-		<field name="CONTENT_URI" />
-	</class>
-	<class name="android/provider/ContactsContract$CommonDataKinds$CommonColumns" since="5">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/ContactsContract$CommonDataKinds$BaseTypes" />
-		<field name="DATA" />
-		<field name="LABEL" />
-		<field name="TYPE" />
-	</class>
-	<class name="android/provider/ContactsContract$CommonDataKinds$Contactables" since="18">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/ContactsContract$CommonDataKinds$CommonColumns" />
-		<implements name="android/provider/ContactsContract$DataColumnsWithJoins" />
-		<method name="&lt;init>()V" />
-		<field name="CONTENT_FILTER_URI" />
-		<field name="CONTENT_URI" />
-		<field name="VISIBLE_CONTACTS_ONLY" />
-	</class>
-	<class name="android/provider/ContactsContract$CommonDataKinds$Email" since="5">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/ContactsContract$CommonDataKinds$CommonColumns" />
-		<implements name="android/provider/ContactsContract$DataColumnsWithJoins" />
-		<method name="&lt;init>()V" />
-		<method name="getTypeLabel(Landroid/content/res/Resources;ILjava/lang/CharSequence;)Ljava/lang/CharSequence;" />
-		<method name="getTypeLabelResource(I)I" />
-		<field name="ADDRESS" since="11" />
-		<field name="CONTENT_FILTER_URI" />
-		<field name="CONTENT_ITEM_TYPE" />
-		<field name="CONTENT_LOOKUP_URI" />
-		<field name="CONTENT_TYPE" />
-		<field name="CONTENT_URI" />
-		<field name="DISPLAY_NAME" />
-		<field name="TYPE_HOME" />
-		<field name="TYPE_MOBILE" />
-		<field name="TYPE_OTHER" />
-		<field name="TYPE_WORK" />
-	</class>
-	<class name="android/provider/ContactsContract$CommonDataKinds$Event" since="5">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/ContactsContract$CommonDataKinds$CommonColumns" />
-		<implements name="android/provider/ContactsContract$DataColumnsWithJoins" />
-		<method name="&lt;init>()V" />
-		<method name="getTypeResource(Ljava/lang/Integer;)I" />
-		<field name="CONTENT_ITEM_TYPE" />
-		<field name="START_DATE" />
-		<field name="TYPE_ANNIVERSARY" />
-		<field name="TYPE_BIRTHDAY" />
-		<field name="TYPE_OTHER" />
-	</class>
-	<class name="android/provider/ContactsContract$CommonDataKinds$GroupMembership" since="5">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/ContactsContract$DataColumnsWithJoins" />
-		<method name="&lt;init>()V" />
-		<field name="CONTENT_ITEM_TYPE" />
-		<field name="GROUP_ROW_ID" />
-		<field name="GROUP_SOURCE_ID" />
-	</class>
-	<class name="android/provider/ContactsContract$CommonDataKinds$Identity" since="14">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/ContactsContract$DataColumnsWithJoins" />
-		<method name="&lt;init>()V" />
-		<field name="CONTENT_ITEM_TYPE" />
-		<field name="IDENTITY" />
-		<field name="NAMESPACE" />
-	</class>
-	<class name="android/provider/ContactsContract$CommonDataKinds$Im" since="5">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/ContactsContract$CommonDataKinds$CommonColumns" />
-		<implements name="android/provider/ContactsContract$DataColumnsWithJoins" />
-		<method name="&lt;init>()V" />
-		<method name="getProtocolLabel(Landroid/content/res/Resources;ILjava/lang/CharSequence;)Ljava/lang/CharSequence;" />
-		<method name="getProtocolLabelResource(I)I" />
-		<method name="getTypeLabel(Landroid/content/res/Resources;ILjava/lang/CharSequence;)Ljava/lang/CharSequence;" />
-		<method name="getTypeLabelResource(I)I" />
-		<field name="CONTENT_ITEM_TYPE" />
-		<field name="CUSTOM_PROTOCOL" />
-		<field name="PROTOCOL" />
-		<field name="PROTOCOL_AIM" />
-		<field name="PROTOCOL_CUSTOM" />
-		<field name="PROTOCOL_GOOGLE_TALK" />
-		<field name="PROTOCOL_ICQ" />
-		<field name="PROTOCOL_JABBER" />
-		<field name="PROTOCOL_MSN" />
-		<field name="PROTOCOL_NETMEETING" />
-		<field name="PROTOCOL_QQ" />
-		<field name="PROTOCOL_SKYPE" />
-		<field name="PROTOCOL_YAHOO" />
-		<field name="TYPE_HOME" />
-		<field name="TYPE_OTHER" />
-		<field name="TYPE_WORK" />
-	</class>
-	<class name="android/provider/ContactsContract$CommonDataKinds$Nickname" since="5">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/ContactsContract$CommonDataKinds$CommonColumns" />
-		<implements name="android/provider/ContactsContract$DataColumnsWithJoins" />
-		<method name="&lt;init>()V" />
-		<field name="CONTENT_ITEM_TYPE" />
-		<field name="NAME" />
-		<field name="TYPE_DEFAULT" />
-		<field name="TYPE_INITIALS" />
-		<field name="TYPE_MAIDEN_NAME" since="9" />
-		<field name="TYPE_MAINDEN_NAME" />
-		<field name="TYPE_OTHER_NAME" />
-		<field name="TYPE_SHORT_NAME" />
-	</class>
-	<class name="android/provider/ContactsContract$CommonDataKinds$Note" since="5">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/ContactsContract$DataColumnsWithJoins" />
-		<method name="&lt;init>()V" />
-		<field name="CONTENT_ITEM_TYPE" />
-		<field name="NOTE" />
-	</class>
-	<class name="android/provider/ContactsContract$CommonDataKinds$Organization" since="5">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/ContactsContract$CommonDataKinds$CommonColumns" />
-		<implements name="android/provider/ContactsContract$DataColumnsWithJoins" />
-		<method name="&lt;init>()V" />
-		<method name="getTypeLabel(Landroid/content/res/Resources;ILjava/lang/CharSequence;)Ljava/lang/CharSequence;" />
-		<method name="getTypeLabelResource(I)I" />
-		<field name="COMPANY" />
-		<field name="CONTENT_ITEM_TYPE" />
-		<field name="DEPARTMENT" />
-		<field name="JOB_DESCRIPTION" />
-		<field name="OFFICE_LOCATION" />
-		<field name="PHONETIC_NAME" />
-		<field name="SYMBOL" />
-		<field name="TITLE" />
-		<field name="TYPE_OTHER" />
-		<field name="TYPE_WORK" />
-	</class>
-	<class name="android/provider/ContactsContract$CommonDataKinds$Phone" since="5">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/ContactsContract$CommonDataKinds$CommonColumns" />
-		<implements name="android/provider/ContactsContract$DataColumnsWithJoins" />
-		<method name="&lt;init>()V" />
-		<method name="getTypeLabel(Landroid/content/res/Resources;ILjava/lang/CharSequence;)Ljava/lang/CharSequence;" />
-		<method name="getTypeLabelResource(I)I" />
-		<field name="CONTENT_FILTER_URI" />
-		<field name="CONTENT_ITEM_TYPE" />
-		<field name="CONTENT_TYPE" />
-		<field name="CONTENT_URI" />
-		<field name="NORMALIZED_NUMBER" since="16" />
-		<field name="NUMBER" />
-		<field name="SEARCH_DISPLAY_NAME_KEY" since="16" />
-		<field name="SEARCH_PHONE_NUMBER_KEY" since="16" />
-		<field name="TYPE_ASSISTANT" />
-		<field name="TYPE_CALLBACK" />
-		<field name="TYPE_CAR" />
-		<field name="TYPE_COMPANY_MAIN" />
-		<field name="TYPE_FAX_HOME" />
-		<field name="TYPE_FAX_WORK" />
-		<field name="TYPE_HOME" />
-		<field name="TYPE_ISDN" />
-		<field name="TYPE_MAIN" />
-		<field name="TYPE_MMS" />
-		<field name="TYPE_MOBILE" />
-		<field name="TYPE_OTHER" />
-		<field name="TYPE_OTHER_FAX" />
-		<field name="TYPE_PAGER" />
-		<field name="TYPE_RADIO" />
-		<field name="TYPE_TELEX" />
-		<field name="TYPE_TTY_TDD" />
-		<field name="TYPE_WORK" />
-		<field name="TYPE_WORK_MOBILE" />
-		<field name="TYPE_WORK_PAGER" />
-	</class>
-	<class name="android/provider/ContactsContract$CommonDataKinds$Photo" since="5">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/ContactsContract$DataColumnsWithJoins" />
-		<method name="&lt;init>()V" />
-		<field name="CONTENT_ITEM_TYPE" />
-		<field name="PHOTO" />
-		<field name="PHOTO_FILE_ID" since="14" />
-	</class>
-	<class name="android/provider/ContactsContract$CommonDataKinds$Relation" since="5">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/ContactsContract$CommonDataKinds$CommonColumns" />
-		<implements name="android/provider/ContactsContract$DataColumnsWithJoins" />
-		<method name="&lt;init>()V" />
-		<method name="getTypeLabel(Landroid/content/res/Resources;ILjava/lang/CharSequence;)Ljava/lang/CharSequence;" since="11" />
-		<method name="getTypeLabelResource(I)I" since="11" />
-		<field name="CONTENT_ITEM_TYPE" />
-		<field name="NAME" />
-		<field name="TYPE_ASSISTANT" />
-		<field name="TYPE_BROTHER" />
-		<field name="TYPE_CHILD" />
-		<field name="TYPE_DOMESTIC_PARTNER" />
-		<field name="TYPE_FATHER" />
-		<field name="TYPE_FRIEND" />
-		<field name="TYPE_MANAGER" />
-		<field name="TYPE_MOTHER" />
-		<field name="TYPE_PARENT" />
-		<field name="TYPE_PARTNER" />
-		<field name="TYPE_REFERRED_BY" />
-		<field name="TYPE_RELATIVE" />
-		<field name="TYPE_SISTER" />
-		<field name="TYPE_SPOUSE" />
-	</class>
-	<class name="android/provider/ContactsContract$CommonDataKinds$SipAddress" since="9">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/ContactsContract$CommonDataKinds$CommonColumns" />
-		<implements name="android/provider/ContactsContract$DataColumnsWithJoins" />
-		<method name="&lt;init>()V" />
-		<method name="getTypeLabel(Landroid/content/res/Resources;ILjava/lang/CharSequence;)Ljava/lang/CharSequence;" />
-		<method name="getTypeLabelResource(I)I" />
-		<field name="CONTENT_ITEM_TYPE" />
-		<field name="SIP_ADDRESS" />
-		<field name="TYPE_HOME" />
-		<field name="TYPE_OTHER" />
-		<field name="TYPE_WORK" />
-	</class>
-	<class name="android/provider/ContactsContract$CommonDataKinds$StructuredName" since="5">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/ContactsContract$DataColumnsWithJoins" />
-		<method name="&lt;init>()V" />
-		<field name="CONTENT_ITEM_TYPE" />
-		<field name="DISPLAY_NAME" />
-		<field name="FAMILY_NAME" />
-		<field name="FULL_NAME_STYLE" since="21" />
-		<field name="GIVEN_NAME" />
-		<field name="MIDDLE_NAME" />
-		<field name="PHONETIC_FAMILY_NAME" />
-		<field name="PHONETIC_GIVEN_NAME" />
-		<field name="PHONETIC_MIDDLE_NAME" />
-		<field name="PREFIX" />
-		<field name="SUFFIX" />
-	</class>
-	<class name="android/provider/ContactsContract$CommonDataKinds$StructuredPostal" since="5">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/ContactsContract$CommonDataKinds$CommonColumns" />
-		<implements name="android/provider/ContactsContract$DataColumnsWithJoins" />
-		<method name="&lt;init>()V" />
-		<method name="getTypeLabel(Landroid/content/res/Resources;ILjava/lang/CharSequence;)Ljava/lang/CharSequence;" />
-		<method name="getTypeLabelResource(I)I" />
-		<field name="CITY" />
-		<field name="CONTENT_ITEM_TYPE" />
-		<field name="CONTENT_TYPE" />
-		<field name="CONTENT_URI" />
-		<field name="COUNTRY" />
-		<field name="FORMATTED_ADDRESS" />
-		<field name="NEIGHBORHOOD" />
-		<field name="POBOX" />
-		<field name="POSTCODE" />
-		<field name="REGION" />
-		<field name="STREET" />
-		<field name="TYPE_HOME" />
-		<field name="TYPE_OTHER" />
-		<field name="TYPE_WORK" />
-	</class>
-	<class name="android/provider/ContactsContract$CommonDataKinds$Website" since="5">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/ContactsContract$CommonDataKinds$CommonColumns" />
-		<implements name="android/provider/ContactsContract$DataColumnsWithJoins" />
-		<method name="&lt;init>()V" />
-		<field name="CONTENT_ITEM_TYPE" />
-		<field name="TYPE_BLOG" />
-		<field name="TYPE_FTP" />
-		<field name="TYPE_HOME" />
-		<field name="TYPE_HOMEPAGE" />
-		<field name="TYPE_OTHER" />
-		<field name="TYPE_PROFILE" />
-		<field name="TYPE_WORK" />
-		<field name="URL" />
-	</class>
-	<class name="android/provider/ContactsContract$ContactNameColumns" since="11">
-		<extends name="java/lang/Object" />
-		<field name="DISPLAY_NAME_ALTERNATIVE" />
-		<field name="DISPLAY_NAME_PRIMARY" />
-		<field name="DISPLAY_NAME_SOURCE" />
-		<field name="PHONETIC_NAME" />
-		<field name="PHONETIC_NAME_STYLE" />
-		<field name="SORT_KEY_ALTERNATIVE" />
-		<field name="SORT_KEY_PRIMARY" />
-	</class>
-	<class name="android/provider/ContactsContract$ContactOptionsColumns" since="5">
-		<extends name="java/lang/Object" />
-		<field name="CUSTOM_RINGTONE" />
-		<field name="LAST_TIME_CONTACTED" />
-		<field name="SEND_TO_VOICEMAIL" />
-		<field name="STARRED" />
-		<field name="TIMES_CONTACTED" />
-	</class>
-	<class name="android/provider/ContactsContract$ContactStatusColumns" since="5">
-		<extends name="java/lang/Object" />
-		<field name="CONTACT_CHAT_CAPABILITY" since="11" />
-		<field name="CONTACT_PRESENCE" />
-		<field name="CONTACT_STATUS" />
-		<field name="CONTACT_STATUS_ICON" />
-		<field name="CONTACT_STATUS_LABEL" />
-		<field name="CONTACT_STATUS_RES_PACKAGE" />
-		<field name="CONTACT_STATUS_TIMESTAMP" />
-	</class>
-	<class name="android/provider/ContactsContract$Contacts" since="5">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<implements name="android/provider/ContactsContract$ContactNameColumns" since="11" />
-		<implements name="android/provider/ContactsContract$ContactOptionsColumns" />
-		<implements name="android/provider/ContactsContract$ContactStatusColumns" />
-		<implements name="android/provider/ContactsContract$ContactsColumns" />
-		<method name="&lt;init>()V" />
-		<method name="getLookupUri(JLjava/lang/String;)Landroid/net/Uri;" />
-		<method name="getLookupUri(Landroid/content/ContentResolver;Landroid/net/Uri;)Landroid/net/Uri;" />
-		<method name="lookupContact(Landroid/content/ContentResolver;Landroid/net/Uri;)Landroid/net/Uri;" />
-		<method name="markAsContacted(Landroid/content/ContentResolver;J)V" />
-		<method name="openContactPhotoInputStream(Landroid/content/ContentResolver;Landroid/net/Uri;)Ljava/io/InputStream;" />
-		<method name="openContactPhotoInputStream(Landroid/content/ContentResolver;Landroid/net/Uri;Z)Ljava/io/InputStream;" since="14" />
-		<field name="CONTENT_FILTER_URI" />
-		<field name="CONTENT_GROUP_URI" />
-		<field name="CONTENT_ITEM_TYPE" />
-		<field name="CONTENT_LOOKUP_URI" />
-		<field name="CONTENT_MULTI_VCARD_URI" since="21" />
-		<field name="CONTENT_STREQUENT_FILTER_URI" />
-		<field name="CONTENT_STREQUENT_URI" />
-		<field name="CONTENT_TYPE" />
-		<field name="CONTENT_URI" />
-		<field name="CONTENT_VCARD_TYPE" />
-		<field name="CONTENT_VCARD_URI" />
-	</class>
-	<class name="android/provider/ContactsContract$Contacts$AggregationSuggestions" since="5">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<implements name="android/provider/ContactsContract$ContactOptionsColumns" since="11" />
-		<implements name="android/provider/ContactsContract$ContactStatusColumns" since="11" />
-		<implements name="android/provider/ContactsContract$ContactsColumns" />
-		<method name="&lt;init>()V" />
-		<field name="CONTENT_DIRECTORY" />
-	</class>
-	<class name="android/provider/ContactsContract$Contacts$Data" since="5">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<implements name="android/provider/ContactsContract$DataColumns" />
-		<method name="&lt;init>()V" />
-		<field name="CONTENT_DIRECTORY" />
-	</class>
-	<class name="android/provider/ContactsContract$Contacts$Entity" since="11">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<implements name="android/provider/ContactsContract$BaseSyncColumns" />
-		<implements name="android/provider/ContactsContract$ContactNameColumns" />
-		<implements name="android/provider/ContactsContract$ContactOptionsColumns" />
-		<implements name="android/provider/ContactsContract$ContactStatusColumns" />
-		<implements name="android/provider/ContactsContract$ContactsColumns" />
-		<implements name="android/provider/ContactsContract$DataColumns" />
-		<implements name="android/provider/ContactsContract$RawContactsColumns" />
-		<implements name="android/provider/ContactsContract$StatusColumns" />
-		<implements name="android/provider/ContactsContract$SyncColumns" />
-		<method name="&lt;init>()V" />
-		<field name="CONTENT_DIRECTORY" />
-		<field name="DATA_ID" />
-		<field name="RAW_CONTACT_ID" />
-	</class>
-	<class name="android/provider/ContactsContract$Contacts$Photo" since="5">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<implements name="android/provider/ContactsContract$DataColumns" />
-		<implements name="android/provider/ContactsContract$DataColumnsWithJoins" since="11" />
-		<method name="&lt;init>()V" />
-		<field name="CONTENT_DIRECTORY" />
-		<field name="DISPLAY_PHOTO" since="14" />
-		<field name="PHOTO" since="11" />
-		<field name="PHOTO_FILE_ID" since="14" />
-	</class>
-	<class name="android/provider/ContactsContract$Contacts$StreamItems" since="15">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/ContactsContract$StreamItemsColumns" />
-		<method name="&lt;init>()V" />
-		<field name="CONTENT_DIRECTORY" />
-	</class>
-	<class name="android/provider/ContactsContract$ContactsColumns" since="5">
-		<extends name="java/lang/Object" />
-		<field name="CONTACT_LAST_UPDATED_TIMESTAMP" since="18" />
-		<field name="DISPLAY_NAME" />
-		<field name="HAS_PHONE_NUMBER" />
-		<field name="IN_DEFAULT_DIRECTORY" since="21" />
-		<field name="IN_VISIBLE_GROUP" />
-		<field name="IS_USER_PROFILE" since="14" />
-		<field name="LOOKUP_KEY" />
-		<field name="PHOTO_FILE_ID" since="14" />
-		<field name="PHOTO_ID" />
-		<field name="PHOTO_THUMBNAIL_URI" since="11" />
-		<field name="PHOTO_URI" since="11" />
-	</class>
-	<class name="android/provider/ContactsContract$Data" since="5">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/ContactsContract$DataColumnsWithJoins" />
-		<method name="&lt;init>()V" />
-		<method name="getContactLookupUri(Landroid/content/ContentResolver;Landroid/net/Uri;)Landroid/net/Uri;" />
-		<field name="CONTENT_TYPE" />
-		<field name="CONTENT_URI" />
-		<field name="VISIBLE_CONTACTS_ONLY" since="18" />
-	</class>
-	<class name="android/provider/ContactsContract$DataColumns" since="5">
-		<extends name="java/lang/Object" />
-		<field name="DATA1" />
-		<field name="DATA10" />
-		<field name="DATA11" />
-		<field name="DATA12" />
-		<field name="DATA13" />
-		<field name="DATA14" />
-		<field name="DATA15" />
-		<field name="DATA2" />
-		<field name="DATA3" />
-		<field name="DATA4" />
-		<field name="DATA5" />
-		<field name="DATA6" />
-		<field name="DATA7" />
-		<field name="DATA8" />
-		<field name="DATA9" />
-		<field name="DATA_VERSION" />
-		<field name="IS_PRIMARY" />
-		<field name="IS_READ_ONLY" since="11" />
-		<field name="IS_SUPER_PRIMARY" />
-		<field name="MIMETYPE" />
-		<field name="RAW_CONTACT_ID" />
-		<field name="SYNC1" />
-		<field name="SYNC2" />
-		<field name="SYNC3" />
-		<field name="SYNC4" />
-	</class>
-	<class name="android/provider/ContactsContract$DataColumnsWithJoins" since="5">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<implements name="android/provider/ContactsContract$ContactNameColumns" since="11" />
-		<implements name="android/provider/ContactsContract$ContactOptionsColumns" />
-		<implements name="android/provider/ContactsContract$ContactStatusColumns" />
-		<implements name="android/provider/ContactsContract$ContactsColumns" />
-		<implements name="android/provider/ContactsContract$DataColumns" />
-		<implements name="android/provider/ContactsContract$DataUsageStatColumns" since="18" />
-		<implements name="android/provider/ContactsContract$RawContactsColumns" />
-		<implements name="android/provider/ContactsContract$StatusColumns" />
-	</class>
-	<class name="android/provider/ContactsContract$DataUsageFeedback" since="14">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="DELETE_USAGE_URI" since="16" />
-		<field name="FEEDBACK_URI" />
-		<field name="USAGE_TYPE" />
-		<field name="USAGE_TYPE_CALL" />
-		<field name="USAGE_TYPE_LONG_TEXT" />
-		<field name="USAGE_TYPE_SHORT_TEXT" />
-	</class>
-	<class name="android/provider/ContactsContract$DataUsageStatColumns" since="18">
-		<extends name="java/lang/Object" />
-		<field name="LAST_TIME_USED" />
-		<field name="TIMES_USED" />
-	</class>
-	<class name="android/provider/ContactsContract$DeletedContacts" since="18">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/ContactsContract$DeletedContactsColumns" />
-		<method name="&lt;init>()V" />
-		<field name="CONTENT_URI" />
-		<field name="DAYS_KEPT_MILLISECONDS" />
-	</class>
-	<class name="android/provider/ContactsContract$DeletedContactsColumns" since="18">
-		<extends name="java/lang/Object" />
-		<field name="CONTACT_DELETED_TIMESTAMP" />
-		<field name="CONTACT_ID" />
-	</class>
-	<class name="android/provider/ContactsContract$Directory" since="11">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<method name="&lt;init>()V" />
-		<method name="notifyDirectoryChange(Landroid/content/ContentResolver;)V" />
-		<field name="ACCOUNT_NAME" />
-		<field name="ACCOUNT_TYPE" />
-		<field name="CONTENT_ITEM_TYPE" />
-		<field name="CONTENT_TYPE" />
-		<field name="CONTENT_URI" />
-		<field name="DEFAULT" />
-		<field name="DIRECTORY_AUTHORITY" />
-		<field name="DISPLAY_NAME" />
-		<field name="EXPORT_SUPPORT" />
-		<field name="EXPORT_SUPPORT_ANY_ACCOUNT" />
-		<field name="EXPORT_SUPPORT_NONE" />
-		<field name="EXPORT_SUPPORT_SAME_ACCOUNT_ONLY" />
-		<field name="LOCAL_INVISIBLE" />
-		<field name="PACKAGE_NAME" />
-		<field name="PHOTO_SUPPORT" />
-		<field name="PHOTO_SUPPORT_FULL" />
-		<field name="PHOTO_SUPPORT_FULL_SIZE_ONLY" />
-		<field name="PHOTO_SUPPORT_NONE" />
-		<field name="PHOTO_SUPPORT_THUMBNAIL_ONLY" />
-		<field name="SHORTCUT_SUPPORT" />
-		<field name="SHORTCUT_SUPPORT_DATA_ITEMS_ONLY" />
-		<field name="SHORTCUT_SUPPORT_FULL" />
-		<field name="SHORTCUT_SUPPORT_NONE" />
-		<field name="TYPE_RESOURCE_ID" />
-	</class>
-	<class name="android/provider/ContactsContract$DisplayNameSources" since="11">
-		<extends name="java/lang/Object" />
-		<field name="EMAIL" />
-		<field name="NICKNAME" />
-		<field name="ORGANIZATION" />
-		<field name="PHONE" />
-		<field name="STRUCTURED_NAME" />
-		<field name="UNDEFINED" />
-	</class>
-	<class name="android/provider/ContactsContract$DisplayPhoto" since="14">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="CONTENT_MAX_DIMENSIONS_URI" />
-		<field name="CONTENT_URI" />
-		<field name="DISPLAY_MAX_DIM" />
-		<field name="THUMBNAIL_MAX_DIM" />
-	</class>
-	<class name="android/provider/ContactsContract$FullNameStyle" since="11">
-		<extends name="java/lang/Object" />
-		<field name="CHINESE" />
-		<field name="CJK" />
-		<field name="JAPANESE" />
-		<field name="KOREAN" />
-		<field name="UNDEFINED" />
-		<field name="WESTERN" />
-	</class>
-	<class name="android/provider/ContactsContract$Groups" since="5">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<implements name="android/provider/ContactsContract$GroupsColumns" />
-		<implements name="android/provider/ContactsContract$SyncColumns" />
-		<method name="&lt;init>()V" />
-		<method name="newEntityIterator(Landroid/database/Cursor;)Landroid/content/EntityIterator;" since="8" />
-		<field name="CONTENT_ITEM_TYPE" />
-		<field name="CONTENT_SUMMARY_URI" />
-		<field name="CONTENT_TYPE" />
-		<field name="CONTENT_URI" />
-	</class>
-	<class name="android/provider/ContactsContract$GroupsColumns" since="5">
-		<extends name="java/lang/Object" />
-		<field name="AUTO_ADD" since="11" />
-		<field name="DATA_SET" since="14" />
-		<field name="DELETED" />
-		<field name="FAVORITES" since="11" />
-		<field name="GROUP_IS_READ_ONLY" since="11" />
-		<field name="GROUP_VISIBLE" />
-		<field name="NOTES" />
-		<field name="SHOULD_SYNC" />
-		<field name="SUMMARY_COUNT" />
-		<field name="SUMMARY_WITH_PHONES" />
-		<field name="SYSTEM_ID" />
-		<field name="TITLE" />
-	</class>
-	<class name="android/provider/ContactsContract$Intents" since="5">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="ATTACH_IMAGE" />
-		<field name="CONTACTS_DATABASE_CREATED" since="18" />
-		<field name="EXTRA_CREATE_DESCRIPTION" />
-		<field name="EXTRA_FORCE_CREATE" />
-		<field name="INVITE_CONTACT" since="14" />
-		<field name="SEARCH_SUGGESTION_CLICKED" />
-		<field name="SEARCH_SUGGESTION_CREATE_CONTACT_CLICKED" />
-		<field name="SEARCH_SUGGESTION_DIAL_NUMBER_CLICKED" />
-		<field name="SHOW_OR_CREATE_CONTACT" />
-	</class>
-	<class name="android/provider/ContactsContract$Intents$Insert" since="5">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="ACTION" />
-		<field name="COMPANY" />
-		<field name="DATA" since="11" />
-		<field name="EMAIL" />
-		<field name="EMAIL_ISPRIMARY" />
-		<field name="EMAIL_TYPE" />
-		<field name="FULL_MODE" />
-		<field name="IM_HANDLE" />
-		<field name="IM_ISPRIMARY" />
-		<field name="IM_PROTOCOL" />
-		<field name="JOB_TITLE" />
-		<field name="NAME" />
-		<field name="NOTES" />
-		<field name="PHONE" />
-		<field name="PHONETIC_NAME" />
-		<field name="PHONE_ISPRIMARY" />
-		<field name="PHONE_TYPE" />
-		<field name="POSTAL" />
-		<field name="POSTAL_ISPRIMARY" />
-		<field name="POSTAL_TYPE" />
-		<field name="SECONDARY_EMAIL" />
-		<field name="SECONDARY_EMAIL_TYPE" />
-		<field name="SECONDARY_PHONE" />
-		<field name="SECONDARY_PHONE_TYPE" />
-		<field name="TERTIARY_EMAIL" />
-		<field name="TERTIARY_EMAIL_TYPE" />
-		<field name="TERTIARY_PHONE" />
-		<field name="TERTIARY_PHONE_TYPE" />
-	</class>
-	<class name="android/provider/ContactsContract$PhoneLookup" since="5">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<implements name="android/provider/ContactsContract$ContactOptionsColumns" />
-		<implements name="android/provider/ContactsContract$ContactsColumns" />
-		<implements name="android/provider/ContactsContract$PhoneLookupColumns" />
-		<method name="&lt;init>()V" />
-		<field name="CONTENT_FILTER_URI" />
-		<field name="QUERY_PARAMETER_SIP_ADDRESS" since="21" />
-	</class>
-	<class name="android/provider/ContactsContract$PhoneLookupColumns" since="5">
-		<extends name="java/lang/Object" />
-		<field name="LABEL" />
-		<field name="NORMALIZED_NUMBER" since="16" />
-		<field name="NUMBER" />
-		<field name="TYPE" />
-	</class>
-	<class name="android/provider/ContactsContract$PhoneticNameStyle" since="11">
-		<extends name="java/lang/Object" />
-		<field name="JAPANESE" />
-		<field name="KOREAN" />
-		<field name="PINYIN" />
-		<field name="UNDEFINED" />
-	</class>
-	<class name="android/provider/ContactsContract$Preferences" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="DISPLAY_ORDER" />
-		<field name="DISPLAY_ORDER_ALTERNATIVE" />
-		<field name="DISPLAY_ORDER_PRIMARY" />
-		<field name="SORT_ORDER" />
-		<field name="SORT_ORDER_ALTERNATIVE" />
-		<field name="SORT_ORDER_PRIMARY" />
-	</class>
-	<class name="android/provider/ContactsContract$Presence" since="5">
-		<extends name="android/provider/ContactsContract$StatusUpdates" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="android/provider/ContactsContract$PresenceColumns" since="5">
-		<extends name="java/lang/Object" />
-		<field name="CUSTOM_PROTOCOL" />
-		<field name="DATA_ID" />
-		<field name="IM_ACCOUNT" />
-		<field name="IM_HANDLE" />
-		<field name="PROTOCOL" />
-	</class>
-	<class name="android/provider/ContactsContract$Profile" since="14">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<implements name="android/provider/ContactsContract$ContactNameColumns" />
-		<implements name="android/provider/ContactsContract$ContactOptionsColumns" />
-		<implements name="android/provider/ContactsContract$ContactStatusColumns" />
-		<implements name="android/provider/ContactsContract$ContactsColumns" />
-		<method name="&lt;init>()V" />
-		<field name="CONTENT_RAW_CONTACTS_URI" />
-		<field name="CONTENT_URI" />
-		<field name="CONTENT_VCARD_URI" />
-		<field name="MIN_ID" />
-	</class>
-	<class name="android/provider/ContactsContract$ProfileSyncState" since="14">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/SyncStateContract$Columns" />
-		<method name="&lt;init>()V" />
-		<method name="get(Landroid/content/ContentProviderClient;Landroid/accounts/Account;)[B" />
-		<method name="getWithUri(Landroid/content/ContentProviderClient;Landroid/accounts/Account;)Landroid/util/Pair;" />
-		<method name="newSetOperation(Landroid/accounts/Account;[B)Landroid/content/ContentProviderOperation;" />
-		<method name="set(Landroid/content/ContentProviderClient;Landroid/accounts/Account;[B)V" />
-		<field name="CONTENT_DIRECTORY" />
-		<field name="CONTENT_URI" />
-	</class>
-	<class name="android/provider/ContactsContract$QuickContact" since="5">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="showQuickContact(Landroid/content/Context;Landroid/graphics/Rect;Landroid/net/Uri;I[Ljava/lang/String;)V" />
-		<method name="showQuickContact(Landroid/content/Context;Landroid/view/View;Landroid/net/Uri;I[Ljava/lang/String;)V" />
-		<field name="MODE_LARGE" />
-		<field name="MODE_MEDIUM" />
-		<field name="MODE_SMALL" />
-	</class>
-	<class name="android/provider/ContactsContract$RawContacts" since="5">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<implements name="android/provider/ContactsContract$ContactNameColumns" since="11" />
-		<implements name="android/provider/ContactsContract$ContactOptionsColumns" />
-		<implements name="android/provider/ContactsContract$RawContactsColumns" />
-		<implements name="android/provider/ContactsContract$SyncColumns" />
-		<method name="&lt;init>()V" />
-		<method name="getContactLookupUri(Landroid/content/ContentResolver;Landroid/net/Uri;)Landroid/net/Uri;" />
-		<method name="newEntityIterator(Landroid/database/Cursor;)Landroid/content/EntityIterator;" since="8" />
-		<field name="AGGREGATION_MODE_DEFAULT" />
-		<field name="AGGREGATION_MODE_DISABLED" />
-		<field name="AGGREGATION_MODE_IMMEDIATE" />
-		<field name="AGGREGATION_MODE_SUSPENDED" />
-		<field name="CONTENT_ITEM_TYPE" />
-		<field name="CONTENT_TYPE" />
-		<field name="CONTENT_URI" />
-	</class>
-	<class name="android/provider/ContactsContract$RawContacts$Data" since="5">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<implements name="android/provider/ContactsContract$DataColumns" />
-		<method name="&lt;init>()V" />
-		<field name="CONTENT_DIRECTORY" />
-	</class>
-	<class name="android/provider/ContactsContract$RawContacts$DisplayPhoto" since="14">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="CONTENT_DIRECTORY" />
-	</class>
-	<class name="android/provider/ContactsContract$RawContacts$Entity" since="5">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<implements name="android/provider/ContactsContract$DataColumns" />
-		<method name="&lt;init>()V" />
-		<field name="CONTENT_DIRECTORY" />
-		<field name="DATA_ID" />
-	</class>
-	<class name="android/provider/ContactsContract$RawContacts$StreamItems" since="15">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<implements name="android/provider/ContactsContract$StreamItemsColumns" />
-		<method name="&lt;init>()V" />
-		<field name="CONTENT_DIRECTORY" />
-	</class>
-	<class name="android/provider/ContactsContract$RawContactsColumns" since="5">
-		<extends name="java/lang/Object" />
-		<field name="AGGREGATION_MODE" />
-		<field name="CONTACT_ID" />
-		<field name="DATA_SET" since="14" />
-		<field name="DELETED" />
-		<field name="RAW_CONTACT_IS_READ_ONLY" since="11" />
-		<field name="RAW_CONTACT_IS_USER_PROFILE" since="14" />
-	</class>
-	<class name="android/provider/ContactsContract$RawContactsEntity" since="5">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<implements name="android/provider/ContactsContract$DataColumns" />
-		<implements name="android/provider/ContactsContract$RawContactsColumns" />
-		<method name="&lt;init>()V" />
-		<field name="CONTENT_TYPE" />
-		<field name="CONTENT_URI" />
-		<field name="DATA_ID" />
-		<field name="PROFILE_CONTENT_URI" since="14" />
-	</class>
-	<class name="android/provider/ContactsContract$Settings" since="5">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/ContactsContract$SettingsColumns" />
-		<method name="&lt;init>()V" />
-		<field name="CONTENT_ITEM_TYPE" />
-		<field name="CONTENT_TYPE" />
-		<field name="CONTENT_URI" />
-	</class>
-	<class name="android/provider/ContactsContract$SettingsColumns" since="5">
-		<extends name="java/lang/Object" />
-		<field name="ACCOUNT_NAME" />
-		<field name="ACCOUNT_TYPE" />
-		<field name="ANY_UNSYNCED" />
-		<field name="DATA_SET" since="14" />
-		<field name="SHOULD_SYNC" />
-		<field name="UNGROUPED_COUNT" />
-		<field name="UNGROUPED_VISIBLE" />
-		<field name="UNGROUPED_WITH_PHONES" />
-	</class>
-	<class name="android/provider/ContactsContract$StatusColumns" since="5">
-		<extends name="java/lang/Object" />
-		<field name="AVAILABLE" since="8" />
-		<field name="AWAY" since="8" />
-		<field name="CAPABILITY_HAS_CAMERA" since="11" />
-		<field name="CAPABILITY_HAS_VIDEO" since="11" />
-		<field name="CAPABILITY_HAS_VOICE" since="11" />
-		<field name="CHAT_CAPABILITY" since="11" />
-		<field name="DO_NOT_DISTURB" since="8" />
-		<field name="IDLE" since="8" />
-		<field name="INVISIBLE" since="8" />
-		<field name="OFFLINE" since="8" />
-		<field name="PRESENCE" />
-		<field name="PRESENCE_CUSTOM_STATUS" since="8" />
-		<field name="PRESENCE_STATUS" since="8" />
-		<field name="STATUS" />
-		<field name="STATUS_ICON" />
-		<field name="STATUS_LABEL" />
-		<field name="STATUS_RES_PACKAGE" />
-		<field name="STATUS_TIMESTAMP" />
-	</class>
-	<class name="android/provider/ContactsContract$StatusUpdates" since="5">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/ContactsContract$PresenceColumns" />
-		<implements name="android/provider/ContactsContract$StatusColumns" />
-		<method name="&lt;init>()V" />
-		<method name="getPresenceIconResourceId(I)I" />
-		<method name="getPresencePrecedence(I)I" />
-		<field name="CONTENT_ITEM_TYPE" />
-		<field name="CONTENT_TYPE" />
-		<field name="CONTENT_URI" />
-		<field name="PROFILE_CONTENT_URI" since="14" />
-	</class>
-	<class name="android/provider/ContactsContract$StreamItemPhotos" since="15">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<implements name="android/provider/ContactsContract$StreamItemPhotosColumns" />
-		<method name="&lt;init>()V" />
-		<field name="PHOTO" />
-	</class>
-	<class name="android/provider/ContactsContract$StreamItemPhotosColumns" since="15">
-		<extends name="java/lang/Object" />
-		<field name="PHOTO_FILE_ID" />
-		<field name="PHOTO_URI" />
-		<field name="SORT_INDEX" />
-		<field name="STREAM_ITEM_ID" />
-		<field name="SYNC1" />
-		<field name="SYNC2" />
-		<field name="SYNC3" />
-		<field name="SYNC4" />
-	</class>
-	<class name="android/provider/ContactsContract$StreamItems" since="15">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<implements name="android/provider/ContactsContract$StreamItemsColumns" />
-		<method name="&lt;init>()V" />
-		<field name="CONTENT_ITEM_TYPE" />
-		<field name="CONTENT_LIMIT_URI" />
-		<field name="CONTENT_PHOTO_URI" />
-		<field name="CONTENT_TYPE" />
-		<field name="CONTENT_URI" />
-		<field name="MAX_ITEMS" />
-	</class>
-	<class name="android/provider/ContactsContract$StreamItems$StreamItemPhotos" since="15">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<implements name="android/provider/ContactsContract$StreamItemPhotosColumns" />
-		<method name="&lt;init>()V" />
-		<field name="CONTENT_DIRECTORY" />
-		<field name="CONTENT_ITEM_TYPE" />
-		<field name="CONTENT_TYPE" />
-	</class>
-	<class name="android/provider/ContactsContract$StreamItemsColumns" since="15">
-		<extends name="java/lang/Object" />
-		<field name="ACCOUNT_NAME" />
-		<field name="ACCOUNT_TYPE" />
-		<field name="COMMENTS" />
-		<field name="CONTACT_ID" />
-		<field name="CONTACT_LOOKUP_KEY" />
-		<field name="DATA_SET" />
-		<field name="RAW_CONTACT_ID" />
-		<field name="RAW_CONTACT_SOURCE_ID" />
-		<field name="RES_ICON" />
-		<field name="RES_LABEL" />
-		<field name="RES_PACKAGE" />
-		<field name="SYNC1" />
-		<field name="SYNC2" />
-		<field name="SYNC3" />
-		<field name="SYNC4" />
-		<field name="TEXT" />
-		<field name="TIMESTAMP" />
-	</class>
-	<class name="android/provider/ContactsContract$SyncColumns" since="5">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/ContactsContract$BaseSyncColumns" />
-		<field name="ACCOUNT_NAME" />
-		<field name="ACCOUNT_TYPE" />
-		<field name="DIRTY" />
-		<field name="SOURCE_ID" />
-		<field name="VERSION" />
-	</class>
-	<class name="android/provider/ContactsContract$SyncState" since="5">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/SyncStateContract$Columns" />
-		<method name="&lt;init>()V" />
-		<method name="get(Landroid/content/ContentProviderClient;Landroid/accounts/Account;)[B" />
-		<method name="getWithUri(Landroid/content/ContentProviderClient;Landroid/accounts/Account;)Landroid/util/Pair;" />
-		<method name="newSetOperation(Landroid/accounts/Account;[B)Landroid/content/ContentProviderOperation;" />
-		<method name="set(Landroid/content/ContentProviderClient;Landroid/accounts/Account;[B)V" />
-		<field name="CONTENT_DIRECTORY" />
-		<field name="CONTENT_URI" />
-	</class>
-	<class name="android/provider/DocumentsContract" since="19">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="buildChildDocumentsUri(Ljava/lang/String;Ljava/lang/String;)Landroid/net/Uri;" />
-		<method name="buildChildDocumentsUriUsingTree(Landroid/net/Uri;Ljava/lang/String;)Landroid/net/Uri;" since="21" />
-		<method name="buildDocumentUri(Ljava/lang/String;Ljava/lang/String;)Landroid/net/Uri;" />
-		<method name="buildDocumentUriUsingTree(Landroid/net/Uri;Ljava/lang/String;)Landroid/net/Uri;" since="21" />
-		<method name="buildRecentDocumentsUri(Ljava/lang/String;Ljava/lang/String;)Landroid/net/Uri;" />
-		<method name="buildRootUri(Ljava/lang/String;Ljava/lang/String;)Landroid/net/Uri;" />
-		<method name="buildRootsUri(Ljava/lang/String;)Landroid/net/Uri;" />
-		<method name="buildSearchDocumentsUri(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/net/Uri;" />
-		<method name="buildTreeDocumentUri(Ljava/lang/String;Ljava/lang/String;)Landroid/net/Uri;" since="21" />
-		<method name="createDocument(Landroid/content/ContentResolver;Landroid/net/Uri;Ljava/lang/String;Ljava/lang/String;)Landroid/net/Uri;" since="21" />
-		<method name="deleteDocument(Landroid/content/ContentResolver;Landroid/net/Uri;)Z" />
-		<method name="getDocumentId(Landroid/net/Uri;)Ljava/lang/String;" />
-		<method name="getDocumentThumbnail(Landroid/content/ContentResolver;Landroid/net/Uri;Landroid/graphics/Point;Landroid/os/CancellationSignal;)Landroid/graphics/Bitmap;" />
-		<method name="getRootId(Landroid/net/Uri;)Ljava/lang/String;" />
-		<method name="getSearchDocumentsQuery(Landroid/net/Uri;)Ljava/lang/String;" />
-		<method name="getTreeDocumentId(Landroid/net/Uri;)Ljava/lang/String;" since="21" />
-		<method name="isDocumentUri(Landroid/content/Context;Landroid/net/Uri;)Z" />
-		<method name="renameDocument(Landroid/content/ContentResolver;Landroid/net/Uri;Ljava/lang/String;)Landroid/net/Uri;" since="21" />
-		<field name="EXTRA_ERROR" />
-		<field name="EXTRA_INFO" />
-		<field name="EXTRA_LOADING" />
-		<field name="PROVIDER_INTERFACE" />
-	</class>
-	<class name="android/provider/DocumentsContract$Document" since="19">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="COLUMN_DISPLAY_NAME" />
-		<field name="COLUMN_DOCUMENT_ID" />
-		<field name="COLUMN_FLAGS" />
-		<field name="COLUMN_ICON" />
-		<field name="COLUMN_LAST_MODIFIED" />
-		<field name="COLUMN_MIME_TYPE" />
-		<field name="COLUMN_SIZE" />
-		<field name="COLUMN_SUMMARY" />
-		<field name="FLAG_DIR_PREFERS_GRID" />
-		<field name="FLAG_DIR_PREFERS_LAST_MODIFIED" />
-		<field name="FLAG_DIR_SUPPORTS_CREATE" />
-		<field name="FLAG_SUPPORTS_DELETE" />
-		<field name="FLAG_SUPPORTS_RENAME" since="21" />
-		<field name="FLAG_SUPPORTS_THUMBNAIL" />
-		<field name="FLAG_SUPPORTS_WRITE" />
-		<field name="MIME_TYPE_DIR" />
-	</class>
-	<class name="android/provider/DocumentsContract$Root" since="19">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="COLUMN_AVAILABLE_BYTES" />
-		<field name="COLUMN_DOCUMENT_ID" />
-		<field name="COLUMN_FLAGS" />
-		<field name="COLUMN_ICON" />
-		<field name="COLUMN_MIME_TYPES" />
-		<field name="COLUMN_ROOT_ID" />
-		<field name="COLUMN_SUMMARY" />
-		<field name="COLUMN_TITLE" />
-		<field name="FLAG_LOCAL_ONLY" />
-		<field name="FLAG_SUPPORTS_CREATE" />
-		<field name="FLAG_SUPPORTS_IS_CHILD" since="21" />
-		<field name="FLAG_SUPPORTS_RECENTS" />
-		<field name="FLAG_SUPPORTS_SEARCH" />
-	</class>
-	<class name="android/provider/DocumentsProvider" since="19">
-		<extends name="android/content/ContentProvider" />
-		<method name="&lt;init>()V" />
-		<method name="createDocument(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="deleteDocument(Ljava/lang/String;)V" />
-		<method name="getDocumentType(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="isChildDocument(Ljava/lang/String;Ljava/lang/String;)Z" since="21" />
-		<method name="openDocument(Ljava/lang/String;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/os/ParcelFileDescriptor;" />
-		<method name="openDocumentThumbnail(Ljava/lang/String;Landroid/graphics/Point;Landroid/os/CancellationSignal;)Landroid/content/res/AssetFileDescriptor;" />
-		<method name="queryChildDocuments(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;" />
-		<method name="queryDocument(Ljava/lang/String;[Ljava/lang/String;)Landroid/database/Cursor;" />
-		<method name="queryRecentDocuments(Ljava/lang/String;[Ljava/lang/String;)Landroid/database/Cursor;" />
-		<method name="queryRoots([Ljava/lang/String;)Landroid/database/Cursor;" />
-		<method name="querySearchDocuments(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)Landroid/database/Cursor;" />
-		<method name="renameDocument(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" since="21" />
-		<method name="revokeDocumentPermission(Ljava/lang/String;)V" since="21" />
-	</class>
-	<class name="android/provider/LiveFolders" since="3">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<method name="&lt;init>()V" />
-		<field name="ACTION_CREATE_LIVE_FOLDER" />
-		<field name="DESCRIPTION" />
-		<field name="DISPLAY_MODE_GRID" />
-		<field name="DISPLAY_MODE_LIST" />
-		<field name="EXTRA_LIVE_FOLDER_BASE_INTENT" />
-		<field name="EXTRA_LIVE_FOLDER_DISPLAY_MODE" />
-		<field name="EXTRA_LIVE_FOLDER_ICON" />
-		<field name="EXTRA_LIVE_FOLDER_NAME" />
-		<field name="ICON_BITMAP" />
-		<field name="ICON_PACKAGE" />
-		<field name="ICON_RESOURCE" />
-		<field name="INTENT" />
-		<field name="NAME" />
-	</class>
-	<class name="android/provider/MediaStore" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getMediaScannerUri()Landroid/net/Uri;" />
-		<method name="getVersion(Landroid/content/Context;)Ljava/lang/String;" since="12" />
-		<field name="ACTION_IMAGE_CAPTURE" since="3" />
-		<field name="ACTION_IMAGE_CAPTURE_SECURE" since="17" />
-		<field name="ACTION_VIDEO_CAPTURE" since="3" />
-		<field name="AUTHORITY" />
-		<field name="EXTRA_DURATION_LIMIT" since="8" />
-		<field name="EXTRA_FINISH_ON_COMPLETION" since="3" />
-		<field name="EXTRA_FULL_SCREEN" since="8" />
-		<field name="EXTRA_MEDIA_ALBUM" since="3" />
-		<field name="EXTRA_MEDIA_ARTIST" since="3" />
-		<field name="EXTRA_MEDIA_FOCUS" since="3" />
-		<field name="EXTRA_MEDIA_GENRE" since="21" />
-		<field name="EXTRA_MEDIA_PLAYLIST" since="21" />
-		<field name="EXTRA_MEDIA_RADIO_CHANNEL" since="21" />
-		<field name="EXTRA_MEDIA_TITLE" since="3" />
-		<field name="EXTRA_OUTPUT" since="3" />
-		<field name="EXTRA_SCREEN_ORIENTATION" since="3" />
-		<field name="EXTRA_SHOW_ACTION_ICONS" since="8" />
-		<field name="EXTRA_SIZE_LIMIT" since="8" />
-		<field name="EXTRA_VIDEO_QUALITY" since="3" />
-		<field name="INTENT_ACTION_MEDIA_PLAY_FROM_SEARCH" since="9" />
-		<field name="INTENT_ACTION_MEDIA_SEARCH" since="3" />
-		<field name="INTENT_ACTION_MUSIC_PLAYER" since="8" />
-		<field name="INTENT_ACTION_STILL_IMAGE_CAMERA" since="3" />
-		<field name="INTENT_ACTION_STILL_IMAGE_CAMERA_SECURE" since="17" />
-		<field name="INTENT_ACTION_TEXT_OPEN_FROM_SEARCH" since="17" />
-		<field name="INTENT_ACTION_VIDEO_CAMERA" since="3" />
-		<field name="INTENT_ACTION_VIDEO_PLAY_FROM_SEARCH" since="17" />
-		<field name="MEDIA_IGNORE_FILENAME" since="9" />
-		<field name="MEDIA_SCANNER_VOLUME" />
-		<field name="UNKNOWN_STRING" since="8" />
-	</class>
-	<class name="android/provider/MediaStore$Audio" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="keyFor(Ljava/lang/String;)Ljava/lang/String;" />
-	</class>
-	<class name="android/provider/MediaStore$Audio$AlbumColumns" since="1">
-		<extends name="java/lang/Object" />
-		<field name="ALBUM" />
-		<field name="ALBUM_ART" />
-		<field name="ALBUM_ID" />
-		<field name="ALBUM_KEY" />
-		<field name="ARTIST" />
-		<field name="FIRST_YEAR" />
-		<field name="LAST_YEAR" />
-		<field name="NUMBER_OF_SONGS" />
-		<field name="NUMBER_OF_SONGS_FOR_ARTIST" since="3" />
-	</class>
-	<class name="android/provider/MediaStore$Audio$Albums" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<implements name="android/provider/MediaStore$Audio$AlbumColumns" />
-		<method name="&lt;init>()V" />
-		<method name="getContentUri(Ljava/lang/String;)Landroid/net/Uri;" />
-		<field name="CONTENT_TYPE" />
-		<field name="DEFAULT_SORT_ORDER" />
-		<field name="ENTRY_CONTENT_TYPE" />
-		<field name="EXTERNAL_CONTENT_URI" />
-		<field name="INTERNAL_CONTENT_URI" />
-	</class>
-	<class name="android/provider/MediaStore$Audio$ArtistColumns" since="1">
-		<extends name="java/lang/Object" />
-		<field name="ARTIST" />
-		<field name="ARTIST_KEY" />
-		<field name="NUMBER_OF_ALBUMS" />
-		<field name="NUMBER_OF_TRACKS" />
-	</class>
-	<class name="android/provider/MediaStore$Audio$Artists" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<implements name="android/provider/MediaStore$Audio$ArtistColumns" />
-		<method name="&lt;init>()V" />
-		<method name="getContentUri(Ljava/lang/String;)Landroid/net/Uri;" />
-		<field name="CONTENT_TYPE" />
-		<field name="DEFAULT_SORT_ORDER" />
-		<field name="ENTRY_CONTENT_TYPE" />
-		<field name="EXTERNAL_CONTENT_URI" />
-		<field name="INTERNAL_CONTENT_URI" />
-	</class>
-	<class name="android/provider/MediaStore$Audio$Artists$Albums" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/MediaStore$Audio$AlbumColumns" />
-		<method name="&lt;init>()V" />
-		<method name="getContentUri(Ljava/lang/String;J)Landroid/net/Uri;" />
-	</class>
-	<class name="android/provider/MediaStore$Audio$AudioColumns" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/MediaStore$MediaColumns" />
-		<field name="ALBUM" />
-		<field name="ALBUM_ART" />
-		<field name="ALBUM_ID" />
-		<field name="ALBUM_KEY" />
-		<field name="ARTIST" />
-		<field name="ARTIST_ID" />
-		<field name="ARTIST_KEY" />
-		<field name="BOOKMARK" since="8" />
-		<field name="COMPOSER" />
-		<field name="DURATION" />
-		<field name="IS_ALARM" />
-		<field name="IS_MUSIC" />
-		<field name="IS_NOTIFICATION" />
-		<field name="IS_PODCAST" since="8" />
-		<field name="IS_RINGTONE" />
-		<field name="TITLE_KEY" />
-		<field name="TRACK" />
-		<field name="YEAR" />
-	</class>
-	<class name="android/provider/MediaStore$Audio$Genres" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<implements name="android/provider/MediaStore$Audio$GenresColumns" />
-		<method name="&lt;init>()V" />
-		<method name="getContentUri(Ljava/lang/String;)Landroid/net/Uri;" />
-		<method name="getContentUriForAudioId(Ljava/lang/String;I)Landroid/net/Uri;" since="11" />
-		<field name="CONTENT_TYPE" />
-		<field name="DEFAULT_SORT_ORDER" />
-		<field name="ENTRY_CONTENT_TYPE" />
-		<field name="EXTERNAL_CONTENT_URI" />
-		<field name="INTERNAL_CONTENT_URI" />
-	</class>
-	<class name="android/provider/MediaStore$Audio$Genres$Members" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/MediaStore$Audio$AudioColumns" />
-		<method name="&lt;init>()V" />
-		<method name="getContentUri(Ljava/lang/String;J)Landroid/net/Uri;" />
-		<field name="AUDIO_ID" />
-		<field name="CONTENT_DIRECTORY" />
-		<field name="DEFAULT_SORT_ORDER" />
-		<field name="GENRE_ID" />
-	</class>
-	<class name="android/provider/MediaStore$Audio$GenresColumns" since="1">
-		<extends name="java/lang/Object" />
-		<field name="NAME" />
-	</class>
-	<class name="android/provider/MediaStore$Audio$Media" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/MediaStore$Audio$AudioColumns" />
-		<method name="&lt;init>()V" />
-		<method name="getContentUri(Ljava/lang/String;)Landroid/net/Uri;" />
-		<method name="getContentUriForPath(Ljava/lang/String;)Landroid/net/Uri;" />
-		<field name="CONTENT_TYPE" />
-		<field name="DEFAULT_SORT_ORDER" />
-		<field name="ENTRY_CONTENT_TYPE" since="21" />
-		<field name="EXTERNAL_CONTENT_URI" />
-		<field name="EXTRA_MAX_BYTES" since="3" />
-		<field name="INTERNAL_CONTENT_URI" />
-		<field name="RECORD_SOUND_ACTION" />
-	</class>
-	<class name="android/provider/MediaStore$Audio$Playlists" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<implements name="android/provider/MediaStore$Audio$PlaylistsColumns" />
-		<method name="&lt;init>()V" />
-		<method name="getContentUri(Ljava/lang/String;)Landroid/net/Uri;" />
-		<field name="CONTENT_TYPE" />
-		<field name="DEFAULT_SORT_ORDER" />
-		<field name="ENTRY_CONTENT_TYPE" />
-		<field name="EXTERNAL_CONTENT_URI" />
-		<field name="INTERNAL_CONTENT_URI" />
-	</class>
-	<class name="android/provider/MediaStore$Audio$Playlists$Members" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/MediaStore$Audio$AudioColumns" />
-		<method name="&lt;init>()V" />
-		<method name="getContentUri(Ljava/lang/String;J)Landroid/net/Uri;" />
-		<method name="moveItem(Landroid/content/ContentResolver;JII)Z" since="8" />
-		<field name="AUDIO_ID" />
-		<field name="CONTENT_DIRECTORY" />
-		<field name="DEFAULT_SORT_ORDER" />
-		<field name="PLAYLIST_ID" />
-		<field name="PLAY_ORDER" />
-		<field name="_ID" />
-	</class>
-	<class name="android/provider/MediaStore$Audio$PlaylistsColumns" since="1">
-		<extends name="java/lang/Object" />
-		<field name="DATA" />
-		<field name="DATE_ADDED" />
-		<field name="DATE_MODIFIED" />
-		<field name="NAME" />
-	</class>
-	<class name="android/provider/MediaStore$Audio$Radio" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="ENTRY_CONTENT_TYPE" />
-	</class>
-	<class name="android/provider/MediaStore$Files" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getContentUri(Ljava/lang/String;)Landroid/net/Uri;" />
-		<method name="getContentUri(Ljava/lang/String;J)Landroid/net/Uri;" />
-	</class>
-	<class name="android/provider/MediaStore$Files$FileColumns" since="11">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/MediaStore$MediaColumns" />
-		<field name="MEDIA_TYPE" />
-		<field name="MEDIA_TYPE_AUDIO" />
-		<field name="MEDIA_TYPE_IMAGE" />
-		<field name="MEDIA_TYPE_NONE" />
-		<field name="MEDIA_TYPE_PLAYLIST" />
-		<field name="MEDIA_TYPE_VIDEO" />
-		<field name="MIME_TYPE" />
-		<field name="PARENT" />
-		<field name="TITLE" />
-	</class>
-	<class name="android/provider/MediaStore$Images" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="android/provider/MediaStore$Images$ImageColumns" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/MediaStore$MediaColumns" />
-		<field name="BUCKET_DISPLAY_NAME" />
-		<field name="BUCKET_ID" />
-		<field name="DATE_TAKEN" />
-		<field name="DESCRIPTION" />
-		<field name="IS_PRIVATE" />
-		<field name="LATITUDE" />
-		<field name="LONGITUDE" />
-		<field name="MINI_THUMB_MAGIC" />
-		<field name="ORIENTATION" />
-		<field name="PICASA_ID" />
-	</class>
-	<class name="android/provider/MediaStore$Images$Media" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/MediaStore$Images$ImageColumns" />
-		<method name="&lt;init>()V" />
-		<method name="getBitmap(Landroid/content/ContentResolver;Landroid/net/Uri;)Landroid/graphics/Bitmap;" />
-		<method name="getContentUri(Ljava/lang/String;)Landroid/net/Uri;" />
-		<method name="insertImage(Landroid/content/ContentResolver;Landroid/graphics/Bitmap;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="insertImage(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="query(Landroid/content/ContentResolver;Landroid/net/Uri;[Ljava/lang/String;)Landroid/database/Cursor;" />
-		<method name="query(Landroid/content/ContentResolver;Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;" />
-		<method name="query(Landroid/content/ContentResolver;Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;" />
-		<field name="CONTENT_TYPE" />
-		<field name="DEFAULT_SORT_ORDER" />
-		<field name="EXTERNAL_CONTENT_URI" />
-		<field name="INTERNAL_CONTENT_URI" />
-	</class>
-	<class name="android/provider/MediaStore$Images$Thumbnails" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<method name="&lt;init>()V" />
-		<method name="cancelThumbnailRequest(Landroid/content/ContentResolver;J)V" since="5" />
-		<method name="cancelThumbnailRequest(Landroid/content/ContentResolver;JJ)V" since="8" />
-		<method name="getContentUri(Ljava/lang/String;)Landroid/net/Uri;" />
-		<method name="getThumbnail(Landroid/content/ContentResolver;JILandroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;" since="5" />
-		<method name="getThumbnail(Landroid/content/ContentResolver;JJILandroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;" since="8" />
-		<method name="query(Landroid/content/ContentResolver;Landroid/net/Uri;[Ljava/lang/String;)Landroid/database/Cursor;" />
-		<method name="queryMiniThumbnail(Landroid/content/ContentResolver;JI[Ljava/lang/String;)Landroid/database/Cursor;" />
-		<method name="queryMiniThumbnails(Landroid/content/ContentResolver;Landroid/net/Uri;I[Ljava/lang/String;)Landroid/database/Cursor;" />
-		<field name="DATA" />
-		<field name="DEFAULT_SORT_ORDER" />
-		<field name="EXTERNAL_CONTENT_URI" />
-		<field name="FULL_SCREEN_KIND" />
-		<field name="HEIGHT" />
-		<field name="IMAGE_ID" />
-		<field name="INTERNAL_CONTENT_URI" />
-		<field name="KIND" />
-		<field name="MICRO_KIND" />
-		<field name="MINI_KIND" />
-		<field name="THUMB_DATA" since="5" />
-		<field name="WIDTH" />
-	</class>
-	<class name="android/provider/MediaStore$MediaColumns" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<field name="DATA" />
-		<field name="DATE_ADDED" />
-		<field name="DATE_MODIFIED" />
-		<field name="DISPLAY_NAME" />
-		<field name="HEIGHT" since="16" />
-		<field name="MIME_TYPE" />
-		<field name="SIZE" />
-		<field name="TITLE" />
-		<field name="WIDTH" since="16" />
-	</class>
-	<class name="android/provider/MediaStore$Video" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="query(Landroid/content/ContentResolver;Landroid/net/Uri;[Ljava/lang/String;)Landroid/database/Cursor;" />
-		<field name="DEFAULT_SORT_ORDER" />
-	</class>
-	<class name="android/provider/MediaStore$Video$Media" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/MediaStore$Video$VideoColumns" />
-		<method name="&lt;init>()V" />
-		<method name="getContentUri(Ljava/lang/String;)Landroid/net/Uri;" />
-		<field name="CONTENT_TYPE" />
-		<field name="DEFAULT_SORT_ORDER" />
-		<field name="EXTERNAL_CONTENT_URI" />
-		<field name="INTERNAL_CONTENT_URI" />
-	</class>
-	<class name="android/provider/MediaStore$Video$Thumbnails" since="5">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<method name="&lt;init>()V" />
-		<method name="cancelThumbnailRequest(Landroid/content/ContentResolver;J)V" />
-		<method name="cancelThumbnailRequest(Landroid/content/ContentResolver;JJ)V" since="8" />
-		<method name="getContentUri(Ljava/lang/String;)Landroid/net/Uri;" />
-		<method name="getThumbnail(Landroid/content/ContentResolver;JILandroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;" />
-		<method name="getThumbnail(Landroid/content/ContentResolver;JJILandroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;" since="8" />
-		<field name="DATA" />
-		<field name="DEFAULT_SORT_ORDER" />
-		<field name="EXTERNAL_CONTENT_URI" />
-		<field name="FULL_SCREEN_KIND" />
-		<field name="HEIGHT" />
-		<field name="INTERNAL_CONTENT_URI" />
-		<field name="KIND" />
-		<field name="MICRO_KIND" />
-		<field name="MINI_KIND" />
-		<field name="VIDEO_ID" />
-		<field name="WIDTH" />
-	</class>
-	<class name="android/provider/MediaStore$Video$VideoColumns" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/MediaStore$MediaColumns" />
-		<field name="ALBUM" />
-		<field name="ARTIST" />
-		<field name="BOOKMARK" since="3" />
-		<field name="BUCKET_DISPLAY_NAME" since="3" />
-		<field name="BUCKET_ID" since="3" />
-		<field name="CATEGORY" />
-		<field name="DATE_TAKEN" />
-		<field name="DESCRIPTION" />
-		<field name="DURATION" />
-		<field name="IS_PRIVATE" />
-		<field name="LANGUAGE" />
-		<field name="LATITUDE" />
-		<field name="LONGITUDE" />
-		<field name="MINI_THUMB_MAGIC" />
-		<field name="RESOLUTION" />
-		<field name="TAGS" />
-	</class>
-	<class name="android/provider/OpenableColumns" since="1">
-		<extends name="java/lang/Object" />
-		<field name="DISPLAY_NAME" />
-		<field name="SIZE" />
-	</class>
-	<class name="android/provider/SearchRecentSuggestions" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/content/Context;Ljava/lang/String;I)V" />
-		<method name="clearHistory()V" />
-		<method name="saveRecentQuery(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="truncateHistory(Landroid/content/ContentResolver;I)V" />
-		<field name="QUERIES_PROJECTION_1LINE" />
-		<field name="QUERIES_PROJECTION_2LINE" />
-		<field name="QUERIES_PROJECTION_DATE_INDEX" />
-		<field name="QUERIES_PROJECTION_DISPLAY1_INDEX" />
-		<field name="QUERIES_PROJECTION_DISPLAY2_INDEX" />
-		<field name="QUERIES_PROJECTION_QUERY_INDEX" />
-	</class>
-	<class name="android/provider/Settings" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="ACTION_ACCESSIBILITY_SETTINGS" since="5" />
-		<field name="ACTION_ADD_ACCOUNT" since="8" />
-		<field name="ACTION_AIRPLANE_MODE_SETTINGS" since="3" />
-		<field name="ACTION_APN_SETTINGS" />
-		<field name="ACTION_APPLICATION_DETAILS_SETTINGS" since="9" />
-		<field name="ACTION_APPLICATION_DEVELOPMENT_SETTINGS" since="3" />
-		<field name="ACTION_APPLICATION_SETTINGS" />
-		<field name="ACTION_BLUETOOTH_SETTINGS" />
-		<field name="ACTION_CAPTIONING_SETTINGS" since="19" />
-		<field name="ACTION_DATA_ROAMING_SETTINGS" since="3" />
-		<field name="ACTION_DATE_SETTINGS" />
-		<field name="ACTION_DEVICE_INFO_SETTINGS" since="8" />
-		<field name="ACTION_DISPLAY_SETTINGS" />
-		<field name="ACTION_DREAM_SETTINGS" since="18" />
-		<field name="ACTION_INPUT_METHOD_SETTINGS" since="3" />
-		<field name="ACTION_INPUT_METHOD_SUBTYPE_SETTINGS" since="11" />
-		<field name="ACTION_INTERNAL_STORAGE_SETTINGS" since="3" />
-		<field name="ACTION_LOCALE_SETTINGS" />
-		<field name="ACTION_LOCATION_SOURCE_SETTINGS" />
-		<field name="ACTION_MANAGE_ALL_APPLICATIONS_SETTINGS" since="9" />
-		<field name="ACTION_MANAGE_APPLICATIONS_SETTINGS" since="3" />
-		<field name="ACTION_MEMORY_CARD_SETTINGS" since="3" />
-		<field name="ACTION_NETWORK_OPERATOR_SETTINGS" since="3" />
-		<field name="ACTION_NFCSHARING_SETTINGS" since="14" />
-		<field name="ACTION_NFC_PAYMENT_SETTINGS" since="19" />
-		<field name="ACTION_NFC_SETTINGS" since="16" />
-		<field name="ACTION_PRINT_SETTINGS" since="19" />
-		<field name="ACTION_PRIVACY_SETTINGS" since="5" />
-		<field name="ACTION_QUICK_LAUNCH_SETTINGS" since="3" />
-		<field name="ACTION_SEARCH_SETTINGS" since="8" />
-		<field name="ACTION_SECURITY_SETTINGS" />
-		<field name="ACTION_SETTINGS" />
-		<field name="ACTION_SOUND_SETTINGS" />
-		<field name="ACTION_SYNC_SETTINGS" since="3" />
-		<field name="ACTION_USER_DICTIONARY_SETTINGS" since="3" />
-		<field name="ACTION_WIFI_IP_SETTINGS" since="3" />
-		<field name="ACTION_WIFI_SETTINGS" />
-		<field name="ACTION_WIRELESS_SETTINGS" />
-		<field name="AUTHORITY" />
-		<field name="EXTRA_ACCOUNT_TYPES" since="18" />
-		<field name="EXTRA_AUTHORITIES" since="8" />
-		<field name="EXTRA_INPUT_METHOD_ID" since="11" />
-	</class>
-	<class name="android/provider/Settings$Global" since="17">
-		<extends name="android/provider/Settings$NameValueTable" />
-		<method name="&lt;init>()V" />
-		<method name="getFloat(Landroid/content/ContentResolver;Ljava/lang/String;)F" />
-		<method name="getFloat(Landroid/content/ContentResolver;Ljava/lang/String;F)F" />
-		<method name="getInt(Landroid/content/ContentResolver;Ljava/lang/String;)I" />
-		<method name="getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I" />
-		<method name="getLong(Landroid/content/ContentResolver;Ljava/lang/String;)J" />
-		<method name="getLong(Landroid/content/ContentResolver;Ljava/lang/String;J)J" />
-		<method name="getString(Landroid/content/ContentResolver;Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="getUriFor(Ljava/lang/String;)Landroid/net/Uri;" />
-		<method name="putFloat(Landroid/content/ContentResolver;Ljava/lang/String;F)Z" />
-		<method name="putInt(Landroid/content/ContentResolver;Ljava/lang/String;I)Z" />
-		<method name="putLong(Landroid/content/ContentResolver;Ljava/lang/String;J)Z" />
-		<method name="putString(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/lang/String;)Z" />
-		<field name="ADB_ENABLED" />
-		<field name="AIRPLANE_MODE_ON" />
-		<field name="AIRPLANE_MODE_RADIOS" />
-		<field name="ALWAYS_FINISH_ACTIVITIES" />
-		<field name="ANIMATOR_DURATION_SCALE" />
-		<field name="AUTO_TIME" />
-		<field name="AUTO_TIME_ZONE" />
-		<field name="BLUETOOTH_ON" />
-		<field name="CONTENT_URI" />
-		<field name="DATA_ROAMING" />
-		<field name="DEBUG_APP" />
-		<field name="DEVELOPMENT_SETTINGS_ENABLED" />
-		<field name="DEVICE_PROVISIONED" />
-		<field name="HTTP_PROXY" />
-		<field name="INSTALL_NON_MARKET_APPS" />
-		<field name="MODE_RINGER" />
-		<field name="NETWORK_PREFERENCE" />
-		<field name="RADIO_BLUETOOTH" />
-		<field name="RADIO_CELL" />
-		<field name="RADIO_NFC" />
-		<field name="RADIO_WIFI" />
-		<field name="SHOW_PROCESSES" />
-		<field name="STAY_ON_WHILE_PLUGGED_IN" />
-		<field name="SYS_PROP_SETTING_VERSION" />
-		<field name="TRANSITION_ANIMATION_SCALE" />
-		<field name="USB_MASS_STORAGE_ENABLED" />
-		<field name="USE_GOOGLE_MAIL" />
-		<field name="WAIT_FOR_DEBUGGER" />
-		<field name="WIFI_MAX_DHCP_RETRY_COUNT" />
-		<field name="WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS" />
-		<field name="WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON" />
-		<field name="WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY" />
-		<field name="WIFI_NUM_OPEN_NETWORKS_KEPT" />
-		<field name="WIFI_ON" />
-		<field name="WIFI_SLEEP_POLICY" />
-		<field name="WIFI_SLEEP_POLICY_DEFAULT" />
-		<field name="WIFI_SLEEP_POLICY_NEVER" />
-		<field name="WIFI_SLEEP_POLICY_NEVER_WHILE_PLUGGED" />
-		<field name="WIFI_WATCHDOG_ON" />
-		<field name="WINDOW_ANIMATION_SCALE" />
-	</class>
-	<class name="android/provider/Settings$NameValueTable" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<method name="&lt;init>()V" />
-		<method name="getUriFor(Landroid/net/Uri;Ljava/lang/String;)Landroid/net/Uri;" />
-		<method name="putString(Landroid/content/ContentResolver;Landroid/net/Uri;Ljava/lang/String;Ljava/lang/String;)Z" />
-		<field name="NAME" />
-		<field name="VALUE" />
-	</class>
-	<class name="android/provider/Settings$Secure" since="3">
-		<extends name="android/provider/Settings$NameValueTable" />
-		<method name="&lt;init>()V" />
-		<method name="getFloat(Landroid/content/ContentResolver;Ljava/lang/String;)F" />
-		<method name="getFloat(Landroid/content/ContentResolver;Ljava/lang/String;F)F" />
-		<method name="getInt(Landroid/content/ContentResolver;Ljava/lang/String;)I" />
-		<method name="getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I" />
-		<method name="getLong(Landroid/content/ContentResolver;Ljava/lang/String;)J" />
-		<method name="getLong(Landroid/content/ContentResolver;Ljava/lang/String;J)J" />
-		<method name="getString(Landroid/content/ContentResolver;Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="getUriFor(Ljava/lang/String;)Landroid/net/Uri;" />
-		<method name="isLocationProviderEnabled(Landroid/content/ContentResolver;Ljava/lang/String;)Z" since="8" />
-		<method name="putFloat(Landroid/content/ContentResolver;Ljava/lang/String;F)Z" />
-		<method name="putInt(Landroid/content/ContentResolver;Ljava/lang/String;I)Z" />
-		<method name="putLong(Landroid/content/ContentResolver;Ljava/lang/String;J)Z" />
-		<method name="putString(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/lang/String;)Z" />
-		<method name="setLocationProviderEnabled(Landroid/content/ContentResolver;Ljava/lang/String;Z)V" since="8" />
-		<field name="ACCESSIBILITY_DISPLAY_INVERSION_ENABLED" since="21" />
-		<field name="ACCESSIBILITY_ENABLED" since="4" />
-		<field name="ACCESSIBILITY_SPEAK_PASSWORD" since="15" />
-		<field name="ADB_ENABLED" />
-		<field name="ALLOWED_GEOLOCATION_ORIGINS" since="8" />
-		<field name="ALLOW_MOCK_LOCATION" />
-		<field name="ANDROID_ID" />
-		<field name="BACKGROUND_DATA" />
-		<field name="BLUETOOTH_ON" />
-		<field name="CONTENT_URI" />
-		<field name="DATA_ROAMING" />
-		<field name="DEFAULT_INPUT_METHOD" />
-		<field name="DEVELOPMENT_SETTINGS_ENABLED" since="16" />
-		<field name="DEVICE_PROVISIONED" />
-		<field name="ENABLED_ACCESSIBILITY_SERVICES" since="4" />
-		<field name="ENABLED_INPUT_METHODS" />
-		<field name="HTTP_PROXY" />
-		<field name="INPUT_METHOD_SELECTOR_VISIBILITY" since="11" />
-		<field name="INSTALL_NON_MARKET_APPS" />
-		<field name="LOCATION_MODE" since="19" />
-		<field name="LOCATION_MODE_BATTERY_SAVING" since="19" />
-		<field name="LOCATION_MODE_HIGH_ACCURACY" since="19" />
-		<field name="LOCATION_MODE_OFF" since="19" />
-		<field name="LOCATION_MODE_SENSORS_ONLY" since="19" />
-		<field name="LOCATION_PROVIDERS_ALLOWED" />
-		<field name="LOCK_PATTERN_ENABLED" since="8" />
-		<field name="LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED" since="8" />
-		<field name="LOCK_PATTERN_VISIBLE" since="8" />
-		<field name="LOGGING_ID" />
-		<field name="NETWORK_PREFERENCE" />
-		<field name="PARENTAL_CONTROL_ENABLED" />
-		<field name="PARENTAL_CONTROL_LAST_UPDATE" />
-		<field name="PARENTAL_CONTROL_REDIRECT_URL" />
-		<field name="SELECTED_INPUT_METHOD_SUBTYPE" since="11" />
-		<field name="SETTINGS_CLASSNAME" />
-		<field name="SYS_PROP_SETTING_VERSION" />
-		<field name="TOUCH_EXPLORATION_ENABLED" since="14" />
-		<field name="TTS_DEFAULT_COUNTRY" since="4" />
-		<field name="TTS_DEFAULT_LANG" since="4" />
-		<field name="TTS_DEFAULT_PITCH" since="4" />
-		<field name="TTS_DEFAULT_RATE" since="4" />
-		<field name="TTS_DEFAULT_SYNTH" since="4" />
-		<field name="TTS_DEFAULT_VARIANT" since="4" />
-		<field name="TTS_ENABLED_PLUGINS" since="8" />
-		<field name="TTS_USE_DEFAULTS" since="4" />
-		<field name="USB_MASS_STORAGE_ENABLED" />
-		<field name="USE_GOOGLE_MAIL" />
-		<field name="WIFI_MAX_DHCP_RETRY_COUNT" />
-		<field name="WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS" />
-		<field name="WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON" />
-		<field name="WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY" />
-		<field name="WIFI_NUM_OPEN_NETWORKS_KEPT" />
-		<field name="WIFI_ON" />
-		<field name="WIFI_WATCHDOG_ACCEPTABLE_PACKET_LOSS_PERCENTAGE" />
-		<field name="WIFI_WATCHDOG_AP_COUNT" />
-		<field name="WIFI_WATCHDOG_BACKGROUND_CHECK_DELAY_MS" />
-		<field name="WIFI_WATCHDOG_BACKGROUND_CHECK_ENABLED" />
-		<field name="WIFI_WATCHDOG_BACKGROUND_CHECK_TIMEOUT_MS" />
-		<field name="WIFI_WATCHDOG_INITIAL_IGNORED_PING_COUNT" />
-		<field name="WIFI_WATCHDOG_MAX_AP_CHECKS" />
-		<field name="WIFI_WATCHDOG_ON" />
-		<field name="WIFI_WATCHDOG_PING_COUNT" />
-		<field name="WIFI_WATCHDOG_PING_DELAY_MS" />
-		<field name="WIFI_WATCHDOG_PING_TIMEOUT_MS" />
-		<field name="WIFI_WATCHDOG_WATCH_LIST" />
-	</class>
-	<class name="android/provider/Settings$SettingNotFoundException" since="1">
-		<extends name="android/util/AndroidException" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/provider/Settings$System" since="1">
-		<extends name="android/provider/Settings$NameValueTable" />
-		<method name="&lt;init>()V" />
-		<method name="getConfiguration(Landroid/content/ContentResolver;Landroid/content/res/Configuration;)V" />
-		<method name="getFloat(Landroid/content/ContentResolver;Ljava/lang/String;)F" />
-		<method name="getFloat(Landroid/content/ContentResolver;Ljava/lang/String;F)F" />
-		<method name="getInt(Landroid/content/ContentResolver;Ljava/lang/String;)I" />
-		<method name="getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I" />
-		<method name="getLong(Landroid/content/ContentResolver;Ljava/lang/String;)J" since="3" />
-		<method name="getLong(Landroid/content/ContentResolver;Ljava/lang/String;J)J" since="3" />
-		<method name="getShowGTalkServiceStatus(Landroid/content/ContentResolver;)Z" />
-		<method name="getString(Landroid/content/ContentResolver;Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="getUriFor(Ljava/lang/String;)Landroid/net/Uri;" />
-		<method name="putConfiguration(Landroid/content/ContentResolver;Landroid/content/res/Configuration;)Z" />
-		<method name="putFloat(Landroid/content/ContentResolver;Ljava/lang/String;F)Z" />
-		<method name="putInt(Landroid/content/ContentResolver;Ljava/lang/String;I)Z" />
-		<method name="putLong(Landroid/content/ContentResolver;Ljava/lang/String;J)Z" since="3" />
-		<method name="putString(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/lang/String;)Z" />
-		<method name="setShowGTalkServiceStatus(Landroid/content/ContentResolver;Z)V" />
-		<field name="ACCELEROMETER_ROTATION" since="3" />
-		<field name="ADB_ENABLED" />
-		<field name="AIRPLANE_MODE_ON" />
-		<field name="AIRPLANE_MODE_RADIOS" />
-		<field name="ALARM_ALERT" since="5" />
-		<field name="ALWAYS_FINISH_ACTIVITIES" />
-		<field name="ANDROID_ID" />
-		<field name="ANIMATOR_DURATION_SCALE" since="16" />
-		<field name="APPEND_FOR_LAST_AUDIBLE" />
-		<field name="AUTO_TIME" />
-		<field name="AUTO_TIME_ZONE" since="11" />
-		<field name="BLUETOOTH_DISCOVERABILITY" />
-		<field name="BLUETOOTH_DISCOVERABILITY_TIMEOUT" />
-		<field name="BLUETOOTH_ON" />
-		<field name="CONTENT_URI" />
-		<field name="DATA_ROAMING" />
-		<field name="DATE_FORMAT" />
-		<field name="DEBUG_APP" />
-		<field name="DEFAULT_ALARM_ALERT_URI" since="5" />
-		<field name="DEFAULT_NOTIFICATION_URI" />
-		<field name="DEFAULT_RINGTONE_URI" />
-		<field name="DEVICE_PROVISIONED" />
-		<field name="DIM_SCREEN" />
-		<field name="DTMF_TONE_WHEN_DIALING" />
-		<field name="END_BUTTON_BEHAVIOR" />
-		<field name="FONT_SCALE" />
-		<field name="HAPTIC_FEEDBACK_ENABLED" since="3" />
-		<field name="HTTP_PROXY" />
-		<field name="INSTALL_NON_MARKET_APPS" />
-		<field name="LOCATION_PROVIDERS_ALLOWED" />
-		<field name="LOCK_PATTERN_ENABLED" />
-		<field name="LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED" since="3" />
-		<field name="LOCK_PATTERN_VISIBLE" />
-		<field name="LOGGING_ID" />
-		<field name="MODE_RINGER" />
-		<field name="MODE_RINGER_STREAMS_AFFECTED" />
-		<field name="MUTE_STREAMS_AFFECTED" />
-		<field name="NETWORK_PREFERENCE" />
-		<field name="NEXT_ALARM_FORMATTED" />
-		<field name="NOTIFICATION_SOUND" />
-		<field name="PARENTAL_CONTROL_ENABLED" />
-		<field name="PARENTAL_CONTROL_LAST_UPDATE" />
-		<field name="PARENTAL_CONTROL_REDIRECT_URL" />
-		<field name="RADIO_BLUETOOTH" />
-		<field name="RADIO_CELL" />
-		<field name="RADIO_NFC" since="14" />
-		<field name="RADIO_WIFI" />
-		<field name="RINGTONE" />
-		<field name="SCREEN_BRIGHTNESS" />
-		<field name="SCREEN_BRIGHTNESS_MODE" since="8" />
-		<field name="SCREEN_BRIGHTNESS_MODE_AUTOMATIC" since="8" />
-		<field name="SCREEN_BRIGHTNESS_MODE_MANUAL" since="8" />
-		<field name="SCREEN_OFF_TIMEOUT" />
-		<field name="SETTINGS_CLASSNAME" />
-		<field name="SETUP_WIZARD_HAS_RUN" />
-		<field name="SHOW_GTALK_SERVICE_STATUS" />
-		<field name="SHOW_PROCESSES" />
-		<field name="SHOW_WEB_SUGGESTIONS" since="4" />
-		<field name="SOUND_EFFECTS_ENABLED" />
-		<field name="STAY_ON_WHILE_PLUGGED_IN" />
-		<field name="SYS_PROP_SETTING_VERSION" />
-		<field name="TEXT_AUTO_CAPS" />
-		<field name="TEXT_AUTO_PUNCTUATE" />
-		<field name="TEXT_AUTO_REPLACE" />
-		<field name="TEXT_SHOW_PASSWORD" />
-		<field name="TIME_12_24" />
-		<field name="TRANSITION_ANIMATION_SCALE" />
-		<field name="USB_MASS_STORAGE_ENABLED" />
-		<field name="USER_ROTATION" since="11" />
-		<field name="USE_GOOGLE_MAIL" />
-		<field name="VIBRATE_ON" />
-		<field name="VOLUME_ALARM" />
-		<field name="VOLUME_BLUETOOTH_SCO" since="8" />
-		<field name="VOLUME_MUSIC" />
-		<field name="VOLUME_NOTIFICATION" since="3" />
-		<field name="VOLUME_RING" />
-		<field name="VOLUME_SETTINGS" />
-		<field name="VOLUME_SYSTEM" />
-		<field name="VOLUME_VOICE" />
-		<field name="WAIT_FOR_DEBUGGER" />
-		<field name="WALLPAPER_ACTIVITY" />
-		<field name="WIFI_MAX_DHCP_RETRY_COUNT" since="3" />
-		<field name="WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS" since="3" />
-		<field name="WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON" />
-		<field name="WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY" />
-		<field name="WIFI_NUM_OPEN_NETWORKS_KEPT" />
-		<field name="WIFI_ON" />
-		<field name="WIFI_SLEEP_POLICY" since="3" />
-		<field name="WIFI_SLEEP_POLICY_DEFAULT" since="3" />
-		<field name="WIFI_SLEEP_POLICY_NEVER" since="3" />
-		<field name="WIFI_SLEEP_POLICY_NEVER_WHILE_PLUGGED" since="3" />
-		<field name="WIFI_STATIC_DNS1" />
-		<field name="WIFI_STATIC_DNS2" />
-		<field name="WIFI_STATIC_GATEWAY" />
-		<field name="WIFI_STATIC_IP" />
-		<field name="WIFI_STATIC_NETMASK" />
-		<field name="WIFI_USE_STATIC_IP" />
-		<field name="WIFI_WATCHDOG_ACCEPTABLE_PACKET_LOSS_PERCENTAGE" />
-		<field name="WIFI_WATCHDOG_AP_COUNT" />
-		<field name="WIFI_WATCHDOG_BACKGROUND_CHECK_DELAY_MS" />
-		<field name="WIFI_WATCHDOG_BACKGROUND_CHECK_ENABLED" />
-		<field name="WIFI_WATCHDOG_BACKGROUND_CHECK_TIMEOUT_MS" />
-		<field name="WIFI_WATCHDOG_INITIAL_IGNORED_PING_COUNT" />
-		<field name="WIFI_WATCHDOG_MAX_AP_CHECKS" />
-		<field name="WIFI_WATCHDOG_ON" />
-		<field name="WIFI_WATCHDOG_PING_COUNT" />
-		<field name="WIFI_WATCHDOG_PING_DELAY_MS" />
-		<field name="WIFI_WATCHDOG_PING_TIMEOUT_MS" />
-		<field name="WINDOW_ANIMATION_SCALE" />
-	</class>
-	<class name="android/provider/SyncStateContract" since="5">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="android/provider/SyncStateContract$Columns" since="5">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<field name="ACCOUNT_NAME" />
-		<field name="ACCOUNT_TYPE" />
-		<field name="DATA" />
-	</class>
-	<class name="android/provider/SyncStateContract$Constants" since="5">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/SyncStateContract$Columns" />
-		<method name="&lt;init>()V" />
-		<field name="CONTENT_DIRECTORY" />
-	</class>
-	<class name="android/provider/SyncStateContract$Helpers" since="5">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="get(Landroid/content/ContentProviderClient;Landroid/net/Uri;Landroid/accounts/Account;)[B" />
-		<method name="getWithUri(Landroid/content/ContentProviderClient;Landroid/net/Uri;Landroid/accounts/Account;)Landroid/util/Pair;" />
-		<method name="insert(Landroid/content/ContentProviderClient;Landroid/net/Uri;Landroid/accounts/Account;[B)Landroid/net/Uri;" />
-		<method name="newSetOperation(Landroid/net/Uri;Landroid/accounts/Account;[B)Landroid/content/ContentProviderOperation;" />
-		<method name="newUpdateOperation(Landroid/net/Uri;[B)Landroid/content/ContentProviderOperation;" />
-		<method name="set(Landroid/content/ContentProviderClient;Landroid/net/Uri;Landroid/accounts/Account;[B)V" />
-		<method name="update(Landroid/content/ContentProviderClient;Landroid/net/Uri;[B)V" />
-	</class>
-	<class name="android/provider/Telephony" since="19">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="android/provider/Telephony$BaseMmsColumns" since="19">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<field name="CONTENT_CLASS" />
-		<field name="CONTENT_LOCATION" />
-		<field name="CONTENT_TYPE" />
-		<field name="DATE" />
-		<field name="DATE_SENT" />
-		<field name="DELIVERY_REPORT" />
-		<field name="DELIVERY_TIME" />
-		<field name="EXPIRY" />
-		<field name="LOCKED" />
-		<field name="MESSAGE_BOX" />
-		<field name="MESSAGE_BOX_ALL" />
-		<field name="MESSAGE_BOX_DRAFTS" />
-		<field name="MESSAGE_BOX_INBOX" />
-		<field name="MESSAGE_BOX_OUTBOX" />
-		<field name="MESSAGE_BOX_SENT" />
-		<field name="MESSAGE_CLASS" />
-		<field name="MESSAGE_ID" />
-		<field name="MESSAGE_SIZE" />
-		<field name="MESSAGE_TYPE" />
-		<field name="MMS_VERSION" />
-		<field name="PRIORITY" />
-		<field name="READ" />
-		<field name="READ_REPORT" />
-		<field name="READ_STATUS" />
-		<field name="REPORT_ALLOWED" />
-		<field name="RESPONSE_STATUS" />
-		<field name="RESPONSE_TEXT" />
-		<field name="RETRIEVE_STATUS" />
-		<field name="RETRIEVE_TEXT" />
-		<field name="RETRIEVE_TEXT_CHARSET" />
-		<field name="SEEN" />
-		<field name="STATUS" />
-		<field name="SUBJECT" />
-		<field name="SUBJECT_CHARSET" />
-		<field name="TEXT_ONLY" />
-		<field name="THREAD_ID" />
-		<field name="TRANSACTION_ID" />
-	</class>
-	<class name="android/provider/Telephony$CanonicalAddressesColumns" since="19">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<field name="ADDRESS" />
-	</class>
-	<class name="android/provider/Telephony$Carriers" since="19">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<method name="&lt;init>()V" />
-		<field name="APN" />
-		<field name="AUTH_TYPE" />
-		<field name="BEARER" />
-		<field name="CARRIER_ENABLED" />
-		<field name="CONTENT_URI" />
-		<field name="CURRENT" />
-		<field name="DEFAULT_SORT_ORDER" />
-		<field name="MCC" />
-		<field name="MMSC" />
-		<field name="MMSPORT" />
-		<field name="MMSPROXY" />
-		<field name="MNC" />
-		<field name="MVNO_MATCH_DATA" />
-		<field name="MVNO_TYPE" />
-		<field name="NAME" />
-		<field name="NUMERIC" />
-		<field name="PASSWORD" />
-		<field name="PORT" />
-		<field name="PROTOCOL" />
-		<field name="PROXY" />
-		<field name="ROAMING_PROTOCOL" />
-		<field name="SERVER" />
-		<field name="TYPE" />
-		<field name="USER" />
-	</class>
-	<class name="android/provider/Telephony$Mms" since="19">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/Telephony$BaseMmsColumns" />
-		<method name="&lt;init>()V" />
-		<field name="CONTENT_URI" />
-		<field name="DEFAULT_SORT_ORDER" />
-		<field name="REPORT_REQUEST_URI" />
-		<field name="REPORT_STATUS_URI" />
-	</class>
-	<class name="android/provider/Telephony$Mms$Addr" since="19">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<method name="&lt;init>()V" />
-		<field name="ADDRESS" />
-		<field name="CHARSET" />
-		<field name="CONTACT_ID" />
-		<field name="MSG_ID" />
-		<field name="TYPE" />
-	</class>
-	<class name="android/provider/Telephony$Mms$Draft" since="19">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/Telephony$BaseMmsColumns" />
-		<method name="&lt;init>()V" />
-		<field name="CONTENT_URI" />
-		<field name="DEFAULT_SORT_ORDER" />
-	</class>
-	<class name="android/provider/Telephony$Mms$Inbox" since="19">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/Telephony$BaseMmsColumns" />
-		<method name="&lt;init>()V" />
-		<field name="CONTENT_URI" />
-		<field name="DEFAULT_SORT_ORDER" />
-	</class>
-	<class name="android/provider/Telephony$Mms$Intents" since="19">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="CONTENT_CHANGED_ACTION" />
-		<field name="DELETED_CONTENTS" />
-	</class>
-	<class name="android/provider/Telephony$Mms$Outbox" since="19">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/Telephony$BaseMmsColumns" />
-		<method name="&lt;init>()V" />
-		<field name="CONTENT_URI" />
-		<field name="DEFAULT_SORT_ORDER" />
-	</class>
-	<class name="android/provider/Telephony$Mms$Part" since="19">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<method name="&lt;init>()V" />
-		<field name="CHARSET" />
-		<field name="CONTENT_DISPOSITION" />
-		<field name="CONTENT_ID" />
-		<field name="CONTENT_LOCATION" />
-		<field name="CONTENT_TYPE" />
-		<field name="CT_START" />
-		<field name="CT_TYPE" />
-		<field name="FILENAME" />
-		<field name="MSG_ID" />
-		<field name="NAME" />
-		<field name="SEQ" />
-		<field name="TEXT" />
-		<field name="_DATA" />
-	</class>
-	<class name="android/provider/Telephony$Mms$Rate" since="19">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="CONTENT_URI" />
-		<field name="SENT_TIME" />
-	</class>
-	<class name="android/provider/Telephony$Mms$Sent" since="19">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/Telephony$BaseMmsColumns" />
-		<method name="&lt;init>()V" />
-		<field name="CONTENT_URI" />
-		<field name="DEFAULT_SORT_ORDER" />
-	</class>
-	<class name="android/provider/Telephony$MmsSms" since="19">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<method name="&lt;init>()V" />
-		<field name="CONTENT_CONVERSATIONS_URI" />
-		<field name="CONTENT_DRAFT_URI" />
-		<field name="CONTENT_FILTER_BYPHONE_URI" />
-		<field name="CONTENT_LOCKED_URI" />
-		<field name="CONTENT_UNDELIVERED_URI" />
-		<field name="CONTENT_URI" />
-		<field name="ERR_TYPE_GENERIC" />
-		<field name="ERR_TYPE_GENERIC_PERMANENT" />
-		<field name="ERR_TYPE_MMS_PROTO_PERMANENT" />
-		<field name="ERR_TYPE_MMS_PROTO_TRANSIENT" />
-		<field name="ERR_TYPE_SMS_PROTO_PERMANENT" />
-		<field name="ERR_TYPE_SMS_PROTO_TRANSIENT" />
-		<field name="ERR_TYPE_TRANSPORT_FAILURE" />
-		<field name="MMS_PROTO" />
-		<field name="NO_ERROR" />
-		<field name="SEARCH_URI" />
-		<field name="SMS_PROTO" />
-		<field name="TYPE_DISCRIMINATOR_COLUMN" />
-	</class>
-	<class name="android/provider/Telephony$MmsSms$PendingMessages" since="19">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<method name="&lt;init>()V" />
-		<field name="CONTENT_URI" />
-		<field name="DUE_TIME" />
-		<field name="ERROR_CODE" />
-		<field name="ERROR_TYPE" />
-		<field name="LAST_TRY" />
-		<field name="MSG_ID" />
-		<field name="MSG_TYPE" />
-		<field name="PROTO_TYPE" />
-		<field name="RETRY_INDEX" />
-	</class>
-	<class name="android/provider/Telephony$Sms" since="19">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<implements name="android/provider/Telephony$TextBasedSmsColumns" />
-		<method name="&lt;init>()V" />
-		<method name="getDefaultSmsPackage(Landroid/content/Context;)Ljava/lang/String;" />
-		<field name="CONTENT_URI" />
-		<field name="DEFAULT_SORT_ORDER" />
-	</class>
-	<class name="android/provider/Telephony$Sms$Conversations" since="19">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<implements name="android/provider/Telephony$TextBasedSmsColumns" />
-		<method name="&lt;init>()V" />
-		<field name="CONTENT_URI" />
-		<field name="DEFAULT_SORT_ORDER" />
-		<field name="MESSAGE_COUNT" />
-		<field name="SNIPPET" />
-	</class>
-	<class name="android/provider/Telephony$Sms$Draft" since="19">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<implements name="android/provider/Telephony$TextBasedSmsColumns" />
-		<method name="&lt;init>()V" />
-		<field name="CONTENT_URI" />
-		<field name="DEFAULT_SORT_ORDER" />
-	</class>
-	<class name="android/provider/Telephony$Sms$Inbox" since="19">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<implements name="android/provider/Telephony$TextBasedSmsColumns" />
-		<method name="&lt;init>()V" />
-		<field name="CONTENT_URI" />
-		<field name="DEFAULT_SORT_ORDER" />
-	</class>
-	<class name="android/provider/Telephony$Sms$Intents" since="19">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getMessagesFromIntent(Landroid/content/Intent;)[Landroid/telephony/SmsMessage;" />
-		<field name="ACTION_CHANGE_DEFAULT" />
-		<field name="DATA_SMS_RECEIVED_ACTION" />
-		<field name="EXTRA_PACKAGE_NAME" />
-		<field name="RESULT_SMS_DUPLICATED" />
-		<field name="RESULT_SMS_GENERIC_ERROR" />
-		<field name="RESULT_SMS_HANDLED" />
-		<field name="RESULT_SMS_OUT_OF_MEMORY" />
-		<field name="RESULT_SMS_UNSUPPORTED" />
-		<field name="SIM_FULL_ACTION" />
-		<field name="SMS_CB_RECEIVED_ACTION" />
-		<field name="SMS_DELIVER_ACTION" />
-		<field name="SMS_EMERGENCY_CB_RECEIVED_ACTION" />
-		<field name="SMS_RECEIVED_ACTION" />
-		<field name="SMS_REJECTED_ACTION" />
-		<field name="SMS_SERVICE_CATEGORY_PROGRAM_DATA_RECEIVED_ACTION" />
-		<field name="WAP_PUSH_DELIVER_ACTION" />
-		<field name="WAP_PUSH_RECEIVED_ACTION" />
-	</class>
-	<class name="android/provider/Telephony$Sms$Outbox" since="19">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<implements name="android/provider/Telephony$TextBasedSmsColumns" />
-		<method name="&lt;init>()V" />
-		<field name="CONTENT_URI" />
-		<field name="DEFAULT_SORT_ORDER" />
-	</class>
-	<class name="android/provider/Telephony$Sms$Sent" since="19">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<implements name="android/provider/Telephony$TextBasedSmsColumns" />
-		<method name="&lt;init>()V" />
-		<field name="CONTENT_URI" />
-		<field name="DEFAULT_SORT_ORDER" />
-	</class>
-	<class name="android/provider/Telephony$TextBasedSmsColumns" since="19">
-		<extends name="java/lang/Object" />
-		<field name="ADDRESS" />
-		<field name="BODY" />
-		<field name="DATE" />
-		<field name="DATE_SENT" />
-		<field name="ERROR_CODE" />
-		<field name="LOCKED" />
-		<field name="MESSAGE_TYPE_ALL" />
-		<field name="MESSAGE_TYPE_DRAFT" />
-		<field name="MESSAGE_TYPE_FAILED" />
-		<field name="MESSAGE_TYPE_INBOX" />
-		<field name="MESSAGE_TYPE_OUTBOX" />
-		<field name="MESSAGE_TYPE_QUEUED" />
-		<field name="MESSAGE_TYPE_SENT" />
-		<field name="PERSON" />
-		<field name="PROTOCOL" />
-		<field name="READ" />
-		<field name="REPLY_PATH_PRESENT" />
-		<field name="SEEN" />
-		<field name="SERVICE_CENTER" />
-		<field name="STATUS" />
-		<field name="STATUS_COMPLETE" />
-		<field name="STATUS_FAILED" />
-		<field name="STATUS_NONE" />
-		<field name="STATUS_PENDING" />
-		<field name="SUBJECT" />
-		<field name="THREAD_ID" />
-		<field name="TYPE" />
-	</class>
-	<class name="android/provider/Telephony$Threads" since="19">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/Telephony$ThreadsColumns" />
-		<method name="&lt;init>()V" />
-		<field name="BROADCAST_THREAD" />
-		<field name="COMMON_THREAD" />
-		<field name="CONTENT_URI" />
-		<field name="OBSOLETE_THREADS_URI" />
-	</class>
-	<class name="android/provider/Telephony$ThreadsColumns" since="19">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<field name="DATE" />
-		<field name="ERROR" />
-		<field name="HAS_ATTACHMENT" />
-		<field name="MESSAGE_COUNT" />
-		<field name="READ" />
-		<field name="RECIPIENT_IDS" />
-		<field name="SNIPPET" />
-		<field name="SNIPPET_CHARSET" />
-		<field name="TYPE" />
-	</class>
-	<class name="android/provider/UserDictionary" since="3">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="AUTHORITY" />
-		<field name="CONTENT_URI" />
-	</class>
-	<class name="android/provider/UserDictionary$Words" since="3">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<method name="&lt;init>()V" />
-		<method name="addWord(Landroid/content/Context;Ljava/lang/String;II)V" />
-		<method name="addWord(Landroid/content/Context;Ljava/lang/String;ILjava/lang/String;Ljava/util/Locale;)V" since="16" />
-		<field name="APP_ID" />
-		<field name="CONTENT_ITEM_TYPE" />
-		<field name="CONTENT_TYPE" />
-		<field name="CONTENT_URI" />
-		<field name="DEFAULT_SORT_ORDER" />
-		<field name="FREQUENCY" />
-		<field name="LOCALE" />
-		<field name="LOCALE_TYPE_ALL" />
-		<field name="LOCALE_TYPE_CURRENT" />
-		<field name="SHORTCUT" since="16" />
-		<field name="WORD" />
-		<field name="_ID" />
-	</class>
-	<class name="android/provider/VoicemailContract" since="14">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="ACTION_FETCH_VOICEMAIL" />
-		<field name="ACTION_NEW_VOICEMAIL" />
-		<field name="AUTHORITY" />
-		<field name="EXTRA_SELF_CHANGE" />
-		<field name="PARAM_KEY_SOURCE_PACKAGE" />
-	</class>
-	<class name="android/provider/VoicemailContract$Status" since="14">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<method name="&lt;init>()V" />
-		<method name="buildSourceUri(Ljava/lang/String;)Landroid/net/Uri;" />
-		<field name="CONFIGURATION_STATE" />
-		<field name="CONFIGURATION_STATE_CAN_BE_CONFIGURED" />
-		<field name="CONFIGURATION_STATE_NOT_CONFIGURED" />
-		<field name="CONFIGURATION_STATE_OK" />
-		<field name="CONTENT_URI" />
-		<field name="DATA_CHANNEL_STATE" />
-		<field name="DATA_CHANNEL_STATE_NO_CONNECTION" />
-		<field name="DATA_CHANNEL_STATE_OK" />
-		<field name="DIR_TYPE" />
-		<field name="ITEM_TYPE" />
-		<field name="NOTIFICATION_CHANNEL_STATE" />
-		<field name="NOTIFICATION_CHANNEL_STATE_MESSAGE_WAITING" />
-		<field name="NOTIFICATION_CHANNEL_STATE_NO_CONNECTION" />
-		<field name="NOTIFICATION_CHANNEL_STATE_OK" />
-		<field name="SETTINGS_URI" />
-		<field name="SOURCE_PACKAGE" />
-		<field name="VOICEMAIL_ACCESS_URI" />
-	</class>
-	<class name="android/provider/VoicemailContract$Voicemails" since="14">
-		<extends name="java/lang/Object" />
-		<implements name="android/provider/BaseColumns" />
-		<implements name="android/provider/OpenableColumns" />
-		<method name="&lt;init>()V" />
-		<method name="buildSourceUri(Ljava/lang/String;)Landroid/net/Uri;" />
-		<field name="CONTENT_URI" />
-		<field name="DATE" />
-		<field name="DIR_TYPE" />
-		<field name="DURATION" />
-		<field name="HAS_CONTENT" />
-		<field name="IS_READ" />
-		<field name="ITEM_TYPE" />
-		<field name="MIME_TYPE" />
-		<field name="NUMBER" />
-		<field name="SOURCE_DATA" />
-		<field name="SOURCE_PACKAGE" />
-	</class>
-	<class name="android/renderscript/Allocation" since="11">
-		<extends name="android/renderscript/BaseObj" />
-		<method name="&lt;init>()V" />
-		<method name="copy1DRangeFrom(IILandroid/renderscript/Allocation;I)V" since="14" />
-		<method name="copy1DRangeFrom(IILjava/lang/Object;)V" since="21" />
-		<method name="copy1DRangeFrom(II[B)V" />
-		<method name="copy1DRangeFrom(II[F)V" />
-		<method name="copy1DRangeFrom(II[I)V" />
-		<method name="copy1DRangeFrom(II[S)V" />
-		<method name="copy1DRangeFromUnchecked(IILjava/lang/Object;)V" since="21" />
-		<method name="copy1DRangeFromUnchecked(II[B)V" />
-		<method name="copy1DRangeFromUnchecked(II[F)V" />
-		<method name="copy1DRangeFromUnchecked(II[I)V" />
-		<method name="copy1DRangeFromUnchecked(II[S)V" />
-		<method name="copy2DRangeFrom(IIIILandroid/renderscript/Allocation;II)V" since="14" />
-		<method name="copy2DRangeFrom(IIIILjava/lang/Object;)V" since="21" />
-		<method name="copy2DRangeFrom(IIII[B)V" />
-		<method name="copy2DRangeFrom(IIII[F)V" />
-		<method name="copy2DRangeFrom(IIII[I)V" />
-		<method name="copy2DRangeFrom(IIII[S)V" />
-		<method name="copy2DRangeFrom(IILandroid/graphics/Bitmap;)V" />
-		<method name="copyFrom(Landroid/graphics/Bitmap;)V" />
-		<method name="copyFrom(Landroid/renderscript/Allocation;)V" since="18" />
-		<method name="copyFrom(Ljava/lang/Object;)V" since="21" />
-		<method name="copyFrom([B)V" />
-		<method name="copyFrom([F)V" />
-		<method name="copyFrom([I)V" />
-		<method name="copyFrom([Landroid/renderscript/BaseObj;)V" />
-		<method name="copyFrom([S)V" />
-		<method name="copyFromUnchecked(Ljava/lang/Object;)V" since="21" />
-		<method name="copyFromUnchecked([B)V" />
-		<method name="copyFromUnchecked([F)V" />
-		<method name="copyFromUnchecked([I)V" />
-		<method name="copyFromUnchecked([S)V" />
-		<method name="copyTo(Landroid/graphics/Bitmap;)V" />
-		<method name="copyTo(Ljava/lang/Object;)V" since="21" />
-		<method name="copyTo([B)V" />
-		<method name="copyTo([F)V" />
-		<method name="copyTo([I)V" />
-		<method name="copyTo([S)V" />
-		<method name="createCubemapFromBitmap(Landroid/renderscript/RenderScript;Landroid/graphics/Bitmap;)Landroid/renderscript/Allocation;" />
-		<method name="createCubemapFromBitmap(Landroid/renderscript/RenderScript;Landroid/graphics/Bitmap;Landroid/renderscript/Allocation$MipmapControl;I)Landroid/renderscript/Allocation;" />
-		<method name="createCubemapFromCubeFaces(Landroid/renderscript/RenderScript;Landroid/graphics/Bitmap;Landroid/graphics/Bitmap;Landroid/graphics/Bitmap;Landroid/graphics/Bitmap;Landroid/graphics/Bitmap;Landroid/graphics/Bitmap;)Landroid/renderscript/Allocation;" />
-		<method name="createCubemapFromCubeFaces(Landroid/renderscript/RenderScript;Landroid/graphics/Bitmap;Landroid/graphics/Bitmap;Landroid/graphics/Bitmap;Landroid/graphics/Bitmap;Landroid/graphics/Bitmap;Landroid/graphics/Bitmap;Landroid/renderscript/Allocation$MipmapControl;I)Landroid/renderscript/Allocation;" />
-		<method name="createFromBitmap(Landroid/renderscript/RenderScript;Landroid/graphics/Bitmap;)Landroid/renderscript/Allocation;" />
-		<method name="createFromBitmap(Landroid/renderscript/RenderScript;Landroid/graphics/Bitmap;Landroid/renderscript/Allocation$MipmapControl;I)Landroid/renderscript/Allocation;" />
-		<method name="createFromBitmapResource(Landroid/renderscript/RenderScript;Landroid/content/res/Resources;I)Landroid/renderscript/Allocation;" />
-		<method name="createFromBitmapResource(Landroid/renderscript/RenderScript;Landroid/content/res/Resources;ILandroid/renderscript/Allocation$MipmapControl;I)Landroid/renderscript/Allocation;" />
-		<method name="createFromString(Landroid/renderscript/RenderScript;Ljava/lang/String;I)Landroid/renderscript/Allocation;" />
-		<method name="createSized(Landroid/renderscript/RenderScript;Landroid/renderscript/Element;I)Landroid/renderscript/Allocation;" />
-		<method name="createSized(Landroid/renderscript/RenderScript;Landroid/renderscript/Element;II)Landroid/renderscript/Allocation;" />
-		<method name="createTyped(Landroid/renderscript/RenderScript;Landroid/renderscript/Type;)Landroid/renderscript/Allocation;" />
-		<method name="createTyped(Landroid/renderscript/RenderScript;Landroid/renderscript/Type;I)Landroid/renderscript/Allocation;" />
-		<method name="createTyped(Landroid/renderscript/RenderScript;Landroid/renderscript/Type;Landroid/renderscript/Allocation$MipmapControl;I)Landroid/renderscript/Allocation;" />
-		<method name="generateMipmaps()V" />
-		<method name="getBytesSize()I" since="16" />
-		<method name="getElement()Landroid/renderscript/Element;" since="16" />
-		<method name="getSurface()Landroid/view/Surface;" since="16" />
-		<method name="getType()Landroid/renderscript/Type;" />
-		<method name="getUsage()I" since="16" />
-		<method name="ioReceive()V" since="16" />
-		<method name="ioSend()V" since="16" />
-		<method name="resize(I)V" />
-		<method name="setFromFieldPacker(IILandroid/renderscript/FieldPacker;)V" />
-		<method name="setFromFieldPacker(ILandroid/renderscript/FieldPacker;)V" />
-		<method name="setOnBufferAvailableListener(Landroid/renderscript/Allocation$OnBufferAvailableListener;)V" since="19" />
-		<method name="setSurface(Landroid/view/Surface;)V" since="16" />
-		<method name="syncAll(I)V" />
-		<field name="USAGE_GRAPHICS_CONSTANTS" />
-		<field name="USAGE_GRAPHICS_RENDER_TARGET" since="14" />
-		<field name="USAGE_GRAPHICS_TEXTURE" />
-		<field name="USAGE_GRAPHICS_VERTEX" />
-		<field name="USAGE_IO_INPUT" since="16" />
-		<field name="USAGE_IO_OUTPUT" since="16" />
-		<field name="USAGE_SCRIPT" />
-		<field name="USAGE_SHARED" since="18" />
-	</class>
-	<class name="android/renderscript/Allocation$MipmapControl" since="11">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Landroid/renderscript/Allocation$MipmapControl;" />
-		<method name="values()[Landroid/renderscript/Allocation$MipmapControl;" />
-		<field name="MIPMAP_FULL" />
-		<field name="MIPMAP_NONE" />
-		<field name="MIPMAP_ON_SYNC_TO_TEXTURE" />
-	</class>
-	<class name="android/renderscript/Allocation$OnBufferAvailableListener" since="19">
-		<extends name="java/lang/Object" />
-		<method name="onBufferAvailable(Landroid/renderscript/Allocation;)V" />
-	</class>
-	<class name="android/renderscript/AllocationAdapter" since="11">
-		<extends name="android/renderscript/Allocation" />
-		<method name="&lt;init>()V" />
-		<method name="create1D(Landroid/renderscript/RenderScript;Landroid/renderscript/Allocation;)Landroid/renderscript/AllocationAdapter;" since="14" />
-		<method name="create2D(Landroid/renderscript/RenderScript;Landroid/renderscript/Allocation;)Landroid/renderscript/AllocationAdapter;" />
-		<method name="readData([F)V" />
-		<method name="readData([I)V" />
-		<method name="setFace(Landroid/renderscript/Type$CubemapFace;)V" />
-		<method name="setLOD(I)V" />
-		<method name="setY(I)V" />
-		<method name="setZ(I)V" />
-		<method name="subData(ILandroid/renderscript/FieldPacker;)V" />
-		<method name="subData1D(II[B)V" />
-		<method name="subData1D(II[F)V" />
-		<method name="subData1D(II[I)V" />
-		<method name="subData1D(II[S)V" />
-		<method name="subData2D(IIII[F)V" />
-		<method name="subData2D(IIII[I)V" />
-		<method name="subElementData(IILandroid/renderscript/FieldPacker;)V" />
-	</class>
-	<class name="android/renderscript/BaseObj" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="destroy()V" />
-		<method name="getName()Ljava/lang/String;" since="14" />
-		<method name="setName(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/renderscript/Byte2" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(BB)V" since="14" />
-		<field name="x" />
-		<field name="y" />
-	</class>
-	<class name="android/renderscript/Byte3" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(BBB)V" since="14" />
-		<field name="x" />
-		<field name="y" />
-		<field name="z" />
-	</class>
-	<class name="android/renderscript/Byte4" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(BBBB)V" since="14" />
-		<field name="w" />
-		<field name="x" />
-		<field name="y" />
-		<field name="z" />
-	</class>
-	<class name="android/renderscript/Double2" since="14">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(DD)V" />
-		<field name="x" />
-		<field name="y" />
-	</class>
-	<class name="android/renderscript/Double3" since="14">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(DDD)V" />
-		<field name="x" />
-		<field name="y" />
-		<field name="z" />
-	</class>
-	<class name="android/renderscript/Double4" since="14">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(DDDD)V" />
-		<field name="w" />
-		<field name="x" />
-		<field name="y" />
-		<field name="z" />
-	</class>
-	<class name="android/renderscript/Element" since="11">
-		<extends name="android/renderscript/BaseObj" />
-		<method name="&lt;init>()V" />
-		<method name="ALLOCATION(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
-		<method name="A_8(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
-		<method name="BOOLEAN(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
-		<method name="ELEMENT(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
-		<method name="F32(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
-		<method name="F32_2(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
-		<method name="F32_3(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
-		<method name="F32_4(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
-		<method name="F64(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
-		<method name="F64_2(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14" />
-		<method name="F64_3(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14" />
-		<method name="F64_4(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14" />
-		<method name="FONT(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="16" />
-		<method name="I16(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
-		<method name="I16_2(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14" />
-		<method name="I16_3(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14" />
-		<method name="I16_4(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14" />
-		<method name="I32(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
-		<method name="I32_2(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14" />
-		<method name="I32_3(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14" />
-		<method name="I32_4(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14" />
-		<method name="I64(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
-		<method name="I64_2(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14" />
-		<method name="I64_3(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14" />
-		<method name="I64_4(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14" />
-		<method name="I8(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
-		<method name="I8_2(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14" />
-		<method name="I8_3(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14" />
-		<method name="I8_4(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14" />
-		<method name="MATRIX4X4(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
-		<method name="MATRIX_2X2(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
-		<method name="MATRIX_3X3(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
-		<method name="MATRIX_4X4(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
-		<method name="MESH(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
-		<method name="PROGRAM_FRAGMENT(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
-		<method name="PROGRAM_RASTER(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
-		<method name="PROGRAM_STORE(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
-		<method name="PROGRAM_VERTEX(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
-		<method name="RGBA_4444(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
-		<method name="RGBA_5551(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
-		<method name="RGBA_8888(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
-		<method name="RGB_565(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
-		<method name="RGB_888(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
-		<method name="SAMPLER(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
-		<method name="SCRIPT(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
-		<method name="TYPE(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
-		<method name="U16(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
-		<method name="U16_2(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14" />
-		<method name="U16_3(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14" />
-		<method name="U16_4(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14" />
-		<method name="U32(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
-		<method name="U32_2(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14" />
-		<method name="U32_3(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14" />
-		<method name="U32_4(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14" />
-		<method name="U64(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
-		<method name="U64_2(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14" />
-		<method name="U64_3(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14" />
-		<method name="U64_4(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14" />
-		<method name="U8(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
-		<method name="U8_2(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14" />
-		<method name="U8_3(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14" />
-		<method name="U8_4(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
-		<method name="YUV(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="19" />
-		<method name="createPixel(Landroid/renderscript/RenderScript;Landroid/renderscript/Element$DataType;Landroid/renderscript/Element$DataKind;)Landroid/renderscript/Element;" />
-		<method name="createVector(Landroid/renderscript/RenderScript;Landroid/renderscript/Element$DataType;I)Landroid/renderscript/Element;" />
-		<method name="getBytesSize()I" since="16" />
-		<method name="getDataKind()Landroid/renderscript/Element$DataKind;" since="16" />
-		<method name="getDataType()Landroid/renderscript/Element$DataType;" since="16" />
-		<method name="getSubElement(I)Landroid/renderscript/Element;" since="16" />
-		<method name="getSubElementArraySize(I)I" since="16" />
-		<method name="getSubElementCount()I" since="16" />
-		<method name="getSubElementName(I)Ljava/lang/String;" since="16" />
-		<method name="getSubElementOffsetBytes(I)I" since="16" />
-		<method name="getVectorSize()I" since="16" />
-		<method name="isCompatible(Landroid/renderscript/Element;)Z" since="14" />
-		<method name="isComplex()Z" />
-	</class>
-	<class name="android/renderscript/Element$Builder" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/renderscript/RenderScript;)V" />
-		<method name="add(Landroid/renderscript/Element;Ljava/lang/String;)Landroid/renderscript/Element$Builder;" />
-		<method name="add(Landroid/renderscript/Element;Ljava/lang/String;I)Landroid/renderscript/Element$Builder;" />
-		<method name="create()Landroid/renderscript/Element;" />
-	</class>
-	<class name="android/renderscript/Element$DataKind" since="11">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Landroid/renderscript/Element$DataKind;" />
-		<method name="values()[Landroid/renderscript/Element$DataKind;" />
-		<field name="PIXEL_A" />
-		<field name="PIXEL_DEPTH" since="14" />
-		<field name="PIXEL_L" />
-		<field name="PIXEL_LA" />
-		<field name="PIXEL_RGB" />
-		<field name="PIXEL_RGBA" />
-		<field name="PIXEL_YUV" since="18" />
-		<field name="USER" />
-	</class>
-	<class name="android/renderscript/Element$DataType" since="11">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Landroid/renderscript/Element$DataType;" />
-		<method name="values()[Landroid/renderscript/Element$DataType;" />
-		<field name="BOOLEAN" />
-		<field name="FLOAT_32" />
-		<field name="FLOAT_64" />
-		<field name="MATRIX_2X2" />
-		<field name="MATRIX_3X3" />
-		<field name="MATRIX_4X4" />
-		<field name="NONE" since="16" />
-		<field name="RS_ALLOCATION" />
-		<field name="RS_ELEMENT" />
-		<field name="RS_FONT" since="16" />
-		<field name="RS_MESH" />
-		<field name="RS_PROGRAM_FRAGMENT" />
-		<field name="RS_PROGRAM_RASTER" />
-		<field name="RS_PROGRAM_STORE" />
-		<field name="RS_PROGRAM_VERTEX" />
-		<field name="RS_SAMPLER" />
-		<field name="RS_SCRIPT" />
-		<field name="RS_TYPE" />
-		<field name="SIGNED_16" />
-		<field name="SIGNED_32" />
-		<field name="SIGNED_64" />
-		<field name="SIGNED_8" />
-		<field name="UNSIGNED_16" />
-		<field name="UNSIGNED_32" />
-		<field name="UNSIGNED_4_4_4_4" />
-		<field name="UNSIGNED_5_5_5_1" />
-		<field name="UNSIGNED_5_6_5" />
-		<field name="UNSIGNED_64" />
-		<field name="UNSIGNED_8" />
-	</class>
-	<class name="android/renderscript/FieldPacker" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(I)V" />
-		<method name="&lt;init>([B)V" since="18" />
-		<method name="addBoolean(Z)V" />
-		<method name="addF32(F)V" />
-		<method name="addF32(Landroid/renderscript/Float2;)V" />
-		<method name="addF32(Landroid/renderscript/Float3;)V" />
-		<method name="addF32(Landroid/renderscript/Float4;)V" />
-		<method name="addF64(D)V" />
-		<method name="addF64(Landroid/renderscript/Double2;)V" since="14" />
-		<method name="addF64(Landroid/renderscript/Double3;)V" since="14" />
-		<method name="addF64(Landroid/renderscript/Double4;)V" since="14" />
-		<method name="addI16(Landroid/renderscript/Short2;)V" />
-		<method name="addI16(Landroid/renderscript/Short3;)V" />
-		<method name="addI16(Landroid/renderscript/Short4;)V" />
-		<method name="addI16(S)V" />
-		<method name="addI32(I)V" />
-		<method name="addI32(Landroid/renderscript/Int2;)V" />
-		<method name="addI32(Landroid/renderscript/Int3;)V" />
-		<method name="addI32(Landroid/renderscript/Int4;)V" />
-		<method name="addI64(J)V" />
-		<method name="addI64(Landroid/renderscript/Long2;)V" since="14" />
-		<method name="addI64(Landroid/renderscript/Long3;)V" since="14" />
-		<method name="addI64(Landroid/renderscript/Long4;)V" since="14" />
-		<method name="addI8(B)V" />
-		<method name="addI8(Landroid/renderscript/Byte2;)V" />
-		<method name="addI8(Landroid/renderscript/Byte3;)V" />
-		<method name="addI8(Landroid/renderscript/Byte4;)V" />
-		<method name="addMatrix(Landroid/renderscript/Matrix2f;)V" />
-		<method name="addMatrix(Landroid/renderscript/Matrix3f;)V" />
-		<method name="addMatrix(Landroid/renderscript/Matrix4f;)V" />
-		<method name="addObj(Landroid/renderscript/BaseObj;)V" />
-		<method name="addU16(I)V" />
-		<method name="addU16(Landroid/renderscript/Int2;)V" />
-		<method name="addU16(Landroid/renderscript/Int3;)V" />
-		<method name="addU16(Landroid/renderscript/Int4;)V" />
-		<method name="addU32(J)V" />
-		<method name="addU32(Landroid/renderscript/Long2;)V" />
-		<method name="addU32(Landroid/renderscript/Long3;)V" />
-		<method name="addU32(Landroid/renderscript/Long4;)V" />
-		<method name="addU64(J)V" />
-		<method name="addU64(Landroid/renderscript/Long2;)V" since="14" />
-		<method name="addU64(Landroid/renderscript/Long3;)V" since="14" />
-		<method name="addU64(Landroid/renderscript/Long4;)V" since="14" />
-		<method name="addU8(Landroid/renderscript/Short2;)V" />
-		<method name="addU8(Landroid/renderscript/Short3;)V" />
-		<method name="addU8(Landroid/renderscript/Short4;)V" />
-		<method name="addU8(S)V" />
-		<method name="align(I)V" />
-		<method name="getData()[B" />
-		<method name="reset()V" />
-		<method name="reset(I)V" />
-		<method name="skip(I)V" />
-		<method name="subBoolean()Z" since="18" />
-		<method name="subByte2()Landroid/renderscript/Byte2;" since="18" />
-		<method name="subByte3()Landroid/renderscript/Byte3;" since="18" />
-		<method name="subByte4()Landroid/renderscript/Byte4;" since="18" />
-		<method name="subDouble2()Landroid/renderscript/Double2;" since="18" />
-		<method name="subDouble3()Landroid/renderscript/Double3;" since="18" />
-		<method name="subDouble4()Landroid/renderscript/Double4;" since="18" />
-		<method name="subF32()F" since="18" />
-		<method name="subF64()D" since="18" />
-		<method name="subFloat2()Landroid/renderscript/Float2;" since="18" />
-		<method name="subFloat3()Landroid/renderscript/Float3;" since="18" />
-		<method name="subFloat4()Landroid/renderscript/Float4;" since="18" />
-		<method name="subI16()S" since="18" />
-		<method name="subI32()I" since="18" />
-		<method name="subI64()J" since="18" />
-		<method name="subI8()B" since="18" />
-		<method name="subInt2()Landroid/renderscript/Int2;" since="18" />
-		<method name="subInt3()Landroid/renderscript/Int3;" since="18" />
-		<method name="subInt4()Landroid/renderscript/Int4;" since="18" />
-		<method name="subLong2()Landroid/renderscript/Long2;" since="18" />
-		<method name="subLong3()Landroid/renderscript/Long3;" since="18" />
-		<method name="subLong4()Landroid/renderscript/Long4;" since="18" />
-		<method name="subMatrix2f()Landroid/renderscript/Matrix2f;" since="18" />
-		<method name="subMatrix3f()Landroid/renderscript/Matrix3f;" since="18" />
-		<method name="subMatrix4f()Landroid/renderscript/Matrix4f;" since="18" />
-		<method name="subShort2()Landroid/renderscript/Short2;" since="18" />
-		<method name="subShort3()Landroid/renderscript/Short3;" since="18" />
-		<method name="subShort4()Landroid/renderscript/Short4;" since="18" />
-		<method name="subalign(I)V" since="18" />
-	</class>
-	<class name="android/renderscript/FileA3D" since="11">
-		<extends name="android/renderscript/BaseObj" />
-		<method name="&lt;init>()V" />
-		<method name="createFromAsset(Landroid/renderscript/RenderScript;Landroid/content/res/AssetManager;Ljava/lang/String;)Landroid/renderscript/FileA3D;" />
-		<method name="createFromFile(Landroid/renderscript/RenderScript;Ljava/io/File;)Landroid/renderscript/FileA3D;" />
-		<method name="createFromFile(Landroid/renderscript/RenderScript;Ljava/lang/String;)Landroid/renderscript/FileA3D;" />
-		<method name="createFromResource(Landroid/renderscript/RenderScript;Landroid/content/res/Resources;I)Landroid/renderscript/FileA3D;" />
-		<method name="getIndexEntry(I)Landroid/renderscript/FileA3D$IndexEntry;" />
-		<method name="getIndexEntryCount()I" />
-	</class>
-	<class name="android/renderscript/FileA3D$EntryType" since="11">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Landroid/renderscript/FileA3D$EntryType;" />
-		<method name="values()[Landroid/renderscript/FileA3D$EntryType;" />
-		<field name="MESH" />
-		<field name="UNKNOWN" />
-	</class>
-	<class name="android/renderscript/FileA3D$IndexEntry" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getEntryType()Landroid/renderscript/FileA3D$EntryType;" />
-		<method name="getMesh()Landroid/renderscript/Mesh;" />
-		<method name="getName()Ljava/lang/String;" />
-		<method name="getObject()Landroid/renderscript/BaseObj;" />
-	</class>
-	<class name="android/renderscript/Float2" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(FF)V" />
-		<field name="x" />
-		<field name="y" />
-	</class>
-	<class name="android/renderscript/Float3" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(FFF)V" />
-		<field name="x" />
-		<field name="y" />
-		<field name="z" />
-	</class>
-	<class name="android/renderscript/Float4" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(FFFF)V" />
-		<field name="w" />
-		<field name="x" />
-		<field name="y" />
-		<field name="z" />
-	</class>
-	<class name="android/renderscript/Font" since="11">
-		<extends name="android/renderscript/BaseObj" />
-		<method name="&lt;init>()V" />
-		<method name="create(Landroid/renderscript/RenderScript;Landroid/content/res/Resources;Ljava/lang/String;Landroid/renderscript/Font$Style;F)Landroid/renderscript/Font;" />
-		<method name="createFromAsset(Landroid/renderscript/RenderScript;Landroid/content/res/Resources;Ljava/lang/String;F)Landroid/renderscript/Font;" />
-		<method name="createFromFile(Landroid/renderscript/RenderScript;Landroid/content/res/Resources;Ljava/io/File;F)Landroid/renderscript/Font;" />
-		<method name="createFromFile(Landroid/renderscript/RenderScript;Landroid/content/res/Resources;Ljava/lang/String;F)Landroid/renderscript/Font;" />
-		<method name="createFromResource(Landroid/renderscript/RenderScript;Landroid/content/res/Resources;IF)Landroid/renderscript/Font;" />
-	</class>
-	<class name="android/renderscript/Font$Style" since="11">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Landroid/renderscript/Font$Style;" />
-		<method name="values()[Landroid/renderscript/Font$Style;" />
-		<field name="BOLD" />
-		<field name="BOLD_ITALIC" />
-		<field name="ITALIC" />
-		<field name="NORMAL" />
-	</class>
-	<class name="android/renderscript/Int2" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(II)V" since="14" />
-		<field name="x" />
-		<field name="y" />
-	</class>
-	<class name="android/renderscript/Int3" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(III)V" since="14" />
-		<field name="x" />
-		<field name="y" />
-		<field name="z" />
-	</class>
-	<class name="android/renderscript/Int4" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(IIII)V" since="14" />
-		<field name="w" />
-		<field name="x" />
-		<field name="y" />
-		<field name="z" />
-	</class>
-	<class name="android/renderscript/Long2" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(JJ)V" since="14" />
-		<field name="x" />
-		<field name="y" />
-	</class>
-	<class name="android/renderscript/Long3" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(JJJ)V" since="14" />
-		<field name="x" />
-		<field name="y" />
-		<field name="z" />
-	</class>
-	<class name="android/renderscript/Long4" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(JJJJ)V" since="14" />
-		<field name="w" />
-		<field name="x" />
-		<field name="y" />
-		<field name="z" />
-	</class>
-	<class name="android/renderscript/Matrix2f" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>([F)V" />
-		<method name="get(II)F" />
-		<method name="getArray()[F" />
-		<method name="load(Landroid/renderscript/Matrix2f;)V" />
-		<method name="loadIdentity()V" />
-		<method name="loadMultiply(Landroid/renderscript/Matrix2f;Landroid/renderscript/Matrix2f;)V" />
-		<method name="loadRotate(F)V" />
-		<method name="loadScale(FF)V" />
-		<method name="multiply(Landroid/renderscript/Matrix2f;)V" />
-		<method name="rotate(F)V" />
-		<method name="scale(FF)V" />
-		<method name="set(IIF)V" />
-		<method name="transpose()V" />
-	</class>
-	<class name="android/renderscript/Matrix3f" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>([F)V" />
-		<method name="get(II)F" />
-		<method name="getArray()[F" />
-		<method name="load(Landroid/renderscript/Matrix3f;)V" />
-		<method name="loadIdentity()V" />
-		<method name="loadMultiply(Landroid/renderscript/Matrix3f;Landroid/renderscript/Matrix3f;)V" />
-		<method name="loadRotate(F)V" />
-		<method name="loadRotate(FFFF)V" />
-		<method name="loadScale(FF)V" />
-		<method name="loadScale(FFF)V" />
-		<method name="loadTranslate(FF)V" />
-		<method name="multiply(Landroid/renderscript/Matrix3f;)V" />
-		<method name="rotate(F)V" />
-		<method name="rotate(FFFF)V" />
-		<method name="scale(FF)V" />
-		<method name="scale(FFF)V" />
-		<method name="set(IIF)V" />
-		<method name="translate(FF)V" />
-		<method name="transpose()V" />
-	</class>
-	<class name="android/renderscript/Matrix4f" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>([F)V" />
-		<method name="get(II)F" />
-		<method name="getArray()[F" />
-		<method name="inverse()Z" />
-		<method name="inverseTranspose()Z" />
-		<method name="load(Landroid/renderscript/Matrix4f;)V" />
-		<method name="loadFrustum(FFFFFF)V" />
-		<method name="loadIdentity()V" />
-		<method name="loadMultiply(Landroid/renderscript/Matrix4f;Landroid/renderscript/Matrix4f;)V" />
-		<method name="loadOrtho(FFFFFF)V" />
-		<method name="loadOrthoWindow(II)V" />
-		<method name="loadPerspective(FFFF)V" />
-		<method name="loadProjectionNormalized(II)V" />
-		<method name="loadRotate(FFFF)V" />
-		<method name="loadScale(FFF)V" />
-		<method name="loadTranslate(FFF)V" />
-		<method name="multiply(Landroid/renderscript/Matrix4f;)V" />
-		<method name="rotate(FFFF)V" />
-		<method name="scale(FFF)V" />
-		<method name="set(IIF)V" />
-		<method name="translate(FFF)V" />
-		<method name="transpose()V" />
-	</class>
-	<class name="android/renderscript/Mesh" since="11">
-		<extends name="android/renderscript/BaseObj" />
-		<method name="&lt;init>()V" />
-		<method name="getIndexSetAllocation(I)Landroid/renderscript/Allocation;" />
-		<method name="getPrimitive(I)Landroid/renderscript/Mesh$Primitive;" />
-		<method name="getPrimitiveCount()I" />
-		<method name="getVertexAllocation(I)Landroid/renderscript/Allocation;" />
-		<method name="getVertexAllocationCount()I" />
-	</class>
-	<class name="android/renderscript/Mesh$AllocationBuilder" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/renderscript/RenderScript;)V" />
-		<method name="addIndexSetAllocation(Landroid/renderscript/Allocation;Landroid/renderscript/Mesh$Primitive;)Landroid/renderscript/Mesh$AllocationBuilder;" />
-		<method name="addIndexSetType(Landroid/renderscript/Mesh$Primitive;)Landroid/renderscript/Mesh$AllocationBuilder;" />
-		<method name="addVertexAllocation(Landroid/renderscript/Allocation;)Landroid/renderscript/Mesh$AllocationBuilder;" />
-		<method name="create()Landroid/renderscript/Mesh;" />
-		<method name="getCurrentIndexSetIndex()I" />
-		<method name="getCurrentVertexTypeIndex()I" />
-	</class>
-	<class name="android/renderscript/Mesh$Builder" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/renderscript/RenderScript;I)V" />
-		<method name="addIndexSetType(Landroid/renderscript/Element;ILandroid/renderscript/Mesh$Primitive;)Landroid/renderscript/Mesh$Builder;" />
-		<method name="addIndexSetType(Landroid/renderscript/Mesh$Primitive;)Landroid/renderscript/Mesh$Builder;" />
-		<method name="addIndexSetType(Landroid/renderscript/Type;Landroid/renderscript/Mesh$Primitive;)Landroid/renderscript/Mesh$Builder;" />
-		<method name="addVertexType(Landroid/renderscript/Element;I)Landroid/renderscript/Mesh$Builder;" />
-		<method name="addVertexType(Landroid/renderscript/Type;)Landroid/renderscript/Mesh$Builder;" />
-		<method name="create()Landroid/renderscript/Mesh;" />
-		<method name="getCurrentIndexSetIndex()I" />
-		<method name="getCurrentVertexTypeIndex()I" />
-	</class>
-	<class name="android/renderscript/Mesh$Primitive" since="11">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Landroid/renderscript/Mesh$Primitive;" />
-		<method name="values()[Landroid/renderscript/Mesh$Primitive;" />
-		<field name="LINE" />
-		<field name="LINE_STRIP" />
-		<field name="POINT" />
-		<field name="TRIANGLE" />
-		<field name="TRIANGLE_FAN" />
-		<field name="TRIANGLE_STRIP" />
-	</class>
-	<class name="android/renderscript/Mesh$TriangleMeshBuilder" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/renderscript/RenderScript;II)V" />
-		<method name="addTriangle(III)Landroid/renderscript/Mesh$TriangleMeshBuilder;" />
-		<method name="addVertex(FF)Landroid/renderscript/Mesh$TriangleMeshBuilder;" />
-		<method name="addVertex(FFF)Landroid/renderscript/Mesh$TriangleMeshBuilder;" />
-		<method name="create(Z)Landroid/renderscript/Mesh;" />
-		<method name="setColor(FFFF)Landroid/renderscript/Mesh$TriangleMeshBuilder;" />
-		<method name="setNormal(FFF)Landroid/renderscript/Mesh$TriangleMeshBuilder;" />
-		<method name="setTexture(FF)Landroid/renderscript/Mesh$TriangleMeshBuilder;" />
-		<field name="COLOR" />
-		<field name="NORMAL" />
-		<field name="TEXTURE_0" />
-	</class>
-	<class name="android/renderscript/Program" since="11">
-		<extends name="android/renderscript/BaseObj" />
-		<method name="&lt;init>()V" />
-		<method name="bindConstants(Landroid/renderscript/Allocation;I)V" />
-		<method name="bindSampler(Landroid/renderscript/Sampler;I)V" />
-		<method name="bindTexture(Landroid/renderscript/Allocation;I)V" />
-		<method name="getConstant(I)Landroid/renderscript/Type;" since="16" />
-		<method name="getConstantCount()I" since="16" />
-		<method name="getTextureCount()I" since="16" />
-		<method name="getTextureName(I)Ljava/lang/String;" since="16" />
-		<method name="getTextureType(I)Landroid/renderscript/Program$TextureType;" since="16" />
-	</class>
-	<class name="android/renderscript/Program$BaseProgramBuilder" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/renderscript/RenderScript;)V" />
-		<method name="addConstant(Landroid/renderscript/Type;)Landroid/renderscript/Program$BaseProgramBuilder;" />
-		<method name="addTexture(Landroid/renderscript/Program$TextureType;)Landroid/renderscript/Program$BaseProgramBuilder;" />
-		<method name="addTexture(Landroid/renderscript/Program$TextureType;Ljava/lang/String;)Landroid/renderscript/Program$BaseProgramBuilder;" since="16" />
-		<method name="getCurrentConstantIndex()I" />
-		<method name="getCurrentTextureIndex()I" />
-		<method name="initProgram(Landroid/renderscript/Program;)V" />
-		<method name="setShader(Landroid/content/res/Resources;I)Landroid/renderscript/Program$BaseProgramBuilder;" />
-		<method name="setShader(Ljava/lang/String;)Landroid/renderscript/Program$BaseProgramBuilder;" />
-	</class>
-	<class name="android/renderscript/Program$TextureType" since="11">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Landroid/renderscript/Program$TextureType;" />
-		<method name="values()[Landroid/renderscript/Program$TextureType;" />
-		<field name="TEXTURE_2D" />
-		<field name="TEXTURE_CUBE" />
-	</class>
-	<class name="android/renderscript/ProgramFragment" since="11">
-		<extends name="android/renderscript/Program" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="android/renderscript/ProgramFragment$Builder" since="11">
-		<extends name="android/renderscript/Program$BaseProgramBuilder" />
-		<method name="&lt;init>(Landroid/renderscript/RenderScript;)V" />
-		<method name="create()Landroid/renderscript/ProgramFragment;" />
-	</class>
-	<class name="android/renderscript/ProgramFragmentFixedFunction" since="11">
-		<extends name="android/renderscript/ProgramFragment" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="android/renderscript/ProgramFragmentFixedFunction$Builder" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/renderscript/RenderScript;)V" />
-		<method name="create()Landroid/renderscript/ProgramFragmentFixedFunction;" />
-		<method name="setPointSpriteTexCoordinateReplacement(Z)Landroid/renderscript/ProgramFragmentFixedFunction$Builder;" />
-		<method name="setTexture(Landroid/renderscript/ProgramFragmentFixedFunction$Builder$EnvMode;Landroid/renderscript/ProgramFragmentFixedFunction$Builder$Format;I)Landroid/renderscript/ProgramFragmentFixedFunction$Builder;" />
-		<method name="setVaryingColor(Z)Landroid/renderscript/ProgramFragmentFixedFunction$Builder;" />
-		<field name="MAX_TEXTURE" />
-	</class>
-	<class name="android/renderscript/ProgramFragmentFixedFunction$Builder$EnvMode" since="11">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Landroid/renderscript/ProgramFragmentFixedFunction$Builder$EnvMode;" />
-		<method name="values()[Landroid/renderscript/ProgramFragmentFixedFunction$Builder$EnvMode;" />
-		<field name="DECAL" />
-		<field name="MODULATE" />
-		<field name="REPLACE" />
-	</class>
-	<class name="android/renderscript/ProgramFragmentFixedFunction$Builder$Format" since="11">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Landroid/renderscript/ProgramFragmentFixedFunction$Builder$Format;" />
-		<method name="values()[Landroid/renderscript/ProgramFragmentFixedFunction$Builder$Format;" />
-		<field name="ALPHA" />
-		<field name="LUMINANCE_ALPHA" />
-		<field name="RGB" />
-		<field name="RGBA" />
-	</class>
-	<class name="android/renderscript/ProgramRaster" since="11">
-		<extends name="android/renderscript/BaseObj" />
-		<method name="&lt;init>()V" />
-		<method name="CULL_BACK(Landroid/renderscript/RenderScript;)Landroid/renderscript/ProgramRaster;" />
-		<method name="CULL_FRONT(Landroid/renderscript/RenderScript;)Landroid/renderscript/ProgramRaster;" />
-		<method name="CULL_NONE(Landroid/renderscript/RenderScript;)Landroid/renderscript/ProgramRaster;" />
-		<method name="getCullMode()Landroid/renderscript/ProgramRaster$CullMode;" since="16" />
-		<method name="isPointSpriteEnabled()Z" since="16" />
-	</class>
-	<class name="android/renderscript/ProgramRaster$Builder" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/renderscript/RenderScript;)V" />
-		<method name="create()Landroid/renderscript/ProgramRaster;" />
-		<method name="setCullMode(Landroid/renderscript/ProgramRaster$CullMode;)Landroid/renderscript/ProgramRaster$Builder;" />
-		<method name="setPointSpriteEnabled(Z)Landroid/renderscript/ProgramRaster$Builder;" />
-	</class>
-	<class name="android/renderscript/ProgramRaster$CullMode" since="11">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Landroid/renderscript/ProgramRaster$CullMode;" />
-		<method name="values()[Landroid/renderscript/ProgramRaster$CullMode;" />
-		<field name="BACK" />
-		<field name="FRONT" />
-		<field name="NONE" />
-	</class>
-	<class name="android/renderscript/ProgramStore" since="11">
-		<extends name="android/renderscript/BaseObj" />
-		<method name="&lt;init>()V" />
-		<method name="BLEND_ALPHA_DEPTH_NONE(Landroid/renderscript/RenderScript;)Landroid/renderscript/ProgramStore;" />
-		<method name="BLEND_ALPHA_DEPTH_TEST(Landroid/renderscript/RenderScript;)Landroid/renderscript/ProgramStore;" />
-		<method name="BLEND_NONE_DEPTH_NONE(Landroid/renderscript/RenderScript;)Landroid/renderscript/ProgramStore;" />
-		<method name="BLEND_NONE_DEPTH_TEST(Landroid/renderscript/RenderScript;)Landroid/renderscript/ProgramStore;" />
-		<method name="getBlendDstFunc()Landroid/renderscript/ProgramStore$BlendDstFunc;" since="16" />
-		<method name="getBlendSrcFunc()Landroid/renderscript/ProgramStore$BlendSrcFunc;" since="16" />
-		<method name="getDepthFunc()Landroid/renderscript/ProgramStore$DepthFunc;" since="16" />
-		<method name="isColorMaskAlphaEnabled()Z" since="16" />
-		<method name="isColorMaskBlueEnabled()Z" since="16" />
-		<method name="isColorMaskGreenEnabled()Z" since="16" />
-		<method name="isColorMaskRedEnabled()Z" since="16" />
-		<method name="isDepthMaskEnabled()Z" since="16" />
-		<method name="isDitherEnabled()Z" since="16" />
-	</class>
-	<class name="android/renderscript/ProgramStore$BlendDstFunc" since="11">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Landroid/renderscript/ProgramStore$BlendDstFunc;" />
-		<method name="values()[Landroid/renderscript/ProgramStore$BlendDstFunc;" />
-		<field name="DST_ALPHA" />
-		<field name="ONE" />
-		<field name="ONE_MINUS_DST_ALPHA" />
-		<field name="ONE_MINUS_SRC_ALPHA" />
-		<field name="ONE_MINUS_SRC_COLOR" />
-		<field name="SRC_ALPHA" />
-		<field name="SRC_COLOR" />
-		<field name="ZERO" />
-	</class>
-	<class name="android/renderscript/ProgramStore$BlendSrcFunc" since="11">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Landroid/renderscript/ProgramStore$BlendSrcFunc;" />
-		<method name="values()[Landroid/renderscript/ProgramStore$BlendSrcFunc;" />
-		<field name="DST_ALPHA" />
-		<field name="DST_COLOR" />
-		<field name="ONE" />
-		<field name="ONE_MINUS_DST_ALPHA" />
-		<field name="ONE_MINUS_DST_COLOR" />
-		<field name="ONE_MINUS_SRC_ALPHA" />
-		<field name="SRC_ALPHA" />
-		<field name="SRC_ALPHA_SATURATE" />
-		<field name="ZERO" />
-	</class>
-	<class name="android/renderscript/ProgramStore$Builder" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/renderscript/RenderScript;)V" />
-		<method name="create()Landroid/renderscript/ProgramStore;" />
-		<method name="setBlendFunc(Landroid/renderscript/ProgramStore$BlendSrcFunc;Landroid/renderscript/ProgramStore$BlendDstFunc;)Landroid/renderscript/ProgramStore$Builder;" />
-		<method name="setColorMaskEnabled(ZZZZ)Landroid/renderscript/ProgramStore$Builder;" />
-		<method name="setDepthFunc(Landroid/renderscript/ProgramStore$DepthFunc;)Landroid/renderscript/ProgramStore$Builder;" />
-		<method name="setDepthMaskEnabled(Z)Landroid/renderscript/ProgramStore$Builder;" />
-		<method name="setDitherEnabled(Z)Landroid/renderscript/ProgramStore$Builder;" />
-	</class>
-	<class name="android/renderscript/ProgramStore$DepthFunc" since="11">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Landroid/renderscript/ProgramStore$DepthFunc;" />
-		<method name="values()[Landroid/renderscript/ProgramStore$DepthFunc;" />
-		<field name="ALWAYS" />
-		<field name="EQUAL" />
-		<field name="GREATER" />
-		<field name="GREATER_OR_EQUAL" />
-		<field name="LESS" />
-		<field name="LESS_OR_EQUAL" />
-		<field name="NOT_EQUAL" />
-	</class>
-	<class name="android/renderscript/ProgramVertex" since="11">
-		<extends name="android/renderscript/Program" />
-		<method name="&lt;init>()V" />
-		<method name="getInput(I)Landroid/renderscript/Element;" since="16" />
-		<method name="getInputCount()I" since="16" />
-	</class>
-	<class name="android/renderscript/ProgramVertex$Builder" since="11">
-		<extends name="android/renderscript/Program$BaseProgramBuilder" />
-		<method name="&lt;init>(Landroid/renderscript/RenderScript;)V" />
-		<method name="addInput(Landroid/renderscript/Element;)Landroid/renderscript/ProgramVertex$Builder;" />
-		<method name="create()Landroid/renderscript/ProgramVertex;" />
-	</class>
-	<class name="android/renderscript/ProgramVertexFixedFunction" since="11">
-		<extends name="android/renderscript/ProgramVertex" />
-		<method name="&lt;init>()V" />
-		<method name="bindConstants(Landroid/renderscript/ProgramVertexFixedFunction$Constants;)V" />
-	</class>
-	<class name="android/renderscript/ProgramVertexFixedFunction$Builder" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/renderscript/RenderScript;)V" />
-		<method name="create()Landroid/renderscript/ProgramVertexFixedFunction;" />
-		<method name="setTextureMatrixEnable(Z)Landroid/renderscript/ProgramVertexFixedFunction$Builder;" />
-	</class>
-	<class name="android/renderscript/ProgramVertexFixedFunction$Constants" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/renderscript/RenderScript;)V" />
-		<method name="destroy()V" />
-		<method name="setModelview(Landroid/renderscript/Matrix4f;)V" />
-		<method name="setProjection(Landroid/renderscript/Matrix4f;)V" />
-		<method name="setTexture(Landroid/renderscript/Matrix4f;)V" />
-	</class>
-	<class name="android/renderscript/RSDriverException" since="11">
-		<extends name="android/renderscript/RSRuntimeException" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/renderscript/RSIllegalArgumentException" since="11">
-		<extends name="android/renderscript/RSRuntimeException" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/renderscript/RSInvalidStateException" since="11">
-		<extends name="android/renderscript/RSRuntimeException" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/renderscript/RSRuntimeException" since="11">
-		<extends name="java/lang/RuntimeException" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/renderscript/RSSurfaceView" since="11">
-		<extends name="android/view/SurfaceView" />
-		<implements name="android/view/SurfaceHolder$Callback" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="createRenderScriptGL(Landroid/renderscript/RenderScriptGL$SurfaceConfig;)Landroid/renderscript/RenderScriptGL;" />
-		<method name="destroyRenderScriptGL()V" />
-		<method name="getRenderScriptGL()Landroid/renderscript/RenderScriptGL;" />
-		<method name="pause()V" />
-		<method name="resume()V" />
-		<method name="setRenderScriptGL(Landroid/renderscript/RenderScriptGL;)V" />
-	</class>
-	<class name="android/renderscript/RSTextureView" since="14">
-		<extends name="android/view/TextureView" />
-		<implements name="android/view/TextureView$SurfaceTextureListener" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="createRenderScriptGL(Landroid/renderscript/RenderScriptGL$SurfaceConfig;)Landroid/renderscript/RenderScriptGL;" />
-		<method name="destroyRenderScriptGL()V" />
-		<method name="getRenderScriptGL()Landroid/renderscript/RenderScriptGL;" />
-		<method name="pause()V" />
-		<method name="resume()V" />
-		<method name="setRenderScriptGL(Landroid/renderscript/RenderScriptGL;)V" />
-	</class>
-	<class name="android/renderscript/RenderScript" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="contextDump()V" />
-		<method name="create(Landroid/content/Context;)Landroid/renderscript/RenderScript;" />
-		<method name="create(Landroid/content/Context;Landroid/renderscript/RenderScript$ContextType;)Landroid/renderscript/RenderScript;" since="18" />
-		<method name="create(Landroid/content/Context;Landroid/renderscript/RenderScript$ContextType;I)Landroid/renderscript/RenderScript;" since="21" />
-		<method name="destroy()V" />
-		<method name="finish()V" />
-		<method name="getApplicationContext()Landroid/content/Context;" />
-		<method name="getErrorHandler()Landroid/renderscript/RenderScript$RSErrorHandler;" />
-		<method name="getMessageHandler()Landroid/renderscript/RenderScript$RSMessageHandler;" />
-		<method name="sendMessage(I[I)V" since="18" />
-		<method name="setErrorHandler(Landroid/renderscript/RenderScript$RSErrorHandler;)V" />
-		<method name="setMessageHandler(Landroid/renderscript/RenderScript$RSMessageHandler;)V" />
-		<method name="setPriority(Landroid/renderscript/RenderScript$Priority;)V" />
-		<field name="CREATE_FLAG_LOW_LATENCY" since="21" />
-		<field name="CREATE_FLAG_LOW_POWER" since="21" />
-		<field name="CREATE_FLAG_NONE" since="21" />
-	</class>
-	<class name="android/renderscript/RenderScript$ContextType" since="18">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Landroid/renderscript/RenderScript$ContextType;" />
-		<method name="values()[Landroid/renderscript/RenderScript$ContextType;" />
-		<field name="DEBUG" />
-		<field name="NORMAL" />
-		<field name="PROFILE" />
-	</class>
-	<class name="android/renderscript/RenderScript$Priority" since="11">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Landroid/renderscript/RenderScript$Priority;" />
-		<method name="values()[Landroid/renderscript/RenderScript$Priority;" />
-		<field name="LOW" />
-		<field name="NORMAL" />
-	</class>
-	<class name="android/renderscript/RenderScript$RSErrorHandler" since="11">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/Runnable" />
-		<method name="&lt;init>()V" />
-		<field name="mErrorMessage" />
-		<field name="mErrorNum" />
-	</class>
-	<class name="android/renderscript/RenderScript$RSMessageHandler" since="11">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/Runnable" />
-		<method name="&lt;init>()V" />
-		<field name="mData" />
-		<field name="mID" />
-		<field name="mLength" />
-	</class>
-	<class name="android/renderscript/RenderScriptGL" since="11">
-		<extends name="android/renderscript/RenderScript" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/renderscript/RenderScriptGL$SurfaceConfig;)V" />
-		<method name="bindProgramFragment(Landroid/renderscript/ProgramFragment;)V" />
-		<method name="bindProgramRaster(Landroid/renderscript/ProgramRaster;)V" />
-		<method name="bindProgramStore(Landroid/renderscript/ProgramStore;)V" />
-		<method name="bindProgramVertex(Landroid/renderscript/ProgramVertex;)V" />
-		<method name="bindRootScript(Landroid/renderscript/Script;)V" />
-		<method name="getHeight()I" />
-		<method name="getWidth()I" />
-		<method name="pause()V" />
-		<method name="resume()V" />
-		<method name="setSurface(Landroid/view/SurfaceHolder;II)V" />
-		<method name="setSurfaceTexture(Landroid/graphics/SurfaceTexture;II)V" since="14" />
-	</class>
-	<class name="android/renderscript/RenderScriptGL$SurfaceConfig" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/renderscript/RenderScriptGL$SurfaceConfig;)V" />
-		<method name="setAlpha(II)V" />
-		<method name="setColor(II)V" />
-		<method name="setDepth(II)V" />
-		<method name="setSamples(IIF)V" />
-	</class>
-	<class name="android/renderscript/Sampler" since="11">
-		<extends name="android/renderscript/BaseObj" />
-		<method name="&lt;init>()V" />
-		<method name="CLAMP_LINEAR(Landroid/renderscript/RenderScript;)Landroid/renderscript/Sampler;" />
-		<method name="CLAMP_LINEAR_MIP_LINEAR(Landroid/renderscript/RenderScript;)Landroid/renderscript/Sampler;" />
-		<method name="CLAMP_NEAREST(Landroid/renderscript/RenderScript;)Landroid/renderscript/Sampler;" />
-		<method name="MIRRORED_REPEAT_LINEAR(Landroid/renderscript/RenderScript;)Landroid/renderscript/Sampler;" since="18" />
-		<method name="MIRRORED_REPEAT_LINEAR_MIP_LINEAR(Landroid/renderscript/RenderScript;)Landroid/renderscript/Sampler;" since="18" />
-		<method name="MIRRORED_REPEAT_NEAREST(Landroid/renderscript/RenderScript;)Landroid/renderscript/Sampler;" since="18" />
-		<method name="WRAP_LINEAR(Landroid/renderscript/RenderScript;)Landroid/renderscript/Sampler;" />
-		<method name="WRAP_LINEAR_MIP_LINEAR(Landroid/renderscript/RenderScript;)Landroid/renderscript/Sampler;" />
-		<method name="WRAP_NEAREST(Landroid/renderscript/RenderScript;)Landroid/renderscript/Sampler;" />
-		<method name="getAnisotropy()F" since="16" />
-		<method name="getMagnification()Landroid/renderscript/Sampler$Value;" since="16" />
-		<method name="getMinification()Landroid/renderscript/Sampler$Value;" since="16" />
-		<method name="getWrapS()Landroid/renderscript/Sampler$Value;" since="16" />
-		<method name="getWrapT()Landroid/renderscript/Sampler$Value;" since="16" />
-	</class>
-	<class name="android/renderscript/Sampler$Builder" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/renderscript/RenderScript;)V" />
-		<method name="create()Landroid/renderscript/Sampler;" />
-		<method name="setAnisotropy(F)V" />
-		<method name="setMagnification(Landroid/renderscript/Sampler$Value;)V" />
-		<method name="setMinification(Landroid/renderscript/Sampler$Value;)V" />
-		<method name="setWrapS(Landroid/renderscript/Sampler$Value;)V" />
-		<method name="setWrapT(Landroid/renderscript/Sampler$Value;)V" />
-	</class>
-	<class name="android/renderscript/Sampler$Value" since="11">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Landroid/renderscript/Sampler$Value;" />
-		<method name="values()[Landroid/renderscript/Sampler$Value;" />
-		<field name="CLAMP" />
-		<field name="LINEAR" />
-		<field name="LINEAR_MIP_LINEAR" />
-		<field name="LINEAR_MIP_NEAREST" />
-		<field name="MIRRORED_REPEAT" since="18" />
-		<field name="NEAREST" />
-		<field name="WRAP" />
-	</class>
-	<class name="android/renderscript/Script" since="11">
-		<extends name="android/renderscript/BaseObj" />
-		<method name="&lt;init>()V" />
-		<method name="bindAllocation(Landroid/renderscript/Allocation;I)V" />
-		<method name="createFieldID(ILandroid/renderscript/Element;)Landroid/renderscript/Script$FieldID;" since="17" />
-		<method name="createKernelID(IILandroid/renderscript/Element;Landroid/renderscript/Element;)Landroid/renderscript/Script$KernelID;" since="17" />
-		<method name="forEach(ILandroid/renderscript/Allocation;Landroid/renderscript/Allocation;Landroid/renderscript/FieldPacker;)V" since="14" />
-		<method name="forEach(ILandroid/renderscript/Allocation;Landroid/renderscript/Allocation;Landroid/renderscript/FieldPacker;Landroid/renderscript/Script$LaunchOptions;)V" since="18" />
-		<method name="getVarB(I)Z" since="18" />
-		<method name="getVarD(I)D" since="18" />
-		<method name="getVarF(I)F" since="18" />
-		<method name="getVarI(I)I" since="18" />
-		<method name="getVarJ(I)J" since="18" />
-		<method name="getVarV(ILandroid/renderscript/FieldPacker;)V" since="18" />
-		<method name="invoke(I)V" />
-		<method name="invoke(ILandroid/renderscript/FieldPacker;)V" />
-		<method name="setTimeZone(Ljava/lang/String;)V" />
-		<method name="setVar(ID)V" />
-		<method name="setVar(IF)V" />
-		<method name="setVar(II)V" />
-		<method name="setVar(IJ)V" />
-		<method name="setVar(ILandroid/renderscript/BaseObj;)V" />
-		<method name="setVar(ILandroid/renderscript/FieldPacker;)V" />
-		<method name="setVar(ILandroid/renderscript/FieldPacker;Landroid/renderscript/Element;[I)V" since="16" />
-		<method name="setVar(IZ)V" />
-	</class>
-	<class name="android/renderscript/Script$Builder" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="android/renderscript/Script$FieldBase" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getAllocation()Landroid/renderscript/Allocation;" />
-		<method name="getElement()Landroid/renderscript/Element;" />
-		<method name="getType()Landroid/renderscript/Type;" />
-		<method name="init(Landroid/renderscript/RenderScript;I)V" />
-		<method name="init(Landroid/renderscript/RenderScript;II)V" />
-		<method name="updateAllocation()V" />
-		<field name="mAllocation" />
-		<field name="mElement" />
-	</class>
-	<class name="android/renderscript/Script$FieldID" since="17">
-		<extends name="android/renderscript/BaseObj" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="android/renderscript/Script$KernelID" since="17">
-		<extends name="android/renderscript/BaseObj" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="android/renderscript/Script$LaunchOptions" since="18">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getXEnd()I" />
-		<method name="getXStart()I" />
-		<method name="getYEnd()I" />
-		<method name="getYStart()I" />
-		<method name="getZEnd()I" />
-		<method name="getZStart()I" />
-		<method name="setX(II)Landroid/renderscript/Script$LaunchOptions;" />
-		<method name="setY(II)Landroid/renderscript/Script$LaunchOptions;" />
-		<method name="setZ(II)Landroid/renderscript/Script$LaunchOptions;" />
-	</class>
-	<class name="android/renderscript/ScriptC" since="11">
-		<extends name="android/renderscript/Script" />
-		<method name="&lt;init>(ILandroid/renderscript/RenderScript;)V" />
-		<method name="&lt;init>(Landroid/renderscript/RenderScript;Landroid/content/res/Resources;I)V" />
-	</class>
-	<class name="android/renderscript/ScriptGroup" since="17">
-		<extends name="android/renderscript/BaseObj" />
-		<method name="&lt;init>()V" />
-		<method name="execute()V" />
-		<method name="setInput(Landroid/renderscript/Script$KernelID;Landroid/renderscript/Allocation;)V" />
-		<method name="setOutput(Landroid/renderscript/Script$KernelID;Landroid/renderscript/Allocation;)V" />
-	</class>
-	<class name="android/renderscript/ScriptGroup$Builder" since="17">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/renderscript/RenderScript;)V" />
-		<method name="addConnection(Landroid/renderscript/Type;Landroid/renderscript/Script$KernelID;Landroid/renderscript/Script$FieldID;)Landroid/renderscript/ScriptGroup$Builder;" />
-		<method name="addConnection(Landroid/renderscript/Type;Landroid/renderscript/Script$KernelID;Landroid/renderscript/Script$KernelID;)Landroid/renderscript/ScriptGroup$Builder;" />
-		<method name="addKernel(Landroid/renderscript/Script$KernelID;)Landroid/renderscript/ScriptGroup$Builder;" />
-		<method name="create()Landroid/renderscript/ScriptGroup;" />
-	</class>
-	<class name="android/renderscript/ScriptIntrinsic" since="17">
-		<extends name="android/renderscript/Script" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="android/renderscript/ScriptIntrinsic3DLUT" since="18">
-		<extends name="android/renderscript/ScriptIntrinsic" />
-		<method name="&lt;init>()V" />
-		<method name="create(Landroid/renderscript/RenderScript;Landroid/renderscript/Element;)Landroid/renderscript/ScriptIntrinsic3DLUT;" />
-		<method name="forEach(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;)V" />
-		<method name="forEach(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;Landroid/renderscript/Script$LaunchOptions;)V" since="21" />
-		<method name="getKernelID()Landroid/renderscript/Script$KernelID;" />
-		<method name="setLUT(Landroid/renderscript/Allocation;)V" />
-	</class>
-	<class name="android/renderscript/ScriptIntrinsicBlend" since="17">
-		<extends name="android/renderscript/ScriptIntrinsic" />
-		<method name="&lt;init>()V" />
-		<method name="create(Landroid/renderscript/RenderScript;Landroid/renderscript/Element;)Landroid/renderscript/ScriptIntrinsicBlend;" />
-		<method name="forEachAdd(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;)V" />
-		<method name="forEachAdd(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;Landroid/renderscript/Script$LaunchOptions;)V" since="21" />
-		<method name="forEachClear(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;)V" />
-		<method name="forEachClear(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;Landroid/renderscript/Script$LaunchOptions;)V" since="21" />
-		<method name="forEachDst(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;)V" />
-		<method name="forEachDst(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;Landroid/renderscript/Script$LaunchOptions;)V" since="21" />
-		<method name="forEachDstAtop(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;)V" />
-		<method name="forEachDstAtop(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;Landroid/renderscript/Script$LaunchOptions;)V" since="21" />
-		<method name="forEachDstIn(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;)V" />
-		<method name="forEachDstIn(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;Landroid/renderscript/Script$LaunchOptions;)V" since="21" />
-		<method name="forEachDstOut(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;)V" />
-		<method name="forEachDstOut(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;Landroid/renderscript/Script$LaunchOptions;)V" since="21" />
-		<method name="forEachDstOver(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;)V" />
-		<method name="forEachDstOver(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;Landroid/renderscript/Script$LaunchOptions;)V" since="21" />
-		<method name="forEachMultiply(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;)V" />
-		<method name="forEachMultiply(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;Landroid/renderscript/Script$LaunchOptions;)V" since="21" />
-		<method name="forEachSrc(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;)V" />
-		<method name="forEachSrc(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;Landroid/renderscript/Script$LaunchOptions;)V" since="21" />
-		<method name="forEachSrcAtop(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;)V" />
-		<method name="forEachSrcAtop(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;Landroid/renderscript/Script$LaunchOptions;)V" since="21" />
-		<method name="forEachSrcIn(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;)V" />
-		<method name="forEachSrcIn(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;Landroid/renderscript/Script$LaunchOptions;)V" since="21" />
-		<method name="forEachSrcOut(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;)V" />
-		<method name="forEachSrcOut(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;Landroid/renderscript/Script$LaunchOptions;)V" since="21" />
-		<method name="forEachSrcOver(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;)V" />
-		<method name="forEachSrcOver(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;Landroid/renderscript/Script$LaunchOptions;)V" since="21" />
-		<method name="forEachSubtract(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;)V" />
-		<method name="forEachSubtract(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;Landroid/renderscript/Script$LaunchOptions;)V" since="21" />
-		<method name="forEachXor(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;)V" />
-		<method name="forEachXor(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;Landroid/renderscript/Script$LaunchOptions;)V" since="21" />
-		<method name="getKernelIDAdd()Landroid/renderscript/Script$KernelID;" />
-		<method name="getKernelIDClear()Landroid/renderscript/Script$KernelID;" />
-		<method name="getKernelIDDst()Landroid/renderscript/Script$KernelID;" />
-		<method name="getKernelIDDstAtop()Landroid/renderscript/Script$KernelID;" />
-		<method name="getKernelIDDstIn()Landroid/renderscript/Script$KernelID;" />
-		<method name="getKernelIDDstOut()Landroid/renderscript/Script$KernelID;" />
-		<method name="getKernelIDDstOver()Landroid/renderscript/Script$KernelID;" />
-		<method name="getKernelIDMultiply()Landroid/renderscript/Script$KernelID;" />
-		<method name="getKernelIDSrc()Landroid/renderscript/Script$KernelID;" />
-		<method name="getKernelIDSrcAtop()Landroid/renderscript/Script$KernelID;" />
-		<method name="getKernelIDSrcIn()Landroid/renderscript/Script$KernelID;" />
-		<method name="getKernelIDSrcOut()Landroid/renderscript/Script$KernelID;" />
-		<method name="getKernelIDSrcOver()Landroid/renderscript/Script$KernelID;" />
-		<method name="getKernelIDSubtract()Landroid/renderscript/Script$KernelID;" />
-		<method name="getKernelIDXor()Landroid/renderscript/Script$KernelID;" />
-	</class>
-	<class name="android/renderscript/ScriptIntrinsicBlur" since="17">
-		<extends name="android/renderscript/ScriptIntrinsic" />
-		<method name="&lt;init>()V" />
-		<method name="create(Landroid/renderscript/RenderScript;Landroid/renderscript/Element;)Landroid/renderscript/ScriptIntrinsicBlur;" />
-		<method name="forEach(Landroid/renderscript/Allocation;)V" />
-		<method name="forEach(Landroid/renderscript/Allocation;Landroid/renderscript/Script$LaunchOptions;)V" since="21" />
-		<method name="getFieldID_Input()Landroid/renderscript/Script$FieldID;" />
-		<method name="getKernelID()Landroid/renderscript/Script$KernelID;" />
-		<method name="setInput(Landroid/renderscript/Allocation;)V" />
-		<method name="setRadius(F)V" />
-	</class>
-	<class name="android/renderscript/ScriptIntrinsicColorMatrix" since="17">
-		<extends name="android/renderscript/ScriptIntrinsic" />
-		<method name="&lt;init>()V" />
-		<method name="create(Landroid/renderscript/RenderScript;)Landroid/renderscript/ScriptIntrinsicColorMatrix;" since="19" />
-		<method name="create(Landroid/renderscript/RenderScript;Landroid/renderscript/Element;)Landroid/renderscript/ScriptIntrinsicColorMatrix;" />
-		<method name="forEach(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;)V" />
-		<method name="forEach(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;Landroid/renderscript/Script$LaunchOptions;)V" since="21" />
-		<method name="getKernelID()Landroid/renderscript/Script$KernelID;" />
-		<method name="setAdd(FFFF)V" since="19" />
-		<method name="setAdd(Landroid/renderscript/Float4;)V" since="19" />
-		<method name="setColorMatrix(Landroid/renderscript/Matrix3f;)V" />
-		<method name="setColorMatrix(Landroid/renderscript/Matrix4f;)V" />
-		<method name="setGreyscale()V" />
-		<method name="setRGBtoYUV()V" />
-		<method name="setYUVtoRGB()V" />
-	</class>
-	<class name="android/renderscript/ScriptIntrinsicConvolve3x3" since="17">
-		<extends name="android/renderscript/ScriptIntrinsic" />
-		<method name="&lt;init>()V" />
-		<method name="create(Landroid/renderscript/RenderScript;Landroid/renderscript/Element;)Landroid/renderscript/ScriptIntrinsicConvolve3x3;" />
-		<method name="forEach(Landroid/renderscript/Allocation;)V" />
-		<method name="forEach(Landroid/renderscript/Allocation;Landroid/renderscript/Script$LaunchOptions;)V" since="21" />
-		<method name="getFieldID_Input()Landroid/renderscript/Script$FieldID;" />
-		<method name="getKernelID()Landroid/renderscript/Script$KernelID;" />
-		<method name="setCoefficients([F)V" />
-		<method name="setInput(Landroid/renderscript/Allocation;)V" />
-	</class>
-	<class name="android/renderscript/ScriptIntrinsicConvolve5x5" since="17">
-		<extends name="android/renderscript/ScriptIntrinsic" />
-		<method name="&lt;init>()V" />
-		<method name="create(Landroid/renderscript/RenderScript;Landroid/renderscript/Element;)Landroid/renderscript/ScriptIntrinsicConvolve5x5;" />
-		<method name="forEach(Landroid/renderscript/Allocation;)V" />
-		<method name="forEach(Landroid/renderscript/Allocation;Landroid/renderscript/Script$LaunchOptions;)V" since="21" />
-		<method name="getFieldID_Input()Landroid/renderscript/Script$FieldID;" />
-		<method name="getKernelID()Landroid/renderscript/Script$KernelID;" />
-		<method name="setCoefficients([F)V" />
-		<method name="setInput(Landroid/renderscript/Allocation;)V" />
-	</class>
-	<class name="android/renderscript/ScriptIntrinsicHistogram" since="19">
-		<extends name="android/renderscript/ScriptIntrinsic" />
-		<method name="&lt;init>()V" />
-		<method name="create(Landroid/renderscript/RenderScript;Landroid/renderscript/Element;)Landroid/renderscript/ScriptIntrinsicHistogram;" />
-		<method name="forEach(Landroid/renderscript/Allocation;)V" />
-		<method name="forEach(Landroid/renderscript/Allocation;Landroid/renderscript/Script$LaunchOptions;)V" since="21" />
-		<method name="forEach_Dot(Landroid/renderscript/Allocation;)V" />
-		<method name="forEach_Dot(Landroid/renderscript/Allocation;Landroid/renderscript/Script$LaunchOptions;)V" since="21" />
-		<method name="getFieldID_Input()Landroid/renderscript/Script$FieldID;" />
-		<method name="getKernelID_Separate()Landroid/renderscript/Script$KernelID;" />
-		<method name="setDotCoefficients(FFFF)V" />
-		<method name="setOutput(Landroid/renderscript/Allocation;)V" />
-	</class>
-	<class name="android/renderscript/ScriptIntrinsicLUT" since="17">
-		<extends name="android/renderscript/ScriptIntrinsic" />
-		<method name="&lt;init>()V" />
-		<method name="create(Landroid/renderscript/RenderScript;Landroid/renderscript/Element;)Landroid/renderscript/ScriptIntrinsicLUT;" />
-		<method name="forEach(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;)V" />
-		<method name="forEach(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;Landroid/renderscript/Script$LaunchOptions;)V" since="21" />
-		<method name="getKernelID()Landroid/renderscript/Script$KernelID;" />
-		<method name="setAlpha(II)V" />
-		<method name="setBlue(II)V" />
-		<method name="setGreen(II)V" />
-		<method name="setRed(II)V" />
-	</class>
-	<class name="android/renderscript/ScriptIntrinsicResize" since="20">
-		<extends name="android/renderscript/ScriptIntrinsic" />
-		<method name="&lt;init>()V" />
-		<method name="create(Landroid/renderscript/RenderScript;)Landroid/renderscript/ScriptIntrinsicResize;" />
-		<method name="forEach_bicubic(Landroid/renderscript/Allocation;)V" />
-		<method name="forEach_bicubic(Landroid/renderscript/Allocation;Landroid/renderscript/Script$LaunchOptions;)V" />
-		<method name="getFieldID_Input()Landroid/renderscript/Script$FieldID;" />
-		<method name="getKernelID_bicubic()Landroid/renderscript/Script$KernelID;" />
-		<method name="setInput(Landroid/renderscript/Allocation;)V" />
-	</class>
-	<class name="android/renderscript/ScriptIntrinsicYuvToRGB" since="17">
-		<extends name="android/renderscript/ScriptIntrinsic" />
-		<method name="&lt;init>()V" />
-		<method name="create(Landroid/renderscript/RenderScript;Landroid/renderscript/Element;)Landroid/renderscript/ScriptIntrinsicYuvToRGB;" />
-		<method name="forEach(Landroid/renderscript/Allocation;)V" />
-		<method name="getFieldID_Input()Landroid/renderscript/Script$FieldID;" />
-		<method name="getKernelID()Landroid/renderscript/Script$KernelID;" />
-		<method name="setInput(Landroid/renderscript/Allocation;)V" />
-	</class>
-	<class name="android/renderscript/Short2" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(SS)V" since="14" />
-		<field name="x" />
-		<field name="y" />
-	</class>
-	<class name="android/renderscript/Short3" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(SSS)V" since="14" />
-		<field name="x" />
-		<field name="y" />
-		<field name="z" />
-	</class>
-	<class name="android/renderscript/Short4" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(SSSS)V" since="14" />
-		<field name="w" />
-		<field name="x" />
-		<field name="y" />
-		<field name="z" />
-	</class>
-	<class name="android/renderscript/Type" since="11">
-		<extends name="android/renderscript/BaseObj" />
-		<method name="&lt;init>()V" />
-		<method name="createX(Landroid/renderscript/RenderScript;Landroid/renderscript/Element;I)Landroid/renderscript/Type;" since="21" />
-		<method name="createXY(Landroid/renderscript/RenderScript;Landroid/renderscript/Element;II)Landroid/renderscript/Type;" since="21" />
-		<method name="createXYZ(Landroid/renderscript/RenderScript;Landroid/renderscript/Element;III)Landroid/renderscript/Type;" since="21" />
-		<method name="getCount()I" />
-		<method name="getElement()Landroid/renderscript/Element;" />
-		<method name="getX()I" />
-		<method name="getY()I" />
-		<method name="getYuv()I" since="18" />
-		<method name="getZ()I" />
-		<method name="hasFaces()Z" />
-		<method name="hasMipmaps()Z" />
-	</class>
-	<class name="android/renderscript/Type$Builder" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/renderscript/RenderScript;Landroid/renderscript/Element;)V" />
-		<method name="create()Landroid/renderscript/Type;" />
-		<method name="setFaces(Z)Landroid/renderscript/Type$Builder;" />
-		<method name="setMipmaps(Z)Landroid/renderscript/Type$Builder;" />
-		<method name="setX(I)Landroid/renderscript/Type$Builder;" />
-		<method name="setY(I)Landroid/renderscript/Type$Builder;" />
-		<method name="setYuvFormat(I)Landroid/renderscript/Type$Builder;" since="18" />
-		<method name="setZ(I)Landroid/renderscript/Type$Builder;" since="18" />
-	</class>
-	<class name="android/renderscript/Type$CubemapFace" since="11">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Landroid/renderscript/Type$CubemapFace;" />
-		<method name="values()[Landroid/renderscript/Type$CubemapFace;" />
-		<field name="NEGATIVE_X" />
-		<field name="NEGATIVE_Y" />
-		<field name="NEGATIVE_Z" />
-		<field name="POSITIVE_X" since="14" />
-		<field name="POSITIVE_Y" since="14" />
-		<field name="POSITIVE_Z" since="14" />
-		<field name="POSITVE_X" />
-		<field name="POSITVE_Y" />
-		<field name="POSITVE_Z" />
-	</class>
-	<class name="android/sax/Element" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getChild(Ljava/lang/String;)Landroid/sax/Element;" />
-		<method name="getChild(Ljava/lang/String;Ljava/lang/String;)Landroid/sax/Element;" />
-		<method name="requireChild(Ljava/lang/String;)Landroid/sax/Element;" />
-		<method name="requireChild(Ljava/lang/String;Ljava/lang/String;)Landroid/sax/Element;" />
-		<method name="setElementListener(Landroid/sax/ElementListener;)V" />
-		<method name="setEndElementListener(Landroid/sax/EndElementListener;)V" />
-		<method name="setEndTextElementListener(Landroid/sax/EndTextElementListener;)V" />
-		<method name="setStartElementListener(Landroid/sax/StartElementListener;)V" />
-		<method name="setTextElementListener(Landroid/sax/TextElementListener;)V" />
-	</class>
-	<class name="android/sax/ElementListener" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/sax/EndElementListener" />
-		<implements name="android/sax/StartElementListener" />
-	</class>
-	<class name="android/sax/EndElementListener" since="1">
-		<extends name="java/lang/Object" />
-		<method name="end()V" />
-	</class>
-	<class name="android/sax/EndTextElementListener" since="1">
-		<extends name="java/lang/Object" />
-		<method name="end(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/sax/RootElement" since="1">
-		<extends name="android/sax/Element" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="getContentHandler()Lorg/xml/sax/ContentHandler;" />
-	</class>
-	<class name="android/sax/StartElementListener" since="1">
-		<extends name="java/lang/Object" />
-		<method name="start(Lorg/xml/sax/Attributes;)V" />
-	</class>
-	<class name="android/sax/TextElementListener" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/sax/EndTextElementListener" />
-		<implements name="android/sax/StartElementListener" />
-	</class>
-	<class name="android/security/KeyChain" since="14">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="choosePrivateKeyAlias(Landroid/app/Activity;Landroid/security/KeyChainAliasCallback;[Ljava/lang/String;[Ljava/security/Principal;Ljava/lang/String;ILjava/lang/String;)V" />
-		<method name="createInstallIntent()Landroid/content/Intent;" />
-		<method name="getCertificateChain(Landroid/content/Context;Ljava/lang/String;)[Ljava/security/cert/X509Certificate;" />
-		<method name="getPrivateKey(Landroid/content/Context;Ljava/lang/String;)Ljava/security/PrivateKey;" />
-		<method name="isBoundKeyAlgorithm(Ljava/lang/String;)Z" since="18" />
-		<method name="isKeyAlgorithmSupported(Ljava/lang/String;)Z" since="18" />
-		<field name="ACTION_STORAGE_CHANGED" since="16" />
-		<field name="EXTRA_CERTIFICATE" />
-		<field name="EXTRA_NAME" />
-		<field name="EXTRA_PKCS12" />
-	</class>
-	<class name="android/security/KeyChainAliasCallback" since="14">
-		<extends name="java/lang/Object" />
-		<method name="alias(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/security/KeyChainException" since="14">
-		<extends name="java/lang/Exception" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="android/security/KeyPairGeneratorSpec" since="18">
-		<extends name="java/lang/Object" />
-		<implements name="java/security/spec/AlgorithmParameterSpec" />
-		<method name="&lt;init>()V" />
-		<method name="getAlgorithmParameterSpec()Ljava/security/spec/AlgorithmParameterSpec;" since="19" />
-		<method name="getContext()Landroid/content/Context;" />
-		<method name="getEndDate()Ljava/util/Date;" />
-		<method name="getKeySize()I" since="19" />
-		<method name="getKeyType()Ljava/lang/String;" since="19" />
-		<method name="getKeystoreAlias()Ljava/lang/String;" />
-		<method name="getSerialNumber()Ljava/math/BigInteger;" />
-		<method name="getStartDate()Ljava/util/Date;" />
-		<method name="getSubjectDN()Ljavax/security/auth/x500/X500Principal;" />
-		<method name="isEncryptionRequired()Z" />
-	</class>
-	<class name="android/security/KeyPairGeneratorSpec$Builder" since="18">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="build()Landroid/security/KeyPairGeneratorSpec;" />
-		<method name="setAlgorithmParameterSpec(Ljava/security/spec/AlgorithmParameterSpec;)Landroid/security/KeyPairGeneratorSpec$Builder;" since="19" />
-		<method name="setAlias(Ljava/lang/String;)Landroid/security/KeyPairGeneratorSpec$Builder;" />
-		<method name="setEncryptionRequired()Landroid/security/KeyPairGeneratorSpec$Builder;" />
-		<method name="setEndDate(Ljava/util/Date;)Landroid/security/KeyPairGeneratorSpec$Builder;" />
-		<method name="setKeySize(I)Landroid/security/KeyPairGeneratorSpec$Builder;" since="19" />
-		<method name="setKeyType(Ljava/lang/String;)Landroid/security/KeyPairGeneratorSpec$Builder;" since="19" />
-		<method name="setSerialNumber(Ljava/math/BigInteger;)Landroid/security/KeyPairGeneratorSpec$Builder;" />
-		<method name="setStartDate(Ljava/util/Date;)Landroid/security/KeyPairGeneratorSpec$Builder;" />
-		<method name="setSubject(Ljavax/security/auth/x500/X500Principal;)Landroid/security/KeyPairGeneratorSpec$Builder;" />
-	</class>
-	<class name="android/security/KeyStoreParameter" since="18">
-		<extends name="java/lang/Object" />
-		<implements name="java/security/KeyStore$ProtectionParameter" />
-		<method name="&lt;init>()V" />
-		<method name="isEncryptionRequired()Z" />
-	</class>
-	<class name="android/security/KeyStoreParameter$Builder" since="18">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="build()Landroid/security/KeyStoreParameter;" />
-		<method name="setEncryptionRequired(Z)Landroid/security/KeyStoreParameter$Builder;" />
-	</class>
-	<class name="android/service/dreams/DreamService" since="17">
-		<extends name="android/app/Service" />
-		<implements name="android/view/Window$Callback" />
-		<method name="&lt;init>()V" />
-		<method name="addContentView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V" />
-		<method name="findViewById(I)Landroid/view/View;" />
-		<method name="finish()V" />
-		<method name="getWindow()Landroid/view/Window;" />
-		<method name="getWindowManager()Landroid/view/WindowManager;" />
-		<method name="isFullscreen()Z" />
-		<method name="isInteractive()Z" />
-		<method name="isScreenBright()Z" />
-		<method name="onDreamingStarted()V" />
-		<method name="onDreamingStopped()V" />
-		<method name="setContentView(I)V" />
-		<method name="setContentView(Landroid/view/View;)V" />
-		<method name="setContentView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V" />
-		<method name="setFullscreen(Z)V" />
-		<method name="setInteractive(Z)V" />
-		<method name="setScreenBright(Z)V" />
-		<field name="DREAM_META_DATA" />
-		<field name="SERVICE_INTERFACE" />
-	</class>
-	<class name="android/service/notification/NotificationListenerService" since="18">
-		<extends name="android/app/Service" />
-		<method name="&lt;init>()V" />
-		<method name="cancelAllNotifications()V" />
-		<method name="cancelNotification(Ljava/lang/String;)V" since="21" />
-		<method name="cancelNotification(Ljava/lang/String;Ljava/lang/String;I)V" />
-		<method name="cancelNotifications([Ljava/lang/String;)V" since="21" />
-		<method name="getActiveNotifications()[Landroid/service/notification/StatusBarNotification;" />
-		<method name="getCurrentRanking()Landroid/service/notification/NotificationListenerService$RankingMap;" since="21" />
-		<method name="onListenerConnected()V" since="21" />
-		<method name="onNotificationPosted(Landroid/service/notification/StatusBarNotification;)V" />
-		<method name="onNotificationPosted(Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationListenerService$RankingMap;)V" since="21" />
-		<method name="onNotificationRankingUpdate(Landroid/service/notification/NotificationListenerService$RankingMap;)V" since="21" />
-		<method name="onNotificationRemoved(Landroid/service/notification/StatusBarNotification;)V" />
-		<method name="onNotificationRemoved(Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationListenerService$RankingMap;)V" since="21" />
-		<field name="SERVICE_INTERFACE" />
-	</class>
-	<class name="android/service/notification/NotificationListenerService$Ranking" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getKey()Ljava/lang/String;" />
-		<method name="getRank()I" />
-		<method name="isAmbient()Z" />
-		<method name="isInterceptedByDoNotDisturb()Z" />
-	</class>
-	<class name="android/service/notification/NotificationListenerService$RankingMap" since="21">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="getOrderedKeys()[Ljava/lang/String;" />
-		<method name="getRanking(Ljava/lang/String;)Landroid/service/notification/NotificationListenerService$Ranking;" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/service/notification/StatusBarNotification" since="18">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>(Landroid/os/Parcel;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;IIILandroid/app/Notification;Landroid/os/UserHandle;J)V" />
-		<method name="clone()Landroid/service/notification/StatusBarNotification;" />
-		<method name="getId()I" />
-		<method name="getKey()Ljava/lang/String;" since="20" />
-		<method name="getNotification()Landroid/app/Notification;" />
-		<method name="getPackageName()Ljava/lang/String;" />
-		<method name="getPostTime()J" />
-		<method name="getTag()Ljava/lang/String;" />
-		<method name="getUser()Landroid/os/UserHandle;" since="21" />
-		<method name="getUserId()I" />
-		<method name="isClearable()Z" />
-		<method name="isOngoing()Z" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/service/textservice/SpellCheckerService" since="14">
-		<extends name="android/app/Service" />
-		<method name="&lt;init>()V" />
-		<method name="createSession()Landroid/service/textservice/SpellCheckerService$Session;" />
-		<field name="SERVICE_INTERFACE" />
-	</class>
-	<class name="android/service/textservice/SpellCheckerService$Session" since="14">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getBundle()Landroid/os/Bundle;" />
-		<method name="getLocale()Ljava/lang/String;" />
-		<method name="onCancel()V" />
-		<method name="onClose()V" since="15" />
-		<method name="onCreate()V" />
-		<method name="onGetSentenceSuggestionsMultiple([Landroid/view/textservice/TextInfo;I)[Landroid/view/textservice/SentenceSuggestionsInfo;" since="16" />
-		<method name="onGetSuggestions(Landroid/view/textservice/TextInfo;I)Landroid/view/textservice/SuggestionsInfo;" />
-		<method name="onGetSuggestionsMultiple([Landroid/view/textservice/TextInfo;IZ)[Landroid/view/textservice/SuggestionsInfo;" />
-	</class>
-	<class name="android/service/voice/VoiceInteractionService" since="21">
-		<extends name="android/app/Service" />
-		<method name="&lt;init>()V" />
-		<method name="startSession(Landroid/os/Bundle;)V" />
-		<field name="SERVICE_INTERFACE" />
-		<field name="SERVICE_META_DATA" />
-	</class>
-	<class name="android/service/voice/VoiceInteractionSession" since="21">
-		<extends name="java/lang/Object" />
-		<implements name="android/view/KeyEvent$Callback" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/os/Handler;)V" />
-		<method name="finish()V" />
-		<method name="getLayoutInflater()Landroid/view/LayoutInflater;" />
-		<method name="getWindow()Landroid/app/Dialog;" />
-		<method name="hideWindow()V" />
-		<method name="onAbortVoice(Landroid/service/voice/VoiceInteractionSession$Caller;Landroid/service/voice/VoiceInteractionSession$Request;Ljava/lang/CharSequence;Landroid/os/Bundle;)V" />
-		<method name="onBackPressed()V" />
-		<method name="onCancel(Landroid/service/voice/VoiceInteractionSession$Request;)V" />
-		<method name="onCloseSystemDialogs()V" />
-		<method name="onCommand(Landroid/service/voice/VoiceInteractionSession$Caller;Landroid/service/voice/VoiceInteractionSession$Request;Ljava/lang/String;Landroid/os/Bundle;)V" />
-		<method name="onComputeInsets(Landroid/service/voice/VoiceInteractionSession$Insets;)V" />
-		<method name="onConfirm(Landroid/service/voice/VoiceInteractionSession$Caller;Landroid/service/voice/VoiceInteractionSession$Request;Ljava/lang/CharSequence;Landroid/os/Bundle;)V" />
-		<method name="onCreate(Landroid/os/Bundle;)V" />
-		<method name="onCreateContentView()Landroid/view/View;" />
-		<method name="onDestroy()V" />
-		<method name="onGetSupportedCommands(Landroid/service/voice/VoiceInteractionSession$Caller;[Ljava/lang/String;)[Z" />
-		<method name="onTaskFinished(Landroid/content/Intent;I)V" />
-		<method name="onTaskStarted(Landroid/content/Intent;I)V" />
-		<method name="setContentView(Landroid/view/View;)V" />
-		<method name="setTheme(I)V" />
-		<method name="showWindow()V" />
-		<method name="startVoiceActivity(Landroid/content/Intent;)V" />
-	</class>
-	<class name="android/service/voice/VoiceInteractionSession$Caller" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="android/service/voice/VoiceInteractionSession$Insets" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="TOUCHABLE_INSETS_CONTENT" />
-		<field name="TOUCHABLE_INSETS_FRAME" />
-		<field name="TOUCHABLE_INSETS_REGION" />
-		<field name="contentInsets" />
-		<field name="touchableInsets" />
-		<field name="touchableRegion" />
-	</class>
-	<class name="android/service/voice/VoiceInteractionSession$Request" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="sendAbortVoiceResult(Landroid/os/Bundle;)V" />
-		<method name="sendCancelResult()V" />
-		<method name="sendCommandResult(ZLandroid/os/Bundle;)V" />
-		<method name="sendConfirmResult(ZLandroid/os/Bundle;)V" />
-	</class>
-	<class name="android/service/voice/VoiceInteractionSessionService" since="21">
-		<extends name="android/app/Service" />
-		<method name="&lt;init>()V" />
-		<method name="onNewSession(Landroid/os/Bundle;)Landroid/service/voice/VoiceInteractionSession;" />
-	</class>
-	<class name="android/service/wallpaper/WallpaperService" since="7">
-		<extends name="android/app/Service" />
-		<method name="&lt;init>()V" />
-		<method name="onCreateEngine()Landroid/service/wallpaper/WallpaperService$Engine;" />
-		<field name="SERVICE_INTERFACE" />
-		<field name="SERVICE_META_DATA" />
-	</class>
-	<class name="android/service/wallpaper/WallpaperService$Engine" since="7">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/service/wallpaper/WallpaperService;)V" />
-		<method name="dump(Ljava/lang/String;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V" since="14" />
-		<method name="getDesiredMinimumHeight()I" />
-		<method name="getDesiredMinimumWidth()I" />
-		<method name="getSurfaceHolder()Landroid/view/SurfaceHolder;" />
-		<method name="isPreview()Z" />
-		<method name="isVisible()Z" />
-		<method name="onCommand(Ljava/lang/String;IIILandroid/os/Bundle;Z)Landroid/os/Bundle;" />
-		<method name="onCreate(Landroid/view/SurfaceHolder;)V" />
-		<method name="onDesiredSizeChanged(II)V" />
-		<method name="onDestroy()V" />
-		<method name="onOffsetsChanged(FFFFII)V" />
-		<method name="onSurfaceChanged(Landroid/view/SurfaceHolder;III)V" />
-		<method name="onSurfaceCreated(Landroid/view/SurfaceHolder;)V" />
-		<method name="onSurfaceDestroyed(Landroid/view/SurfaceHolder;)V" />
-		<method name="onSurfaceRedrawNeeded(Landroid/view/SurfaceHolder;)V" since="9" />
-		<method name="onTouchEvent(Landroid/view/MotionEvent;)V" />
-		<method name="onVisibilityChanged(Z)V" />
-		<method name="setOffsetNotificationsEnabled(Z)V" since="15" />
-		<method name="setTouchEventsEnabled(Z)V" />
-	</class>
-	<class name="android/speech/RecognitionListener" since="8">
-		<extends name="java/lang/Object" />
-		<method name="onBeginningOfSpeech()V" />
-		<method name="onBufferReceived([B)V" />
-		<method name="onEndOfSpeech()V" />
-		<method name="onError(I)V" />
-		<method name="onEvent(ILandroid/os/Bundle;)V" />
-		<method name="onPartialResults(Landroid/os/Bundle;)V" />
-		<method name="onReadyForSpeech(Landroid/os/Bundle;)V" />
-		<method name="onResults(Landroid/os/Bundle;)V" />
-		<method name="onRmsChanged(F)V" />
-	</class>
-	<class name="android/speech/RecognitionService" since="8">
-		<extends name="android/app/Service" />
-		<method name="&lt;init>()V" />
-		<method name="onCancel(Landroid/speech/RecognitionService$Callback;)V" />
-		<method name="onStartListening(Landroid/content/Intent;Landroid/speech/RecognitionService$Callback;)V" />
-		<method name="onStopListening(Landroid/speech/RecognitionService$Callback;)V" />
-		<field name="SERVICE_INTERFACE" />
-		<field name="SERVICE_META_DATA" />
-	</class>
-	<class name="android/speech/RecognitionService$Callback" since="8">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/speech/RecognitionService;)V" />
-		<method name="beginningOfSpeech()V" />
-		<method name="bufferReceived([B)V" />
-		<method name="endOfSpeech()V" />
-		<method name="error(I)V" />
-		<method name="partialResults(Landroid/os/Bundle;)V" />
-		<method name="readyForSpeech(Landroid/os/Bundle;)V" />
-		<method name="results(Landroid/os/Bundle;)V" />
-		<method name="rmsChanged(F)V" />
-	</class>
-	<class name="android/speech/RecognizerIntent" since="3">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getVoiceDetailsIntent(Landroid/content/Context;)Landroid/content/Intent;" since="8" />
-		<field name="ACTION_GET_LANGUAGE_DETAILS" since="8" />
-		<field name="ACTION_RECOGNIZE_SPEECH" />
-		<field name="ACTION_VOICE_SEARCH_HANDS_FREE" since="16" />
-		<field name="ACTION_WEB_SEARCH" />
-		<field name="DETAILS_META_DATA" since="8" />
-		<field name="EXTRA_CALLING_PACKAGE" since="8" />
-		<field name="EXTRA_CONFIDENCE_SCORES" since="14" />
-		<field name="EXTRA_LANGUAGE" />
-		<field name="EXTRA_LANGUAGE_MODEL" />
-		<field name="EXTRA_LANGUAGE_PREFERENCE" since="8" />
-		<field name="EXTRA_MAX_RESULTS" />
-		<field name="EXTRA_ONLY_RETURN_LANGUAGE_PREFERENCE" since="8" />
-		<field name="EXTRA_ORIGIN" since="14" />
-		<field name="EXTRA_PARTIAL_RESULTS" since="8" />
-		<field name="EXTRA_PROMPT" />
-		<field name="EXTRA_RESULTS" />
-		<field name="EXTRA_RESULTS_PENDINGINTENT" />
-		<field name="EXTRA_RESULTS_PENDINGINTENT_BUNDLE" />
-		<field name="EXTRA_SECURE" since="16" />
-		<field name="EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS" since="8" />
-		<field name="EXTRA_SPEECH_INPUT_MINIMUM_LENGTH_MILLIS" since="8" />
-		<field name="EXTRA_SPEECH_INPUT_POSSIBLY_COMPLETE_SILENCE_LENGTH_MILLIS" since="8" />
-		<field name="EXTRA_SUPPORTED_LANGUAGES" since="8" />
-		<field name="EXTRA_WEB_SEARCH_ONLY" since="11" />
-		<field name="LANGUAGE_MODEL_FREE_FORM" />
-		<field name="LANGUAGE_MODEL_WEB_SEARCH" />
-		<field name="RESULT_AUDIO_ERROR" />
-		<field name="RESULT_CLIENT_ERROR" />
-		<field name="RESULT_NETWORK_ERROR" />
-		<field name="RESULT_NO_MATCH" />
-		<field name="RESULT_SERVER_ERROR" />
-	</class>
-	<class name="android/speech/RecognizerResultsIntent" since="10">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="ACTION_VOICE_SEARCH_RESULTS" />
-		<field name="EXTRA_VOICE_SEARCH_RESULT_HTML" />
-		<field name="EXTRA_VOICE_SEARCH_RESULT_HTML_BASE_URLS" />
-		<field name="EXTRA_VOICE_SEARCH_RESULT_HTTP_HEADERS" />
-		<field name="EXTRA_VOICE_SEARCH_RESULT_STRINGS" />
-		<field name="EXTRA_VOICE_SEARCH_RESULT_URLS" />
-		<field name="URI_SCHEME_INLINE" />
-	</class>
-	<class name="android/speech/SpeechRecognizer" since="8">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="cancel()V" />
-		<method name="createSpeechRecognizer(Landroid/content/Context;)Landroid/speech/SpeechRecognizer;" />
-		<method name="createSpeechRecognizer(Landroid/content/Context;Landroid/content/ComponentName;)Landroid/speech/SpeechRecognizer;" />
-		<method name="destroy()V" />
-		<method name="isRecognitionAvailable(Landroid/content/Context;)Z" />
-		<method name="setRecognitionListener(Landroid/speech/RecognitionListener;)V" />
-		<method name="startListening(Landroid/content/Intent;)V" />
-		<method name="stopListening()V" />
-		<field name="CONFIDENCE_SCORES" since="14" />
-		<field name="ERROR_AUDIO" />
-		<field name="ERROR_CLIENT" />
-		<field name="ERROR_INSUFFICIENT_PERMISSIONS" />
-		<field name="ERROR_NETWORK" />
-		<field name="ERROR_NETWORK_TIMEOUT" />
-		<field name="ERROR_NO_MATCH" />
-		<field name="ERROR_RECOGNIZER_BUSY" />
-		<field name="ERROR_SERVER" />
-		<field name="ERROR_SPEECH_TIMEOUT" />
-		<field name="RESULTS_RECOGNITION" />
-	</class>
-	<class name="android/speech/tts/SynthesisCallback" since="14">
-		<extends name="java/lang/Object" />
-		<method name="audioAvailable([BII)I" />
-		<method name="done()I" />
-		<method name="error()V" />
-		<method name="getMaxBufferSize()I" />
-		<method name="start(III)I" />
-	</class>
-	<class name="android/speech/tts/SynthesisRequest" since="14">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/lang/String;Landroid/os/Bundle;)V" />
-		<method name="getCallerUid()I" since="19" />
-		<method name="getCountry()Ljava/lang/String;" />
-		<method name="getLanguage()Ljava/lang/String;" />
-		<method name="getParams()Landroid/os/Bundle;" />
-		<method name="getPitch()I" />
-		<method name="getSpeechRate()I" />
-		<method name="getText()Ljava/lang/String;" />
-		<method name="getVariant()Ljava/lang/String;" />
-	</class>
-	<class name="android/speech/tts/TextToSpeech" since="4">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/speech/tts/TextToSpeech$OnInitListener;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/speech/tts/TextToSpeech$OnInitListener;Ljava/lang/String;)V" since="14" />
-		<method name="addEarcon(Ljava/lang/String;Ljava/lang/String;)I" />
-		<method name="addEarcon(Ljava/lang/String;Ljava/lang/String;I)I" />
-		<method name="addSpeech(Ljava/lang/String;Ljava/lang/String;)I" />
-		<method name="addSpeech(Ljava/lang/String;Ljava/lang/String;I)I" />
-		<method name="areDefaultsEnforced()Z" since="8" />
-		<method name="getDefaultEngine()Ljava/lang/String;" since="8" />
-		<method name="getDefaultLanguage()Ljava/util/Locale;" since="18" />
-		<method name="getEngines()Ljava/util/List;" since="14" />
-		<method name="getFeatures(Ljava/util/Locale;)Ljava/util/Set;" since="15" />
-		<method name="getLanguage()Ljava/util/Locale;" />
-		<method name="getMaxSpeechInputLength()I" since="18" />
-		<method name="isLanguageAvailable(Ljava/util/Locale;)I" />
-		<method name="isSpeaking()Z" />
-		<method name="playEarcon(Ljava/lang/String;ILjava/util/HashMap;)I" />
-		<method name="playSilence(JILjava/util/HashMap;)I" />
-		<method name="setEngineByPackageName(Ljava/lang/String;)I" since="8" />
-		<method name="setLanguage(Ljava/util/Locale;)I" />
-		<method name="setOnUtteranceCompletedListener(Landroid/speech/tts/TextToSpeech$OnUtteranceCompletedListener;)I" />
-		<method name="setOnUtteranceProgressListener(Landroid/speech/tts/UtteranceProgressListener;)I" since="15" />
-		<method name="setPitch(F)I" />
-		<method name="setSpeechRate(F)I" />
-		<method name="shutdown()V" />
-		<method name="speak(Ljava/lang/String;ILjava/util/HashMap;)I" />
-		<method name="stop()I" />
-		<method name="synthesizeToFile(Ljava/lang/String;Ljava/util/HashMap;Ljava/lang/String;)I" />
-		<field name="ACTION_TTS_QUEUE_PROCESSING_COMPLETED" />
-		<field name="ERROR" />
-		<field name="LANG_AVAILABLE" />
-		<field name="LANG_COUNTRY_AVAILABLE" />
-		<field name="LANG_COUNTRY_VAR_AVAILABLE" />
-		<field name="LANG_MISSING_DATA" />
-		<field name="LANG_NOT_SUPPORTED" />
-		<field name="QUEUE_ADD" />
-		<field name="QUEUE_FLUSH" />
-		<field name="SUCCESS" />
-	</class>
-	<class name="android/speech/tts/TextToSpeech$Engine" since="4">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/speech/tts/TextToSpeech;)V" />
-		<field name="ACTION_CHECK_TTS_DATA" />
-		<field name="ACTION_GET_SAMPLE_TEXT" since="18" />
-		<field name="ACTION_INSTALL_TTS_DATA" />
-		<field name="ACTION_TTS_DATA_INSTALLED" />
-		<field name="CHECK_VOICE_DATA_BAD_DATA" />
-		<field name="CHECK_VOICE_DATA_FAIL" />
-		<field name="CHECK_VOICE_DATA_MISSING_DATA" />
-		<field name="CHECK_VOICE_DATA_MISSING_VOLUME" />
-		<field name="CHECK_VOICE_DATA_PASS" />
-		<field name="DEFAULT_STREAM" />
-		<field name="EXTRA_AVAILABLE_VOICES" since="8" />
-		<field name="EXTRA_CHECK_VOICE_DATA_FOR" since="8" />
-		<field name="EXTRA_SAMPLE_TEXT" since="18" />
-		<field name="EXTRA_TTS_DATA_INSTALLED" />
-		<field name="EXTRA_UNAVAILABLE_VOICES" since="8" />
-		<field name="EXTRA_VOICE_DATA_FILES" />
-		<field name="EXTRA_VOICE_DATA_FILES_INFO" />
-		<field name="EXTRA_VOICE_DATA_ROOT_DIRECTORY" />
-		<field name="INTENT_ACTION_TTS_SERVICE" since="14" />
-		<field name="KEY_FEATURE_EMBEDDED_SYNTHESIS" since="15" />
-		<field name="KEY_FEATURE_NETWORK_SYNTHESIS" since="15" />
-		<field name="KEY_PARAM_PAN" since="11" />
-		<field name="KEY_PARAM_STREAM" />
-		<field name="KEY_PARAM_UTTERANCE_ID" />
-		<field name="KEY_PARAM_VOLUME" since="11" />
-		<field name="SERVICE_META_DATA" since="14" />
-	</class>
-	<class name="android/speech/tts/TextToSpeech$EngineInfo" since="14">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="icon" />
-		<field name="label" />
-		<field name="name" />
-	</class>
-	<class name="android/speech/tts/TextToSpeech$OnInitListener" since="4">
-		<extends name="java/lang/Object" />
-		<method name="onInit(I)V" />
-	</class>
-	<class name="android/speech/tts/TextToSpeech$OnUtteranceCompletedListener" since="4">
-		<extends name="java/lang/Object" />
-		<method name="onUtteranceCompleted(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/speech/tts/TextToSpeechService" since="14">
-		<extends name="android/app/Service" />
-		<method name="&lt;init>()V" />
-		<method name="onGetFeaturesForLanguage(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/util/Set;" since="15" />
-		<method name="onGetLanguage()[Ljava/lang/String;" />
-		<method name="onIsLanguageAvailable(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I" />
-		<method name="onLoadLanguage(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I" />
-		<method name="onStop()V" />
-		<method name="onSynthesizeText(Landroid/speech/tts/SynthesisRequest;Landroid/speech/tts/SynthesisCallback;)V" />
-	</class>
-	<class name="android/speech/tts/UtteranceProgressListener" since="15">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="onDone(Ljava/lang/String;)V" />
-		<method name="onError(Ljava/lang/String;)V" />
-		<method name="onStart(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/system/ErrnoException" since="21">
-		<extends name="java/lang/Exception" />
-		<method name="&lt;init>(Ljava/lang/String;I)V" />
-		<method name="&lt;init>(Ljava/lang/String;ILjava/lang/Throwable;)V" />
-		<field name="errno" />
-	</class>
-	<class name="android/system/Os" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="accept(Ljava/io/FileDescriptor;Ljava/net/InetSocketAddress;)Ljava/io/FileDescriptor;" />
-		<method name="access(Ljava/lang/String;I)Z" />
-		<method name="bind(Ljava/io/FileDescriptor;Ljava/net/InetAddress;I)V" />
-		<method name="chmod(Ljava/lang/String;I)V" />
-		<method name="chown(Ljava/lang/String;II)V" />
-		<method name="close(Ljava/io/FileDescriptor;)V" />
-		<method name="connect(Ljava/io/FileDescriptor;Ljava/net/InetAddress;I)V" />
-		<method name="dup(Ljava/io/FileDescriptor;)Ljava/io/FileDescriptor;" />
-		<method name="dup2(Ljava/io/FileDescriptor;I)Ljava/io/FileDescriptor;" />
-		<method name="environ()[Ljava/lang/String;" />
-		<method name="execv(Ljava/lang/String;[Ljava/lang/String;)V" />
-		<method name="execve(Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;)V" />
-		<method name="fchmod(Ljava/io/FileDescriptor;I)V" />
-		<method name="fchown(Ljava/io/FileDescriptor;II)V" />
-		<method name="fdatasync(Ljava/io/FileDescriptor;)V" />
-		<method name="fstat(Ljava/io/FileDescriptor;)Landroid/system/StructStat;" />
-		<method name="fstatvfs(Ljava/io/FileDescriptor;)Landroid/system/StructStatVfs;" />
-		<method name="fsync(Ljava/io/FileDescriptor;)V" />
-		<method name="ftruncate(Ljava/io/FileDescriptor;J)V" />
-		<method name="gai_strerror(I)Ljava/lang/String;" />
-		<method name="getegid()I" />
-		<method name="getenv(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="geteuid()I" />
-		<method name="getgid()I" />
-		<method name="getpeername(Ljava/io/FileDescriptor;)Ljava/net/SocketAddress;" />
-		<method name="getpid()I" />
-		<method name="getppid()I" />
-		<method name="getsockname(Ljava/io/FileDescriptor;)Ljava/net/SocketAddress;" />
-		<method name="gettid()I" />
-		<method name="getuid()I" />
-		<method name="if_indextoname(I)Ljava/lang/String;" />
-		<method name="inet_pton(ILjava/lang/String;)Ljava/net/InetAddress;" />
-		<method name="isatty(Ljava/io/FileDescriptor;)Z" />
-		<method name="kill(II)V" />
-		<method name="lchown(Ljava/lang/String;II)V" />
-		<method name="link(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="listen(Ljava/io/FileDescriptor;I)V" />
-		<method name="lseek(Ljava/io/FileDescriptor;JI)J" />
-		<method name="lstat(Ljava/lang/String;)Landroid/system/StructStat;" />
-		<method name="mincore(JJ[B)V" />
-		<method name="mkdir(Ljava/lang/String;I)V" />
-		<method name="mkfifo(Ljava/lang/String;I)V" />
-		<method name="mlock(JJ)V" />
-		<method name="mmap(JJIILjava/io/FileDescriptor;J)J" />
-		<method name="msync(JJI)V" />
-		<method name="munlock(JJ)V" />
-		<method name="munmap(JJ)V" />
-		<method name="open(Ljava/lang/String;II)Ljava/io/FileDescriptor;" />
-		<method name="pipe()[Ljava/io/FileDescriptor;" />
-		<method name="poll([Landroid/system/StructPollfd;I)I" />
-		<method name="posix_fallocate(Ljava/io/FileDescriptor;JJ)V" />
-		<method name="prctl(IJJJJ)I" />
-		<method name="pread(Ljava/io/FileDescriptor;Ljava/nio/ByteBuffer;J)I" />
-		<method name="pread(Ljava/io/FileDescriptor;[BIIJ)I" />
-		<method name="pwrite(Ljava/io/FileDescriptor;Ljava/nio/ByteBuffer;J)I" />
-		<method name="pwrite(Ljava/io/FileDescriptor;[BIIJ)I" />
-		<method name="read(Ljava/io/FileDescriptor;Ljava/nio/ByteBuffer;)I" />
-		<method name="read(Ljava/io/FileDescriptor;[BII)I" />
-		<method name="readlink(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="readv(Ljava/io/FileDescriptor;[Ljava/lang/Object;[I[I)I" />
-		<method name="recvfrom(Ljava/io/FileDescriptor;Ljava/nio/ByteBuffer;ILjava/net/InetSocketAddress;)I" />
-		<method name="recvfrom(Ljava/io/FileDescriptor;[BIIILjava/net/InetSocketAddress;)I" />
-		<method name="remove(Ljava/lang/String;)V" />
-		<method name="rename(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="sendfile(Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;Landroid/util/MutableLong;J)J" />
-		<method name="sendto(Ljava/io/FileDescriptor;Ljava/nio/ByteBuffer;ILjava/net/InetAddress;I)I" />
-		<method name="sendto(Ljava/io/FileDescriptor;[BIIILjava/net/InetAddress;I)I" />
-		<method name="setegid(I)V" />
-		<method name="setenv(Ljava/lang/String;Ljava/lang/String;Z)V" />
-		<method name="seteuid(I)V" />
-		<method name="setgid(I)V" />
-		<method name="setsid()I" />
-		<method name="setuid(I)V" />
-		<method name="shutdown(Ljava/io/FileDescriptor;I)V" />
-		<method name="socket(III)Ljava/io/FileDescriptor;" />
-		<method name="socketpair(IIILjava/io/FileDescriptor;Ljava/io/FileDescriptor;)V" />
-		<method name="stat(Ljava/lang/String;)Landroid/system/StructStat;" />
-		<method name="statvfs(Ljava/lang/String;)Landroid/system/StructStatVfs;" />
-		<method name="strerror(I)Ljava/lang/String;" />
-		<method name="strsignal(I)Ljava/lang/String;" />
-		<method name="symlink(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="sysconf(I)J" />
-		<method name="tcdrain(Ljava/io/FileDescriptor;)V" />
-		<method name="tcsendbreak(Ljava/io/FileDescriptor;I)V" />
-		<method name="umask(I)I" />
-		<method name="uname()Landroid/system/StructUtsname;" />
-		<method name="unsetenv(Ljava/lang/String;)V" />
-		<method name="waitpid(ILandroid/util/MutableInt;I)I" />
-		<method name="write(Ljava/io/FileDescriptor;Ljava/nio/ByteBuffer;)I" />
-		<method name="write(Ljava/io/FileDescriptor;[BII)I" />
-		<method name="writev(Ljava/io/FileDescriptor;[Ljava/lang/Object;[I[I)I" />
-	</class>
-	<class name="android/system/OsConstants" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="S_ISBLK(I)Z" />
-		<method name="S_ISCHR(I)Z" />
-		<method name="S_ISDIR(I)Z" />
-		<method name="S_ISFIFO(I)Z" />
-		<method name="S_ISLNK(I)Z" />
-		<method name="S_ISREG(I)Z" />
-		<method name="S_ISSOCK(I)Z" />
-		<method name="WCOREDUMP(I)Z" />
-		<method name="WEXITSTATUS(I)I" />
-		<method name="WIFEXITED(I)Z" />
-		<method name="WIFSIGNALED(I)Z" />
-		<method name="WIFSTOPPED(I)Z" />
-		<method name="WSTOPSIG(I)I" />
-		<method name="WTERMSIG(I)I" />
-		<method name="errnoName(I)Ljava/lang/String;" />
-		<method name="gaiName(I)Ljava/lang/String;" />
-		<field name="AF_INET" />
-		<field name="AF_INET6" />
-		<field name="AF_UNIX" />
-		<field name="AF_UNSPEC" />
-		<field name="AI_ADDRCONFIG" />
-		<field name="AI_ALL" />
-		<field name="AI_CANONNAME" />
-		<field name="AI_NUMERICHOST" />
-		<field name="AI_NUMERICSERV" />
-		<field name="AI_PASSIVE" />
-		<field name="AI_V4MAPPED" />
-		<field name="CAP_AUDIT_CONTROL" />
-		<field name="CAP_AUDIT_WRITE" />
-		<field name="CAP_BLOCK_SUSPEND" />
-		<field name="CAP_CHOWN" />
-		<field name="CAP_DAC_OVERRIDE" />
-		<field name="CAP_DAC_READ_SEARCH" />
-		<field name="CAP_FOWNER" />
-		<field name="CAP_FSETID" />
-		<field name="CAP_IPC_LOCK" />
-		<field name="CAP_IPC_OWNER" />
-		<field name="CAP_KILL" />
-		<field name="CAP_LAST_CAP" />
-		<field name="CAP_LEASE" />
-		<field name="CAP_LINUX_IMMUTABLE" />
-		<field name="CAP_MAC_ADMIN" />
-		<field name="CAP_MAC_OVERRIDE" />
-		<field name="CAP_MKNOD" />
-		<field name="CAP_NET_ADMIN" />
-		<field name="CAP_NET_BIND_SERVICE" />
-		<field name="CAP_NET_BROADCAST" />
-		<field name="CAP_NET_RAW" />
-		<field name="CAP_SETFCAP" />
-		<field name="CAP_SETGID" />
-		<field name="CAP_SETPCAP" />
-		<field name="CAP_SETUID" />
-		<field name="CAP_SYSLOG" />
-		<field name="CAP_SYS_ADMIN" />
-		<field name="CAP_SYS_BOOT" />
-		<field name="CAP_SYS_CHROOT" />
-		<field name="CAP_SYS_MODULE" />
-		<field name="CAP_SYS_NICE" />
-		<field name="CAP_SYS_PACCT" />
-		<field name="CAP_SYS_PTRACE" />
-		<field name="CAP_SYS_RAWIO" />
-		<field name="CAP_SYS_RESOURCE" />
-		<field name="CAP_SYS_TIME" />
-		<field name="CAP_SYS_TTY_CONFIG" />
-		<field name="CAP_WAKE_ALARM" />
-		<field name="E2BIG" />
-		<field name="EACCES" />
-		<field name="EADDRINUSE" />
-		<field name="EADDRNOTAVAIL" />
-		<field name="EAFNOSUPPORT" />
-		<field name="EAGAIN" />
-		<field name="EAI_AGAIN" />
-		<field name="EAI_BADFLAGS" />
-		<field name="EAI_FAIL" />
-		<field name="EAI_FAMILY" />
-		<field name="EAI_MEMORY" />
-		<field name="EAI_NODATA" />
-		<field name="EAI_NONAME" />
-		<field name="EAI_OVERFLOW" />
-		<field name="EAI_SERVICE" />
-		<field name="EAI_SOCKTYPE" />
-		<field name="EAI_SYSTEM" />
-		<field name="EALREADY" />
-		<field name="EBADF" />
-		<field name="EBADMSG" />
-		<field name="EBUSY" />
-		<field name="ECANCELED" />
-		<field name="ECHILD" />
-		<field name="ECONNABORTED" />
-		<field name="ECONNREFUSED" />
-		<field name="ECONNRESET" />
-		<field name="EDEADLK" />
-		<field name="EDESTADDRREQ" />
-		<field name="EDOM" />
-		<field name="EDQUOT" />
-		<field name="EEXIST" />
-		<field name="EFAULT" />
-		<field name="EFBIG" />
-		<field name="EHOSTUNREACH" />
-		<field name="EIDRM" />
-		<field name="EILSEQ" />
-		<field name="EINPROGRESS" />
-		<field name="EINTR" />
-		<field name="EINVAL" />
-		<field name="EIO" />
-		<field name="EISCONN" />
-		<field name="EISDIR" />
-		<field name="ELOOP" />
-		<field name="EMFILE" />
-		<field name="EMLINK" />
-		<field name="EMSGSIZE" />
-		<field name="EMULTIHOP" />
-		<field name="ENAMETOOLONG" />
-		<field name="ENETDOWN" />
-		<field name="ENETRESET" />
-		<field name="ENETUNREACH" />
-		<field name="ENFILE" />
-		<field name="ENOBUFS" />
-		<field name="ENODATA" />
-		<field name="ENODEV" />
-		<field name="ENOENT" />
-		<field name="ENOEXEC" />
-		<field name="ENOLCK" />
-		<field name="ENOLINK" />
-		<field name="ENOMEM" />
-		<field name="ENOMSG" />
-		<field name="ENOPROTOOPT" />
-		<field name="ENOSPC" />
-		<field name="ENOSR" />
-		<field name="ENOSTR" />
-		<field name="ENOSYS" />
-		<field name="ENOTCONN" />
-		<field name="ENOTDIR" />
-		<field name="ENOTEMPTY" />
-		<field name="ENOTSOCK" />
-		<field name="ENOTSUP" />
-		<field name="ENOTTY" />
-		<field name="ENXIO" />
-		<field name="EOPNOTSUPP" />
-		<field name="EOVERFLOW" />
-		<field name="EPERM" />
-		<field name="EPIPE" />
-		<field name="EPROTO" />
-		<field name="EPROTONOSUPPORT" />
-		<field name="EPROTOTYPE" />
-		<field name="ERANGE" />
-		<field name="EROFS" />
-		<field name="ESPIPE" />
-		<field name="ESRCH" />
-		<field name="ESTALE" />
-		<field name="ETIME" />
-		<field name="ETIMEDOUT" />
-		<field name="ETXTBSY" />
-		<field name="EXDEV" />
-		<field name="EXIT_FAILURE" />
-		<field name="EXIT_SUCCESS" />
-		<field name="FD_CLOEXEC" />
-		<field name="FIONREAD" />
-		<field name="F_DUPFD" />
-		<field name="F_GETFD" />
-		<field name="F_GETFL" />
-		<field name="F_GETLK" />
-		<field name="F_GETLK64" />
-		<field name="F_GETOWN" />
-		<field name="F_OK" />
-		<field name="F_RDLCK" />
-		<field name="F_SETFD" />
-		<field name="F_SETFL" />
-		<field name="F_SETLK" />
-		<field name="F_SETLK64" />
-		<field name="F_SETLKW" />
-		<field name="F_SETLKW64" />
-		<field name="F_SETOWN" />
-		<field name="F_UNLCK" />
-		<field name="F_WRLCK" />
-		<field name="IFA_F_DADFAILED" />
-		<field name="IFA_F_DEPRECATED" />
-		<field name="IFA_F_HOMEADDRESS" />
-		<field name="IFA_F_NODAD" />
-		<field name="IFA_F_OPTIMISTIC" />
-		<field name="IFA_F_PERMANENT" />
-		<field name="IFA_F_SECONDARY" />
-		<field name="IFA_F_TEMPORARY" />
-		<field name="IFA_F_TENTATIVE" />
-		<field name="IFF_ALLMULTI" />
-		<field name="IFF_AUTOMEDIA" />
-		<field name="IFF_BROADCAST" />
-		<field name="IFF_DEBUG" />
-		<field name="IFF_DYNAMIC" />
-		<field name="IFF_LOOPBACK" />
-		<field name="IFF_MASTER" />
-		<field name="IFF_MULTICAST" />
-		<field name="IFF_NOARP" />
-		<field name="IFF_NOTRAILERS" />
-		<field name="IFF_POINTOPOINT" />
-		<field name="IFF_PORTSEL" />
-		<field name="IFF_PROMISC" />
-		<field name="IFF_RUNNING" />
-		<field name="IFF_SLAVE" />
-		<field name="IFF_UP" />
-		<field name="IPPROTO_ICMP" />
-		<field name="IPPROTO_ICMPV6" />
-		<field name="IPPROTO_IP" />
-		<field name="IPPROTO_IPV6" />
-		<field name="IPPROTO_RAW" />
-		<field name="IPPROTO_TCP" />
-		<field name="IPPROTO_UDP" />
-		<field name="IPV6_CHECKSUM" />
-		<field name="IPV6_MULTICAST_HOPS" />
-		<field name="IPV6_MULTICAST_IF" />
-		<field name="IPV6_MULTICAST_LOOP" />
-		<field name="IPV6_RECVDSTOPTS" />
-		<field name="IPV6_RECVHOPLIMIT" />
-		<field name="IPV6_RECVHOPOPTS" />
-		<field name="IPV6_RECVPKTINFO" />
-		<field name="IPV6_RECVRTHDR" />
-		<field name="IPV6_RECVTCLASS" />
-		<field name="IPV6_TCLASS" />
-		<field name="IPV6_UNICAST_HOPS" />
-		<field name="IPV6_V6ONLY" />
-		<field name="IP_MULTICAST_IF" />
-		<field name="IP_MULTICAST_LOOP" />
-		<field name="IP_MULTICAST_TTL" />
-		<field name="IP_TOS" />
-		<field name="IP_TTL" />
-		<field name="MAP_FIXED" />
-		<field name="MAP_PRIVATE" />
-		<field name="MAP_SHARED" />
-		<field name="MCAST_BLOCK_SOURCE" />
-		<field name="MCAST_JOIN_GROUP" />
-		<field name="MCAST_JOIN_SOURCE_GROUP" />
-		<field name="MCAST_LEAVE_GROUP" />
-		<field name="MCAST_LEAVE_SOURCE_GROUP" />
-		<field name="MCAST_UNBLOCK_SOURCE" />
-		<field name="MCL_CURRENT" />
-		<field name="MCL_FUTURE" />
-		<field name="MSG_CTRUNC" />
-		<field name="MSG_DONTROUTE" />
-		<field name="MSG_EOR" />
-		<field name="MSG_OOB" />
-		<field name="MSG_PEEK" />
-		<field name="MSG_TRUNC" />
-		<field name="MSG_WAITALL" />
-		<field name="MS_ASYNC" />
-		<field name="MS_INVALIDATE" />
-		<field name="MS_SYNC" />
-		<field name="NI_DGRAM" />
-		<field name="NI_NAMEREQD" />
-		<field name="NI_NOFQDN" />
-		<field name="NI_NUMERICHOST" />
-		<field name="NI_NUMERICSERV" />
-		<field name="O_ACCMODE" />
-		<field name="O_APPEND" />
-		<field name="O_CREAT" />
-		<field name="O_EXCL" />
-		<field name="O_NOCTTY" />
-		<field name="O_NOFOLLOW" />
-		<field name="O_NONBLOCK" />
-		<field name="O_RDONLY" />
-		<field name="O_RDWR" />
-		<field name="O_SYNC" />
-		<field name="O_TRUNC" />
-		<field name="O_WRONLY" />
-		<field name="POLLERR" />
-		<field name="POLLHUP" />
-		<field name="POLLIN" />
-		<field name="POLLNVAL" />
-		<field name="POLLOUT" />
-		<field name="POLLPRI" />
-		<field name="POLLRDBAND" />
-		<field name="POLLRDNORM" />
-		<field name="POLLWRBAND" />
-		<field name="POLLWRNORM" />
-		<field name="PROT_EXEC" />
-		<field name="PROT_NONE" />
-		<field name="PROT_READ" />
-		<field name="PROT_WRITE" />
-		<field name="PR_SET_NO_NEW_PRIVS" />
-		<field name="RT_SCOPE_HOST" />
-		<field name="RT_SCOPE_LINK" />
-		<field name="RT_SCOPE_NOWHERE" />
-		<field name="RT_SCOPE_SITE" />
-		<field name="RT_SCOPE_UNIVERSE" />
-		<field name="R_OK" />
-		<field name="SEEK_CUR" />
-		<field name="SEEK_END" />
-		<field name="SEEK_SET" />
-		<field name="SHUT_RD" />
-		<field name="SHUT_RDWR" />
-		<field name="SHUT_WR" />
-		<field name="SIGABRT" />
-		<field name="SIGALRM" />
-		<field name="SIGBUS" />
-		<field name="SIGCHLD" />
-		<field name="SIGCONT" />
-		<field name="SIGFPE" />
-		<field name="SIGHUP" />
-		<field name="SIGILL" />
-		<field name="SIGINT" />
-		<field name="SIGIO" />
-		<field name="SIGKILL" />
-		<field name="SIGPIPE" />
-		<field name="SIGPROF" />
-		<field name="SIGPWR" />
-		<field name="SIGQUIT" />
-		<field name="SIGRTMAX" />
-		<field name="SIGRTMIN" />
-		<field name="SIGSEGV" />
-		<field name="SIGSTKFLT" />
-		<field name="SIGSTOP" />
-		<field name="SIGSYS" />
-		<field name="SIGTERM" />
-		<field name="SIGTRAP" />
-		<field name="SIGTSTP" />
-		<field name="SIGTTIN" />
-		<field name="SIGTTOU" />
-		<field name="SIGURG" />
-		<field name="SIGUSR1" />
-		<field name="SIGUSR2" />
-		<field name="SIGVTALRM" />
-		<field name="SIGWINCH" />
-		<field name="SIGXCPU" />
-		<field name="SIGXFSZ" />
-		<field name="SIOCGIFADDR" />
-		<field name="SIOCGIFBRDADDR" />
-		<field name="SIOCGIFDSTADDR" />
-		<field name="SIOCGIFNETMASK" />
-		<field name="SOCK_DGRAM" />
-		<field name="SOCK_RAW" />
-		<field name="SOCK_SEQPACKET" />
-		<field name="SOCK_STREAM" />
-		<field name="SOL_SOCKET" />
-		<field name="SO_BINDTODEVICE" />
-		<field name="SO_BROADCAST" />
-		<field name="SO_DEBUG" />
-		<field name="SO_DONTROUTE" />
-		<field name="SO_ERROR" />
-		<field name="SO_KEEPALIVE" />
-		<field name="SO_LINGER" />
-		<field name="SO_OOBINLINE" />
-		<field name="SO_PASSCRED" />
-		<field name="SO_PEERCRED" />
-		<field name="SO_RCVBUF" />
-		<field name="SO_RCVLOWAT" />
-		<field name="SO_RCVTIMEO" />
-		<field name="SO_REUSEADDR" />
-		<field name="SO_SNDBUF" />
-		<field name="SO_SNDLOWAT" />
-		<field name="SO_SNDTIMEO" />
-		<field name="SO_TYPE" />
-		<field name="STDERR_FILENO" />
-		<field name="STDIN_FILENO" />
-		<field name="STDOUT_FILENO" />
-		<field name="S_IFBLK" />
-		<field name="S_IFCHR" />
-		<field name="S_IFDIR" />
-		<field name="S_IFIFO" />
-		<field name="S_IFLNK" />
-		<field name="S_IFMT" />
-		<field name="S_IFREG" />
-		<field name="S_IFSOCK" />
-		<field name="S_IRGRP" />
-		<field name="S_IROTH" />
-		<field name="S_IRUSR" />
-		<field name="S_IRWXG" />
-		<field name="S_IRWXO" />
-		<field name="S_IRWXU" />
-		<field name="S_ISGID" />
-		<field name="S_ISUID" />
-		<field name="S_ISVTX" />
-		<field name="S_IWGRP" />
-		<field name="S_IWOTH" />
-		<field name="S_IWUSR" />
-		<field name="S_IXGRP" />
-		<field name="S_IXOTH" />
-		<field name="S_IXUSR" />
-		<field name="TCP_NODELAY" />
-		<field name="WCONTINUED" />
-		<field name="WEXITED" />
-		<field name="WNOHANG" />
-		<field name="WNOWAIT" />
-		<field name="WSTOPPED" />
-		<field name="WUNTRACED" />
-		<field name="W_OK" />
-		<field name="X_OK" />
-		<field name="_SC_2_CHAR_TERM" />
-		<field name="_SC_2_C_BIND" />
-		<field name="_SC_2_C_DEV" />
-		<field name="_SC_2_C_VERSION" />
-		<field name="_SC_2_FORT_DEV" />
-		<field name="_SC_2_FORT_RUN" />
-		<field name="_SC_2_LOCALEDEF" />
-		<field name="_SC_2_SW_DEV" />
-		<field name="_SC_2_UPE" />
-		<field name="_SC_2_VERSION" />
-		<field name="_SC_AIO_LISTIO_MAX" />
-		<field name="_SC_AIO_MAX" />
-		<field name="_SC_AIO_PRIO_DELTA_MAX" />
-		<field name="_SC_ARG_MAX" />
-		<field name="_SC_ASYNCHRONOUS_IO" />
-		<field name="_SC_ATEXIT_MAX" />
-		<field name="_SC_AVPHYS_PAGES" />
-		<field name="_SC_BC_BASE_MAX" />
-		<field name="_SC_BC_DIM_MAX" />
-		<field name="_SC_BC_SCALE_MAX" />
-		<field name="_SC_BC_STRING_MAX" />
-		<field name="_SC_CHILD_MAX" />
-		<field name="_SC_CLK_TCK" />
-		<field name="_SC_COLL_WEIGHTS_MAX" />
-		<field name="_SC_DELAYTIMER_MAX" />
-		<field name="_SC_EXPR_NEST_MAX" />
-		<field name="_SC_FSYNC" />
-		<field name="_SC_GETGR_R_SIZE_MAX" />
-		<field name="_SC_GETPW_R_SIZE_MAX" />
-		<field name="_SC_IOV_MAX" />
-		<field name="_SC_JOB_CONTROL" />
-		<field name="_SC_LINE_MAX" />
-		<field name="_SC_LOGIN_NAME_MAX" />
-		<field name="_SC_MAPPED_FILES" />
-		<field name="_SC_MEMLOCK" />
-		<field name="_SC_MEMLOCK_RANGE" />
-		<field name="_SC_MEMORY_PROTECTION" />
-		<field name="_SC_MESSAGE_PASSING" />
-		<field name="_SC_MQ_OPEN_MAX" />
-		<field name="_SC_MQ_PRIO_MAX" />
-		<field name="_SC_NGROUPS_MAX" />
-		<field name="_SC_NPROCESSORS_CONF" />
-		<field name="_SC_NPROCESSORS_ONLN" />
-		<field name="_SC_OPEN_MAX" />
-		<field name="_SC_PAGESIZE" />
-		<field name="_SC_PAGE_SIZE" />
-		<field name="_SC_PASS_MAX" />
-		<field name="_SC_PHYS_PAGES" />
-		<field name="_SC_PRIORITIZED_IO" />
-		<field name="_SC_PRIORITY_SCHEDULING" />
-		<field name="_SC_REALTIME_SIGNALS" />
-		<field name="_SC_RE_DUP_MAX" />
-		<field name="_SC_RTSIG_MAX" />
-		<field name="_SC_SAVED_IDS" />
-		<field name="_SC_SEMAPHORES" />
-		<field name="_SC_SEM_NSEMS_MAX" />
-		<field name="_SC_SEM_VALUE_MAX" />
-		<field name="_SC_SHARED_MEMORY_OBJECTS" />
-		<field name="_SC_SIGQUEUE_MAX" />
-		<field name="_SC_STREAM_MAX" />
-		<field name="_SC_SYNCHRONIZED_IO" />
-		<field name="_SC_THREADS" />
-		<field name="_SC_THREAD_ATTR_STACKADDR" />
-		<field name="_SC_THREAD_ATTR_STACKSIZE" />
-		<field name="_SC_THREAD_DESTRUCTOR_ITERATIONS" />
-		<field name="_SC_THREAD_KEYS_MAX" />
-		<field name="_SC_THREAD_PRIORITY_SCHEDULING" />
-		<field name="_SC_THREAD_PRIO_INHERIT" />
-		<field name="_SC_THREAD_PRIO_PROTECT" />
-		<field name="_SC_THREAD_SAFE_FUNCTIONS" />
-		<field name="_SC_THREAD_STACK_MIN" />
-		<field name="_SC_THREAD_THREADS_MAX" />
-		<field name="_SC_TIMERS" />
-		<field name="_SC_TIMER_MAX" />
-		<field name="_SC_TTY_NAME_MAX" />
-		<field name="_SC_TZNAME_MAX" />
-		<field name="_SC_VERSION" />
-		<field name="_SC_XBS5_ILP32_OFF32" />
-		<field name="_SC_XBS5_ILP32_OFFBIG" />
-		<field name="_SC_XBS5_LP64_OFF64" />
-		<field name="_SC_XBS5_LPBIG_OFFBIG" />
-		<field name="_SC_XOPEN_CRYPT" />
-		<field name="_SC_XOPEN_ENH_I18N" />
-		<field name="_SC_XOPEN_LEGACY" />
-		<field name="_SC_XOPEN_REALTIME" />
-		<field name="_SC_XOPEN_REALTIME_THREADS" />
-		<field name="_SC_XOPEN_SHM" />
-		<field name="_SC_XOPEN_UNIX" />
-		<field name="_SC_XOPEN_VERSION" />
-		<field name="_SC_XOPEN_XCU_VERSION" />
-	</class>
-	<class name="android/system/StructPollfd" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="events" />
-		<field name="fd" />
-		<field name="revents" />
-		<field name="userData" />
-	</class>
-	<class name="android/system/StructStat" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(JJIJIIJJJJJJJ)V" />
-		<field name="st_atime" />
-		<field name="st_blksize" />
-		<field name="st_blocks" />
-		<field name="st_ctime" />
-		<field name="st_dev" />
-		<field name="st_gid" />
-		<field name="st_ino" />
-		<field name="st_mode" />
-		<field name="st_mtime" />
-		<field name="st_nlink" />
-		<field name="st_rdev" />
-		<field name="st_size" />
-		<field name="st_uid" />
-	</class>
-	<class name="android/system/StructStatVfs" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(JJJJJJJJJJJ)V" />
-		<field name="f_bavail" />
-		<field name="f_bfree" />
-		<field name="f_blocks" />
-		<field name="f_bsize" />
-		<field name="f_favail" />
-		<field name="f_ffree" />
-		<field name="f_files" />
-		<field name="f_flag" />
-		<field name="f_frsize" />
-		<field name="f_fsid" />
-		<field name="f_namemax" />
-	</class>
-	<class name="android/system/StructUtsname" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
-		<field name="machine" />
-		<field name="nodename" />
-		<field name="release" />
-		<field name="sysname" />
-		<field name="version" />
-	</class>
-	<class name="android/telephony/CellIdentityCdma" since="17">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="getBasestationId()I" />
-		<method name="getLatitude()I" />
-		<method name="getLongitude()I" />
-		<method name="getNetworkId()I" />
-		<method name="getSystemId()I" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/telephony/CellIdentityGsm" since="17">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="getCid()I" />
-		<method name="getLac()I" />
-		<method name="getMcc()I" />
-		<method name="getMnc()I" />
-		<method name="getPsc()I" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/telephony/CellIdentityLte" since="17">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="getCi()I" />
-		<method name="getMcc()I" />
-		<method name="getMnc()I" />
-		<method name="getPci()I" />
-		<method name="getTac()I" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/telephony/CellIdentityWcdma" since="18">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="getCid()I" />
-		<method name="getLac()I" />
-		<method name="getMcc()I" />
-		<method name="getMnc()I" />
-		<method name="getPsc()I" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/telephony/CellInfo" since="17">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="getTimeStamp()J" />
-		<method name="isRegistered()Z" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/telephony/CellInfoCdma" since="17">
-		<extends name="android/telephony/CellInfo" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="getCellIdentity()Landroid/telephony/CellIdentityCdma;" />
-		<method name="getCellSignalStrength()Landroid/telephony/CellSignalStrengthCdma;" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/telephony/CellInfoGsm" since="17">
-		<extends name="android/telephony/CellInfo" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="getCellIdentity()Landroid/telephony/CellIdentityGsm;" />
-		<method name="getCellSignalStrength()Landroid/telephony/CellSignalStrengthGsm;" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/telephony/CellInfoLte" since="17">
-		<extends name="android/telephony/CellInfo" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="getCellIdentity()Landroid/telephony/CellIdentityLte;" />
-		<method name="getCellSignalStrength()Landroid/telephony/CellSignalStrengthLte;" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/telephony/CellInfoWcdma" since="18">
-		<extends name="android/telephony/CellInfo" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="getCellIdentity()Landroid/telephony/CellIdentityWcdma;" />
-		<method name="getCellSignalStrength()Landroid/telephony/CellSignalStrengthWcdma;" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/telephony/CellLocation" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getEmpty()Landroid/telephony/CellLocation;" />
-		<method name="requestLocationUpdate()V" />
-	</class>
-	<class name="android/telephony/CellSignalStrength" since="17">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getAsuLevel()I" />
-		<method name="getDbm()I" />
-		<method name="getLevel()I" />
-	</class>
-	<class name="android/telephony/CellSignalStrengthCdma" since="17">
-		<extends name="android/telephony/CellSignalStrength" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="getCdmaDbm()I" />
-		<method name="getCdmaEcio()I" />
-		<method name="getCdmaLevel()I" />
-		<method name="getEvdoDbm()I" />
-		<method name="getEvdoEcio()I" />
-		<method name="getEvdoLevel()I" />
-		<method name="getEvdoSnr()I" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/telephony/CellSignalStrengthGsm" since="17">
-		<extends name="android/telephony/CellSignalStrength" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/telephony/CellSignalStrengthLte" since="17">
-		<extends name="android/telephony/CellSignalStrength" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="getTimingAdvance()I" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/telephony/CellSignalStrengthWcdma" since="18">
-		<extends name="android/telephony/CellSignalStrength" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/telephony/NeighboringCellInfo" since="3">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(II)V" />
-		<method name="&lt;init>(ILjava/lang/String;I)V" since="7" />
-		<method name="&lt;init>(Landroid/os/Parcel;)V" />
-		<method name="getCid()I" />
-		<method name="getLac()I" since="5" />
-		<method name="getNetworkType()I" since="5" />
-		<method name="getPsc()I" since="5" />
-		<method name="getRssi()I" />
-		<method name="setCid(I)V" />
-		<method name="setRssi(I)V" />
-		<field name="CREATOR" />
-		<field name="UNKNOWN_CID" />
-		<field name="UNKNOWN_RSSI" />
-	</class>
-	<class name="android/telephony/PhoneNumberFormattingTextWatcher" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/text/TextWatcher" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" since="21" />
-	</class>
-	<class name="android/telephony/PhoneNumberUtils" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="calledPartyBCDFragmentToString([BII)Ljava/lang/String;" />
-		<method name="calledPartyBCDToString([BII)Ljava/lang/String;" />
-		<method name="compare(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;)Z" since="5" />
-		<method name="compare(Ljava/lang/String;Ljava/lang/String;)Z" />
-		<method name="convertKeypadLettersToDigits(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="extractNetworkPortion(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="extractPostDialPortion(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="formatJapaneseNumber(Landroid/text/Editable;)V" since="3" />
-		<method name="formatNanpNumber(Landroid/text/Editable;)V" />
-		<method name="formatNumber(Landroid/text/Editable;I)V" />
-		<method name="formatNumber(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="formatNumber(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" since="21" />
-		<method name="formatNumber(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" since="21" />
-		<method name="formatNumberToE164(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" since="21" />
-		<method name="getFormatTypeForLocale(Ljava/util/Locale;)I" />
-		<method name="getNumberFromIntent(Landroid/content/Intent;Landroid/content/Context;)Ljava/lang/String;" />
-		<method name="getStrippedReversed(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="is12Key(C)Z" />
-		<method name="isDialable(C)Z" />
-		<method name="isEmergencyNumber(Ljava/lang/String;)Z" />
-		<method name="isGlobalPhoneNumber(Ljava/lang/String;)Z" />
-		<method name="isISODigit(C)Z" />
-		<method name="isLocalEmergencyNumber(Landroid/content/Context;Ljava/lang/String;)Z" since="21" />
-		<method name="isNonSeparator(C)Z" />
-		<method name="isReallyDialable(C)Z" />
-		<method name="isStartsPostDial(C)Z" />
-		<method name="isVoiceMailNumber(Ljava/lang/String;)Z" since="21" />
-		<method name="isWellFormedSmsAddress(Ljava/lang/String;)Z" />
-		<method name="networkPortionToCalledPartyBCD(Ljava/lang/String;)[B" />
-		<method name="networkPortionToCalledPartyBCDWithLength(Ljava/lang/String;)[B" />
-		<method name="normalizeNumber(Ljava/lang/String;)Ljava/lang/String;" since="21" />
-		<method name="numberToCalledPartyBCD(Ljava/lang/String;)[B" />
-		<method name="replaceUnicodeDigits(Ljava/lang/String;)Ljava/lang/String;" since="21" />
-		<method name="stringFromStringAndTOA(Ljava/lang/String;I)Ljava/lang/String;" />
-		<method name="stripSeparators(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="toCallerIDMinMatch(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="toaFromString(Ljava/lang/String;)I" />
-		<field name="FORMAT_JAPAN" since="3" />
-		<field name="FORMAT_NANP" />
-		<field name="FORMAT_UNKNOWN" />
-		<field name="PAUSE" />
-		<field name="TOA_International" />
-		<field name="TOA_Unknown" />
-		<field name="WAIT" />
-		<field name="WILD" />
-	</class>
-	<class name="android/telephony/PhoneStateListener" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="onCallForwardingIndicatorChanged(Z)V" />
-		<method name="onCallStateChanged(ILjava/lang/String;)V" />
-		<method name="onCellInfoChanged(Ljava/util/List;)V" since="17" />
-		<method name="onCellLocationChanged(Landroid/telephony/CellLocation;)V" />
-		<method name="onDataActivity(I)V" />
-		<method name="onDataConnectionStateChanged(I)V" />
-		<method name="onDataConnectionStateChanged(II)V" since="7" />
-		<method name="onMessageWaitingIndicatorChanged(Z)V" />
-		<method name="onServiceStateChanged(Landroid/telephony/ServiceState;)V" />
-		<method name="onSignalStrengthChanged(I)V" />
-		<method name="onSignalStrengthsChanged(Landroid/telephony/SignalStrength;)V" since="7" />
-		<field name="LISTEN_CALL_FORWARDING_INDICATOR" />
-		<field name="LISTEN_CALL_STATE" />
-		<field name="LISTEN_CELL_INFO" since="17" />
-		<field name="LISTEN_CELL_LOCATION" />
-		<field name="LISTEN_DATA_ACTIVITY" />
-		<field name="LISTEN_DATA_CONNECTION_STATE" />
-		<field name="LISTEN_MESSAGE_WAITING_INDICATOR" />
-		<field name="LISTEN_NONE" />
-		<field name="LISTEN_SERVICE_STATE" />
-		<field name="LISTEN_SIGNAL_STRENGTH" />
-		<field name="LISTEN_SIGNAL_STRENGTHS" since="7" />
-	</class>
-	<class name="android/telephony/ServiceState" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/os/Parcel;)V" />
-		<method name="&lt;init>(Landroid/telephony/ServiceState;)V" />
-		<method name="copyFrom(Landroid/telephony/ServiceState;)V" />
-		<method name="getIsManualSelection()Z" />
-		<method name="getOperatorAlphaLong()Ljava/lang/String;" />
-		<method name="getOperatorAlphaShort()Ljava/lang/String;" />
-		<method name="getOperatorNumeric()Ljava/lang/String;" />
-		<method name="getRoaming()Z" />
-		<method name="getState()I" />
-		<method name="setIsManualSelection(Z)V" />
-		<method name="setOperatorName(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="setRoaming(Z)V" />
-		<method name="setState(I)V" />
-		<method name="setStateOff()V" />
-		<method name="setStateOutOfService()V" />
-		<field name="CREATOR" />
-		<field name="STATE_EMERGENCY_ONLY" />
-		<field name="STATE_IN_SERVICE" />
-		<field name="STATE_OUT_OF_SERVICE" />
-		<field name="STATE_POWER_OFF" />
-	</class>
-	<class name="android/telephony/SignalStrength" since="7">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="getCdmaDbm()I" />
-		<method name="getCdmaEcio()I" />
-		<method name="getEvdoDbm()I" />
-		<method name="getEvdoEcio()I" />
-		<method name="getEvdoSnr()I" />
-		<method name="getGsmBitErrorRate()I" />
-		<method name="getGsmSignalStrength()I" />
-		<method name="isGsm()Z" />
-	</class>
-	<class name="android/telephony/SmsManager" since="4">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="divideMessage(Ljava/lang/String;)Ljava/util/ArrayList;" />
-		<method name="getDefault()Landroid/telephony/SmsManager;" />
-		<method name="sendDataMessage(Ljava/lang/String;Ljava/lang/String;S[BLandroid/app/PendingIntent;Landroid/app/PendingIntent;)V" />
-		<method name="sendMultipartTextMessage(Ljava/lang/String;Ljava/lang/String;Ljava/util/ArrayList;Ljava/util/ArrayList;Ljava/util/ArrayList;)V" />
-		<method name="sendTextMessage(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/app/PendingIntent;Landroid/app/PendingIntent;)V" />
-		<field name="RESULT_ERROR_GENERIC_FAILURE" />
-		<field name="RESULT_ERROR_NO_SERVICE" />
-		<field name="RESULT_ERROR_NULL_PDU" />
-		<field name="RESULT_ERROR_RADIO_OFF" />
-		<field name="STATUS_ON_ICC_FREE" />
-		<field name="STATUS_ON_ICC_READ" />
-		<field name="STATUS_ON_ICC_SENT" />
-		<field name="STATUS_ON_ICC_UNREAD" />
-		<field name="STATUS_ON_ICC_UNSENT" />
-	</class>
-	<class name="android/telephony/SmsMessage" since="4">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="calculateLength(Ljava/lang/CharSequence;Z)[I" />
-		<method name="calculateLength(Ljava/lang/String;Z)[I" />
-		<method name="createFromPdu([B)Landroid/telephony/SmsMessage;" />
-		<method name="getDisplayMessageBody()Ljava/lang/String;" />
-		<method name="getDisplayOriginatingAddress()Ljava/lang/String;" />
-		<method name="getEmailBody()Ljava/lang/String;" />
-		<method name="getEmailFrom()Ljava/lang/String;" />
-		<method name="getIndexOnIcc()I" />
-		<method name="getIndexOnSim()I" />
-		<method name="getMessageBody()Ljava/lang/String;" />
-		<method name="getMessageClass()Landroid/telephony/SmsMessage$MessageClass;" />
-		<method name="getOriginatingAddress()Ljava/lang/String;" />
-		<method name="getPdu()[B" />
-		<method name="getProtocolIdentifier()I" />
-		<method name="getPseudoSubject()Ljava/lang/String;" />
-		<method name="getServiceCenterAddress()Ljava/lang/String;" />
-		<method name="getStatus()I" />
-		<method name="getStatusOnIcc()I" />
-		<method name="getStatusOnSim()I" />
-		<method name="getSubmitPdu(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)Landroid/telephony/SmsMessage$SubmitPdu;" />
-		<method name="getSubmitPdu(Ljava/lang/String;Ljava/lang/String;S[BZ)Landroid/telephony/SmsMessage$SubmitPdu;" />
-		<method name="getTPLayerLengthForPDU(Ljava/lang/String;)I" />
-		<method name="getTimestampMillis()J" />
-		<method name="getUserData()[B" />
-		<method name="isCphsMwiMessage()Z" />
-		<method name="isEmail()Z" />
-		<method name="isMWIClearMessage()Z" />
-		<method name="isMWISetMessage()Z" />
-		<method name="isMwiDontStore()Z" />
-		<method name="isReplace()Z" />
-		<method name="isReplyPathPresent()Z" />
-		<method name="isStatusReportMessage()Z" />
-		<field name="ENCODING_16BIT" />
-		<field name="ENCODING_7BIT" />
-		<field name="ENCODING_8BIT" />
-		<field name="ENCODING_UNKNOWN" />
-		<field name="MAX_USER_DATA_BYTES" />
-		<field name="MAX_USER_DATA_BYTES_WITH_HEADER" />
-		<field name="MAX_USER_DATA_SEPTETS" />
-		<field name="MAX_USER_DATA_SEPTETS_WITH_HEADER" />
-	</class>
-	<class name="android/telephony/SmsMessage$MessageClass" since="4">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Landroid/telephony/SmsMessage$MessageClass;" />
-		<method name="values()[Landroid/telephony/SmsMessage$MessageClass;" />
-		<field name="CLASS_0" />
-		<field name="CLASS_1" />
-		<field name="CLASS_2" />
-		<field name="CLASS_3" />
-		<field name="UNKNOWN" />
-	</class>
-	<class name="android/telephony/SmsMessage$SubmitPdu" since="4">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="encodedMessage" />
-		<field name="encodedScAddress" />
-	</class>
-	<class name="android/telephony/TelephonyManager" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getAllCellInfo()Ljava/util/List;" since="17" />
-		<method name="getCallState()I" />
-		<method name="getCellLocation()Landroid/telephony/CellLocation;" />
-		<method name="getDataActivity()I" />
-		<method name="getDataState()I" />
-		<method name="getDeviceId()Ljava/lang/String;" />
-		<method name="getDeviceSoftwareVersion()Ljava/lang/String;" />
-		<method name="getGroupIdLevel1()Ljava/lang/String;" since="18" />
-		<method name="getLine1Number()Ljava/lang/String;" />
-		<method name="getMmsUAProfUrl()Ljava/lang/String;" since="19" />
-		<method name="getMmsUserAgent()Ljava/lang/String;" since="19" />
-		<method name="getNeighboringCellInfo()Ljava/util/List;" since="3" />
-		<method name="getNetworkCountryIso()Ljava/lang/String;" />
-		<method name="getNetworkOperator()Ljava/lang/String;" />
-		<method name="getNetworkOperatorName()Ljava/lang/String;" />
-		<method name="getNetworkType()I" />
-		<method name="getPhoneType()I" />
-		<method name="getSimCountryIso()Ljava/lang/String;" />
-		<method name="getSimOperator()Ljava/lang/String;" />
-		<method name="getSimOperatorName()Ljava/lang/String;" />
-		<method name="getSimSerialNumber()Ljava/lang/String;" />
-		<method name="getSimState()I" />
-		<method name="getSubscriberId()Ljava/lang/String;" />
-		<method name="getVoiceMailAlphaTag()Ljava/lang/String;" />
-		<method name="getVoiceMailNumber()Ljava/lang/String;" />
-		<method name="hasIccCard()Z" since="5" />
-		<method name="isNetworkRoaming()Z" />
-		<method name="listen(Landroid/telephony/PhoneStateListener;I)V" />
-		<field name="ACTION_PHONE_STATE_CHANGED" since="3" />
-		<field name="ACTION_RESPOND_VIA_MESSAGE" since="18" />
-		<field name="CALL_STATE_IDLE" />
-		<field name="CALL_STATE_OFFHOOK" />
-		<field name="CALL_STATE_RINGING" />
-		<field name="DATA_ACTIVITY_DORMANT" since="4" />
-		<field name="DATA_ACTIVITY_IN" />
-		<field name="DATA_ACTIVITY_INOUT" />
-		<field name="DATA_ACTIVITY_NONE" />
-		<field name="DATA_ACTIVITY_OUT" />
-		<field name="DATA_CONNECTED" />
-		<field name="DATA_CONNECTING" />
-		<field name="DATA_DISCONNECTED" />
-		<field name="DATA_SUSPENDED" />
-		<field name="EXTRA_INCOMING_NUMBER" since="3" />
-		<field name="EXTRA_STATE" since="3" />
-		<field name="EXTRA_STATE_IDLE" since="3" />
-		<field name="EXTRA_STATE_OFFHOOK" since="3" />
-		<field name="EXTRA_STATE_RINGING" since="3" />
-		<field name="NETWORK_TYPE_1xRTT" since="4" />
-		<field name="NETWORK_TYPE_CDMA" since="4" />
-		<field name="NETWORK_TYPE_EDGE" />
-		<field name="NETWORK_TYPE_EHRPD" since="11" />
-		<field name="NETWORK_TYPE_EVDO_0" since="4" />
-		<field name="NETWORK_TYPE_EVDO_A" since="4" />
-		<field name="NETWORK_TYPE_EVDO_B" since="9" />
-		<field name="NETWORK_TYPE_GPRS" />
-		<field name="NETWORK_TYPE_HSDPA" since="5" />
-		<field name="NETWORK_TYPE_HSPA" since="5" />
-		<field name="NETWORK_TYPE_HSPAP" since="13" />
-		<field name="NETWORK_TYPE_HSUPA" since="5" />
-		<field name="NETWORK_TYPE_IDEN" since="8" />
-		<field name="NETWORK_TYPE_LTE" since="11" />
-		<field name="NETWORK_TYPE_UMTS" />
-		<field name="NETWORK_TYPE_UNKNOWN" />
-		<field name="PHONE_TYPE_CDMA" since="4" />
-		<field name="PHONE_TYPE_GSM" />
-		<field name="PHONE_TYPE_NONE" />
-		<field name="PHONE_TYPE_SIP" since="11" />
-		<field name="SIM_STATE_ABSENT" />
-		<field name="SIM_STATE_NETWORK_LOCKED" />
-		<field name="SIM_STATE_PIN_REQUIRED" />
-		<field name="SIM_STATE_PUK_REQUIRED" />
-		<field name="SIM_STATE_READY" />
-		<field name="SIM_STATE_UNKNOWN" />
-	</class>
-	<class name="android/telephony/cdma/CdmaCellLocation" since="5">
-		<extends name="android/telephony/CellLocation" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/os/Bundle;)V" />
-		<method name="convertQuartSecToDecDegrees(I)D" since="17" />
-		<method name="fillInNotifierBundle(Landroid/os/Bundle;)V" />
-		<method name="getBaseStationId()I" />
-		<method name="getBaseStationLatitude()I" />
-		<method name="getBaseStationLongitude()I" />
-		<method name="getNetworkId()I" />
-		<method name="getSystemId()I" />
-		<method name="setCellLocationData(III)V" />
-		<method name="setCellLocationData(IIIII)V" />
-		<method name="setStateInvalid()V" />
-	</class>
-	<class name="android/telephony/gsm/GsmCellLocation" since="1">
-		<extends name="android/telephony/CellLocation" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/os/Bundle;)V" />
-		<method name="fillInNotifierBundle(Landroid/os/Bundle;)V" />
-		<method name="getCid()I" />
-		<method name="getLac()I" />
-		<method name="getPsc()I" since="9" />
-		<method name="setLacAndCid(II)V" />
-		<method name="setStateInvalid()V" />
-	</class>
-	<class name="android/telephony/gsm/SmsManager" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="divideMessage(Ljava/lang/String;)Ljava/util/ArrayList;" />
-		<method name="getDefault()Landroid/telephony/gsm/SmsManager;" />
-		<method name="sendDataMessage(Ljava/lang/String;Ljava/lang/String;S[BLandroid/app/PendingIntent;Landroid/app/PendingIntent;)V" />
-		<method name="sendMultipartTextMessage(Ljava/lang/String;Ljava/lang/String;Ljava/util/ArrayList;Ljava/util/ArrayList;Ljava/util/ArrayList;)V" />
-		<method name="sendTextMessage(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/app/PendingIntent;Landroid/app/PendingIntent;)V" />
-		<field name="RESULT_ERROR_GENERIC_FAILURE" />
-		<field name="RESULT_ERROR_NO_SERVICE" />
-		<field name="RESULT_ERROR_NULL_PDU" />
-		<field name="RESULT_ERROR_RADIO_OFF" />
-		<field name="STATUS_ON_SIM_FREE" />
-		<field name="STATUS_ON_SIM_READ" />
-		<field name="STATUS_ON_SIM_SENT" />
-		<field name="STATUS_ON_SIM_UNREAD" />
-		<field name="STATUS_ON_SIM_UNSENT" />
-	</class>
-	<class name="android/telephony/gsm/SmsMessage" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="calculateLength(Ljava/lang/CharSequence;Z)[I" since="3" />
-		<method name="calculateLength(Ljava/lang/String;Z)[I" />
-		<method name="createFromPdu([B)Landroid/telephony/gsm/SmsMessage;" />
-		<method name="getDisplayMessageBody()Ljava/lang/String;" />
-		<method name="getDisplayOriginatingAddress()Ljava/lang/String;" />
-		<method name="getEmailBody()Ljava/lang/String;" />
-		<method name="getEmailFrom()Ljava/lang/String;" />
-		<method name="getIndexOnSim()I" />
-		<method name="getMessageBody()Ljava/lang/String;" />
-		<method name="getMessageClass()Landroid/telephony/gsm/SmsMessage$MessageClass;" />
-		<method name="getOriginatingAddress()Ljava/lang/String;" />
-		<method name="getPdu()[B" />
-		<method name="getProtocolIdentifier()I" />
-		<method name="getPseudoSubject()Ljava/lang/String;" />
-		<method name="getServiceCenterAddress()Ljava/lang/String;" />
-		<method name="getStatus()I" />
-		<method name="getStatusOnSim()I" />
-		<method name="getSubmitPdu(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)Landroid/telephony/gsm/SmsMessage$SubmitPdu;" />
-		<method name="getSubmitPdu(Ljava/lang/String;Ljava/lang/String;S[BZ)Landroid/telephony/gsm/SmsMessage$SubmitPdu;" />
-		<method name="getTPLayerLengthForPDU(Ljava/lang/String;)I" />
-		<method name="getTimestampMillis()J" />
-		<method name="getUserData()[B" />
-		<method name="isCphsMwiMessage()Z" />
-		<method name="isEmail()Z" />
-		<method name="isMWIClearMessage()Z" />
-		<method name="isMWISetMessage()Z" />
-		<method name="isMwiDontStore()Z" />
-		<method name="isReplace()Z" />
-		<method name="isReplyPathPresent()Z" />
-		<method name="isStatusReportMessage()Z" />
-		<field name="ENCODING_16BIT" />
-		<field name="ENCODING_7BIT" />
-		<field name="ENCODING_8BIT" />
-		<field name="ENCODING_UNKNOWN" />
-		<field name="MAX_USER_DATA_BYTES" />
-		<field name="MAX_USER_DATA_SEPTETS" />
-		<field name="MAX_USER_DATA_SEPTETS_WITH_HEADER" />
-	</class>
-	<class name="android/telephony/gsm/SmsMessage$MessageClass" since="1">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Landroid/telephony/gsm/SmsMessage$MessageClass;" />
-		<method name="values()[Landroid/telephony/gsm/SmsMessage$MessageClass;" />
-		<field name="CLASS_0" />
-		<field name="CLASS_1" />
-		<field name="CLASS_2" />
-		<field name="CLASS_3" />
-		<field name="UNKNOWN" />
-	</class>
-	<class name="android/telephony/gsm/SmsMessage$SubmitPdu" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="encodedMessage" />
-		<field name="encodedScAddress" />
-	</class>
-	<class name="android/test/ActivityInstrumentationTestCase" since="1">
-		<extends name="android/test/ActivityTestCase" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Class;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Class;Z)V" />
-		<method name="testActivityTestCaseSetUpProperly()V" />
-	</class>
-	<class name="android/test/ActivityInstrumentationTestCase2" since="3">
-		<extends name="android/test/ActivityTestCase" />
-		<method name="&lt;init>(Ljava/lang/Class;)V" since="8" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Class;)V" />
-		<method name="setActivityInitialTouchMode(Z)V" />
-		<method name="setActivityIntent(Landroid/content/Intent;)V" />
-	</class>
-	<class name="android/test/ActivityTestCase" since="1">
-		<extends name="android/test/InstrumentationTestCase" />
-		<method name="&lt;init>()V" />
-		<method name="getActivity()Landroid/app/Activity;" />
-		<method name="scrubClass(Ljava/lang/Class;)V" />
-		<method name="setActivity(Landroid/app/Activity;)V" />
-	</class>
-	<class name="android/test/ActivityUnitTestCase" since="1">
-		<extends name="android/test/ActivityTestCase" />
-		<method name="&lt;init>(Ljava/lang/Class;)V" />
-		<method name="getFinishedActivityRequest()I" />
-		<method name="getRequestedOrientation()I" />
-		<method name="getStartedActivityIntent()Landroid/content/Intent;" />
-		<method name="getStartedActivityRequest()I" />
-		<method name="isFinishCalled()Z" />
-		<method name="setActivityContext(Landroid/content/Context;)V" />
-		<method name="setApplication(Landroid/app/Application;)V" />
-		<method name="startActivity(Landroid/content/Intent;Landroid/os/Bundle;Ljava/lang/Object;)Landroid/app/Activity;" />
-	</class>
-	<class name="android/test/AndroidTestCase" since="1">
-		<extends name="junit/framework/TestCase" />
-		<method name="&lt;init>()V" />
-		<method name="assertActivityRequiresPermission(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" since="4" />
-		<method name="assertReadingContentUriRequiresPermission(Landroid/net/Uri;Ljava/lang/String;)V" since="4" />
-		<method name="assertWritingContentUriRequiresPermission(Landroid/net/Uri;Ljava/lang/String;)V" since="4" />
-		<method name="getContext()Landroid/content/Context;" />
-		<method name="scrubClass(Ljava/lang/Class;)V" />
-		<method name="setContext(Landroid/content/Context;)V" />
-		<method name="testAndroidTestCaseSetupProperly()V" />
-		<field name="mContext" />
-	</class>
-	<class name="android/test/AndroidTestRunner" since="1">
-		<extends name="junit/runner/BaseTestRunner" />
-		<method name="&lt;init>()V" />
-		<method name="addTestListener(Ljunit/framework/TestListener;)V" />
-		<method name="clearTestListeners()V" />
-		<method name="createTestResult()Ljunit/framework/TestResult;" />
-		<method name="getTestCases()Ljava/util/List;" />
-		<method name="getTestClassName()Ljava/lang/String;" />
-		<method name="getTestResult()Ljunit/framework/TestResult;" />
-		<method name="runTest()V" />
-		<method name="runTest(Ljunit/framework/TestResult;)V" />
-		<method name="setContext(Landroid/content/Context;)V" />
-		<method name="setInstrumentaiton(Landroid/app/Instrumentation;)V" />
-		<method name="setInstrumentation(Landroid/app/Instrumentation;)V" since="5" />
-		<method name="setTest(Ljunit/framework/Test;)V" />
-		<method name="setTestClassName(Ljava/lang/String;Ljava/lang/String;)V" />
-	</class>
-	<class name="android/test/ApplicationTestCase" since="1">
-		<extends name="android/test/AndroidTestCase" />
-		<method name="&lt;init>(Ljava/lang/Class;)V" />
-		<method name="createApplication()V" />
-		<method name="getApplication()Landroid/app/Application;" />
-		<method name="getSystemContext()Landroid/content/Context;" />
-		<method name="terminateApplication()V" />
-		<method name="testApplicationTestCaseSetUpProperly()V" />
-	</class>
-	<class name="android/test/AssertionFailedError" since="1">
-		<extends name="java/lang/Error" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/test/ComparisonFailure" since="1">
-		<extends name="android/test/AssertionFailedError" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
-	</class>
-	<class name="android/test/FlakyTest" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/annotation/Annotation" />
-		<method name="tolerance()I" />
-	</class>
-	<class name="android/test/InstrumentationTestCase" since="1">
-		<extends name="junit/framework/TestCase" />
-		<method name="&lt;init>()V" />
-		<method name="getInstrumentation()Landroid/app/Instrumentation;" />
-		<method name="injectInsrumentation(Landroid/app/Instrumentation;)V" />
-		<method name="injectInstrumentation(Landroid/app/Instrumentation;)V" since="5" />
-		<method name="launchActivity(Ljava/lang/String;Ljava/lang/Class;Landroid/os/Bundle;)Landroid/app/Activity;" />
-		<method name="launchActivityWithIntent(Ljava/lang/String;Ljava/lang/Class;Landroid/content/Intent;)Landroid/app/Activity;" since="3" />
-		<method name="runTestOnUiThread(Ljava/lang/Runnable;)V" since="3" />
-		<method name="sendKeys(Ljava/lang/String;)V" />
-		<method name="sendKeys([I)V" />
-		<method name="sendRepeatedKeys([I)V" />
-	</class>
-	<class name="android/test/InstrumentationTestRunner" since="1">
-		<extends name="android/app/Instrumentation" />
-		<implements name="android/test/TestSuiteProvider" />
-		<method name="&lt;init>()V" />
-		<method name="getAllTests()Ljunit/framework/TestSuite;" />
-		<method name="getAndroidTestRunner()Landroid/test/AndroidTestRunner;" />
-		<method name="getArguments()Landroid/os/Bundle;" since="18" />
-		<method name="getLoader()Ljava/lang/ClassLoader;" />
-		<field name="REPORT_KEY_NAME_CLASS" />
-		<field name="REPORT_KEY_NAME_TEST" />
-		<field name="REPORT_KEY_NUM_CURRENT" />
-		<field name="REPORT_KEY_NUM_TOTAL" />
-		<field name="REPORT_KEY_STACK" />
-		<field name="REPORT_VALUE_ID" />
-		<field name="REPORT_VALUE_RESULT_ERROR" />
-		<field name="REPORT_VALUE_RESULT_FAILURE" />
-		<field name="REPORT_VALUE_RESULT_OK" />
-		<field name="REPORT_VALUE_RESULT_START" />
-	</class>
-	<class name="android/test/InstrumentationTestSuite" since="1">
-		<extends name="junit/framework/TestSuite" />
-		<method name="&lt;init>(Landroid/app/Instrumentation;)V" />
-		<method name="&lt;init>(Ljava/lang/Class;Landroid/app/Instrumentation;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Landroid/app/Instrumentation;)V" />
-	</class>
-	<class name="android/test/IsolatedContext" since="1">
-		<extends name="android/content/ContextWrapper" />
-		<method name="&lt;init>(Landroid/content/ContentResolver;Landroid/content/Context;)V" />
-		<method name="getAndClearBroadcastIntents()Ljava/util/List;" />
-	</class>
-	<class name="android/test/LoaderTestCase" since="11">
-		<extends name="android/test/AndroidTestCase" />
-		<method name="&lt;init>()V" />
-		<method name="getLoaderResultSynchronously(Landroid/content/Loader;)Ljava/lang/Object;" />
-	</class>
-	<class name="android/test/MoreAsserts" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="assertAssignableFrom(Ljava/lang/Class;Ljava/lang/Class;)V" />
-		<method name="assertAssignableFrom(Ljava/lang/Class;Ljava/lang/Object;)V" />
-		<method name="assertContainsRegex(Ljava/lang/String;Ljava/lang/String;)Ljava/util/regex/MatchResult;" />
-		<method name="assertContainsRegex(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/util/regex/MatchResult;" />
-		<method name="assertContentsInAnyOrder(Ljava/lang/Iterable;[Ljava/lang/Object;)V" />
-		<method name="assertContentsInAnyOrder(Ljava/lang/String;Ljava/lang/Iterable;[Ljava/lang/Object;)V" />
-		<method name="assertContentsInOrder(Ljava/lang/Iterable;[Ljava/lang/Object;)V" />
-		<method name="assertContentsInOrder(Ljava/lang/String;Ljava/lang/Iterable;[Ljava/lang/Object;)V" />
-		<method name="assertEmpty(Ljava/lang/Iterable;)V" />
-		<method name="assertEmpty(Ljava/lang/String;Ljava/lang/Iterable;)V" />
-		<method name="assertEmpty(Ljava/lang/String;Ljava/util/Map;)V" />
-		<method name="assertEmpty(Ljava/util/Map;)V" />
-		<method name="assertEquals(Ljava/lang/String;Ljava/util/Set;Ljava/util/Set;)V" />
-		<method name="assertEquals(Ljava/lang/String;[B[B)V" />
-		<method name="assertEquals(Ljava/lang/String;[D[D)V" />
-		<method name="assertEquals(Ljava/lang/String;[I[I)V" />
-		<method name="assertEquals(Ljava/lang/String;[Ljava/lang/Object;[Ljava/lang/Object;)V" />
-		<method name="assertEquals(Ljava/util/Set;Ljava/util/Set;)V" />
-		<method name="assertEquals([B[B)V" />
-		<method name="assertEquals([D[D)V" />
-		<method name="assertEquals([I[I)V" />
-		<method name="assertEquals([Ljava/lang/Object;[Ljava/lang/Object;)V" />
-		<method name="assertMatchesRegex(Ljava/lang/String;Ljava/lang/String;)Ljava/util/regex/MatchResult;" />
-		<method name="assertMatchesRegex(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/util/regex/MatchResult;" />
-		<method name="assertNotContainsRegex(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="assertNotContainsRegex(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="assertNotEmpty(Ljava/lang/Iterable;)V" />
-		<method name="assertNotEmpty(Ljava/lang/String;Ljava/lang/Iterable;)V" />
-		<method name="assertNotEmpty(Ljava/lang/String;Ljava/util/Map;)V" />
-		<method name="assertNotEmpty(Ljava/util/Map;)V" />
-		<method name="assertNotEqual(Ljava/lang/Object;Ljava/lang/Object;)V" />
-		<method name="assertNotEqual(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V" />
-		<method name="assertNotMatchesRegex(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="assertNotMatchesRegex(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="checkEqualsAndHashCodeMethods(Ljava/lang/Object;Ljava/lang/Object;Z)V" />
-		<method name="checkEqualsAndHashCodeMethods(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Z)V" />
-	</class>
-	<class name="android/test/PerformanceTestCase" since="1">
-		<extends name="java/lang/Object" />
-		<method name="isPerformanceOnly()Z" />
-		<method name="startPerformance(Landroid/test/PerformanceTestCase$Intermediates;)I" />
-	</class>
-	<class name="android/test/PerformanceTestCase$Intermediates" since="1">
-		<extends name="java/lang/Object" />
-		<method name="addIntermediate(Ljava/lang/String;)V" />
-		<method name="addIntermediate(Ljava/lang/String;J)V" />
-		<method name="finishTiming(Z)V" />
-		<method name="setInternalIterations(I)V" />
-		<method name="startTiming(Z)V" />
-	</class>
-	<class name="android/test/ProviderTestCase" since="1">
-		<extends name="android/test/InstrumentationTestCase" />
-		<method name="&lt;init>(Ljava/lang/Class;Ljava/lang/String;)V" />
-		<method name="getMockContentResolver()Landroid/test/mock/MockContentResolver;" />
-		<method name="getMockContext()Landroid/test/IsolatedContext;" />
-		<method name="getProvider()Landroid/content/ContentProvider;" />
-		<method name="newResolverWithContentProviderFromSql(Landroid/content/Context;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)Landroid/content/ContentResolver;" />
-	</class>
-	<class name="android/test/ProviderTestCase2" since="3">
-		<extends name="android/test/AndroidTestCase" />
-		<method name="&lt;init>(Ljava/lang/Class;Ljava/lang/String;)V" />
-		<method name="getMockContentResolver()Landroid/test/mock/MockContentResolver;" />
-		<method name="getMockContext()Landroid/test/IsolatedContext;" />
-		<method name="getProvider()Landroid/content/ContentProvider;" />
-		<method name="newResolverWithContentProviderFromSql(Landroid/content/Context;Ljava/lang/String;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)Landroid/content/ContentResolver;" />
-	</class>
-	<class name="android/test/RenamingDelegatingContext" since="1">
-		<extends name="android/content/ContextWrapper" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/content/Context;Ljava/lang/String;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Ljava/lang/String;)V" />
-		<method name="getDatabasePrefix()Ljava/lang/String;" />
-		<method name="makeExistingFilesAndDbsAccessible()V" />
-		<method name="providerWithRenamedContext(Ljava/lang/Class;Landroid/content/Context;Ljava/lang/String;)Landroid/content/ContentProvider;" />
-		<method name="providerWithRenamedContext(Ljava/lang/Class;Landroid/content/Context;Ljava/lang/String;Z)Landroid/content/ContentProvider;" />
-	</class>
-	<class name="android/test/ServiceTestCase" since="1">
-		<extends name="android/test/AndroidTestCase" />
-		<method name="&lt;init>(Ljava/lang/Class;)V" />
-		<method name="bindService(Landroid/content/Intent;)Landroid/os/IBinder;" />
-		<method name="getApplication()Landroid/app/Application;" />
-		<method name="getService()Landroid/app/Service;" />
-		<method name="getSystemContext()Landroid/content/Context;" />
-		<method name="setApplication(Landroid/app/Application;)V" />
-		<method name="setupService()V" />
-		<method name="shutdownService()V" />
-		<method name="startService(Landroid/content/Intent;)V" />
-		<method name="testServiceTestCaseSetUpProperly()V" />
-	</class>
-	<class name="android/test/SingleLaunchActivityTestCase" since="1">
-		<extends name="android/test/InstrumentationTestCase" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Class;)V" />
-		<method name="getActivity()Landroid/app/Activity;" />
-		<method name="testActivityTestCaseSetUpProperly()V" />
-	</class>
-	<class name="android/test/SyncBaseInstrumentation" since="1">
-		<extends name="android/test/InstrumentationTestCase" />
-		<method name="&lt;init>()V" />
-		<method name="cancelSyncsandDisableAutoSync()V" />
-		<method name="syncProvider(Landroid/net/Uri;Ljava/lang/String;Ljava/lang/String;)V" />
-	</class>
-	<class name="android/test/TestSuiteProvider" since="1">
-		<extends name="java/lang/Object" />
-		<method name="getTestSuite()Ljunit/framework/TestSuite;" />
-	</class>
-	<class name="android/test/TouchUtils" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="clickView(Landroid/test/InstrumentationTestCase;Landroid/view/View;)V" />
-		<method name="drag(Landroid/test/ActivityInstrumentationTestCase;FFFFI)V" />
-		<method name="drag(Landroid/test/InstrumentationTestCase;FFFFI)V" since="3" />
-		<method name="dragQuarterScreenDown(Landroid/test/ActivityInstrumentationTestCase;)V" />
-		<method name="dragQuarterScreenDown(Landroid/test/InstrumentationTestCase;Landroid/app/Activity;)V" since="3" />
-		<method name="dragQuarterScreenUp(Landroid/test/ActivityInstrumentationTestCase;)V" />
-		<method name="dragQuarterScreenUp(Landroid/test/InstrumentationTestCase;Landroid/app/Activity;)V" since="3" />
-		<method name="dragViewBy(Landroid/test/ActivityInstrumentationTestCase;Landroid/view/View;III)I" />
-		<method name="dragViewBy(Landroid/test/InstrumentationTestCase;Landroid/view/View;III)I" since="3" />
-		<method name="dragViewTo(Landroid/test/ActivityInstrumentationTestCase;Landroid/view/View;III)I" />
-		<method name="dragViewTo(Landroid/test/InstrumentationTestCase;Landroid/view/View;III)I" since="3" />
-		<method name="dragViewToBottom(Landroid/test/ActivityInstrumentationTestCase;Landroid/view/View;)V" />
-		<method name="dragViewToBottom(Landroid/test/ActivityInstrumentationTestCase;Landroid/view/View;I)V" />
-		<method name="dragViewToBottom(Landroid/test/InstrumentationTestCase;Landroid/app/Activity;Landroid/view/View;)V" since="3" />
-		<method name="dragViewToBottom(Landroid/test/InstrumentationTestCase;Landroid/app/Activity;Landroid/view/View;I)V" since="3" />
-		<method name="dragViewToTop(Landroid/test/ActivityInstrumentationTestCase;Landroid/view/View;)V" />
-		<method name="dragViewToTop(Landroid/test/ActivityInstrumentationTestCase;Landroid/view/View;I)V" />
-		<method name="dragViewToTop(Landroid/test/InstrumentationTestCase;Landroid/view/View;)V" since="3" />
-		<method name="dragViewToTop(Landroid/test/InstrumentationTestCase;Landroid/view/View;I)V" since="3" />
-		<method name="dragViewToX(Landroid/test/ActivityInstrumentationTestCase;Landroid/view/View;II)I" />
-		<method name="dragViewToX(Landroid/test/InstrumentationTestCase;Landroid/view/View;II)I" since="3" />
-		<method name="dragViewToY(Landroid/test/ActivityInstrumentationTestCase;Landroid/view/View;II)I" />
-		<method name="dragViewToY(Landroid/test/InstrumentationTestCase;Landroid/view/View;II)I" since="3" />
-		<method name="longClickView(Landroid/test/ActivityInstrumentationTestCase;Landroid/view/View;)V" />
-		<method name="longClickView(Landroid/test/InstrumentationTestCase;Landroid/view/View;)V" since="3" />
-		<method name="scrollToBottom(Landroid/test/ActivityInstrumentationTestCase;Landroid/view/ViewGroup;)V" />
-		<method name="scrollToBottom(Landroid/test/InstrumentationTestCase;Landroid/app/Activity;Landroid/view/ViewGroup;)V" since="3" />
-		<method name="scrollToTop(Landroid/test/ActivityInstrumentationTestCase;Landroid/view/ViewGroup;)V" />
-		<method name="scrollToTop(Landroid/test/InstrumentationTestCase;Landroid/app/Activity;Landroid/view/ViewGroup;)V" since="3" />
-		<method name="tapView(Landroid/test/InstrumentationTestCase;Landroid/view/View;)V" />
-		<method name="touchAndCancelView(Landroid/test/InstrumentationTestCase;Landroid/view/View;)V" />
-	</class>
-	<class name="android/test/UiThreadTest" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/annotation/Annotation" />
-	</class>
-	<class name="android/test/ViewAsserts" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="assertBaselineAligned(Landroid/view/View;Landroid/view/View;)V" />
-		<method name="assertBottomAligned(Landroid/view/View;Landroid/view/View;)V" />
-		<method name="assertBottomAligned(Landroid/view/View;Landroid/view/View;I)V" />
-		<method name="assertGroupContains(Landroid/view/ViewGroup;Landroid/view/View;)V" />
-		<method name="assertGroupIntegrity(Landroid/view/ViewGroup;)V" />
-		<method name="assertGroupNotContains(Landroid/view/ViewGroup;Landroid/view/View;)V" />
-		<method name="assertHasScreenCoordinates(Landroid/view/View;Landroid/view/View;II)V" />
-		<method name="assertHorizontalCenterAligned(Landroid/view/View;Landroid/view/View;)V" />
-		<method name="assertLeftAligned(Landroid/view/View;Landroid/view/View;)V" />
-		<method name="assertLeftAligned(Landroid/view/View;Landroid/view/View;I)V" />
-		<method name="assertOffScreenAbove(Landroid/view/View;Landroid/view/View;)V" />
-		<method name="assertOffScreenBelow(Landroid/view/View;Landroid/view/View;)V" />
-		<method name="assertOnScreen(Landroid/view/View;Landroid/view/View;)V" />
-		<method name="assertRightAligned(Landroid/view/View;Landroid/view/View;)V" />
-		<method name="assertRightAligned(Landroid/view/View;Landroid/view/View;I)V" />
-		<method name="assertTopAligned(Landroid/view/View;Landroid/view/View;)V" />
-		<method name="assertTopAligned(Landroid/view/View;Landroid/view/View;I)V" />
-		<method name="assertVerticalCenterAligned(Landroid/view/View;Landroid/view/View;)V" />
-	</class>
-	<class name="android/test/mock/MockApplication" since="1">
-		<extends name="android/app/Application" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="android/test/mock/MockContentProvider" since="8">
-		<extends name="android/content/ContentProvider" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;[Landroid/content/pm/PathPermission;)V" />
-	</class>
-	<class name="android/test/mock/MockContentResolver" since="1">
-		<extends name="android/content/ContentResolver" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/content/Context;)V" since="18" />
-		<method name="addProvider(Ljava/lang/String;Landroid/content/ContentProvider;)V" />
-	</class>
-	<class name="android/test/mock/MockContext" since="1">
-		<extends name="android/content/Context" />
-		<method name="&lt;init>()V" />
-		<method name="getPackageCodePath()Ljava/lang/String;" />
-		<method name="getPackageResourcePath()Ljava/lang/String;" />
-	</class>
-	<class name="android/test/mock/MockCursor" since="8">
-		<extends name="java/lang/Object" />
-		<implements name="android/database/Cursor" />
-		<method name="&lt;init>()V" />
-		<method name="abortUpdates()V" />
-		<method name="commitUpdates()Z" />
-		<method name="commitUpdates(Ljava/util/Map;)Z" />
-		<method name="deleteRow()Z" />
-		<method name="hasUpdates()Z" />
-		<method name="supportsUpdates()Z" />
-		<method name="updateBlob(I[B)Z" />
-		<method name="updateDouble(ID)Z" />
-		<method name="updateFloat(IF)Z" />
-		<method name="updateInt(II)Z" />
-		<method name="updateLong(IJ)Z" />
-		<method name="updateShort(IS)Z" />
-		<method name="updateString(ILjava/lang/String;)Z" />
-		<method name="updateToNull(I)Z" />
-	</class>
-	<class name="android/test/mock/MockDialogInterface" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/content/DialogInterface" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="android/test/mock/MockPackageManager" since="1">
-		<extends name="android/content/pm/PackageManager" />
-		<method name="&lt;init>()V" />
-		<method name="setPackageObbPath(Ljava/lang/String;Ljava/lang/String;)V" since="9" />
-	</class>
-	<class name="android/test/mock/MockResources" since="1">
-		<extends name="android/content/res/Resources" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="android/test/suitebuilder/TestMethod" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Class;)V" since="3" />
-		<method name="&lt;init>(Ljava/lang/reflect/Method;Ljava/lang/Class;)V" />
-		<method name="&lt;init>(Ljunit/framework/TestCase;)V" since="3" />
-		<method name="createTest()Ljunit/framework/TestCase;" />
-		<method name="getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;" />
-		<method name="getEnclosingClass()Ljava/lang/Class;" />
-		<method name="getEnclosingClassname()Ljava/lang/String;" />
-		<method name="getName()Ljava/lang/String;" />
-	</class>
-	<class name="android/test/suitebuilder/TestSuiteBuilder" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/lang/Class;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/ClassLoader;)V" />
-		<method name="addRequirements(Ljava/util/List;)Landroid/test/suitebuilder/TestSuiteBuilder;" />
-		<method name="addRequirements([Lcom/android/internal/util/Predicate;)Landroid/test/suitebuilder/TestSuiteBuilder;" />
-		<method name="build()Ljunit/framework/TestSuite;" />
-		<method name="excludePackages([Ljava/lang/String;)Landroid/test/suitebuilder/TestSuiteBuilder;" />
-		<method name="getSuiteName()Ljava/lang/String;" />
-		<method name="includeAllPackagesUnderHere()Landroid/test/suitebuilder/TestSuiteBuilder;" />
-		<method name="includePackages([Ljava/lang/String;)Landroid/test/suitebuilder/TestSuiteBuilder;" />
-		<method name="named(Ljava/lang/String;)Landroid/test/suitebuilder/TestSuiteBuilder;" />
-	</class>
-	<class name="android/test/suitebuilder/TestSuiteBuilder$FailedToCreateTests" since="1">
-		<extends name="junit/framework/TestCase" />
-		<method name="&lt;init>(Ljava/lang/Exception;)V" />
-		<method name="testSuiteConstructionFailed()V" />
-	</class>
-	<class name="android/test/suitebuilder/annotation/LargeTest" since="2">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/annotation/Annotation" />
-	</class>
-	<class name="android/test/suitebuilder/annotation/MediumTest" since="2">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/annotation/Annotation" />
-	</class>
-	<class name="android/test/suitebuilder/annotation/SmallTest" since="2">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/annotation/Annotation" />
-	</class>
-	<class name="android/test/suitebuilder/annotation/Smoke" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/annotation/Annotation" />
-	</class>
-	<class name="android/test/suitebuilder/annotation/Suppress" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/annotation/Annotation" />
-	</class>
-	<class name="android/text/AlteredCharSequence" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/text/GetChars" />
-		<implements name="java/lang/CharSequence" />
-		<method name="&lt;init>()V" />
-		<method name="make(Ljava/lang/CharSequence;[CII)Landroid/text/AlteredCharSequence;" />
-	</class>
-	<class name="android/text/AndroidCharacter" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getDirectionalities([C[BI)V" />
-		<method name="getEastAsianWidth(C)I" since="8" />
-		<method name="getEastAsianWidths([CII[B)V" since="8" />
-		<method name="getMirror(C)C" />
-		<method name="mirror([CII)Z" />
-		<field name="EAST_ASIAN_WIDTH_AMBIGUOUS" since="8" />
-		<field name="EAST_ASIAN_WIDTH_FULL_WIDTH" since="8" />
-		<field name="EAST_ASIAN_WIDTH_HALF_WIDTH" since="8" />
-		<field name="EAST_ASIAN_WIDTH_NARROW" since="8" />
-		<field name="EAST_ASIAN_WIDTH_NEUTRAL" since="8" />
-		<field name="EAST_ASIAN_WIDTH_WIDE" since="8" />
-	</class>
-	<class name="android/text/Annotation" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/text/ParcelableSpan" since="3" />
-		<method name="&lt;init>(Landroid/os/Parcel;)V" since="3" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="getKey()Ljava/lang/String;" />
-		<method name="getValue()Ljava/lang/String;" />
-	</class>
-	<class name="android/text/AutoText" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="get(Ljava/lang/CharSequence;IILandroid/view/View;)Ljava/lang/String;" />
-		<method name="getSize(Landroid/view/View;)I" since="3" />
-	</class>
-	<class name="android/text/BidiFormatter" since="18">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getInstance()Landroid/text/BidiFormatter;" />
-		<method name="getInstance(Ljava/util/Locale;)Landroid/text/BidiFormatter;" />
-		<method name="getInstance(Z)Landroid/text/BidiFormatter;" />
-		<method name="getStereoReset()Z" />
-		<method name="isRtl(Ljava/lang/String;)Z" />
-		<method name="isRtlContext()Z" />
-		<method name="unicodeWrap(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="unicodeWrap(Ljava/lang/String;Landroid/text/TextDirectionHeuristic;)Ljava/lang/String;" />
-		<method name="unicodeWrap(Ljava/lang/String;Landroid/text/TextDirectionHeuristic;Z)Ljava/lang/String;" />
-		<method name="unicodeWrap(Ljava/lang/String;Z)Ljava/lang/String;" />
-	</class>
-	<class name="android/text/BidiFormatter$Builder" since="18">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/util/Locale;)V" />
-		<method name="&lt;init>(Z)V" />
-		<method name="build()Landroid/text/BidiFormatter;" />
-		<method name="setTextDirectionHeuristic(Landroid/text/TextDirectionHeuristic;)Landroid/text/BidiFormatter$Builder;" />
-		<method name="stereoReset(Z)Landroid/text/BidiFormatter$Builder;" />
-	</class>
-	<class name="android/text/BoringLayout" since="1">
-		<extends name="android/text/Layout" />
-		<implements name="android/text/TextUtils$EllipsizeCallback" />
-		<method name="&lt;init>(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFLandroid/text/BoringLayout$Metrics;Z)V" />
-		<method name="&lt;init>(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFLandroid/text/BoringLayout$Metrics;ZLandroid/text/TextUtils$TruncateAt;I)V" />
-		<method name="isBoring(Ljava/lang/CharSequence;Landroid/text/TextPaint;)Landroid/text/BoringLayout$Metrics;" />
-		<method name="isBoring(Ljava/lang/CharSequence;Landroid/text/TextPaint;Landroid/text/BoringLayout$Metrics;)Landroid/text/BoringLayout$Metrics;" />
-		<method name="make(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFLandroid/text/BoringLayout$Metrics;Z)Landroid/text/BoringLayout;" />
-		<method name="make(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFLandroid/text/BoringLayout$Metrics;ZLandroid/text/TextUtils$TruncateAt;I)Landroid/text/BoringLayout;" />
-		<method name="replaceOrMake(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFLandroid/text/BoringLayout$Metrics;Z)Landroid/text/BoringLayout;" />
-		<method name="replaceOrMake(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFLandroid/text/BoringLayout$Metrics;ZLandroid/text/TextUtils$TruncateAt;I)Landroid/text/BoringLayout;" />
-	</class>
-	<class name="android/text/BoringLayout$Metrics" since="1">
-		<extends name="android/graphics/Paint$FontMetricsInt" />
-		<method name="&lt;init>()V" />
-		<field name="width" />
-	</class>
-	<class name="android/text/ClipboardManager" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getText()Ljava/lang/CharSequence;" />
-		<method name="hasText()Z" />
-		<method name="setText(Ljava/lang/CharSequence;)V" />
-	</class>
-	<class name="android/text/DynamicLayout" since="1">
-		<extends name="android/text/Layout" />
-		<method name="&lt;init>(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFZ)V" />
-		<method name="&lt;init>(Ljava/lang/CharSequence;Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFZ)V" />
-		<method name="&lt;init>(Ljava/lang/CharSequence;Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFZLandroid/text/TextUtils$TruncateAt;I)V" />
-	</class>
-	<class name="android/text/Editable" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/text/GetChars" />
-		<implements name="android/text/Spannable" />
-		<implements name="java/lang/Appendable" />
-		<implements name="java/lang/CharSequence" />
-		<method name="append(C)Landroid/text/Editable;" />
-		<method name="append(Ljava/lang/CharSequence;)Landroid/text/Editable;" />
-		<method name="append(Ljava/lang/CharSequence;II)Landroid/text/Editable;" />
-		<method name="clear()V" />
-		<method name="clearSpans()V" />
-		<method name="delete(II)Landroid/text/Editable;" />
-		<method name="getFilters()[Landroid/text/InputFilter;" />
-		<method name="insert(ILjava/lang/CharSequence;)Landroid/text/Editable;" />
-		<method name="insert(ILjava/lang/CharSequence;II)Landroid/text/Editable;" />
-		<method name="replace(IILjava/lang/CharSequence;)Landroid/text/Editable;" />
-		<method name="replace(IILjava/lang/CharSequence;II)Landroid/text/Editable;" />
-		<method name="setFilters([Landroid/text/InputFilter;)V" />
-	</class>
-	<class name="android/text/Editable$Factory" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getInstance()Landroid/text/Editable$Factory;" />
-		<method name="newEditable(Ljava/lang/CharSequence;)Landroid/text/Editable;" />
-	</class>
-	<class name="android/text/GetChars" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/CharSequence" />
-		<method name="getChars(II[CI)V" />
-	</class>
-	<class name="android/text/Html" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="escapeHtml(Ljava/lang/CharSequence;)Ljava/lang/String;" since="16" />
-		<method name="fromHtml(Ljava/lang/String;)Landroid/text/Spanned;" />
-		<method name="fromHtml(Ljava/lang/String;Landroid/text/Html$ImageGetter;Landroid/text/Html$TagHandler;)Landroid/text/Spanned;" />
-		<method name="toHtml(Landroid/text/Spanned;)Ljava/lang/String;" />
-	</class>
-	<class name="android/text/Html$ImageGetter" since="1">
-		<extends name="java/lang/Object" />
-		<method name="getDrawable(Ljava/lang/String;)Landroid/graphics/drawable/Drawable;" />
-	</class>
-	<class name="android/text/Html$TagHandler" since="1">
-		<extends name="java/lang/Object" />
-		<method name="handleTag(ZLjava/lang/String;Landroid/text/Editable;Lorg/xml/sax/XMLReader;)V" />
-	</class>
-	<class name="android/text/InputFilter" since="1">
-		<extends name="java/lang/Object" />
-		<method name="filter(Ljava/lang/CharSequence;IILandroid/text/Spanned;II)Ljava/lang/CharSequence;" />
-	</class>
-	<class name="android/text/InputFilter$AllCaps" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/text/InputFilter" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="android/text/InputFilter$LengthFilter" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/text/InputFilter" />
-		<method name="&lt;init>(I)V" />
-	</class>
-	<class name="android/text/InputType" since="3">
-		<extends name="java/lang/Object" />
-		<field name="TYPE_CLASS_DATETIME" />
-		<field name="TYPE_CLASS_NUMBER" />
-		<field name="TYPE_CLASS_PHONE" />
-		<field name="TYPE_CLASS_TEXT" />
-		<field name="TYPE_DATETIME_VARIATION_DATE" />
-		<field name="TYPE_DATETIME_VARIATION_NORMAL" />
-		<field name="TYPE_DATETIME_VARIATION_TIME" />
-		<field name="TYPE_MASK_CLASS" />
-		<field name="TYPE_MASK_FLAGS" />
-		<field name="TYPE_MASK_VARIATION" />
-		<field name="TYPE_NULL" />
-		<field name="TYPE_NUMBER_FLAG_DECIMAL" />
-		<field name="TYPE_NUMBER_FLAG_SIGNED" />
-		<field name="TYPE_NUMBER_VARIATION_NORMAL" since="11" />
-		<field name="TYPE_NUMBER_VARIATION_PASSWORD" since="11" />
-		<field name="TYPE_TEXT_FLAG_AUTO_COMPLETE" />
-		<field name="TYPE_TEXT_FLAG_AUTO_CORRECT" />
-		<field name="TYPE_TEXT_FLAG_CAP_CHARACTERS" />
-		<field name="TYPE_TEXT_FLAG_CAP_SENTENCES" />
-		<field name="TYPE_TEXT_FLAG_CAP_WORDS" />
-		<field name="TYPE_TEXT_FLAG_IME_MULTI_LINE" />
-		<field name="TYPE_TEXT_FLAG_MULTI_LINE" />
-		<field name="TYPE_TEXT_FLAG_NO_SUGGESTIONS" since="5" />
-		<field name="TYPE_TEXT_VARIATION_EMAIL_ADDRESS" />
-		<field name="TYPE_TEXT_VARIATION_EMAIL_SUBJECT" />
-		<field name="TYPE_TEXT_VARIATION_FILTER" />
-		<field name="TYPE_TEXT_VARIATION_LONG_MESSAGE" />
-		<field name="TYPE_TEXT_VARIATION_NORMAL" />
-		<field name="TYPE_TEXT_VARIATION_PASSWORD" />
-		<field name="TYPE_TEXT_VARIATION_PERSON_NAME" />
-		<field name="TYPE_TEXT_VARIATION_PHONETIC" />
-		<field name="TYPE_TEXT_VARIATION_POSTAL_ADDRESS" />
-		<field name="TYPE_TEXT_VARIATION_SHORT_MESSAGE" />
-		<field name="TYPE_TEXT_VARIATION_URI" />
-		<field name="TYPE_TEXT_VARIATION_VISIBLE_PASSWORD" />
-		<field name="TYPE_TEXT_VARIATION_WEB_EDIT_TEXT" />
-		<field name="TYPE_TEXT_VARIATION_WEB_EMAIL_ADDRESS" since="11" />
-		<field name="TYPE_TEXT_VARIATION_WEB_PASSWORD" since="11" />
-	</class>
-	<class name="android/text/Layout" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FF)V" />
-		<method name="draw(Landroid/graphics/Canvas;)V" />
-		<method name="draw(Landroid/graphics/Canvas;Landroid/graphics/Path;Landroid/graphics/Paint;I)V" />
-		<method name="getAlignment()Landroid/text/Layout$Alignment;" />
-		<method name="getBottomPadding()I" />
-		<method name="getCursorPath(ILandroid/graphics/Path;Ljava/lang/CharSequence;)V" />
-		<method name="getDesiredWidth(Ljava/lang/CharSequence;IILandroid/text/TextPaint;)F" />
-		<method name="getDesiredWidth(Ljava/lang/CharSequence;Landroid/text/TextPaint;)F" />
-		<method name="getEllipsisCount(I)I" />
-		<method name="getEllipsisStart(I)I" />
-		<method name="getEllipsizedWidth()I" />
-		<method name="getHeight()I" />
-		<method name="getLineAscent(I)I" />
-		<method name="getLineBaseline(I)I" />
-		<method name="getLineBottom(I)I" />
-		<method name="getLineBounds(ILandroid/graphics/Rect;)I" />
-		<method name="getLineContainsTab(I)Z" />
-		<method name="getLineCount()I" />
-		<method name="getLineDescent(I)I" />
-		<method name="getLineDirections(I)Landroid/text/Layout$Directions;" />
-		<method name="getLineEnd(I)I" />
-		<method name="getLineForOffset(I)I" />
-		<method name="getLineForVertical(I)I" />
-		<method name="getLineLeft(I)F" />
-		<method name="getLineMax(I)F" />
-		<method name="getLineRight(I)F" />
-		<method name="getLineStart(I)I" />
-		<method name="getLineTop(I)I" />
-		<method name="getLineVisibleEnd(I)I" />
-		<method name="getLineWidth(I)F" />
-		<method name="getOffsetForHorizontal(IF)I" />
-		<method name="getOffsetToLeftOf(I)I" />
-		<method name="getOffsetToRightOf(I)I" />
-		<method name="getPaint()Landroid/text/TextPaint;" />
-		<method name="getParagraphAlignment(I)Landroid/text/Layout$Alignment;" />
-		<method name="getParagraphDirection(I)I" />
-		<method name="getParagraphLeft(I)I" />
-		<method name="getParagraphRight(I)I" />
-		<method name="getPrimaryHorizontal(I)F" />
-		<method name="getSecondaryHorizontal(I)F" />
-		<method name="getSelectionPath(IILandroid/graphics/Path;)V" />
-		<method name="getSpacingAdd()F" />
-		<method name="getSpacingMultiplier()F" />
-		<method name="getText()Ljava/lang/CharSequence;" />
-		<method name="getTopPadding()I" />
-		<method name="getWidth()I" />
-		<method name="increaseWidthTo(I)V" />
-		<method name="isRtlCharAt(I)Z" since="14" />
-		<method name="isSpanned()Z" />
-		<field name="DIR_LEFT_TO_RIGHT" />
-		<field name="DIR_RIGHT_TO_LEFT" />
-	</class>
-	<class name="android/text/Layout$Alignment" since="1">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Landroid/text/Layout$Alignment;" />
-		<method name="values()[Landroid/text/Layout$Alignment;" />
-		<field name="ALIGN_CENTER" />
-		<field name="ALIGN_NORMAL" />
-		<field name="ALIGN_OPPOSITE" />
-	</class>
-	<class name="android/text/Layout$Directions" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="android/text/LoginFilter" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/text/InputFilter" />
-		<method name="&lt;init>()V" />
-		<method name="isAllowed(C)Z" />
-		<method name="onInvalidCharacter(C)V" />
-		<method name="onStart()V" />
-		<method name="onStop()V" />
-	</class>
-	<class name="android/text/LoginFilter$PasswordFilterGMail" since="1">
-		<extends name="android/text/LoginFilter" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Z)V" />
-	</class>
-	<class name="android/text/LoginFilter$UsernameFilterGMail" since="1">
-		<extends name="android/text/LoginFilter" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Z)V" />
-	</class>
-	<class name="android/text/LoginFilter$UsernameFilterGeneric" since="1">
-		<extends name="android/text/LoginFilter" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Z)V" />
-	</class>
-	<class name="android/text/NoCopySpan" since="3">
-		<extends name="java/lang/Object" />
-	</class>
-	<class name="android/text/NoCopySpan$Concrete" since="3">
-		<extends name="java/lang/Object" />
-		<implements name="android/text/NoCopySpan" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="android/text/ParcelableSpan" since="3">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="getSpanTypeId()I" />
-	</class>
-	<class name="android/text/Selection" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="extendDown(Landroid/text/Spannable;Landroid/text/Layout;)Z" />
-		<method name="extendLeft(Landroid/text/Spannable;Landroid/text/Layout;)Z" />
-		<method name="extendRight(Landroid/text/Spannable;Landroid/text/Layout;)Z" />
-		<method name="extendSelection(Landroid/text/Spannable;I)V" />
-		<method name="extendToLeftEdge(Landroid/text/Spannable;Landroid/text/Layout;)Z" />
-		<method name="extendToRightEdge(Landroid/text/Spannable;Landroid/text/Layout;)Z" />
-		<method name="extendUp(Landroid/text/Spannable;Landroid/text/Layout;)Z" />
-		<method name="getSelectionEnd(Ljava/lang/CharSequence;)I" />
-		<method name="getSelectionStart(Ljava/lang/CharSequence;)I" />
-		<method name="moveDown(Landroid/text/Spannable;Landroid/text/Layout;)Z" />
-		<method name="moveLeft(Landroid/text/Spannable;Landroid/text/Layout;)Z" />
-		<method name="moveRight(Landroid/text/Spannable;Landroid/text/Layout;)Z" />
-		<method name="moveToLeftEdge(Landroid/text/Spannable;Landroid/text/Layout;)Z" />
-		<method name="moveToRightEdge(Landroid/text/Spannable;Landroid/text/Layout;)Z" />
-		<method name="moveUp(Landroid/text/Spannable;Landroid/text/Layout;)Z" />
-		<method name="removeSelection(Landroid/text/Spannable;)V" />
-		<method name="selectAll(Landroid/text/Spannable;)V" />
-		<method name="setSelection(Landroid/text/Spannable;I)V" />
-		<method name="setSelection(Landroid/text/Spannable;II)V" />
-		<field name="SELECTION_END" />
-		<field name="SELECTION_START" />
-	</class>
-	<class name="android/text/SpanWatcher" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/text/NoCopySpan" since="3" />
-		<method name="onSpanAdded(Landroid/text/Spannable;Ljava/lang/Object;II)V" />
-		<method name="onSpanChanged(Landroid/text/Spannable;Ljava/lang/Object;IIII)V" />
-		<method name="onSpanRemoved(Landroid/text/Spannable;Ljava/lang/Object;II)V" />
-	</class>
-	<class name="android/text/Spannable" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/text/Spanned" />
-		<method name="removeSpan(Ljava/lang/Object;)V" />
-		<method name="setSpan(Ljava/lang/Object;III)V" />
-	</class>
-	<class name="android/text/Spannable$Factory" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getInstance()Landroid/text/Spannable$Factory;" />
-		<method name="newSpannable(Ljava/lang/CharSequence;)Landroid/text/Spannable;" />
-	</class>
-	<class name="android/text/SpannableString" since="1">
-		<extends name="android/text/SpannableStringInternal" />
-		<implements name="android/text/GetChars" />
-		<implements name="android/text/Spannable" />
-		<implements name="java/lang/CharSequence" />
-		<method name="&lt;init>(Ljava/lang/CharSequence;)V" />
-		<method name="valueOf(Ljava/lang/CharSequence;)Landroid/text/SpannableString;" />
-	</class>
-	<class name="android/text/SpannableStringBuilder" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/text/Editable" />
-		<implements name="android/text/GetChars" />
-		<implements name="android/text/Spannable" />
-		<implements name="java/lang/Appendable" />
-		<implements name="java/lang/CharSequence" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/CharSequence;)V" />
-		<method name="&lt;init>(Ljava/lang/CharSequence;II)V" />
-		<method name="append(C)Landroid/text/SpannableStringBuilder;" />
-		<method name="append(Ljava/lang/CharSequence;)Landroid/text/SpannableStringBuilder;" />
-		<method name="append(Ljava/lang/CharSequence;II)Landroid/text/SpannableStringBuilder;" />
-		<method name="delete(II)Landroid/text/SpannableStringBuilder;" />
-		<method name="getTextRunCursor(IIIIILandroid/graphics/Paint;)I" since="11" />
-		<method name="insert(ILjava/lang/CharSequence;)Landroid/text/SpannableStringBuilder;" />
-		<method name="insert(ILjava/lang/CharSequence;II)Landroid/text/SpannableStringBuilder;" />
-		<method name="replace(IILjava/lang/CharSequence;)Landroid/text/SpannableStringBuilder;" />
-		<method name="replace(IILjava/lang/CharSequence;II)Landroid/text/SpannableStringBuilder;" />
-		<method name="valueOf(Ljava/lang/CharSequence;)Landroid/text/SpannableStringBuilder;" />
-	</class>
-	<class name="android/text/SpannableStringInternal" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="charAt(I)C" />
-		<method name="getChars(II[CI)V" />
-		<method name="getSpanEnd(Ljava/lang/Object;)I" />
-		<method name="getSpanFlags(Ljava/lang/Object;)I" />
-		<method name="getSpanStart(Ljava/lang/Object;)I" />
-		<method name="getSpans(IILjava/lang/Class;)[Ljava/lang/Object;" />
-		<method name="length()I" />
-		<method name="nextSpanTransition(IILjava/lang/Class;)I" />
-	</class>
-	<class name="android/text/Spanned" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/CharSequence" />
-		<method name="getSpanEnd(Ljava/lang/Object;)I" />
-		<method name="getSpanFlags(Ljava/lang/Object;)I" />
-		<method name="getSpanStart(Ljava/lang/Object;)I" />
-		<method name="getSpans(IILjava/lang/Class;)[Ljava/lang/Object;" />
-		<method name="nextSpanTransition(IILjava/lang/Class;)I" />
-		<field name="SPAN_COMPOSING" since="3" />
-		<field name="SPAN_EXCLUSIVE_EXCLUSIVE" />
-		<field name="SPAN_EXCLUSIVE_INCLUSIVE" />
-		<field name="SPAN_INCLUSIVE_EXCLUSIVE" />
-		<field name="SPAN_INCLUSIVE_INCLUSIVE" />
-		<field name="SPAN_INTERMEDIATE" since="3" />
-		<field name="SPAN_MARK_MARK" />
-		<field name="SPAN_MARK_POINT" />
-		<field name="SPAN_PARAGRAPH" />
-		<field name="SPAN_POINT_MARK" />
-		<field name="SPAN_POINT_MARK_MASK" since="3" />
-		<field name="SPAN_POINT_POINT" />
-		<field name="SPAN_PRIORITY" />
-		<field name="SPAN_PRIORITY_SHIFT" />
-		<field name="SPAN_USER" />
-		<field name="SPAN_USER_SHIFT" />
-	</class>
-	<class name="android/text/SpannedString" since="1">
-		<extends name="android/text/SpannableStringInternal" />
-		<implements name="android/text/GetChars" />
-		<implements name="android/text/Spanned" />
-		<implements name="java/lang/CharSequence" />
-		<method name="&lt;init>(Ljava/lang/CharSequence;)V" />
-		<method name="valueOf(Ljava/lang/CharSequence;)Landroid/text/SpannedString;" />
-	</class>
-	<class name="android/text/StaticLayout" since="1">
-		<extends name="android/text/Layout" />
-		<method name="&lt;init>(Ljava/lang/CharSequence;IILandroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFZ)V" />
-		<method name="&lt;init>(Ljava/lang/CharSequence;IILandroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFZLandroid/text/TextUtils$TruncateAt;I)V" />
-		<method name="&lt;init>(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFZ)V" />
-	</class>
-	<class name="android/text/TextDirectionHeuristic" since="18">
-		<extends name="java/lang/Object" />
-		<method name="isRtl(Ljava/lang/CharSequence;II)Z" />
-		<method name="isRtl([CII)Z" />
-	</class>
-	<class name="android/text/TextDirectionHeuristics" since="18">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="ANYRTL_LTR" />
-		<field name="FIRSTSTRONG_LTR" />
-		<field name="FIRSTSTRONG_RTL" />
-		<field name="LOCALE" />
-		<field name="LTR" />
-		<field name="RTL" />
-	</class>
-	<class name="android/text/TextPaint" since="1">
-		<extends name="android/graphics/Paint" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(I)V" />
-		<method name="&lt;init>(Landroid/graphics/Paint;)V" />
-		<method name="set(Landroid/text/TextPaint;)V" />
-		<field name="baselineShift" />
-		<field name="bgColor" />
-		<field name="density" since="5" />
-		<field name="drawableState" />
-		<field name="linkColor" />
-	</class>
-	<class name="android/text/TextUtils" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="commaEllipsize(Ljava/lang/CharSequence;Landroid/text/TextPaint;FLjava/lang/String;Ljava/lang/String;)Ljava/lang/CharSequence;" />
-		<method name="concat([Ljava/lang/CharSequence;)Ljava/lang/CharSequence;" />
-		<method name="copySpansFrom(Landroid/text/Spanned;IILjava/lang/Class;Landroid/text/Spannable;I)V" />
-		<method name="dumpSpans(Ljava/lang/CharSequence;Landroid/util/Printer;Ljava/lang/String;)V" since="3" />
-		<method name="ellipsize(Ljava/lang/CharSequence;Landroid/text/TextPaint;FLandroid/text/TextUtils$TruncateAt;)Ljava/lang/CharSequence;" />
-		<method name="ellipsize(Ljava/lang/CharSequence;Landroid/text/TextPaint;FLandroid/text/TextUtils$TruncateAt;ZLandroid/text/TextUtils$EllipsizeCallback;)Ljava/lang/CharSequence;" />
-		<method name="equals(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Z" />
-		<method name="expandTemplate(Ljava/lang/CharSequence;[Ljava/lang/CharSequence;)Ljava/lang/CharSequence;" />
-		<method name="getCapsMode(Ljava/lang/CharSequence;II)I" since="3" />
-		<method name="getChars(Ljava/lang/CharSequence;II[CI)V" />
-		<method name="getLayoutDirectionFromLocale(Ljava/util/Locale;)I" since="17" />
-		<method name="getOffsetAfter(Ljava/lang/CharSequence;I)I" />
-		<method name="getOffsetBefore(Ljava/lang/CharSequence;I)I" />
-		<method name="getReverse(Ljava/lang/CharSequence;II)Ljava/lang/CharSequence;" />
-		<method name="getTrimmedLength(Ljava/lang/CharSequence;)I" />
-		<method name="htmlEncode(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="indexOf(Ljava/lang/CharSequence;C)I" />
-		<method name="indexOf(Ljava/lang/CharSequence;CI)I" />
-		<method name="indexOf(Ljava/lang/CharSequence;CII)I" />
-		<method name="indexOf(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)I" />
-		<method name="indexOf(Ljava/lang/CharSequence;Ljava/lang/CharSequence;I)I" />
-		<method name="indexOf(Ljava/lang/CharSequence;Ljava/lang/CharSequence;II)I" />
-		<method name="isDigitsOnly(Ljava/lang/CharSequence;)Z" />
-		<method name="isEmpty(Ljava/lang/CharSequence;)Z" />
-		<method name="isGraphic(C)Z" />
-		<method name="isGraphic(Ljava/lang/CharSequence;)Z" />
-		<method name="join(Ljava/lang/CharSequence;Ljava/lang/Iterable;)Ljava/lang/String;" />
-		<method name="join(Ljava/lang/CharSequence;[Ljava/lang/Object;)Ljava/lang/String;" />
-		<method name="lastIndexOf(Ljava/lang/CharSequence;C)I" />
-		<method name="lastIndexOf(Ljava/lang/CharSequence;CI)I" />
-		<method name="lastIndexOf(Ljava/lang/CharSequence;CII)I" />
-		<method name="regionMatches(Ljava/lang/CharSequence;ILjava/lang/CharSequence;II)Z" />
-		<method name="replace(Ljava/lang/CharSequence;[Ljava/lang/String;[Ljava/lang/CharSequence;)Ljava/lang/CharSequence;" />
-		<method name="split(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;" />
-		<method name="split(Ljava/lang/String;Ljava/util/regex/Pattern;)[Ljava/lang/String;" />
-		<method name="stringOrSpannedString(Ljava/lang/CharSequence;)Ljava/lang/CharSequence;" />
-		<method name="substring(Ljava/lang/CharSequence;II)Ljava/lang/String;" />
-		<method name="writeToParcel(Ljava/lang/CharSequence;Landroid/os/Parcel;I)V" />
-		<field name="CAP_MODE_CHARACTERS" since="3" />
-		<field name="CAP_MODE_SENTENCES" since="3" />
-		<field name="CAP_MODE_WORDS" since="3" />
-		<field name="CHAR_SEQUENCE_CREATOR" />
-	</class>
-	<class name="android/text/TextUtils$EllipsizeCallback" since="1">
-		<extends name="java/lang/Object" />
-		<method name="ellipsized(II)V" />
-	</class>
-	<class name="android/text/TextUtils$SimpleStringSplitter" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/text/TextUtils$StringSplitter" />
-		<implements name="java/util/Iterator" />
-		<method name="&lt;init>(C)V" />
-		<method name="next()Ljava/lang/String;" />
-	</class>
-	<class name="android/text/TextUtils$StringSplitter" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/Iterable" />
-		<method name="setString(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/text/TextUtils$TruncateAt" since="1">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Landroid/text/TextUtils$TruncateAt;" />
-		<method name="values()[Landroid/text/TextUtils$TruncateAt;" />
-		<field name="END" />
-		<field name="MARQUEE" since="2" />
-		<field name="MIDDLE" />
-		<field name="START" />
-	</class>
-	<class name="android/text/TextWatcher" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/text/NoCopySpan" since="3" />
-		<method name="afterTextChanged(Landroid/text/Editable;)V" />
-		<method name="beforeTextChanged(Ljava/lang/CharSequence;III)V" />
-		<method name="onTextChanged(Ljava/lang/CharSequence;III)V" />
-	</class>
-	<class name="android/text/format/DateFormat" since="3">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="format(Ljava/lang/CharSequence;J)Ljava/lang/CharSequence;" />
-		<method name="format(Ljava/lang/CharSequence;Ljava/util/Calendar;)Ljava/lang/CharSequence;" />
-		<method name="format(Ljava/lang/CharSequence;Ljava/util/Date;)Ljava/lang/CharSequence;" />
-		<method name="getBestDateTimePattern(Ljava/util/Locale;Ljava/lang/String;)Ljava/lang/String;" since="18" />
-		<method name="getDateFormat(Landroid/content/Context;)Ljava/text/DateFormat;" />
-		<method name="getDateFormatOrder(Landroid/content/Context;)[C" />
-		<method name="getLongDateFormat(Landroid/content/Context;)Ljava/text/DateFormat;" />
-		<method name="getMediumDateFormat(Landroid/content/Context;)Ljava/text/DateFormat;" />
-		<method name="getTimeFormat(Landroid/content/Context;)Ljava/text/DateFormat;" />
-		<method name="is24HourFormat(Landroid/content/Context;)Z" />
-		<field name="AM_PM" />
-		<field name="CAPITAL_AM_PM" />
-		<field name="DATE" />
-		<field name="DAY" />
-		<field name="HOUR" />
-		<field name="HOUR_OF_DAY" />
-		<field name="MINUTE" />
-		<field name="MONTH" />
-		<field name="QUOTE" />
-		<field name="SECONDS" />
-		<field name="STANDALONE_MONTH" since="17" />
-		<field name="TIME_ZONE" />
-		<field name="YEAR" />
-	</class>
-	<class name="android/text/format/DateUtils" since="3">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="formatDateRange(Landroid/content/Context;JJI)Ljava/lang/String;" />
-		<method name="formatDateRange(Landroid/content/Context;Ljava/util/Formatter;JJI)Ljava/util/Formatter;" since="5" />
-		<method name="formatDateRange(Landroid/content/Context;Ljava/util/Formatter;JJILjava/lang/String;)Ljava/util/Formatter;" since="9" />
-		<method name="formatDateTime(Landroid/content/Context;JI)Ljava/lang/String;" />
-		<method name="formatElapsedTime(J)Ljava/lang/String;" />
-		<method name="formatElapsedTime(Ljava/lang/StringBuilder;J)Ljava/lang/String;" />
-		<method name="formatSameDayTime(JJII)Ljava/lang/CharSequence;" />
-		<method name="getAMPMString(I)Ljava/lang/String;" />
-		<method name="getDayOfWeekString(II)Ljava/lang/String;" />
-		<method name="getMonthString(II)Ljava/lang/String;" />
-		<method name="getRelativeDateTimeString(Landroid/content/Context;JJJI)Ljava/lang/CharSequence;" />
-		<method name="getRelativeTimeSpanString(J)Ljava/lang/CharSequence;" />
-		<method name="getRelativeTimeSpanString(JJJ)Ljava/lang/CharSequence;" />
-		<method name="getRelativeTimeSpanString(JJJI)Ljava/lang/CharSequence;" />
-		<method name="getRelativeTimeSpanString(Landroid/content/Context;J)Ljava/lang/CharSequence;" />
-		<method name="getRelativeTimeSpanString(Landroid/content/Context;JZ)Ljava/lang/CharSequence;" />
-		<method name="isToday(J)Z" />
-		<field name="ABBREV_MONTH_FORMAT" />
-		<field name="ABBREV_WEEKDAY_FORMAT" />
-		<field name="DAY_IN_MILLIS" />
-		<field name="FORMAT_12HOUR" />
-		<field name="FORMAT_24HOUR" />
-		<field name="FORMAT_ABBREV_ALL" />
-		<field name="FORMAT_ABBREV_MONTH" />
-		<field name="FORMAT_ABBREV_RELATIVE" />
-		<field name="FORMAT_ABBREV_TIME" />
-		<field name="FORMAT_ABBREV_WEEKDAY" />
-		<field name="FORMAT_CAP_AMPM" />
-		<field name="FORMAT_CAP_MIDNIGHT" />
-		<field name="FORMAT_CAP_NOON" />
-		<field name="FORMAT_CAP_NOON_MIDNIGHT" />
-		<field name="FORMAT_NO_MIDNIGHT" />
-		<field name="FORMAT_NO_MONTH_DAY" />
-		<field name="FORMAT_NO_NOON" />
-		<field name="FORMAT_NO_NOON_MIDNIGHT" />
-		<field name="FORMAT_NO_YEAR" />
-		<field name="FORMAT_NUMERIC_DATE" />
-		<field name="FORMAT_SHOW_DATE" />
-		<field name="FORMAT_SHOW_TIME" />
-		<field name="FORMAT_SHOW_WEEKDAY" />
-		<field name="FORMAT_SHOW_YEAR" />
-		<field name="FORMAT_UTC" />
-		<field name="HOUR_IN_MILLIS" />
-		<field name="HOUR_MINUTE_24" />
-		<field name="LENGTH_LONG" />
-		<field name="LENGTH_MEDIUM" />
-		<field name="LENGTH_SHORT" />
-		<field name="LENGTH_SHORTER" />
-		<field name="LENGTH_SHORTEST" />
-		<field name="MINUTE_IN_MILLIS" />
-		<field name="MONTH_DAY_FORMAT" />
-		<field name="MONTH_FORMAT" />
-		<field name="NUMERIC_MONTH_FORMAT" />
-		<field name="SECOND_IN_MILLIS" />
-		<field name="WEEKDAY_FORMAT" />
-		<field name="WEEK_IN_MILLIS" />
-		<field name="YEAR_FORMAT" />
-		<field name="YEAR_FORMAT_TWO_DIGITS" />
-		<field name="YEAR_IN_MILLIS" />
-		<field name="sameMonthTable" />
-		<field name="sameYearTable" />
-	</class>
-	<class name="android/text/format/Formatter" since="3">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="formatFileSize(Landroid/content/Context;J)Ljava/lang/String;" />
-		<method name="formatIpAddress(I)Ljava/lang/String;" />
-		<method name="formatShortFileSize(Landroid/content/Context;J)Ljava/lang/String;" since="5" />
-	</class>
-	<class name="android/text/format/Time" since="3">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/text/format/Time;)V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="after(Landroid/text/format/Time;)Z" />
-		<method name="before(Landroid/text/format/Time;)Z" />
-		<method name="clear(Ljava/lang/String;)V" />
-		<method name="compare(Landroid/text/format/Time;Landroid/text/format/Time;)I" />
-		<method name="format(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="format2445()Ljava/lang/String;" />
-		<method name="format3339(Z)Ljava/lang/String;" />
-		<method name="getActualMaximum(I)I" />
-		<method name="getCurrentTimezone()Ljava/lang/String;" />
-		<method name="getJulianDay(JJ)I" />
-		<method name="getJulianMondayFromWeeksSinceEpoch(I)I" since="11" />
-		<method name="getWeekNumber()I" />
-		<method name="getWeeksSinceEpochFromJulianDay(II)I" since="11" />
-		<method name="isEpoch(Landroid/text/format/Time;)Z" />
-		<method name="normalize(Z)J" />
-		<method name="parse(Ljava/lang/String;)Z" />
-		<method name="parse3339(Ljava/lang/String;)Z" />
-		<method name="set(III)V" />
-		<method name="set(IIIIII)V" />
-		<method name="set(J)V" />
-		<method name="set(Landroid/text/format/Time;)V" />
-		<method name="setJulianDay(I)J" />
-		<method name="setToNow()V" />
-		<method name="switchTimezone(Ljava/lang/String;)V" />
-		<method name="toMillis(Z)J" />
-		<field name="EPOCH_JULIAN_DAY" />
-		<field name="FRIDAY" />
-		<field name="HOUR" />
-		<field name="MINUTE" />
-		<field name="MONDAY" />
-		<field name="MONDAY_BEFORE_JULIAN_EPOCH" since="11" />
-		<field name="MONTH" />
-		<field name="MONTH_DAY" />
-		<field name="SATURDAY" />
-		<field name="SECOND" />
-		<field name="SUNDAY" />
-		<field name="THURSDAY" />
-		<field name="TIMEZONE_UTC" />
-		<field name="TUESDAY" />
-		<field name="WEDNESDAY" />
-		<field name="WEEK_DAY" />
-		<field name="WEEK_NUM" />
-		<field name="YEAR" />
-		<field name="YEAR_DAY" />
-		<field name="allDay" />
-		<field name="gmtoff" />
-		<field name="hour" />
-		<field name="isDst" />
-		<field name="minute" />
-		<field name="month" />
-		<field name="monthDay" />
-		<field name="second" />
-		<field name="timezone" />
-		<field name="weekDay" />
-		<field name="year" />
-		<field name="yearDay" />
-	</class>
-	<class name="android/text/method/ArrowKeyMovementMethod" since="1">
-		<extends name="android/text/method/BaseMovementMethod" since="11" />
-		<extends name="java/lang/Object" />
-		<implements name="android/text/method/MovementMethod" />
-		<method name="&lt;init>()V" />
-		<method name="getInstance()Landroid/text/method/MovementMethod;" />
-	</class>
-	<class name="android/text/method/BaseKeyListener" since="1">
-		<extends name="android/text/method/MetaKeyKeyListener" />
-		<implements name="android/text/method/KeyListener" />
-		<method name="&lt;init>()V" />
-		<method name="backspace(Landroid/view/View;Landroid/text/Editable;ILandroid/view/KeyEvent;)Z" />
-		<method name="forwardDelete(Landroid/view/View;Landroid/text/Editable;ILandroid/view/KeyEvent;)Z" since="11" />
-	</class>
-	<class name="android/text/method/BaseMovementMethod" since="11">
-		<extends name="java/lang/Object" />
-		<implements name="android/text/method/MovementMethod" />
-		<method name="&lt;init>()V" />
-		<method name="bottom(Landroid/widget/TextView;Landroid/text/Spannable;)Z" />
-		<method name="down(Landroid/widget/TextView;Landroid/text/Spannable;)Z" />
-		<method name="end(Landroid/widget/TextView;Landroid/text/Spannable;)Z" />
-		<method name="getMovementMetaState(Landroid/text/Spannable;Landroid/view/KeyEvent;)I" />
-		<method name="handleMovementKey(Landroid/widget/TextView;Landroid/text/Spannable;IILandroid/view/KeyEvent;)Z" />
-		<method name="home(Landroid/widget/TextView;Landroid/text/Spannable;)Z" />
-		<method name="left(Landroid/widget/TextView;Landroid/text/Spannable;)Z" />
-		<method name="lineEnd(Landroid/widget/TextView;Landroid/text/Spannable;)Z" />
-		<method name="lineStart(Landroid/widget/TextView;Landroid/text/Spannable;)Z" />
-		<method name="pageDown(Landroid/widget/TextView;Landroid/text/Spannable;)Z" />
-		<method name="pageUp(Landroid/widget/TextView;Landroid/text/Spannable;)Z" />
-		<method name="right(Landroid/widget/TextView;Landroid/text/Spannable;)Z" />
-		<method name="top(Landroid/widget/TextView;Landroid/text/Spannable;)Z" />
-		<method name="up(Landroid/widget/TextView;Landroid/text/Spannable;)Z" />
-	</class>
-	<class name="android/text/method/CharacterPickerDialog" since="1">
-		<extends name="android/app/Dialog" />
-		<implements name="android/view/View$OnClickListener" />
-		<implements name="android/widget/AdapterView$OnItemClickListener" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/view/View;Landroid/text/Editable;Ljava/lang/String;Z)V" />
-	</class>
-	<class name="android/text/method/DateKeyListener" since="1">
-		<extends name="android/text/method/NumberKeyListener" />
-		<method name="&lt;init>()V" />
-		<method name="getInstance()Landroid/text/method/DateKeyListener;" />
-		<field name="CHARACTERS" />
-	</class>
-	<class name="android/text/method/DateTimeKeyListener" since="1">
-		<extends name="android/text/method/NumberKeyListener" />
-		<method name="&lt;init>()V" />
-		<method name="getInstance()Landroid/text/method/DateTimeKeyListener;" />
-		<field name="CHARACTERS" />
-	</class>
-	<class name="android/text/method/DialerKeyListener" since="1">
-		<extends name="android/text/method/NumberKeyListener" />
-		<method name="&lt;init>()V" />
-		<method name="getInstance()Landroid/text/method/DialerKeyListener;" />
-		<field name="CHARACTERS" />
-	</class>
-	<class name="android/text/method/DigitsKeyListener" since="1">
-		<extends name="android/text/method/NumberKeyListener" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(ZZ)V" />
-		<method name="getInstance()Landroid/text/method/DigitsKeyListener;" />
-		<method name="getInstance(Ljava/lang/String;)Landroid/text/method/DigitsKeyListener;" />
-		<method name="getInstance(ZZ)Landroid/text/method/DigitsKeyListener;" />
-	</class>
-	<class name="android/text/method/HideReturnsTransformationMethod" since="1">
-		<extends name="android/text/method/ReplacementTransformationMethod" />
-		<method name="&lt;init>()V" />
-		<method name="getInstance()Landroid/text/method/HideReturnsTransformationMethod;" />
-	</class>
-	<class name="android/text/method/KeyListener" since="1">
-		<extends name="java/lang/Object" />
-		<method name="clearMetaKeyState(Landroid/view/View;Landroid/text/Editable;I)V" since="3" />
-		<method name="getInputType()I" since="3" />
-		<method name="onKeyDown(Landroid/view/View;Landroid/text/Editable;ILandroid/view/KeyEvent;)Z" />
-		<method name="onKeyOther(Landroid/view/View;Landroid/text/Editable;Landroid/view/KeyEvent;)Z" since="3" />
-		<method name="onKeyUp(Landroid/view/View;Landroid/text/Editable;ILandroid/view/KeyEvent;)Z" />
-	</class>
-	<class name="android/text/method/LinkMovementMethod" since="1">
-		<extends name="android/text/method/ScrollingMovementMethod" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="android/text/method/MetaKeyKeyListener" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="adjustMetaAfterKeypress(J)J" since="3" />
-		<method name="adjustMetaAfterKeypress(Landroid/text/Spannable;)V" />
-		<method name="clearMetaKeyState(JI)J" since="3" />
-		<method name="clearMetaKeyState(Landroid/text/Editable;I)V" since="3" />
-		<method name="clearMetaKeyState(Landroid/view/View;Landroid/text/Editable;I)V" since="3" />
-		<method name="getMetaState(J)I" since="3" />
-		<method name="getMetaState(JI)I" since="3" />
-		<method name="getMetaState(Ljava/lang/CharSequence;)I" />
-		<method name="getMetaState(Ljava/lang/CharSequence;I)I" />
-		<method name="getMetaState(Ljava/lang/CharSequence;ILandroid/view/KeyEvent;)I" since="19" />
-		<method name="getMetaState(Ljava/lang/CharSequence;Landroid/view/KeyEvent;)I" since="19" />
-		<method name="handleKeyDown(JILandroid/view/KeyEvent;)J" since="3" />
-		<method name="handleKeyUp(JILandroid/view/KeyEvent;)J" since="3" />
-		<method name="isMetaTracker(Ljava/lang/CharSequence;Ljava/lang/Object;)Z" />
-		<method name="isSelectingMetaTracker(Ljava/lang/CharSequence;Ljava/lang/Object;)Z" since="3" />
-		<method name="onKeyDown(Landroid/view/View;Landroid/text/Editable;ILandroid/view/KeyEvent;)Z" />
-		<method name="onKeyUp(Landroid/view/View;Landroid/text/Editable;ILandroid/view/KeyEvent;)Z" />
-		<method name="resetLockedMeta(J)J" since="3" />
-		<method name="resetLockedMeta(Landroid/text/Spannable;)V" />
-		<method name="resetMetaState(Landroid/text/Spannable;)V" />
-		<field name="META_ALT_LOCKED" />
-		<field name="META_ALT_ON" />
-		<field name="META_CAP_LOCKED" />
-		<field name="META_SHIFT_ON" />
-		<field name="META_SYM_LOCKED" />
-		<field name="META_SYM_ON" />
-	</class>
-	<class name="android/text/method/MovementMethod" since="1">
-		<extends name="java/lang/Object" />
-		<method name="canSelectArbitrarily()Z" />
-		<method name="initialize(Landroid/widget/TextView;Landroid/text/Spannable;)V" />
-		<method name="onGenericMotionEvent(Landroid/widget/TextView;Landroid/text/Spannable;Landroid/view/MotionEvent;)Z" since="12" />
-		<method name="onKeyDown(Landroid/widget/TextView;Landroid/text/Spannable;ILandroid/view/KeyEvent;)Z" />
-		<method name="onKeyOther(Landroid/widget/TextView;Landroid/text/Spannable;Landroid/view/KeyEvent;)Z" since="3" />
-		<method name="onKeyUp(Landroid/widget/TextView;Landroid/text/Spannable;ILandroid/view/KeyEvent;)Z" />
-		<method name="onTakeFocus(Landroid/widget/TextView;Landroid/text/Spannable;I)V" />
-		<method name="onTouchEvent(Landroid/widget/TextView;Landroid/text/Spannable;Landroid/view/MotionEvent;)Z" />
-		<method name="onTrackballEvent(Landroid/widget/TextView;Landroid/text/Spannable;Landroid/view/MotionEvent;)Z" />
-	</class>
-	<class name="android/text/method/MultiTapKeyListener" since="1">
-		<extends name="android/text/method/BaseKeyListener" />
-		<implements name="android/text/SpanWatcher" />
-		<method name="&lt;init>(Landroid/text/method/TextKeyListener$Capitalize;Z)V" />
-		<method name="getInstance(ZLandroid/text/method/TextKeyListener$Capitalize;)Landroid/text/method/MultiTapKeyListener;" />
-	</class>
-	<class name="android/text/method/NumberKeyListener" since="1">
-		<extends name="android/text/method/BaseKeyListener" />
-		<implements name="android/text/InputFilter" />
-		<method name="&lt;init>()V" />
-		<method name="getAcceptedChars()[C" />
-		<method name="lookup(Landroid/view/KeyEvent;Landroid/text/Spannable;)I" />
-		<method name="ok([CC)Z" />
-	</class>
-	<class name="android/text/method/PasswordTransformationMethod" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/text/TextWatcher" />
-		<implements name="android/text/method/TransformationMethod" />
-		<method name="&lt;init>()V" />
-		<method name="getInstance()Landroid/text/method/PasswordTransformationMethod;" />
-	</class>
-	<class name="android/text/method/QwertyKeyListener" since="1">
-		<extends name="android/text/method/BaseKeyListener" />
-		<method name="&lt;init>(Landroid/text/method/TextKeyListener$Capitalize;Z)V" />
-		<method name="getInstance(ZLandroid/text/method/TextKeyListener$Capitalize;)Landroid/text/method/QwertyKeyListener;" />
-		<method name="getInstanceForFullKeyboard()Landroid/text/method/QwertyKeyListener;" since="11" />
-		<method name="markAsReplaced(Landroid/text/Spannable;IILjava/lang/String;)V" />
-	</class>
-	<class name="android/text/method/ReplacementTransformationMethod" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/text/method/TransformationMethod" />
-		<method name="&lt;init>()V" />
-		<method name="getOriginal()[C" />
-		<method name="getReplacement()[C" />
-	</class>
-	<class name="android/text/method/ScrollingMovementMethod" since="1">
-		<extends name="android/text/method/BaseMovementMethod" since="11" />
-		<extends name="java/lang/Object" />
-		<implements name="android/text/method/MovementMethod" />
-		<method name="&lt;init>()V" />
-		<method name="down(Landroid/widget/TextView;Landroid/text/Spannable;)Z" />
-		<method name="getInstance()Landroid/text/method/MovementMethod;" />
-		<method name="left(Landroid/widget/TextView;Landroid/text/Spannable;)Z" />
-		<method name="right(Landroid/widget/TextView;Landroid/text/Spannable;)Z" />
-		<method name="up(Landroid/widget/TextView;Landroid/text/Spannable;)Z" />
-	</class>
-	<class name="android/text/method/SingleLineTransformationMethod" since="1">
-		<extends name="android/text/method/ReplacementTransformationMethod" />
-		<method name="&lt;init>()V" />
-		<method name="getInstance()Landroid/text/method/SingleLineTransformationMethod;" />
-	</class>
-	<class name="android/text/method/TextKeyListener" since="1">
-		<extends name="android/text/method/BaseKeyListener" />
-		<implements name="android/text/SpanWatcher" />
-		<method name="&lt;init>(Landroid/text/method/TextKeyListener$Capitalize;Z)V" />
-		<method name="clear(Landroid/text/Editable;)V" />
-		<method name="getInstance()Landroid/text/method/TextKeyListener;" />
-		<method name="getInstance(ZLandroid/text/method/TextKeyListener$Capitalize;)Landroid/text/method/TextKeyListener;" />
-		<method name="release()V" />
-		<method name="shouldCap(Landroid/text/method/TextKeyListener$Capitalize;Ljava/lang/CharSequence;I)Z" />
-	</class>
-	<class name="android/text/method/TextKeyListener$Capitalize" since="1">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Landroid/text/method/TextKeyListener$Capitalize;" />
-		<method name="values()[Landroid/text/method/TextKeyListener$Capitalize;" />
-		<field name="CHARACTERS" />
-		<field name="NONE" />
-		<field name="SENTENCES" />
-		<field name="WORDS" />
-	</class>
-	<class name="android/text/method/TimeKeyListener" since="1">
-		<extends name="android/text/method/NumberKeyListener" />
-		<method name="&lt;init>()V" />
-		<method name="getInstance()Landroid/text/method/TimeKeyListener;" />
-		<field name="CHARACTERS" />
-	</class>
-	<class name="android/text/method/Touch" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getInitialScrollX(Landroid/widget/TextView;Landroid/text/Spannable;)I" since="3" />
-		<method name="getInitialScrollY(Landroid/widget/TextView;Landroid/text/Spannable;)I" since="3" />
-		<method name="onTouchEvent(Landroid/widget/TextView;Landroid/text/Spannable;Landroid/view/MotionEvent;)Z" />
-		<method name="scrollTo(Landroid/widget/TextView;Landroid/text/Layout;II)V" />
-	</class>
-	<class name="android/text/method/TransformationMethod" since="1">
-		<extends name="java/lang/Object" />
-		<method name="getTransformation(Ljava/lang/CharSequence;Landroid/view/View;)Ljava/lang/CharSequence;" />
-		<method name="onFocusChanged(Landroid/view/View;Ljava/lang/CharSequence;ZILandroid/graphics/Rect;)V" />
-	</class>
-	<class name="android/text/style/AbsoluteSizeSpan" since="1">
-		<extends name="android/text/style/MetricAffectingSpan" />
-		<implements name="android/text/ParcelableSpan" since="3" />
-		<method name="&lt;init>(I)V" />
-		<method name="&lt;init>(IZ)V" since="5" />
-		<method name="&lt;init>(Landroid/os/Parcel;)V" since="3" />
-		<method name="getDip()Z" since="5" />
-		<method name="getSize()I" />
-	</class>
-	<class name="android/text/style/AlignmentSpan" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/text/style/ParagraphStyle" />
-		<method name="getAlignment()Landroid/text/Layout$Alignment;" />
-	</class>
-	<class name="android/text/style/AlignmentSpan$Standard" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/text/ParcelableSpan" since="3" />
-		<implements name="android/text/style/AlignmentSpan" />
-		<method name="&lt;init>(Landroid/os/Parcel;)V" since="3" />
-		<method name="&lt;init>(Landroid/text/Layout$Alignment;)V" />
-	</class>
-	<class name="android/text/style/BackgroundColorSpan" since="1">
-		<extends name="android/text/style/CharacterStyle" />
-		<implements name="android/text/ParcelableSpan" since="3" />
-		<implements name="android/text/style/UpdateAppearance" since="3" />
-		<method name="&lt;init>(I)V" />
-		<method name="&lt;init>(Landroid/os/Parcel;)V" since="3" />
-		<method name="getBackgroundColor()I" />
-	</class>
-	<class name="android/text/style/BulletSpan" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/text/ParcelableSpan" since="3" />
-		<implements name="android/text/style/LeadingMarginSpan" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(I)V" />
-		<method name="&lt;init>(II)V" />
-		<method name="&lt;init>(Landroid/os/Parcel;)V" since="3" />
-		<field name="STANDARD_GAP_WIDTH" />
-	</class>
-	<class name="android/text/style/CharacterStyle" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getUnderlying()Landroid/text/style/CharacterStyle;" />
-		<method name="updateDrawState(Landroid/text/TextPaint;)V" />
-		<method name="wrap(Landroid/text/style/CharacterStyle;)Landroid/text/style/CharacterStyle;" />
-	</class>
-	<class name="android/text/style/ClickableSpan" since="1">
-		<extends name="android/text/style/CharacterStyle" />
-		<implements name="android/text/style/UpdateAppearance" since="3" />
-		<method name="&lt;init>()V" />
-		<method name="onClick(Landroid/view/View;)V" />
-	</class>
-	<class name="android/text/style/DrawableMarginSpan" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/text/style/LeadingMarginSpan" />
-		<implements name="android/text/style/LineHeightSpan" />
-		<method name="&lt;init>(Landroid/graphics/drawable/Drawable;)V" />
-		<method name="&lt;init>(Landroid/graphics/drawable/Drawable;I)V" />
-	</class>
-	<class name="android/text/style/DynamicDrawableSpan" since="1">
-		<extends name="android/text/style/ReplacementSpan" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(I)V" since="3" />
-		<method name="getDrawable()Landroid/graphics/drawable/Drawable;" />
-		<method name="getVerticalAlignment()I" since="3" />
-		<field name="ALIGN_BASELINE" since="3" />
-		<field name="ALIGN_BOTTOM" since="3" />
-		<field name="mVerticalAlignment" since="3" />
-	</class>
-	<class name="android/text/style/EasyEditSpan" since="14">
-		<extends name="java/lang/Object" />
-		<implements name="android/text/ParcelableSpan" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/app/PendingIntent;)V" since="18" />
-		<method name="&lt;init>(Landroid/os/Parcel;)V" since="18" />
-		<field name="EXTRA_TEXT_CHANGED_TYPE" since="18" />
-		<field name="TEXT_DELETED" since="18" />
-		<field name="TEXT_MODIFIED" since="18" />
-	</class>
-	<class name="android/text/style/ForegroundColorSpan" since="1">
-		<extends name="android/text/style/CharacterStyle" />
-		<implements name="android/text/ParcelableSpan" since="3" />
-		<implements name="android/text/style/UpdateAppearance" since="3" />
-		<method name="&lt;init>(I)V" />
-		<method name="&lt;init>(Landroid/os/Parcel;)V" since="3" />
-		<method name="getForegroundColor()I" />
-	</class>
-	<class name="android/text/style/IconMarginSpan" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/text/style/LeadingMarginSpan" />
-		<implements name="android/text/style/LineHeightSpan" />
-		<method name="&lt;init>(Landroid/graphics/Bitmap;)V" />
-		<method name="&lt;init>(Landroid/graphics/Bitmap;I)V" />
-	</class>
-	<class name="android/text/style/ImageSpan" since="1">
-		<extends name="android/text/style/DynamicDrawableSpan" />
-		<method name="&lt;init>(Landroid/content/Context;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;II)V" since="3" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/graphics/Bitmap;)V" since="4" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/graphics/Bitmap;I)V" since="4" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/net/Uri;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/net/Uri;I)V" since="3" />
-		<method name="&lt;init>(Landroid/graphics/Bitmap;)V" />
-		<method name="&lt;init>(Landroid/graphics/Bitmap;I)V" since="3" />
-		<method name="&lt;init>(Landroid/graphics/drawable/Drawable;)V" />
-		<method name="&lt;init>(Landroid/graphics/drawable/Drawable;I)V" since="3" />
-		<method name="&lt;init>(Landroid/graphics/drawable/Drawable;Ljava/lang/String;)V" />
-		<method name="&lt;init>(Landroid/graphics/drawable/Drawable;Ljava/lang/String;I)V" since="3" />
-		<method name="getSource()Ljava/lang/String;" />
-	</class>
-	<class name="android/text/style/LeadingMarginSpan" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/text/style/ParagraphStyle" />
-		<method name="drawLeadingMargin(Landroid/graphics/Canvas;Landroid/graphics/Paint;IIIIILjava/lang/CharSequence;IIZLandroid/text/Layout;)V" />
-		<method name="getLeadingMargin(Z)I" />
-	</class>
-	<class name="android/text/style/LeadingMarginSpan$LeadingMarginSpan2" since="8">
-		<extends name="java/lang/Object" />
-		<implements name="android/text/style/LeadingMarginSpan" />
-		<implements name="android/text/style/WrapTogetherSpan" />
-		<method name="getLeadingMarginLineCount()I" />
-	</class>
-	<class name="android/text/style/LeadingMarginSpan$Standard" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/text/ParcelableSpan" since="3" />
-		<implements name="android/text/style/LeadingMarginSpan" />
-		<method name="&lt;init>(I)V" />
-		<method name="&lt;init>(II)V" />
-		<method name="&lt;init>(Landroid/os/Parcel;)V" since="3" />
-	</class>
-	<class name="android/text/style/LineBackgroundSpan" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/text/style/ParagraphStyle" />
-		<method name="drawBackground(Landroid/graphics/Canvas;Landroid/graphics/Paint;IIIIILjava/lang/CharSequence;III)V" />
-	</class>
-	<class name="android/text/style/LineHeightSpan" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/text/style/ParagraphStyle" />
-		<implements name="android/text/style/WrapTogetherSpan" />
-		<method name="chooseHeight(Ljava/lang/CharSequence;IIIILandroid/graphics/Paint$FontMetricsInt;)V" />
-	</class>
-	<class name="android/text/style/LineHeightSpan$WithDensity" since="5">
-		<extends name="java/lang/Object" />
-		<implements name="android/text/style/LineHeightSpan" />
-		<method name="chooseHeight(Ljava/lang/CharSequence;IIIILandroid/graphics/Paint$FontMetricsInt;Landroid/text/TextPaint;)V" />
-	</class>
-	<class name="android/text/style/LocaleSpan" since="17">
-		<extends name="android/text/style/MetricAffectingSpan" />
-		<implements name="android/text/ParcelableSpan" />
-		<method name="&lt;init>(Landroid/os/Parcel;)V" />
-		<method name="&lt;init>(Ljava/util/Locale;)V" />
-		<method name="getLocale()Ljava/util/Locale;" />
-	</class>
-	<class name="android/text/style/MaskFilterSpan" since="1">
-		<extends name="android/text/style/CharacterStyle" />
-		<implements name="android/text/style/UpdateAppearance" since="3" />
-		<method name="&lt;init>(Landroid/graphics/MaskFilter;)V" />
-		<method name="getMaskFilter()Landroid/graphics/MaskFilter;" />
-	</class>
-	<class name="android/text/style/MetricAffectingSpan" since="1">
-		<extends name="android/text/style/CharacterStyle" />
-		<implements name="android/text/style/UpdateLayout" />
-		<method name="&lt;init>()V" />
-		<method name="getUnderlying()Landroid/text/style/MetricAffectingSpan;" />
-		<method name="updateMeasureState(Landroid/text/TextPaint;)V" />
-	</class>
-	<class name="android/text/style/ParagraphStyle" since="1">
-		<extends name="java/lang/Object" />
-	</class>
-	<class name="android/text/style/QuoteSpan" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/text/ParcelableSpan" since="3" />
-		<implements name="android/text/style/LeadingMarginSpan" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(I)V" />
-		<method name="&lt;init>(Landroid/os/Parcel;)V" since="3" />
-		<method name="getColor()I" />
-	</class>
-	<class name="android/text/style/RasterizerSpan" since="1">
-		<extends name="android/text/style/CharacterStyle" />
-		<implements name="android/text/style/UpdateAppearance" since="3" />
-		<method name="&lt;init>(Landroid/graphics/Rasterizer;)V" />
-		<method name="getRasterizer()Landroid/graphics/Rasterizer;" />
-	</class>
-	<class name="android/text/style/RelativeSizeSpan" since="1">
-		<extends name="android/text/style/MetricAffectingSpan" />
-		<implements name="android/text/ParcelableSpan" since="3" />
-		<method name="&lt;init>(F)V" />
-		<method name="&lt;init>(Landroid/os/Parcel;)V" since="3" />
-		<method name="getSizeChange()F" />
-	</class>
-	<class name="android/text/style/ReplacementSpan" since="1">
-		<extends name="android/text/style/MetricAffectingSpan" />
-		<method name="&lt;init>()V" />
-		<method name="draw(Landroid/graphics/Canvas;Ljava/lang/CharSequence;IIFIIILandroid/graphics/Paint;)V" />
-		<method name="getSize(Landroid/graphics/Paint;Ljava/lang/CharSequence;IILandroid/graphics/Paint$FontMetricsInt;)I" />
-	</class>
-	<class name="android/text/style/ScaleXSpan" since="1">
-		<extends name="android/text/style/MetricAffectingSpan" />
-		<implements name="android/text/ParcelableSpan" since="3" />
-		<method name="&lt;init>(F)V" />
-		<method name="&lt;init>(Landroid/os/Parcel;)V" since="3" />
-		<method name="getScaleX()F" />
-	</class>
-	<class name="android/text/style/StrikethroughSpan" since="1">
-		<extends name="android/text/style/CharacterStyle" />
-		<implements name="android/text/ParcelableSpan" since="3" />
-		<implements name="android/text/style/UpdateAppearance" since="3" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/os/Parcel;)V" since="3" />
-	</class>
-	<class name="android/text/style/StyleSpan" since="1">
-		<extends name="android/text/style/MetricAffectingSpan" />
-		<implements name="android/text/ParcelableSpan" since="3" />
-		<method name="&lt;init>(I)V" />
-		<method name="&lt;init>(Landroid/os/Parcel;)V" since="3" />
-		<method name="getStyle()I" />
-	</class>
-	<class name="android/text/style/SubscriptSpan" since="1">
-		<extends name="android/text/style/MetricAffectingSpan" />
-		<implements name="android/text/ParcelableSpan" since="3" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/os/Parcel;)V" since="3" />
-	</class>
-	<class name="android/text/style/SuggestionSpan" since="14">
-		<extends name="android/text/style/CharacterStyle" />
-		<implements name="android/text/ParcelableSpan" />
-		<method name="&lt;init>(Landroid/content/Context;Ljava/util/Locale;[Ljava/lang/String;ILjava/lang/Class;)V" />
-		<method name="&lt;init>(Landroid/content/Context;[Ljava/lang/String;I)V" />
-		<method name="&lt;init>(Landroid/os/Parcel;)V" />
-		<method name="&lt;init>(Ljava/util/Locale;[Ljava/lang/String;I)V" />
-		<method name="getFlags()I" />
-		<method name="getLocale()Ljava/lang/String;" />
-		<method name="getSuggestions()[Ljava/lang/String;" />
-		<method name="setFlags(I)V" />
-		<field name="ACTION_SUGGESTION_PICKED" />
-		<field name="CREATOR" />
-		<field name="FLAG_AUTO_CORRECTION" since="15" />
-		<field name="FLAG_EASY_CORRECT" />
-		<field name="FLAG_MISSPELLED" />
-		<field name="SUGGESTIONS_MAX_SIZE" />
-		<field name="SUGGESTION_SPAN_PICKED_AFTER" />
-		<field name="SUGGESTION_SPAN_PICKED_BEFORE" />
-		<field name="SUGGESTION_SPAN_PICKED_HASHCODE" />
-	</class>
-	<class name="android/text/style/SuperscriptSpan" since="1">
-		<extends name="android/text/style/MetricAffectingSpan" />
-		<implements name="android/text/ParcelableSpan" since="3" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/os/Parcel;)V" since="3" />
-	</class>
-	<class name="android/text/style/TabStopSpan" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/text/style/ParagraphStyle" />
-		<method name="getTabStop()I" />
-	</class>
-	<class name="android/text/style/TabStopSpan$Standard" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/text/style/TabStopSpan" />
-		<method name="&lt;init>(I)V" />
-	</class>
-	<class name="android/text/style/TextAppearanceSpan" since="1">
-		<extends name="android/text/style/MetricAffectingSpan" />
-		<implements name="android/text/ParcelableSpan" since="3" />
-		<method name="&lt;init>(Landroid/content/Context;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;II)V" />
-		<method name="&lt;init>(Landroid/os/Parcel;)V" since="3" />
-		<method name="&lt;init>(Ljava/lang/String;IILandroid/content/res/ColorStateList;Landroid/content/res/ColorStateList;)V" />
-		<method name="getFamily()Ljava/lang/String;" />
-		<method name="getLinkTextColor()Landroid/content/res/ColorStateList;" />
-		<method name="getTextColor()Landroid/content/res/ColorStateList;" />
-		<method name="getTextSize()I" />
-		<method name="getTextStyle()I" />
-	</class>
-	<class name="android/text/style/TypefaceSpan" since="1">
-		<extends name="android/text/style/MetricAffectingSpan" />
-		<implements name="android/text/ParcelableSpan" since="3" />
-		<method name="&lt;init>(Landroid/os/Parcel;)V" since="3" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="getFamily()Ljava/lang/String;" />
-	</class>
-	<class name="android/text/style/URLSpan" since="1">
-		<extends name="android/text/style/ClickableSpan" />
-		<implements name="android/text/ParcelableSpan" since="3" />
-		<method name="&lt;init>(Landroid/os/Parcel;)V" since="3" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="getURL()Ljava/lang/String;" />
-	</class>
-	<class name="android/text/style/UnderlineSpan" since="1">
-		<extends name="android/text/style/CharacterStyle" />
-		<implements name="android/text/ParcelableSpan" since="3" />
-		<implements name="android/text/style/UpdateAppearance" since="3" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/os/Parcel;)V" since="3" />
-	</class>
-	<class name="android/text/style/UpdateAppearance" since="3">
-		<extends name="java/lang/Object" />
-	</class>
-	<class name="android/text/style/UpdateLayout" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/text/style/UpdateAppearance" since="3" />
-	</class>
-	<class name="android/text/style/WrapTogetherSpan" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/text/style/ParagraphStyle" />
-	</class>
-	<class name="android/text/util/Linkify" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="addLinks(Landroid/text/Spannable;I)Z" />
-		<method name="addLinks(Landroid/text/Spannable;Ljava/util/regex/Pattern;Ljava/lang/String;)Z" />
-		<method name="addLinks(Landroid/text/Spannable;Ljava/util/regex/Pattern;Ljava/lang/String;Landroid/text/util/Linkify$MatchFilter;Landroid/text/util/Linkify$TransformFilter;)Z" />
-		<method name="addLinks(Landroid/widget/TextView;I)Z" />
-		<method name="addLinks(Landroid/widget/TextView;Ljava/util/regex/Pattern;Ljava/lang/String;)V" />
-		<method name="addLinks(Landroid/widget/TextView;Ljava/util/regex/Pattern;Ljava/lang/String;Landroid/text/util/Linkify$MatchFilter;Landroid/text/util/Linkify$TransformFilter;)V" />
-		<field name="ALL" />
-		<field name="EMAIL_ADDRESSES" />
-		<field name="MAP_ADDRESSES" />
-		<field name="PHONE_NUMBERS" />
-		<field name="WEB_URLS" />
-		<field name="sPhoneNumberMatchFilter" />
-		<field name="sPhoneNumberTransformFilter" />
-		<field name="sUrlMatchFilter" />
-	</class>
-	<class name="android/text/util/Linkify$MatchFilter" since="1">
-		<extends name="java/lang/Object" />
-		<method name="acceptMatch(Ljava/lang/CharSequence;II)Z" />
-	</class>
-	<class name="android/text/util/Linkify$TransformFilter" since="1">
-		<extends name="java/lang/Object" />
-		<method name="transformUrl(Ljava/util/regex/Matcher;Ljava/lang/String;)Ljava/lang/String;" />
-	</class>
-	<class name="android/text/util/Rfc822Token" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="getAddress()Ljava/lang/String;" />
-		<method name="getComment()Ljava/lang/String;" />
-		<method name="getName()Ljava/lang/String;" />
-		<method name="quoteComment(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="quoteName(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="quoteNameIfNecessary(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="setAddress(Ljava/lang/String;)V" />
-		<method name="setComment(Ljava/lang/String;)V" />
-		<method name="setName(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/text/util/Rfc822Tokenizer" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/widget/MultiAutoCompleteTextView$Tokenizer" />
-		<method name="&lt;init>()V" />
-		<method name="tokenize(Ljava/lang/CharSequence;)[Landroid/text/util/Rfc822Token;" />
-		<method name="tokenize(Ljava/lang/CharSequence;Ljava/util/Collection;)V" since="8" />
-	</class>
-	<class name="android/transition/AutoTransition" since="19">
-		<extends name="android/transition/TransitionSet" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="android/transition/ChangeBounds" since="19">
-		<extends name="android/transition/Transition" />
-		<method name="&lt;init>()V" />
-		<method name="setReparent(Z)V" />
-		<method name="setResizeClip(Z)V" />
-	</class>
-	<class name="android/transition/ChangeClipBounds" since="21">
-		<extends name="android/transition/Transition" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="android/transition/ChangeTransform" since="21">
-		<extends name="android/transition/Transition" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="android/transition/CircularPropagation" since="21">
-		<extends name="android/transition/VisibilityPropagation" />
-		<method name="&lt;init>()V" />
-		<method name="setPropagationSpeed(F)V" />
-	</class>
-	<class name="android/transition/Explode" since="21">
-		<extends name="android/transition/Visibility" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="android/transition/Fade" since="19">
-		<extends name="android/transition/Visibility" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(I)V" />
-		<field name="IN" />
-		<field name="OUT" />
-	</class>
-	<class name="android/transition/MoveImage" since="21">
-		<extends name="android/transition/Transition" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="android/transition/Scene" since="19">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/view/ViewGroup;)V" />
-		<method name="&lt;init>(Landroid/view/ViewGroup;Landroid/view/View;)V" since="21" />
-		<method name="&lt;init>(Landroid/view/ViewGroup;Landroid/view/ViewGroup;)V" />
-		<method name="enter()V" />
-		<method name="exit()V" />
-		<method name="getSceneForLayout(Landroid/view/ViewGroup;ILandroid/content/Context;)Landroid/transition/Scene;" />
-		<method name="getSceneRoot()Landroid/view/ViewGroup;" />
-		<method name="setEnterAction(Ljava/lang/Runnable;)V" />
-		<method name="setExitAction(Ljava/lang/Runnable;)V" />
-	</class>
-	<class name="android/transition/SidePropagation" since="21">
-		<extends name="android/transition/VisibilityPropagation" />
-		<method name="&lt;init>()V" />
-		<method name="setPropagationSpeed(F)V" />
-		<method name="setSide(I)V" />
-	</class>
-	<class name="android/transition/Slide" since="21">
-		<extends name="android/transition/Visibility" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(I)V" />
-		<method name="setSlideEdge(I)V" />
-	</class>
-	<class name="android/transition/Transition" since="19">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/Cloneable" />
-		<method name="&lt;init>()V" />
-		<method name="addListener(Landroid/transition/Transition$TransitionListener;)Landroid/transition/Transition;" />
-		<method name="addTarget(I)Landroid/transition/Transition;" />
-		<method name="addTarget(Landroid/view/View;)Landroid/transition/Transition;" />
-		<method name="addTarget(Ljava/lang/Class;)Landroid/transition/Transition;" since="21" />
-		<method name="addTarget(Ljava/lang/String;)Landroid/transition/Transition;" since="21" />
-		<method name="canRemoveViews()Z" since="21" />
-		<method name="captureEndValues(Landroid/transition/TransitionValues;)V" />
-		<method name="captureStartValues(Landroid/transition/TransitionValues;)V" />
-		<method name="clone()Landroid/transition/Transition;" />
-		<method name="createAnimator(Landroid/view/ViewGroup;Landroid/transition/TransitionValues;Landroid/transition/TransitionValues;)Landroid/animation/Animator;" />
-		<method name="excludeChildren(IZ)Landroid/transition/Transition;" />
-		<method name="excludeChildren(Landroid/view/View;Z)Landroid/transition/Transition;" />
-		<method name="excludeChildren(Ljava/lang/Class;Z)Landroid/transition/Transition;" />
-		<method name="excludeTarget(IZ)Landroid/transition/Transition;" />
-		<method name="excludeTarget(Landroid/view/View;Z)Landroid/transition/Transition;" />
-		<method name="excludeTarget(Ljava/lang/Class;Z)Landroid/transition/Transition;" />
-		<method name="excludeTarget(Ljava/lang/String;Z)Landroid/transition/Transition;" since="21" />
-		<method name="getDuration()J" />
-		<method name="getEpicenter()Landroid/graphics/Rect;" since="21" />
-		<method name="getEpicenterCallback()Landroid/transition/Transition$EpicenterCallback;" since="21" />
-		<method name="getInterpolator()Landroid/animation/TimeInterpolator;" />
-		<method name="getName()Ljava/lang/String;" />
-		<method name="getPropagation()Landroid/transition/TransitionPropagation;" since="21" />
-		<method name="getStartDelay()J" />
-		<method name="getTargetIds()Ljava/util/List;" />
-		<method name="getTargetTypes()Ljava/util/List;" since="21" />
-		<method name="getTargetViewNames()Ljava/util/List;" since="21" />
-		<method name="getTargets()Ljava/util/List;" />
-		<method name="getTransitionProperties()[Ljava/lang/String;" />
-		<method name="getTransitionValues(Landroid/view/View;Z)Landroid/transition/TransitionValues;" />
-		<method name="removeListener(Landroid/transition/Transition$TransitionListener;)Landroid/transition/Transition;" />
-		<method name="removeTarget(I)Landroid/transition/Transition;" />
-		<method name="removeTarget(Landroid/view/View;)Landroid/transition/Transition;" />
-		<method name="removeTarget(Ljava/lang/Class;)Landroid/transition/Transition;" since="21" />
-		<method name="removeTarget(Ljava/lang/String;)Landroid/transition/Transition;" since="21" />
-		<method name="setDuration(J)Landroid/transition/Transition;" />
-		<method name="setEpicenterCallback(Landroid/transition/Transition$EpicenterCallback;)V" since="21" />
-		<method name="setInterpolator(Landroid/animation/TimeInterpolator;)Landroid/transition/Transition;" />
-		<method name="setMatchOrder([I)V" since="21" />
-		<method name="setPropagation(Landroid/transition/TransitionPropagation;)V" since="21" />
-		<method name="setStartDelay(J)Landroid/transition/Transition;" />
-		<field name="MATCH_ID" since="21" />
-		<field name="MATCH_INSTANCE" since="21" />
-		<field name="MATCH_ITEM_ID" since="21" />
-		<field name="MATCH_VIEW_NAME" since="21" />
-	</class>
-	<class name="android/transition/Transition$EpicenterCallback" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="onGetEpicenter(Landroid/transition/Transition;)Landroid/graphics/Rect;" />
-	</class>
-	<class name="android/transition/Transition$TransitionListener" since="19">
-		<extends name="java/lang/Object" />
-		<method name="onTransitionCancel(Landroid/transition/Transition;)V" />
-		<method name="onTransitionEnd(Landroid/transition/Transition;)V" />
-		<method name="onTransitionPause(Landroid/transition/Transition;)V" />
-		<method name="onTransitionResume(Landroid/transition/Transition;)V" />
-		<method name="onTransitionStart(Landroid/transition/Transition;)V" />
-	</class>
-	<class name="android/transition/TransitionInflater" since="19">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="from(Landroid/content/Context;)Landroid/transition/TransitionInflater;" />
-		<method name="inflateTransition(I)Landroid/transition/Transition;" />
-		<method name="inflateTransitionManager(ILandroid/view/ViewGroup;)Landroid/transition/TransitionManager;" />
-	</class>
-	<class name="android/transition/TransitionManager" since="19">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="beginDelayedTransition(Landroid/view/ViewGroup;)V" />
-		<method name="beginDelayedTransition(Landroid/view/ViewGroup;Landroid/transition/Transition;)V" />
-		<method name="go(Landroid/transition/Scene;)V" />
-		<method name="go(Landroid/transition/Scene;Landroid/transition/Transition;)V" />
-		<method name="setTransition(Landroid/transition/Scene;Landroid/transition/Scene;Landroid/transition/Transition;)V" />
-		<method name="setTransition(Landroid/transition/Scene;Landroid/transition/Transition;)V" />
-		<method name="transitionTo(Landroid/transition/Scene;)V" />
-	</class>
-	<class name="android/transition/TransitionPropagation" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="captureValues(Landroid/transition/TransitionValues;)V" />
-		<method name="getPropagationProperties()[Ljava/lang/String;" />
-		<method name="getStartDelay(Landroid/view/ViewGroup;Landroid/transition/Transition;Landroid/transition/TransitionValues;Landroid/transition/TransitionValues;)J" />
-	</class>
-	<class name="android/transition/TransitionSet" since="19">
-		<extends name="android/transition/Transition" />
-		<method name="&lt;init>()V" />
-		<method name="addListener(Landroid/transition/Transition$TransitionListener;)Landroid/transition/TransitionSet;" />
-		<method name="addTarget(I)Landroid/transition/TransitionSet;" />
-		<method name="addTarget(Landroid/view/View;)Landroid/transition/TransitionSet;" />
-		<method name="addTransition(Landroid/transition/Transition;)Landroid/transition/TransitionSet;" />
-		<method name="clone()Landroid/transition/TransitionSet;" />
-		<method name="getOrdering()I" />
-		<method name="removeListener(Landroid/transition/Transition$TransitionListener;)Landroid/transition/TransitionSet;" />
-		<method name="removeTarget(I)Landroid/transition/TransitionSet;" />
-		<method name="removeTarget(Landroid/view/View;)Landroid/transition/TransitionSet;" />
-		<method name="removeTransition(Landroid/transition/Transition;)Landroid/transition/TransitionSet;" />
-		<method name="setDuration(J)Landroid/transition/TransitionSet;" />
-		<method name="setInterpolator(Landroid/animation/TimeInterpolator;)Landroid/transition/TransitionSet;" />
-		<method name="setOrdering(I)Landroid/transition/TransitionSet;" />
-		<method name="setStartDelay(J)Landroid/transition/TransitionSet;" />
-		<field name="ORDERING_SEQUENTIAL" />
-		<field name="ORDERING_TOGETHER" />
-	</class>
-	<class name="android/transition/TransitionValues" since="19">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="values" />
-		<field name="view" />
-	</class>
-	<class name="android/transition/Visibility" since="19">
-		<extends name="android/transition/Transition" />
-		<method name="&lt;init>()V" />
-		<method name="isVisible(Landroid/transition/TransitionValues;)Z" />
-		<method name="onAppear(Landroid/view/ViewGroup;Landroid/transition/TransitionValues;ILandroid/transition/TransitionValues;I)Landroid/animation/Animator;" />
-		<method name="onAppear(Landroid/view/ViewGroup;Landroid/view/View;Landroid/transition/TransitionValues;Landroid/transition/TransitionValues;)Landroid/animation/Animator;" since="21" />
-		<method name="onDisappear(Landroid/view/ViewGroup;Landroid/transition/TransitionValues;ILandroid/transition/TransitionValues;I)Landroid/animation/Animator;" />
-		<method name="onDisappear(Landroid/view/ViewGroup;Landroid/view/View;Landroid/transition/TransitionValues;Landroid/transition/TransitionValues;)Landroid/animation/Animator;" since="21" />
-	</class>
-	<class name="android/transition/VisibilityPropagation" since="21">
-		<extends name="android/transition/TransitionPropagation" />
-		<method name="&lt;init>()V" />
-		<method name="getViewVisibility(Landroid/transition/TransitionValues;)I" />
-		<method name="getViewX(Landroid/transition/TransitionValues;)I" />
-		<method name="getViewY(Landroid/transition/TransitionValues;)I" />
-	</class>
-	<class name="android/util/AndroidException" since="1">
-		<extends name="java/lang/Exception" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/Exception;)V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" since="11" />
-	</class>
-	<class name="android/util/AndroidRuntimeException" since="1">
-		<extends name="java/lang/RuntimeException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/Exception;)V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" since="11" />
-	</class>
-	<class name="android/util/ArrayMap" since="19">
-		<extends name="java/lang/Object" />
-		<implements name="java/util/Map" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(I)V" />
-		<method name="&lt;init>(Landroid/util/ArrayMap;)V" />
-		<method name="containsAll(Ljava/util/Collection;)Z" />
-		<method name="ensureCapacity(I)V" />
-		<method name="keyAt(I)Ljava/lang/Object;" />
-		<method name="putAll(Landroid/util/ArrayMap;)V" />
-		<method name="removeAll(Ljava/util/Collection;)Z" />
-		<method name="removeAt(I)Ljava/lang/Object;" />
-		<method name="retainAll(Ljava/util/Collection;)Z" />
-		<method name="setValueAt(ILjava/lang/Object;)Ljava/lang/Object;" />
-		<method name="valueAt(I)Ljava/lang/Object;" />
-	</class>
-	<class name="android/util/AtomicFile" since="17">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/io/File;)V" />
-		<method name="delete()V" />
-		<method name="failWrite(Ljava/io/FileOutputStream;)V" />
-		<method name="finishWrite(Ljava/io/FileOutputStream;)V" />
-		<method name="getBaseFile()Ljava/io/File;" />
-		<method name="openRead()Ljava/io/FileInputStream;" />
-		<method name="readFully()[B" />
-		<method name="startWrite()Ljava/io/FileOutputStream;" />
-	</class>
-	<class name="android/util/AttributeSet" since="1">
-		<extends name="java/lang/Object" />
-		<method name="getAttributeBooleanValue(IZ)Z" />
-		<method name="getAttributeBooleanValue(Ljava/lang/String;Ljava/lang/String;Z)Z" />
-		<method name="getAttributeCount()I" />
-		<method name="getAttributeFloatValue(IF)F" />
-		<method name="getAttributeFloatValue(Ljava/lang/String;Ljava/lang/String;F)F" />
-		<method name="getAttributeIntValue(II)I" />
-		<method name="getAttributeIntValue(Ljava/lang/String;Ljava/lang/String;I)I" />
-		<method name="getAttributeListValue(I[Ljava/lang/String;I)I" />
-		<method name="getAttributeListValue(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;I)I" />
-		<method name="getAttributeName(I)Ljava/lang/String;" />
-		<method name="getAttributeNameResource(I)I" />
-		<method name="getAttributeResourceValue(II)I" />
-		<method name="getAttributeResourceValue(Ljava/lang/String;Ljava/lang/String;I)I" />
-		<method name="getAttributeUnsignedIntValue(II)I" />
-		<method name="getAttributeUnsignedIntValue(Ljava/lang/String;Ljava/lang/String;I)I" />
-		<method name="getAttributeValue(I)Ljava/lang/String;" />
-		<method name="getAttributeValue(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="getClassAttribute()Ljava/lang/String;" />
-		<method name="getIdAttribute()Ljava/lang/String;" />
-		<method name="getIdAttributeResourceValue(I)I" />
-		<method name="getPositionDescription()Ljava/lang/String;" />
-		<method name="getStyleAttribute()I" />
-	</class>
-	<class name="android/util/Base64" since="8">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="decode(Ljava/lang/String;I)[B" />
-		<method name="decode([BI)[B" />
-		<method name="decode([BIII)[B" />
-		<method name="encode([BI)[B" />
-		<method name="encode([BIII)[B" />
-		<method name="encodeToString([BI)Ljava/lang/String;" />
-		<method name="encodeToString([BIII)Ljava/lang/String;" />
-		<field name="CRLF" />
-		<field name="DEFAULT" />
-		<field name="NO_CLOSE" />
-		<field name="NO_PADDING" />
-		<field name="NO_WRAP" />
-		<field name="URL_SAFE" />
-	</class>
-	<class name="android/util/Base64DataException" since="11">
-		<extends name="java/io/IOException" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/util/Base64InputStream" since="8">
-		<extends name="java/io/FilterInputStream" />
-		<method name="&lt;init>(Ljava/io/InputStream;I)V" />
-	</class>
-	<class name="android/util/Base64OutputStream" since="8">
-		<extends name="java/io/FilterOutputStream" />
-		<method name="&lt;init>(Ljava/io/OutputStream;I)V" />
-	</class>
-	<class name="android/util/Config" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="DEBUG" />
-		<field name="LOGD" />
-		<field name="LOGV" />
-		<field name="PROFILE" />
-		<field name="RELEASE" />
-	</class>
-	<class name="android/util/DebugUtils" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="isObjectSelected(Ljava/lang/Object;)Z" />
-	</class>
-	<class name="android/util/DisplayMetrics" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="equals(Landroid/util/DisplayMetrics;)Z" since="17" />
-		<method name="setTo(Landroid/util/DisplayMetrics;)V" />
-		<method name="setToDefaults()V" />
-		<field name="DENSITY_400" since="19" />
-		<field name="DENSITY_DEFAULT" since="4" />
-		<field name="DENSITY_HIGH" since="4" />
-		<field name="DENSITY_LOW" since="4" />
-		<field name="DENSITY_MEDIUM" since="4" />
-		<field name="DENSITY_TV" since="13" />
-		<field name="DENSITY_XHIGH" since="9" />
-		<field name="DENSITY_XXHIGH" since="16" />
-		<field name="DENSITY_XXXHIGH" since="18" />
-		<field name="density" />
-		<field name="densityDpi" since="4" />
-		<field name="heightPixels" />
-		<field name="scaledDensity" />
-		<field name="widthPixels" />
-		<field name="xdpi" />
-		<field name="ydpi" />
-	</class>
-	<class name="android/util/EventLog" since="8">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getTagCode(Ljava/lang/String;)I" />
-		<method name="getTagName(I)Ljava/lang/String;" />
-		<method name="readEvents([ILjava/util/Collection;)V" />
-		<method name="writeEvent(II)I" />
-		<method name="writeEvent(IJ)I" />
-		<method name="writeEvent(ILjava/lang/String;)I" />
-		<method name="writeEvent(I[Ljava/lang/Object;)I" />
-	</class>
-	<class name="android/util/EventLog$Event" since="8">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getData()Ljava/lang/Object;" />
-		<method name="getProcessId()I" />
-		<method name="getTag()I" />
-		<method name="getThreadId()I" />
-		<method name="getTimeNanos()J" />
-	</class>
-	<class name="android/util/EventLogTags" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/io/BufferedReader;)V" />
-		<method name="get(I)Landroid/util/EventLogTags$Description;" />
-		<method name="get(Ljava/lang/String;)Landroid/util/EventLogTags$Description;" />
-	</class>
-	<class name="android/util/EventLogTags$Description" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="mName" />
-		<field name="mTag" />
-	</class>
-	<class name="android/util/FloatMath" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="ceil(F)F" />
-		<method name="cos(F)F" />
-		<method name="exp(F)F" since="17" />
-		<method name="floor(F)F" />
-		<method name="hypot(FF)F" since="17" />
-		<method name="pow(FF)F" since="17" />
-		<method name="sin(F)F" />
-		<method name="sqrt(F)F" />
-	</class>
-	<class name="android/util/JsonReader" since="11">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Closeable" />
-		<method name="&lt;init>(Ljava/io/Reader;)V" />
-		<method name="beginArray()V" />
-		<method name="beginObject()V" />
-		<method name="endArray()V" />
-		<method name="endObject()V" />
-		<method name="hasNext()Z" />
-		<method name="isLenient()Z" />
-		<method name="nextBoolean()Z" />
-		<method name="nextDouble()D" />
-		<method name="nextInt()I" />
-		<method name="nextLong()J" />
-		<method name="nextName()Ljava/lang/String;" />
-		<method name="nextNull()V" />
-		<method name="nextString()Ljava/lang/String;" />
-		<method name="peek()Landroid/util/JsonToken;" />
-		<method name="setLenient(Z)V" />
-		<method name="skipValue()V" />
-	</class>
-	<class name="android/util/JsonToken" since="11">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Landroid/util/JsonToken;" />
-		<method name="values()[Landroid/util/JsonToken;" />
-		<field name="BEGIN_ARRAY" />
-		<field name="BEGIN_OBJECT" />
-		<field name="BOOLEAN" />
-		<field name="END_ARRAY" />
-		<field name="END_DOCUMENT" />
-		<field name="END_OBJECT" />
-		<field name="NAME" />
-		<field name="NULL" />
-		<field name="NUMBER" />
-		<field name="STRING" />
-	</class>
-	<class name="android/util/JsonWriter" since="11">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Closeable" />
-		<method name="&lt;init>(Ljava/io/Writer;)V" />
-		<method name="beginArray()Landroid/util/JsonWriter;" />
-		<method name="beginObject()Landroid/util/JsonWriter;" />
-		<method name="endArray()Landroid/util/JsonWriter;" />
-		<method name="endObject()Landroid/util/JsonWriter;" />
-		<method name="flush()V" />
-		<method name="isLenient()Z" />
-		<method name="name(Ljava/lang/String;)Landroid/util/JsonWriter;" />
-		<method name="nullValue()Landroid/util/JsonWriter;" />
-		<method name="setIndent(Ljava/lang/String;)V" />
-		<method name="setLenient(Z)V" />
-		<method name="value(D)Landroid/util/JsonWriter;" />
-		<method name="value(J)Landroid/util/JsonWriter;" />
-		<method name="value(Ljava/lang/Number;)Landroid/util/JsonWriter;" />
-		<method name="value(Ljava/lang/String;)Landroid/util/JsonWriter;" />
-		<method name="value(Z)Landroid/util/JsonWriter;" />
-	</class>
-	<class name="android/util/LayoutDirection" since="19">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="INHERIT" />
-		<field name="LOCALE" />
-		<field name="LTR" />
-		<field name="RTL" />
-	</class>
-	<class name="android/util/Log" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="d(Ljava/lang/String;Ljava/lang/String;)I" />
-		<method name="d(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I" />
-		<method name="e(Ljava/lang/String;Ljava/lang/String;)I" />
-		<method name="e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I" />
-		<method name="getStackTraceString(Ljava/lang/Throwable;)Ljava/lang/String;" />
-		<method name="i(Ljava/lang/String;Ljava/lang/String;)I" />
-		<method name="i(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I" />
-		<method name="isLoggable(Ljava/lang/String;I)Z" />
-		<method name="println(ILjava/lang/String;Ljava/lang/String;)I" />
-		<method name="v(Ljava/lang/String;Ljava/lang/String;)I" />
-		<method name="v(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I" />
-		<method name="w(Ljava/lang/String;Ljava/lang/String;)I" />
-		<method name="w(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I" />
-		<method name="w(Ljava/lang/String;Ljava/lang/Throwable;)I" />
-		<method name="wtf(Ljava/lang/String;Ljava/lang/String;)I" since="8" />
-		<method name="wtf(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I" since="8" />
-		<method name="wtf(Ljava/lang/String;Ljava/lang/Throwable;)I" since="8" />
-		<field name="ASSERT" />
-		<field name="DEBUG" />
-		<field name="ERROR" />
-		<field name="INFO" />
-		<field name="VERBOSE" />
-		<field name="WARN" />
-	</class>
-	<class name="android/util/LogPrinter" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/util/Printer" />
-		<method name="&lt;init>(ILjava/lang/String;)V" />
-	</class>
-	<class name="android/util/LongSparseArray" since="16">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/Cloneable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(I)V" />
-		<method name="append(JLjava/lang/Object;)V" />
-		<method name="clear()V" />
-		<method name="clone()Landroid/util/LongSparseArray;" />
-		<method name="delete(J)V" />
-		<method name="get(J)Ljava/lang/Object;" />
-		<method name="get(JLjava/lang/Object;)Ljava/lang/Object;" />
-		<method name="indexOfKey(J)I" />
-		<method name="indexOfValue(Ljava/lang/Object;)I" />
-		<method name="keyAt(I)J" />
-		<method name="put(JLjava/lang/Object;)V" />
-		<method name="remove(J)V" />
-		<method name="removeAt(I)V" />
-		<method name="setValueAt(ILjava/lang/Object;)V" />
-		<method name="size()I" />
-		<method name="valueAt(I)Ljava/lang/Object;" />
-	</class>
-	<class name="android/util/LruCache" since="12">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(I)V" />
-		<method name="create(Ljava/lang/Object;)Ljava/lang/Object;" />
-		<method name="createCount()I" />
-		<method name="entryRemoved(ZLjava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V" />
-		<method name="evictAll()V" />
-		<method name="evictionCount()I" />
-		<method name="get(Ljava/lang/Object;)Ljava/lang/Object;" />
-		<method name="hitCount()I" />
-		<method name="maxSize()I" />
-		<method name="missCount()I" />
-		<method name="put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;" />
-		<method name="putCount()I" />
-		<method name="remove(Ljava/lang/Object;)Ljava/lang/Object;" />
-		<method name="resize(I)V" since="21" />
-		<method name="size()I" />
-		<method name="sizeOf(Ljava/lang/Object;Ljava/lang/Object;)I" />
-		<method name="snapshot()Ljava/util/Map;" />
-		<method name="trimToSize(I)V" since="17" />
-	</class>
-	<class name="android/util/MalformedJsonException" since="11">
-		<extends name="java/io/IOException" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/util/MonthDisplayHelper" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(II)V" />
-		<method name="&lt;init>(III)V" />
-		<method name="getColumnOf(I)I" />
-		<method name="getDayAt(II)I" />
-		<method name="getDigitsForRow(I)[I" />
-		<method name="getFirstDayOfMonth()I" />
-		<method name="getMonth()I" />
-		<method name="getNumberOfDaysInMonth()I" />
-		<method name="getOffset()I" />
-		<method name="getRowOf(I)I" />
-		<method name="getWeekStartDay()I" />
-		<method name="getYear()I" />
-		<method name="isWithinCurrentMonth(II)Z" />
-		<method name="nextMonth()V" />
-		<method name="previousMonth()V" />
-	</class>
-	<class name="android/util/MutableBoolean" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Z)V" />
-		<field name="value" />
-	</class>
-	<class name="android/util/MutableByte" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(B)V" />
-		<field name="value" />
-	</class>
-	<class name="android/util/MutableChar" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(C)V" />
-		<field name="value" />
-	</class>
-	<class name="android/util/MutableDouble" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(D)V" />
-		<field name="value" />
-	</class>
-	<class name="android/util/MutableFloat" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(F)V" />
-		<field name="value" />
-	</class>
-	<class name="android/util/MutableInt" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(I)V" />
-		<field name="value" />
-	</class>
-	<class name="android/util/MutableLong" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(J)V" />
-		<field name="value" />
-	</class>
-	<class name="android/util/MutableShort" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(S)V" />
-		<field name="value" />
-	</class>
-	<class name="android/util/NoSuchPropertyException" since="14">
-		<extends name="java/lang/RuntimeException" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/util/Pair" since="5">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/lang/Object;Ljava/lang/Object;)V" />
-		<method name="create(Ljava/lang/Object;Ljava/lang/Object;)Landroid/util/Pair;" />
-		<field name="first" />
-		<field name="second" />
-	</class>
-	<class name="android/util/Patterns" since="8">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="concatGroups(Ljava/util/regex/Matcher;)Ljava/lang/String;" />
-		<method name="digitsAndPlusOnly(Ljava/util/regex/Matcher;)Ljava/lang/String;" />
-		<field name="DOMAIN_NAME" />
-		<field name="EMAIL_ADDRESS" />
-		<field name="GOOD_IRI_CHAR" />
-		<field name="IP_ADDRESS" />
-		<field name="PHONE" />
-		<field name="TOP_LEVEL_DOMAIN" />
-		<field name="TOP_LEVEL_DOMAIN_STR" />
-		<field name="TOP_LEVEL_DOMAIN_STR_FOR_WEB_URL" />
-		<field name="WEB_URL" />
-	</class>
-	<class name="android/util/PrintStreamPrinter" since="3">
-		<extends name="java/lang/Object" />
-		<implements name="android/util/Printer" />
-		<method name="&lt;init>(Ljava/io/PrintStream;)V" />
-	</class>
-	<class name="android/util/PrintWriterPrinter" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/util/Printer" />
-		<method name="&lt;init>(Ljava/io/PrintWriter;)V" />
-	</class>
-	<class name="android/util/Printer" since="1">
-		<extends name="java/lang/Object" />
-		<method name="println(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/util/Property" since="14">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/lang/Class;Ljava/lang/String;)V" />
-		<method name="get(Ljava/lang/Object;)Ljava/lang/Object;" />
-		<method name="getName()Ljava/lang/String;" />
-		<method name="getType()Ljava/lang/Class;" />
-		<method name="isReadOnly()Z" />
-		<method name="of(Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/String;)Landroid/util/Property;" />
-		<method name="set(Ljava/lang/Object;Ljava/lang/Object;)V" />
-	</class>
-	<class name="android/util/Range" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/lang/Comparable;Ljava/lang/Comparable;)V" />
-		<method name="create(Ljava/lang/Comparable;Ljava/lang/Comparable;)Landroid/util/Range;" />
-		<method name="getLower()Ljava/lang/Comparable;" />
-		<method name="getUpper()Ljava/lang/Comparable;" />
-		<method name="inRange(Ljava/lang/Comparable;)Z" />
-	</class>
-	<class name="android/util/Rational" since="21">
-		<extends name="java/lang/Number" />
-		<implements name="java/lang/Comparable" />
-		<method name="&lt;init>(II)V" />
-		<method name="compareTo(Landroid/util/Rational;)I" />
-		<method name="getDenominator()I" />
-		<method name="getNumerator()I" />
-		<method name="isFinite()Z" />
-		<method name="isInfinite()Z" />
-		<method name="isNaN()Z" />
-		<method name="isZero()Z" />
-		<field name="NEGATIVE_INFINITY" />
-		<field name="NaN" />
-		<field name="POSITIVE_INFINITY" />
-		<field name="ZERO" />
-	</class>
-	<class name="android/util/Size" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(II)V" />
-		<method name="getHeight()I" />
-		<method name="getWidth()I" />
-	</class>
-	<class name="android/util/SizeF" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(FF)V" />
-		<method name="getHeight()F" />
-		<method name="getWidth()F" />
-	</class>
-	<class name="android/util/SparseArray" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/Cloneable" since="14" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(I)V" />
-		<method name="append(ILjava/lang/Object;)V" />
-		<method name="clear()V" />
-		<method name="clone()Landroid/util/SparseArray;" since="14" />
-		<method name="delete(I)V" />
-		<method name="get(I)Ljava/lang/Object;" />
-		<method name="get(ILjava/lang/Object;)Ljava/lang/Object;" />
-		<method name="indexOfKey(I)I" />
-		<method name="indexOfValue(Ljava/lang/Object;)I" />
-		<method name="keyAt(I)I" />
-		<method name="put(ILjava/lang/Object;)V" />
-		<method name="remove(I)V" />
-		<method name="removeAt(I)V" since="11" />
-		<method name="removeAtRange(II)V" since="19" />
-		<method name="setValueAt(ILjava/lang/Object;)V" />
-		<method name="size()I" />
-		<method name="valueAt(I)Ljava/lang/Object;" />
-	</class>
-	<class name="android/util/SparseBooleanArray" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/Cloneable" since="14" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(I)V" />
-		<method name="append(IZ)V" />
-		<method name="clear()V" />
-		<method name="clone()Landroid/util/SparseBooleanArray;" since="14" />
-		<method name="delete(I)V" />
-		<method name="get(I)Z" />
-		<method name="get(IZ)Z" />
-		<method name="indexOfKey(I)I" />
-		<method name="indexOfValue(Z)I" />
-		<method name="keyAt(I)I" />
-		<method name="put(IZ)V" />
-		<method name="size()I" />
-		<method name="valueAt(I)Z" />
-	</class>
-	<class name="android/util/SparseIntArray" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/Cloneable" since="14" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(I)V" />
-		<method name="append(II)V" />
-		<method name="clear()V" />
-		<method name="clone()Landroid/util/SparseIntArray;" since="14" />
-		<method name="delete(I)V" />
-		<method name="get(I)I" />
-		<method name="get(II)I" />
-		<method name="indexOfKey(I)I" />
-		<method name="indexOfValue(I)I" />
-		<method name="keyAt(I)I" />
-		<method name="put(II)V" />
-		<method name="removeAt(I)V" since="3" />
-		<method name="size()I" />
-		<method name="valueAt(I)I" />
-	</class>
-	<class name="android/util/SparseLongArray" since="18">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/Cloneable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(I)V" />
-		<method name="append(IJ)V" />
-		<method name="clear()V" />
-		<method name="clone()Landroid/util/SparseLongArray;" />
-		<method name="delete(I)V" />
-		<method name="get(I)J" />
-		<method name="get(IJ)J" />
-		<method name="indexOfKey(I)I" />
-		<method name="indexOfValue(J)I" />
-		<method name="keyAt(I)I" />
-		<method name="put(IJ)V" />
-		<method name="removeAt(I)V" />
-		<method name="size()I" />
-		<method name="valueAt(I)J" />
-	</class>
-	<class name="android/util/StateSet" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="dump([I)Ljava/lang/String;" />
-		<method name="isWildCard([I)Z" />
-		<method name="stateSetMatches([II)Z" />
-		<method name="stateSetMatches([I[I)Z" />
-		<method name="trimStateSet([II)[I" />
-		<field name="NOTHING" since="11" />
-		<field name="WILD_CARD" />
-	</class>
-	<class name="android/util/StringBuilderPrinter" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/util/Printer" />
-		<method name="&lt;init>(Ljava/lang/StringBuilder;)V" />
-	</class>
-	<class name="android/util/TimeFormatException" since="1">
-		<extends name="java/lang/RuntimeException" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="android/util/TimeUtils" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getTimeZone(IZJLjava/lang/String;)Ljava/util/TimeZone;" />
-		<method name="getTimeZoneDatabaseVersion()Ljava/lang/String;" since="3" />
-	</class>
-	<class name="android/util/TimingLogger" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="addSplit(Ljava/lang/String;)V" />
-		<method name="dumpToLog()V" />
-		<method name="reset()V" />
-		<method name="reset(Ljava/lang/String;Ljava/lang/String;)V" />
-	</class>
-	<class name="android/util/TypedValue" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="applyDimension(IFLandroid/util/DisplayMetrics;)F" />
-		<method name="coerceToString()Ljava/lang/CharSequence;" />
-		<method name="coerceToString(II)Ljava/lang/String;" />
-		<method name="complexToDimension(ILandroid/util/DisplayMetrics;)F" />
-		<method name="complexToDimensionNoisy(ILandroid/util/DisplayMetrics;)F" />
-		<method name="complexToDimensionPixelOffset(ILandroid/util/DisplayMetrics;)I" />
-		<method name="complexToDimensionPixelSize(ILandroid/util/DisplayMetrics;)I" />
-		<method name="complexToFloat(I)F" />
-		<method name="complexToFraction(IFF)F" />
-		<method name="getDimension(Landroid/util/DisplayMetrics;)F" />
-		<method name="getFloat()F" />
-		<method name="getFraction(FF)F" />
-		<method name="setTo(Landroid/util/TypedValue;)V" />
-		<field name="COMPLEX_MANTISSA_MASK" />
-		<field name="COMPLEX_MANTISSA_SHIFT" />
-		<field name="COMPLEX_RADIX_0p23" />
-		<field name="COMPLEX_RADIX_16p7" />
-		<field name="COMPLEX_RADIX_23p0" />
-		<field name="COMPLEX_RADIX_8p15" />
-		<field name="COMPLEX_RADIX_MASK" />
-		<field name="COMPLEX_RADIX_SHIFT" />
-		<field name="COMPLEX_UNIT_DIP" />
-		<field name="COMPLEX_UNIT_FRACTION" />
-		<field name="COMPLEX_UNIT_FRACTION_PARENT" />
-		<field name="COMPLEX_UNIT_IN" />
-		<field name="COMPLEX_UNIT_MASK" />
-		<field name="COMPLEX_UNIT_MM" />
-		<field name="COMPLEX_UNIT_PT" />
-		<field name="COMPLEX_UNIT_PX" />
-		<field name="COMPLEX_UNIT_SHIFT" />
-		<field name="COMPLEX_UNIT_SP" />
-		<field name="DENSITY_DEFAULT" since="4" />
-		<field name="DENSITY_NONE" since="4" />
-		<field name="TYPE_ATTRIBUTE" />
-		<field name="TYPE_DIMENSION" />
-		<field name="TYPE_FIRST_COLOR_INT" />
-		<field name="TYPE_FIRST_INT" />
-		<field name="TYPE_FLOAT" />
-		<field name="TYPE_FRACTION" />
-		<field name="TYPE_INT_BOOLEAN" />
-		<field name="TYPE_INT_COLOR_ARGB4" />
-		<field name="TYPE_INT_COLOR_ARGB8" />
-		<field name="TYPE_INT_COLOR_RGB4" />
-		<field name="TYPE_INT_COLOR_RGB8" />
-		<field name="TYPE_INT_DEC" />
-		<field name="TYPE_INT_HEX" />
-		<field name="TYPE_LAST_COLOR_INT" />
-		<field name="TYPE_LAST_INT" />
-		<field name="TYPE_NULL" />
-		<field name="TYPE_REFERENCE" />
-		<field name="TYPE_STRING" />
-		<field name="assetCookie" />
-		<field name="changingConfigurations" />
-		<field name="data" />
-		<field name="density" since="4" />
-		<field name="resourceId" />
-		<field name="string" />
-		<field name="type" />
-	</class>
-	<class name="android/util/Xml" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="asAttributeSet(Lorg/xmlpull/v1/XmlPullParser;)Landroid/util/AttributeSet;" />
-		<method name="findEncodingByName(Ljava/lang/String;)Landroid/util/Xml$Encoding;" />
-		<method name="newPullParser()Lorg/xmlpull/v1/XmlPullParser;" />
-		<method name="newSerializer()Lorg/xmlpull/v1/XmlSerializer;" />
-		<method name="parse(Ljava/io/InputStream;Landroid/util/Xml$Encoding;Lorg/xml/sax/ContentHandler;)V" />
-		<method name="parse(Ljava/io/Reader;Lorg/xml/sax/ContentHandler;)V" />
-		<method name="parse(Ljava/lang/String;Lorg/xml/sax/ContentHandler;)V" />
-		<field name="FEATURE_RELAXED" />
-	</class>
-	<class name="android/util/Xml$Encoding" since="1">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Landroid/util/Xml$Encoding;" />
-		<method name="values()[Landroid/util/Xml$Encoding;" />
-		<field name="ISO_8859_1" />
-		<field name="US_ASCII" />
-		<field name="UTF_16" />
-		<field name="UTF_8" />
-	</class>
-	<class name="android/view/AbsSavedState" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>(Landroid/os/Parcel;)V" />
-		<method name="&lt;init>(Landroid/os/Parcelable;)V" />
-		<method name="getSuperState()Landroid/os/Parcelable;" />
-		<field name="CREATOR" />
-		<field name="EMPTY_STATE" />
-	</class>
-	<class name="android/view/ActionMode" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="finish()V" />
-		<method name="getCustomView()Landroid/view/View;" />
-		<method name="getMenu()Landroid/view/Menu;" />
-		<method name="getMenuInflater()Landroid/view/MenuInflater;" />
-		<method name="getSubtitle()Ljava/lang/CharSequence;" />
-		<method name="getTag()Ljava/lang/Object;" since="14" />
-		<method name="getTitle()Ljava/lang/CharSequence;" />
-		<method name="getTitleOptionalHint()Z" since="16" />
-		<method name="invalidate()V" />
-		<method name="isTitleOptional()Z" since="16" />
-		<method name="setCustomView(Landroid/view/View;)V" />
-		<method name="setSubtitle(I)V" />
-		<method name="setSubtitle(Ljava/lang/CharSequence;)V" />
-		<method name="setTag(Ljava/lang/Object;)V" since="14" />
-		<method name="setTitle(I)V" />
-		<method name="setTitle(Ljava/lang/CharSequence;)V" />
-		<method name="setTitleOptionalHint(Z)V" since="16" />
-	</class>
-	<class name="android/view/ActionMode$Callback" since="11">
-		<extends name="java/lang/Object" />
-		<method name="onActionItemClicked(Landroid/view/ActionMode;Landroid/view/MenuItem;)Z" />
-		<method name="onCreateActionMode(Landroid/view/ActionMode;Landroid/view/Menu;)Z" />
-		<method name="onDestroyActionMode(Landroid/view/ActionMode;)V" />
-		<method name="onPrepareActionMode(Landroid/view/ActionMode;Landroid/view/Menu;)Z" />
-	</class>
-	<class name="android/view/ActionProvider" since="14">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="hasSubMenu()Z" />
-		<method name="isVisible()Z" since="16" />
-		<method name="onCreateActionView()Landroid/view/View;" />
-		<method name="onCreateActionView(Landroid/view/MenuItem;)Landroid/view/View;" since="16" />
-		<method name="onPerformDefaultAction()Z" />
-		<method name="onPrepareSubMenu(Landroid/view/SubMenu;)V" />
-		<method name="overridesItemVisibility()Z" since="16" />
-		<method name="refreshVisibility()V" since="16" />
-		<method name="setVisibilityListener(Landroid/view/ActionProvider$VisibilityListener;)V" since="16" />
-	</class>
-	<class name="android/view/ActionProvider$VisibilityListener" since="16">
-		<extends name="java/lang/Object" />
-		<method name="onActionProviderVisibilityChanged(Z)V" />
-	</class>
-	<class name="android/view/Choreographer" since="16">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getInstance()Landroid/view/Choreographer;" />
-		<method name="postFrameCallback(Landroid/view/Choreographer$FrameCallback;)V" />
-		<method name="postFrameCallbackDelayed(Landroid/view/Choreographer$FrameCallback;J)V" />
-		<method name="removeFrameCallback(Landroid/view/Choreographer$FrameCallback;)V" />
-	</class>
-	<class name="android/view/Choreographer$FrameCallback" since="16">
-		<extends name="java/lang/Object" />
-		<method name="doFrame(J)V" />
-	</class>
-	<class name="android/view/CollapsibleActionView" since="14">
-		<extends name="java/lang/Object" />
-		<method name="onActionViewCollapsed()V" />
-		<method name="onActionViewExpanded()V" />
-	</class>
-	<class name="android/view/ContextMenu" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/view/Menu" />
-		<method name="clearHeader()V" />
-		<method name="setHeaderIcon(I)Landroid/view/ContextMenu;" />
-		<method name="setHeaderIcon(Landroid/graphics/drawable/Drawable;)Landroid/view/ContextMenu;" />
-		<method name="setHeaderTitle(I)Landroid/view/ContextMenu;" />
-		<method name="setHeaderTitle(Ljava/lang/CharSequence;)Landroid/view/ContextMenu;" />
-		<method name="setHeaderView(Landroid/view/View;)Landroid/view/ContextMenu;" />
-	</class>
-	<class name="android/view/ContextMenu$ContextMenuInfo" since="1">
-		<extends name="java/lang/Object" />
-	</class>
-	<class name="android/view/ContextThemeWrapper" since="1">
-		<extends name="android/content/ContextWrapper" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/content/Context;I)V" />
-		<method name="applyOverrideConfiguration(Landroid/content/res/Configuration;)V" since="17" />
-		<method name="onApplyThemeResource(Landroid/content/res/Resources$Theme;IZ)V" />
-	</class>
-	<class name="android/view/Display" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getCurrentSizeRange(Landroid/graphics/Point;Landroid/graphics/Point;)V" since="16" />
-		<method name="getDisplayId()I" />
-		<method name="getFlags()I" since="17" />
-		<method name="getHeight()I" />
-		<method name="getMetrics(Landroid/util/DisplayMetrics;)V" />
-		<method name="getName()Ljava/lang/String;" since="17" />
-		<method name="getOrientation()I" />
-		<method name="getPixelFormat()I" />
-		<method name="getRealMetrics(Landroid/util/DisplayMetrics;)V" since="17" />
-		<method name="getRealSize(Landroid/graphics/Point;)V" since="17" />
-		<method name="getRectSize(Landroid/graphics/Rect;)V" since="13" />
-		<method name="getRefreshRate()F" />
-		<method name="getRotation()I" since="8" />
-		<method name="getSize(Landroid/graphics/Point;)V" since="13" />
-		<method name="getState()I" since="20" />
-		<method name="getWidth()I" />
-		<method name="isValid()Z" since="17" />
-		<field name="DEFAULT_DISPLAY" />
-		<field name="FLAG_PRESENTATION" since="19" />
-		<field name="FLAG_PRIVATE" since="19" />
-		<field name="FLAG_SECURE" since="17" />
-		<field name="FLAG_SUPPORTS_PROTECTED_BUFFERS" since="17" />
-		<field name="STATE_DOZING" since="20" />
-		<field name="STATE_OFF" since="20" />
-		<field name="STATE_ON" since="20" />
-		<field name="STATE_UNKNOWN" since="20" />
-	</class>
-	<class name="android/view/DragEvent" since="11">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="getAction()I" />
-		<method name="getClipData()Landroid/content/ClipData;" />
-		<method name="getClipDescription()Landroid/content/ClipDescription;" />
-		<method name="getLocalState()Ljava/lang/Object;" />
-		<method name="getResult()Z" />
-		<method name="getX()F" />
-		<method name="getY()F" />
-		<field name="ACTION_DRAG_ENDED" />
-		<field name="ACTION_DRAG_ENTERED" />
-		<field name="ACTION_DRAG_EXITED" />
-		<field name="ACTION_DRAG_LOCATION" />
-		<field name="ACTION_DRAG_STARTED" />
-		<field name="ACTION_DROP" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/view/FocusFinder" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="findNearestTouchable(Landroid/view/ViewGroup;III[I)Landroid/view/View;" />
-		<method name="findNextFocus(Landroid/view/ViewGroup;Landroid/view/View;I)Landroid/view/View;" />
-		<method name="findNextFocusFromRect(Landroid/view/ViewGroup;Landroid/graphics/Rect;I)Landroid/view/View;" />
-		<method name="getInstance()Landroid/view/FocusFinder;" />
-	</class>
-	<class name="android/view/FrameStats" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getEndTimeNano()J" />
-		<method name="getFrameCount()I" />
-		<method name="getFramePresentedTimeNano(I)J" />
-		<method name="getRefreshPeriodNano()J" />
-		<method name="getStartTimeNano()J" />
-		<field name="UNDEFINED_TIME_NANO" />
-		<field name="mFramesPresentedTimeNano" />
-		<field name="mRefreshPeriodNano" />
-	</class>
-	<class name="android/view/GestureDetector" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/view/GestureDetector$OnGestureListener;)V" since="3" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/view/GestureDetector$OnGestureListener;Landroid/os/Handler;)V" since="3" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/view/GestureDetector$OnGestureListener;Landroid/os/Handler;Z)V" since="8" />
-		<method name="&lt;init>(Landroid/view/GestureDetector$OnGestureListener;)V" />
-		<method name="&lt;init>(Landroid/view/GestureDetector$OnGestureListener;Landroid/os/Handler;)V" />
-		<method name="isLongpressEnabled()Z" />
-		<method name="onTouchEvent(Landroid/view/MotionEvent;)Z" />
-		<method name="setIsLongpressEnabled(Z)V" />
-		<method name="setOnDoubleTapListener(Landroid/view/GestureDetector$OnDoubleTapListener;)V" since="3" />
-	</class>
-	<class name="android/view/GestureDetector$OnDoubleTapListener" since="3">
-		<extends name="java/lang/Object" />
-		<method name="onDoubleTap(Landroid/view/MotionEvent;)Z" />
-		<method name="onDoubleTapEvent(Landroid/view/MotionEvent;)Z" />
-		<method name="onSingleTapConfirmed(Landroid/view/MotionEvent;)Z" />
-	</class>
-	<class name="android/view/GestureDetector$OnGestureListener" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onDown(Landroid/view/MotionEvent;)Z" />
-		<method name="onFling(Landroid/view/MotionEvent;Landroid/view/MotionEvent;FF)Z" />
-		<method name="onLongPress(Landroid/view/MotionEvent;)V" />
-		<method name="onScroll(Landroid/view/MotionEvent;Landroid/view/MotionEvent;FF)Z" />
-		<method name="onShowPress(Landroid/view/MotionEvent;)V" />
-		<method name="onSingleTapUp(Landroid/view/MotionEvent;)Z" />
-	</class>
-	<class name="android/view/GestureDetector$SimpleOnGestureListener" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/view/GestureDetector$OnDoubleTapListener" since="3" />
-		<implements name="android/view/GestureDetector$OnGestureListener" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="android/view/Gravity" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="apply(IIILandroid/graphics/Rect;IILandroid/graphics/Rect;)V" />
-		<method name="apply(IIILandroid/graphics/Rect;IILandroid/graphics/Rect;I)V" since="17" />
-		<method name="apply(IIILandroid/graphics/Rect;Landroid/graphics/Rect;)V" />
-		<method name="apply(IIILandroid/graphics/Rect;Landroid/graphics/Rect;I)V" since="17" />
-		<method name="applyDisplay(ILandroid/graphics/Rect;Landroid/graphics/Rect;)V" since="3" />
-		<method name="applyDisplay(ILandroid/graphics/Rect;Landroid/graphics/Rect;I)V" since="17" />
-		<method name="getAbsoluteGravity(II)I" since="14" />
-		<method name="isHorizontal(I)Z" />
-		<method name="isVertical(I)Z" />
-		<field name="AXIS_CLIP" since="3" />
-		<field name="AXIS_PULL_AFTER" />
-		<field name="AXIS_PULL_BEFORE" />
-		<field name="AXIS_SPECIFIED" />
-		<field name="AXIS_X_SHIFT" />
-		<field name="AXIS_Y_SHIFT" />
-		<field name="BOTTOM" />
-		<field name="CENTER" />
-		<field name="CENTER_HORIZONTAL" />
-		<field name="CENTER_VERTICAL" />
-		<field name="CLIP_HORIZONTAL" since="3" />
-		<field name="CLIP_VERTICAL" since="3" />
-		<field name="DISPLAY_CLIP_HORIZONTAL" since="3" />
-		<field name="DISPLAY_CLIP_VERTICAL" since="3" />
-		<field name="END" since="14" />
-		<field name="FILL" />
-		<field name="FILL_HORIZONTAL" />
-		<field name="FILL_VERTICAL" />
-		<field name="HORIZONTAL_GRAVITY_MASK" />
-		<field name="LEFT" />
-		<field name="NO_GRAVITY" />
-		<field name="RELATIVE_HORIZONTAL_GRAVITY_MASK" since="14" />
-		<field name="RELATIVE_LAYOUT_DIRECTION" since="14" />
-		<field name="RIGHT" />
-		<field name="START" since="14" />
-		<field name="TOP" />
-		<field name="VERTICAL_GRAVITY_MASK" />
-	</class>
-	<class name="android/view/HapticFeedbackConstants" since="3">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="CLOCK_TICK" since="21" />
-		<field name="FLAG_IGNORE_GLOBAL_SETTING" />
-		<field name="FLAG_IGNORE_VIEW_SETTING" />
-		<field name="KEYBOARD_TAP" since="8" />
-		<field name="LONG_PRESS" />
-		<field name="VIRTUAL_KEY" since="5" />
-	</class>
-	<class name="android/view/InflateException" since="1">
-		<extends name="java/lang/RuntimeException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="android/view/InputDevice" since="9">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="getControllerNumber()I" since="19" />
-		<method name="getDescriptor()Ljava/lang/String;" since="16" />
-		<method name="getDevice(I)Landroid/view/InputDevice;" />
-		<method name="getDeviceIds()[I" />
-		<method name="getId()I" />
-		<method name="getKeyCharacterMap()Landroid/view/KeyCharacterMap;" />
-		<method name="getKeyboardType()I" />
-		<method name="getMotionRange(I)Landroid/view/InputDevice$MotionRange;" />
-		<method name="getMotionRange(II)Landroid/view/InputDevice$MotionRange;" since="12" />
-		<method name="getMotionRanges()Ljava/util/List;" since="12" />
-		<method name="getName()Ljava/lang/String;" />
-		<method name="getProductId()I" since="19" />
-		<method name="getSources()I" />
-		<method name="getVendorId()I" since="19" />
-		<method name="getVibrator()Landroid/os/Vibrator;" since="16" />
-		<method name="hasKeys([I)[Z" since="19" />
-		<method name="isVirtual()Z" since="16" />
-		<method name="supportsSource(I)Z" since="21" />
-		<field name="CREATOR" />
-		<field name="KEYBOARD_TYPE_ALPHABETIC" />
-		<field name="KEYBOARD_TYPE_NONE" />
-		<field name="KEYBOARD_TYPE_NON_ALPHABETIC" />
-		<field name="MOTION_RANGE_ORIENTATION" />
-		<field name="MOTION_RANGE_PRESSURE" />
-		<field name="MOTION_RANGE_SIZE" />
-		<field name="MOTION_RANGE_TOOL_MAJOR" />
-		<field name="MOTION_RANGE_TOOL_MINOR" />
-		<field name="MOTION_RANGE_TOUCH_MAJOR" />
-		<field name="MOTION_RANGE_TOUCH_MINOR" />
-		<field name="MOTION_RANGE_X" />
-		<field name="MOTION_RANGE_Y" />
-		<field name="SOURCE_ANY" />
-		<field name="SOURCE_CLASS_BUTTON" />
-		<field name="SOURCE_CLASS_JOYSTICK" since="12" />
-		<field name="SOURCE_CLASS_MASK" />
-		<field name="SOURCE_CLASS_NONE" since="18" />
-		<field name="SOURCE_CLASS_POINTER" />
-		<field name="SOURCE_CLASS_POSITION" />
-		<field name="SOURCE_CLASS_TRACKBALL" />
-		<field name="SOURCE_DPAD" />
-		<field name="SOURCE_GAMEPAD" since="12" />
-		<field name="SOURCE_HDMI" since="21" />
-		<field name="SOURCE_JOYSTICK" since="12" />
-		<field name="SOURCE_KEYBOARD" />
-		<field name="SOURCE_MOUSE" />
-		<field name="SOURCE_STYLUS" since="14" />
-		<field name="SOURCE_TOUCHPAD" />
-		<field name="SOURCE_TOUCHSCREEN" />
-		<field name="SOURCE_TOUCH_NAVIGATION" since="18" />
-		<field name="SOURCE_TRACKBALL" />
-		<field name="SOURCE_UNKNOWN" />
-	</class>
-	<class name="android/view/InputDevice$MotionRange" since="9">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getAxis()I" since="12" />
-		<method name="getFlat()F" />
-		<method name="getFuzz()F" />
-		<method name="getMax()F" />
-		<method name="getMin()F" />
-		<method name="getRange()F" />
-		<method name="getResolution()F" since="18" />
-		<method name="getSource()I" since="12" />
-		<method name="isFromSource(I)Z" since="18" />
-	</class>
-	<class name="android/view/InputEvent" since="9">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="getDevice()Landroid/view/InputDevice;" />
-		<method name="getDeviceId()I" />
-		<method name="getEventTime()J" since="16" />
-		<method name="getSource()I" />
-		<method name="isFromSource(I)Z" since="18" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/view/InputQueue" since="9">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="android/view/InputQueue$Callback" since="9">
-		<extends name="java/lang/Object" />
-		<method name="onInputQueueCreated(Landroid/view/InputQueue;)V" />
-		<method name="onInputQueueDestroyed(Landroid/view/InputQueue;)V" />
-	</class>
-	<class name="android/view/KeyCharacterMap" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" since="16" />
-		<method name="&lt;init>()V" />
-		<method name="deviceHasKey(I)Z" since="3" />
-		<method name="deviceHasKeys([I)[Z" since="3" />
-		<method name="get(II)I" />
-		<method name="getDeadChar(II)I" />
-		<method name="getDisplayLabel(I)C" />
-		<method name="getEvents([C)[Landroid/view/KeyEvent;" />
-		<method name="getKeyData(ILandroid/view/KeyCharacterMap$KeyData;)Z" />
-		<method name="getKeyboardType()I" />
-		<method name="getMatch(I[C)C" />
-		<method name="getMatch(I[CI)C" />
-		<method name="getModifierBehavior()I" since="11" />
-		<method name="getNumber(I)C" />
-		<method name="isPrintingKey(I)Z" />
-		<method name="load(I)Landroid/view/KeyCharacterMap;" />
-		<field name="ALPHA" />
-		<field name="BUILT_IN_KEYBOARD" />
-		<field name="COMBINING_ACCENT" />
-		<field name="COMBINING_ACCENT_MASK" />
-		<field name="CREATOR" since="16" />
-		<field name="FULL" since="11" />
-		<field name="HEX_INPUT" />
-		<field name="MODIFIER_BEHAVIOR_CHORDED" since="11" />
-		<field name="MODIFIER_BEHAVIOR_CHORDED_OR_TOGGLED" since="11" />
-		<field name="NUMERIC" />
-		<field name="PICKER_DIALOG_INPUT" />
-		<field name="PREDICTIVE" />
-		<field name="SPECIAL_FUNCTION" since="11" />
-		<field name="VIRTUAL_KEYBOARD" since="11" />
-	</class>
-	<class name="android/view/KeyCharacterMap$KeyData" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="META_LENGTH" />
-		<field name="displayLabel" />
-		<field name="meta" />
-		<field name="number" />
-	</class>
-	<class name="android/view/KeyCharacterMap$UnavailableException" since="11">
-		<extends name="android/util/AndroidRuntimeException" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/view/KeyEvent" since="1">
-		<extends name="android/view/InputEvent" since="9" />
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>(II)V" />
-		<method name="&lt;init>(JJIII)V" />
-		<method name="&lt;init>(JJIIII)V" />
-		<method name="&lt;init>(JJIIIIII)V" />
-		<method name="&lt;init>(JJIIIIIII)V" />
-		<method name="&lt;init>(JJIIIIIIII)V" since="9" />
-		<method name="&lt;init>(JLjava/lang/String;II)V" since="3" />
-		<method name="&lt;init>(Landroid/view/KeyEvent;)V" since="3" />
-		<method name="&lt;init>(Landroid/view/KeyEvent;JI)V" />
-		<method name="changeAction(Landroid/view/KeyEvent;I)Landroid/view/KeyEvent;" since="3" />
-		<method name="changeFlags(Landroid/view/KeyEvent;I)Landroid/view/KeyEvent;" since="3" />
-		<method name="changeTimeRepeat(Landroid/view/KeyEvent;JI)Landroid/view/KeyEvent;" since="3" />
-		<method name="changeTimeRepeat(Landroid/view/KeyEvent;JII)Landroid/view/KeyEvent;" since="5" />
-		<method name="dispatch(Landroid/view/KeyEvent$Callback;)Z" />
-		<method name="dispatch(Landroid/view/KeyEvent$Callback;Landroid/view/KeyEvent$DispatcherState;Ljava/lang/Object;)Z" since="5" />
-		<method name="getAction()I" />
-		<method name="getCharacters()Ljava/lang/String;" since="3" />
-		<method name="getDeadChar(II)I" />
-		<method name="getDeviceId()I" />
-		<method name="getDisplayLabel()C" />
-		<method name="getDownTime()J" />
-		<method name="getEventTime()J" />
-		<method name="getFlags()I" />
-		<method name="getKeyCharacterMap()Landroid/view/KeyCharacterMap;" since="11" />
-		<method name="getKeyCode()I" />
-		<method name="getKeyData(Landroid/view/KeyCharacterMap$KeyData;)Z" />
-		<method name="getMatch([C)C" />
-		<method name="getMatch([CI)C" />
-		<method name="getMaxKeyCode()I" since="3" />
-		<method name="getMetaState()I" />
-		<method name="getModifierMetaStateMask()I" since="11" />
-		<method name="getModifiers()I" since="13" />
-		<method name="getNumber()C" />
-		<method name="getRepeatCount()I" />
-		<method name="getScanCode()I" />
-		<method name="getUnicodeChar()I" />
-		<method name="getUnicodeChar(I)I" />
-		<method name="hasModifiers(I)Z" since="11" />
-		<method name="hasNoModifiers()Z" since="11" />
-		<method name="isAltPressed()Z" />
-		<method name="isCanceled()Z" since="5" />
-		<method name="isCapsLockOn()Z" since="11" />
-		<method name="isCtrlPressed()Z" since="11" />
-		<method name="isFunctionPressed()Z" since="11" />
-		<method name="isGamepadButton(I)Z" since="12" />
-		<method name="isLongPress()Z" since="5" />
-		<method name="isMetaPressed()Z" since="11" />
-		<method name="isModifierKey(I)Z" />
-		<method name="isNumLockOn()Z" since="11" />
-		<method name="isPrintingKey()Z" />
-		<method name="isScrollLockOn()Z" since="11" />
-		<method name="isShiftPressed()Z" />
-		<method name="isSymPressed()Z" />
-		<method name="isSystem()Z" />
-		<method name="isTracking()Z" since="5" />
-		<method name="keyCodeFromString(Ljava/lang/String;)I" since="12" />
-		<method name="keyCodeToString(I)Ljava/lang/String;" since="12" />
-		<method name="metaStateHasModifiers(II)Z" since="11" />
-		<method name="metaStateHasNoModifiers(I)Z" since="11" />
-		<method name="normalizeMetaState(I)I" since="11" />
-		<method name="setSource(I)V" since="12" />
-		<method name="startTracking()V" since="5" />
-		<field name="ACTION_DOWN" />
-		<field name="ACTION_MULTIPLE" />
-		<field name="ACTION_UP" />
-		<field name="CREATOR" />
-		<field name="FLAG_CANCELED" since="5" />
-		<field name="FLAG_CANCELED_LONG_PRESS" since="5" />
-		<field name="FLAG_EDITOR_ACTION" since="3" />
-		<field name="FLAG_FALLBACK" since="11" />
-		<field name="FLAG_FROM_SYSTEM" since="3" />
-		<field name="FLAG_KEEP_TOUCH_MODE" since="3" />
-		<field name="FLAG_LONG_PRESS" since="5" />
-		<field name="FLAG_SOFT_KEYBOARD" since="3" />
-		<field name="FLAG_TRACKING" since="5" />
-		<field name="FLAG_VIRTUAL_HARD_KEY" since="5" />
-		<field name="FLAG_WOKE_HERE" />
-		<field name="KEYCODE_0" />
-		<field name="KEYCODE_1" />
-		<field name="KEYCODE_11" since="21" />
-		<field name="KEYCODE_12" since="21" />
-		<field name="KEYCODE_2" />
-		<field name="KEYCODE_3" />
-		<field name="KEYCODE_3D_MODE" since="14" />
-		<field name="KEYCODE_4" />
-		<field name="KEYCODE_5" />
-		<field name="KEYCODE_6" />
-		<field name="KEYCODE_7" />
-		<field name="KEYCODE_8" />
-		<field name="KEYCODE_9" />
-		<field name="KEYCODE_A" />
-		<field name="KEYCODE_ALT_LEFT" />
-		<field name="KEYCODE_ALT_RIGHT" />
-		<field name="KEYCODE_APOSTROPHE" />
-		<field name="KEYCODE_APP_SWITCH" since="11" />
-		<field name="KEYCODE_ASSIST" since="16" />
-		<field name="KEYCODE_AT" />
-		<field name="KEYCODE_AVR_INPUT" since="11" />
-		<field name="KEYCODE_AVR_POWER" since="11" />
-		<field name="KEYCODE_B" />
-		<field name="KEYCODE_BACK" />
-		<field name="KEYCODE_BACKSLASH" />
-		<field name="KEYCODE_BOOKMARK" since="11" />
-		<field name="KEYCODE_BREAK" since="11" />
-		<field name="KEYCODE_BRIGHTNESS_DOWN" since="18" />
-		<field name="KEYCODE_BRIGHTNESS_UP" since="18" />
-		<field name="KEYCODE_BUTTON_1" since="12" />
-		<field name="KEYCODE_BUTTON_10" since="12" />
-		<field name="KEYCODE_BUTTON_11" since="12" />
-		<field name="KEYCODE_BUTTON_12" since="12" />
-		<field name="KEYCODE_BUTTON_13" since="12" />
-		<field name="KEYCODE_BUTTON_14" since="12" />
-		<field name="KEYCODE_BUTTON_15" since="12" />
-		<field name="KEYCODE_BUTTON_16" since="12" />
-		<field name="KEYCODE_BUTTON_2" since="12" />
-		<field name="KEYCODE_BUTTON_3" since="12" />
-		<field name="KEYCODE_BUTTON_4" since="12" />
-		<field name="KEYCODE_BUTTON_5" since="12" />
-		<field name="KEYCODE_BUTTON_6" since="12" />
-		<field name="KEYCODE_BUTTON_7" since="12" />
-		<field name="KEYCODE_BUTTON_8" since="12" />
-		<field name="KEYCODE_BUTTON_9" since="12" />
-		<field name="KEYCODE_BUTTON_A" since="9" />
-		<field name="KEYCODE_BUTTON_B" since="9" />
-		<field name="KEYCODE_BUTTON_C" since="9" />
-		<field name="KEYCODE_BUTTON_L1" since="9" />
-		<field name="KEYCODE_BUTTON_L2" since="9" />
-		<field name="KEYCODE_BUTTON_MODE" since="9" />
-		<field name="KEYCODE_BUTTON_R1" since="9" />
-		<field name="KEYCODE_BUTTON_R2" since="9" />
-		<field name="KEYCODE_BUTTON_SELECT" since="9" />
-		<field name="KEYCODE_BUTTON_START" since="9" />
-		<field name="KEYCODE_BUTTON_THUMBL" since="9" />
-		<field name="KEYCODE_BUTTON_THUMBR" since="9" />
-		<field name="KEYCODE_BUTTON_X" since="9" />
-		<field name="KEYCODE_BUTTON_Y" since="9" />
-		<field name="KEYCODE_BUTTON_Z" since="9" />
-		<field name="KEYCODE_C" />
-		<field name="KEYCODE_CALCULATOR" since="15" />
-		<field name="KEYCODE_CALENDAR" since="15" />
-		<field name="KEYCODE_CALL" />
-		<field name="KEYCODE_CAMERA" />
-		<field name="KEYCODE_CAPS_LOCK" since="11" />
-		<field name="KEYCODE_CAPTIONS" since="11" />
-		<field name="KEYCODE_CHANNEL_DOWN" since="11" />
-		<field name="KEYCODE_CHANNEL_UP" since="11" />
-		<field name="KEYCODE_CLEAR" />
-		<field name="KEYCODE_COMMA" />
-		<field name="KEYCODE_CONTACTS" since="15" />
-		<field name="KEYCODE_CTRL_LEFT" since="11" />
-		<field name="KEYCODE_CTRL_RIGHT" since="11" />
-		<field name="KEYCODE_D" />
-		<field name="KEYCODE_DEL" />
-		<field name="KEYCODE_DPAD_CENTER" />
-		<field name="KEYCODE_DPAD_DOWN" />
-		<field name="KEYCODE_DPAD_LEFT" />
-		<field name="KEYCODE_DPAD_RIGHT" />
-		<field name="KEYCODE_DPAD_UP" />
-		<field name="KEYCODE_DVR" since="11" />
-		<field name="KEYCODE_E" />
-		<field name="KEYCODE_EISU" since="16" />
-		<field name="KEYCODE_ENDCALL" />
-		<field name="KEYCODE_ENTER" />
-		<field name="KEYCODE_ENVELOPE" />
-		<field name="KEYCODE_EQUALS" />
-		<field name="KEYCODE_ESCAPE" since="11" />
-		<field name="KEYCODE_EXPLORER" />
-		<field name="KEYCODE_F" />
-		<field name="KEYCODE_F1" since="11" />
-		<field name="KEYCODE_F10" since="11" />
-		<field name="KEYCODE_F11" since="11" />
-		<field name="KEYCODE_F12" since="11" />
-		<field name="KEYCODE_F2" since="11" />
-		<field name="KEYCODE_F3" since="11" />
-		<field name="KEYCODE_F4" since="11" />
-		<field name="KEYCODE_F5" since="11" />
-		<field name="KEYCODE_F6" since="11" />
-		<field name="KEYCODE_F7" since="11" />
-		<field name="KEYCODE_F8" since="11" />
-		<field name="KEYCODE_F9" since="11" />
-		<field name="KEYCODE_FOCUS" />
-		<field name="KEYCODE_FORWARD" since="11" />
-		<field name="KEYCODE_FORWARD_DEL" since="11" />
-		<field name="KEYCODE_FUNCTION" since="11" />
-		<field name="KEYCODE_G" />
-		<field name="KEYCODE_GRAVE" />
-		<field name="KEYCODE_GUIDE" since="11" />
-		<field name="KEYCODE_H" />
-		<field name="KEYCODE_HEADSETHOOK" />
-		<field name="KEYCODE_HENKAN" since="16" />
-		<field name="KEYCODE_HOME" />
-		<field name="KEYCODE_I" />
-		<field name="KEYCODE_INFO" since="11" />
-		<field name="KEYCODE_INSERT" since="11" />
-		<field name="KEYCODE_J" />
-		<field name="KEYCODE_K" />
-		<field name="KEYCODE_KANA" since="16" />
-		<field name="KEYCODE_KATAKANA_HIRAGANA" since="16" />
-		<field name="KEYCODE_L" />
-		<field name="KEYCODE_LANGUAGE_SWITCH" since="14" />
-		<field name="KEYCODE_LAST_CHANNEL" since="21" />
-		<field name="KEYCODE_LEFT_BRACKET" />
-		<field name="KEYCODE_M" />
-		<field name="KEYCODE_MANNER_MODE" since="14" />
-		<field name="KEYCODE_MEDIA_AUDIO_TRACK" since="19" />
-		<field name="KEYCODE_MEDIA_CLOSE" since="11" />
-		<field name="KEYCODE_MEDIA_EJECT" since="11" />
-		<field name="KEYCODE_MEDIA_FAST_FORWARD" since="3" />
-		<field name="KEYCODE_MEDIA_NEXT" since="3" />
-		<field name="KEYCODE_MEDIA_PAUSE" since="11" />
-		<field name="KEYCODE_MEDIA_PLAY" since="11" />
-		<field name="KEYCODE_MEDIA_PLAY_PAUSE" since="3" />
-		<field name="KEYCODE_MEDIA_PREVIOUS" since="3" />
-		<field name="KEYCODE_MEDIA_RECORD" since="11" />
-		<field name="KEYCODE_MEDIA_REWIND" since="3" />
-		<field name="KEYCODE_MEDIA_STOP" since="3" />
-		<field name="KEYCODE_MEDIA_TOP_MENU" since="21" />
-		<field name="KEYCODE_MENU" />
-		<field name="KEYCODE_META_LEFT" since="11" />
-		<field name="KEYCODE_META_RIGHT" since="11" />
-		<field name="KEYCODE_MINUS" />
-		<field name="KEYCODE_MOVE_END" since="11" />
-		<field name="KEYCODE_MOVE_HOME" since="11" />
-		<field name="KEYCODE_MUHENKAN" since="16" />
-		<field name="KEYCODE_MUSIC" since="15" />
-		<field name="KEYCODE_MUTE" since="3" />
-		<field name="KEYCODE_N" />
-		<field name="KEYCODE_NOTIFICATION" />
-		<field name="KEYCODE_NUM" />
-		<field name="KEYCODE_NUMPAD_0" since="11" />
-		<field name="KEYCODE_NUMPAD_1" since="11" />
-		<field name="KEYCODE_NUMPAD_2" since="11" />
-		<field name="KEYCODE_NUMPAD_3" since="11" />
-		<field name="KEYCODE_NUMPAD_4" since="11" />
-		<field name="KEYCODE_NUMPAD_5" since="11" />
-		<field name="KEYCODE_NUMPAD_6" since="11" />
-		<field name="KEYCODE_NUMPAD_7" since="11" />
-		<field name="KEYCODE_NUMPAD_8" since="11" />
-		<field name="KEYCODE_NUMPAD_9" since="11" />
-		<field name="KEYCODE_NUMPAD_ADD" since="11" />
-		<field name="KEYCODE_NUMPAD_COMMA" since="11" />
-		<field name="KEYCODE_NUMPAD_DIVIDE" since="11" />
-		<field name="KEYCODE_NUMPAD_DOT" since="11" />
-		<field name="KEYCODE_NUMPAD_ENTER" since="11" />
-		<field name="KEYCODE_NUMPAD_EQUALS" since="11" />
-		<field name="KEYCODE_NUMPAD_LEFT_PAREN" since="11" />
-		<field name="KEYCODE_NUMPAD_MULTIPLY" since="11" />
-		<field name="KEYCODE_NUMPAD_RIGHT_PAREN" since="11" />
-		<field name="KEYCODE_NUMPAD_SUBTRACT" since="11" />
-		<field name="KEYCODE_NUM_LOCK" since="11" />
-		<field name="KEYCODE_O" />
-		<field name="KEYCODE_P" />
-		<field name="KEYCODE_PAGE_DOWN" since="9" />
-		<field name="KEYCODE_PAGE_UP" since="9" />
-		<field name="KEYCODE_PAIRING" since="21" />
-		<field name="KEYCODE_PERIOD" />
-		<field name="KEYCODE_PICTSYMBOLS" since="9" />
-		<field name="KEYCODE_PLUS" />
-		<field name="KEYCODE_POUND" />
-		<field name="KEYCODE_POWER" />
-		<field name="KEYCODE_PROG_BLUE" since="11" />
-		<field name="KEYCODE_PROG_GREEN" since="11" />
-		<field name="KEYCODE_PROG_RED" since="11" />
-		<field name="KEYCODE_PROG_YELLOW" since="11" />
-		<field name="KEYCODE_Q" />
-		<field name="KEYCODE_R" />
-		<field name="KEYCODE_RIGHT_BRACKET" />
-		<field name="KEYCODE_RO" since="16" />
-		<field name="KEYCODE_S" />
-		<field name="KEYCODE_SCROLL_LOCK" since="11" />
-		<field name="KEYCODE_SEARCH" />
-		<field name="KEYCODE_SEMICOLON" />
-		<field name="KEYCODE_SETTINGS" since="11" />
-		<field name="KEYCODE_SHIFT_LEFT" />
-		<field name="KEYCODE_SHIFT_RIGHT" />
-		<field name="KEYCODE_SLASH" />
-		<field name="KEYCODE_SLEEP" since="20" />
-		<field name="KEYCODE_SOFT_LEFT" />
-		<field name="KEYCODE_SOFT_RIGHT" />
-		<field name="KEYCODE_SPACE" />
-		<field name="KEYCODE_STAR" />
-		<field name="KEYCODE_STB_INPUT" since="11" />
-		<field name="KEYCODE_STB_POWER" since="11" />
-		<field name="KEYCODE_SWITCH_CHARSET" since="9" />
-		<field name="KEYCODE_SYM" />
-		<field name="KEYCODE_SYSRQ" since="11" />
-		<field name="KEYCODE_T" />
-		<field name="KEYCODE_TAB" />
-		<field name="KEYCODE_TV" since="11" />
-		<field name="KEYCODE_TV_DATA_SERVICE" since="21" />
-		<field name="KEYCODE_TV_INPUT" since="11" />
-		<field name="KEYCODE_TV_POWER" since="11" />
-		<field name="KEYCODE_U" />
-		<field name="KEYCODE_UNKNOWN" />
-		<field name="KEYCODE_V" />
-		<field name="KEYCODE_VOLUME_DOWN" />
-		<field name="KEYCODE_VOLUME_MUTE" since="11" />
-		<field name="KEYCODE_VOLUME_UP" />
-		<field name="KEYCODE_W" />
-		<field name="KEYCODE_WAKEUP" since="20" />
-		<field name="KEYCODE_WINDOW" since="11" />
-		<field name="KEYCODE_X" />
-		<field name="KEYCODE_Y" />
-		<field name="KEYCODE_YEN" since="16" />
-		<field name="KEYCODE_Z" />
-		<field name="KEYCODE_ZENKAKU_HANKAKU" since="16" />
-		<field name="KEYCODE_ZOOM_IN" since="11" />
-		<field name="KEYCODE_ZOOM_OUT" since="11" />
-		<field name="MAX_KEYCODE" />
-		<field name="META_ALT_LEFT_ON" />
-		<field name="META_ALT_MASK" since="11" />
-		<field name="META_ALT_ON" />
-		<field name="META_ALT_RIGHT_ON" />
-		<field name="META_CAPS_LOCK_ON" since="11" />
-		<field name="META_CTRL_LEFT_ON" since="11" />
-		<field name="META_CTRL_MASK" since="11" />
-		<field name="META_CTRL_ON" since="11" />
-		<field name="META_CTRL_RIGHT_ON" since="11" />
-		<field name="META_FUNCTION_ON" since="11" />
-		<field name="META_META_LEFT_ON" since="11" />
-		<field name="META_META_MASK" since="11" />
-		<field name="META_META_ON" since="11" />
-		<field name="META_META_RIGHT_ON" since="11" />
-		<field name="META_NUM_LOCK_ON" since="11" />
-		<field name="META_SCROLL_LOCK_ON" since="11" />
-		<field name="META_SHIFT_LEFT_ON" />
-		<field name="META_SHIFT_MASK" since="11" />
-		<field name="META_SHIFT_ON" />
-		<field name="META_SHIFT_RIGHT_ON" />
-		<field name="META_SYM_ON" />
-	</class>
-	<class name="android/view/KeyEvent$Callback" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onKeyDown(ILandroid/view/KeyEvent;)Z" />
-		<method name="onKeyLongPress(ILandroid/view/KeyEvent;)Z" since="5" />
-		<method name="onKeyMultiple(IILandroid/view/KeyEvent;)Z" />
-		<method name="onKeyUp(ILandroid/view/KeyEvent;)Z" />
-	</class>
-	<class name="android/view/KeyEvent$DispatcherState" since="5">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="handleUpEvent(Landroid/view/KeyEvent;)V" />
-		<method name="isTracking(Landroid/view/KeyEvent;)Z" />
-		<method name="performedLongPress(Landroid/view/KeyEvent;)V" />
-		<method name="reset()V" />
-		<method name="reset(Ljava/lang/Object;)V" />
-		<method name="startTracking(Landroid/view/KeyEvent;Ljava/lang/Object;)V" />
-	</class>
-	<class name="android/view/LayoutInflater" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/view/LayoutInflater;Landroid/content/Context;)V" />
-		<method name="cloneInContext(Landroid/content/Context;)Landroid/view/LayoutInflater;" />
-		<method name="createView(Ljava/lang/String;Ljava/lang/String;Landroid/util/AttributeSet;)Landroid/view/View;" />
-		<method name="from(Landroid/content/Context;)Landroid/view/LayoutInflater;" />
-		<method name="getContext()Landroid/content/Context;" />
-		<method name="getFactory()Landroid/view/LayoutInflater$Factory;" />
-		<method name="getFactory2()Landroid/view/LayoutInflater$Factory2;" since="11" />
-		<method name="getFilter()Landroid/view/LayoutInflater$Filter;" />
-		<method name="inflate(ILandroid/view/ViewGroup;)Landroid/view/View;" />
-		<method name="inflate(ILandroid/view/ViewGroup;Z)Landroid/view/View;" />
-		<method name="inflate(Lorg/xmlpull/v1/XmlPullParser;Landroid/view/ViewGroup;)Landroid/view/View;" />
-		<method name="inflate(Lorg/xmlpull/v1/XmlPullParser;Landroid/view/ViewGroup;Z)Landroid/view/View;" />
-		<method name="onCreateView(Landroid/view/View;Ljava/lang/String;Landroid/util/AttributeSet;)Landroid/view/View;" since="11" />
-		<method name="onCreateView(Ljava/lang/String;Landroid/util/AttributeSet;)Landroid/view/View;" />
-		<method name="setFactory(Landroid/view/LayoutInflater$Factory;)V" />
-		<method name="setFactory2(Landroid/view/LayoutInflater$Factory2;)V" since="11" />
-		<method name="setFilter(Landroid/view/LayoutInflater$Filter;)V" />
-	</class>
-	<class name="android/view/LayoutInflater$Factory" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onCreateView(Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View;" />
-	</class>
-	<class name="android/view/LayoutInflater$Factory2" since="11">
-		<extends name="java/lang/Object" />
-		<implements name="android/view/LayoutInflater$Factory" />
-		<method name="onCreateView(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View;" />
-	</class>
-	<class name="android/view/LayoutInflater$Filter" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onLoadClass(Ljava/lang/Class;)Z" />
-	</class>
-	<class name="android/view/Menu" since="1">
-		<extends name="java/lang/Object" />
-		<method name="add(I)Landroid/view/MenuItem;" />
-		<method name="add(IIII)Landroid/view/MenuItem;" />
-		<method name="add(IIILjava/lang/CharSequence;)Landroid/view/MenuItem;" />
-		<method name="add(Ljava/lang/CharSequence;)Landroid/view/MenuItem;" />
-		<method name="addIntentOptions(IIILandroid/content/ComponentName;[Landroid/content/Intent;Landroid/content/Intent;I[Landroid/view/MenuItem;)I" />
-		<method name="addSubMenu(I)Landroid/view/SubMenu;" />
-		<method name="addSubMenu(IIII)Landroid/view/SubMenu;" />
-		<method name="addSubMenu(IIILjava/lang/CharSequence;)Landroid/view/SubMenu;" />
-		<method name="addSubMenu(Ljava/lang/CharSequence;)Landroid/view/SubMenu;" />
-		<method name="clear()V" />
-		<method name="close()V" since="3" />
-		<method name="findItem(I)Landroid/view/MenuItem;" />
-		<method name="getItem(I)Landroid/view/MenuItem;" since="3" />
-		<method name="hasVisibleItems()Z" />
-		<method name="isShortcutKey(ILandroid/view/KeyEvent;)Z" />
-		<method name="performIdentifierAction(II)Z" />
-		<method name="performShortcut(ILandroid/view/KeyEvent;I)Z" />
-		<method name="removeGroup(I)V" />
-		<method name="removeItem(I)V" />
-		<method name="setGroupCheckable(IZZ)V" />
-		<method name="setGroupEnabled(IZ)V" />
-		<method name="setGroupVisible(IZ)V" />
-		<method name="setQwertyMode(Z)V" />
-		<method name="size()I" />
-		<field name="CATEGORY_ALTERNATIVE" />
-		<field name="CATEGORY_CONTAINER" />
-		<field name="CATEGORY_SECONDARY" />
-		<field name="CATEGORY_SYSTEM" />
-		<field name="FIRST" />
-		<field name="FLAG_ALWAYS_PERFORM_CLOSE" />
-		<field name="FLAG_APPEND_TO_GROUP" />
-		<field name="FLAG_PERFORM_NO_CLOSE" />
-		<field name="NONE" />
-	</class>
-	<class name="android/view/MenuInflater" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="inflate(ILandroid/view/Menu;)V" />
-	</class>
-	<class name="android/view/MenuItem" since="1">
-		<extends name="java/lang/Object" />
-		<method name="collapseActionView()Z" since="14" />
-		<method name="expandActionView()Z" since="14" />
-		<method name="getActionProvider()Landroid/view/ActionProvider;" since="14" />
-		<method name="getActionView()Landroid/view/View;" since="11" />
-		<method name="getAlphabeticShortcut()C" />
-		<method name="getGroupId()I" />
-		<method name="getIcon()Landroid/graphics/drawable/Drawable;" />
-		<method name="getIntent()Landroid/content/Intent;" />
-		<method name="getItemId()I" />
-		<method name="getMenuInfo()Landroid/view/ContextMenu$ContextMenuInfo;" />
-		<method name="getNumericShortcut()C" />
-		<method name="getOrder()I" />
-		<method name="getSubMenu()Landroid/view/SubMenu;" />
-		<method name="getTitle()Ljava/lang/CharSequence;" />
-		<method name="getTitleCondensed()Ljava/lang/CharSequence;" />
-		<method name="hasSubMenu()Z" />
-		<method name="isActionViewExpanded()Z" since="14" />
-		<method name="isCheckable()Z" />
-		<method name="isChecked()Z" />
-		<method name="isEnabled()Z" />
-		<method name="isVisible()Z" />
-		<method name="setActionProvider(Landroid/view/ActionProvider;)Landroid/view/MenuItem;" since="14" />
-		<method name="setActionView(I)Landroid/view/MenuItem;" since="11" />
-		<method name="setActionView(Landroid/view/View;)Landroid/view/MenuItem;" since="11" />
-		<method name="setAlphabeticShortcut(C)Landroid/view/MenuItem;" />
-		<method name="setCheckable(Z)Landroid/view/MenuItem;" />
-		<method name="setChecked(Z)Landroid/view/MenuItem;" />
-		<method name="setEnabled(Z)Landroid/view/MenuItem;" />
-		<method name="setIcon(I)Landroid/view/MenuItem;" />
-		<method name="setIcon(Landroid/graphics/drawable/Drawable;)Landroid/view/MenuItem;" />
-		<method name="setIntent(Landroid/content/Intent;)Landroid/view/MenuItem;" />
-		<method name="setNumericShortcut(C)Landroid/view/MenuItem;" />
-		<method name="setOnActionExpandListener(Landroid/view/MenuItem$OnActionExpandListener;)Landroid/view/MenuItem;" since="14" />
-		<method name="setOnMenuItemClickListener(Landroid/view/MenuItem$OnMenuItemClickListener;)Landroid/view/MenuItem;" />
-		<method name="setShortcut(CC)Landroid/view/MenuItem;" />
-		<method name="setShowAsAction(I)V" since="11" />
-		<method name="setShowAsActionFlags(I)Landroid/view/MenuItem;" since="14" />
-		<method name="setTitle(I)Landroid/view/MenuItem;" />
-		<method name="setTitle(Ljava/lang/CharSequence;)Landroid/view/MenuItem;" />
-		<method name="setTitleCondensed(Ljava/lang/CharSequence;)Landroid/view/MenuItem;" />
-		<method name="setVisible(Z)Landroid/view/MenuItem;" />
-		<field name="SHOW_AS_ACTION_ALWAYS" since="11" />
-		<field name="SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW" since="14" />
-		<field name="SHOW_AS_ACTION_IF_ROOM" since="11" />
-		<field name="SHOW_AS_ACTION_NEVER" since="11" />
-		<field name="SHOW_AS_ACTION_WITH_TEXT" since="11" />
-	</class>
-	<class name="android/view/MenuItem$OnActionExpandListener" since="14">
-		<extends name="java/lang/Object" />
-		<method name="onMenuItemActionCollapse(Landroid/view/MenuItem;)Z" />
-		<method name="onMenuItemActionExpand(Landroid/view/MenuItem;)Z" />
-	</class>
-	<class name="android/view/MenuItem$OnMenuItemClickListener" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onMenuItemClick(Landroid/view/MenuItem;)Z" />
-	</class>
-	<class name="android/view/MotionEvent" since="1">
-		<extends name="android/view/InputEvent" since="9" />
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="actionToString(I)Ljava/lang/String;" since="19" />
-		<method name="addBatch(JFFFFI)V" />
-		<method name="addBatch(J[Landroid/view/MotionEvent$PointerCoords;I)V" since="9" />
-		<method name="axisFromString(Ljava/lang/String;)I" since="12" />
-		<method name="axisToString(I)Ljava/lang/String;" since="12" />
-		<method name="findPointerIndex(I)I" since="5" />
-		<method name="getAction()I" />
-		<method name="getActionIndex()I" since="8" />
-		<method name="getActionMasked()I" since="8" />
-		<method name="getAxisValue(I)F" since="12" />
-		<method name="getAxisValue(II)F" since="12" />
-		<method name="getButtonState()I" since="14" />
-		<method name="getDeviceId()I" />
-		<method name="getDownTime()J" />
-		<method name="getEdgeFlags()I" />
-		<method name="getEventTime()J" />
-		<method name="getFlags()I" since="9" />
-		<method name="getHistoricalAxisValue(II)F" since="12" />
-		<method name="getHistoricalAxisValue(III)F" since="12" />
-		<method name="getHistoricalEventTime(I)J" />
-		<method name="getHistoricalOrientation(I)F" since="9" />
-		<method name="getHistoricalOrientation(II)F" since="9" />
-		<method name="getHistoricalPointerCoords(IILandroid/view/MotionEvent$PointerCoords;)V" since="9" />
-		<method name="getHistoricalPressure(I)F" />
-		<method name="getHistoricalPressure(II)F" since="5" />
-		<method name="getHistoricalSize(I)F" />
-		<method name="getHistoricalSize(II)F" since="5" />
-		<method name="getHistoricalToolMajor(I)F" since="9" />
-		<method name="getHistoricalToolMajor(II)F" since="9" />
-		<method name="getHistoricalToolMinor(I)F" since="9" />
-		<method name="getHistoricalToolMinor(II)F" since="9" />
-		<method name="getHistoricalTouchMajor(I)F" since="9" />
-		<method name="getHistoricalTouchMajor(II)F" since="9" />
-		<method name="getHistoricalTouchMinor(I)F" since="9" />
-		<method name="getHistoricalTouchMinor(II)F" since="9" />
-		<method name="getHistoricalX(I)F" />
-		<method name="getHistoricalX(II)F" since="5" />
-		<method name="getHistoricalY(I)F" />
-		<method name="getHistoricalY(II)F" since="5" />
-		<method name="getHistorySize()I" />
-		<method name="getMetaState()I" />
-		<method name="getOrientation()F" since="9" />
-		<method name="getOrientation(I)F" since="9" />
-		<method name="getPointerCoords(ILandroid/view/MotionEvent$PointerCoords;)V" since="9" />
-		<method name="getPointerCount()I" since="5" />
-		<method name="getPointerId(I)I" since="5" />
-		<method name="getPointerProperties(ILandroid/view/MotionEvent$PointerProperties;)V" since="14" />
-		<method name="getPressure()F" />
-		<method name="getPressure(I)F" since="5" />
-		<method name="getRawX()F" />
-		<method name="getRawY()F" />
-		<method name="getSize()F" />
-		<method name="getSize(I)F" since="5" />
-		<method name="getToolMajor()F" since="9" />
-		<method name="getToolMajor(I)F" since="9" />
-		<method name="getToolMinor()F" since="9" />
-		<method name="getToolMinor(I)F" since="9" />
-		<method name="getToolType(I)I" since="14" />
-		<method name="getTouchMajor()F" since="9" />
-		<method name="getTouchMajor(I)F" since="9" />
-		<method name="getTouchMinor()F" since="9" />
-		<method name="getTouchMinor(I)F" since="9" />
-		<method name="getX()F" />
-		<method name="getX(I)F" since="5" />
-		<method name="getXPrecision()F" />
-		<method name="getY()F" />
-		<method name="getY(I)F" since="5" />
-		<method name="getYPrecision()F" />
-		<method name="obtain(JJIFFFFIFFII)Landroid/view/MotionEvent;" />
-		<method name="obtain(JJIFFI)Landroid/view/MotionEvent;" />
-		<method name="obtain(JJIIFFFFIFFII)Landroid/view/MotionEvent;" since="5" />
-		<method name="obtain(JJII[I[Landroid/view/MotionEvent$PointerCoords;IFFIIII)Landroid/view/MotionEvent;" since="9" />
-		<method name="obtain(JJII[Landroid/view/MotionEvent$PointerProperties;[Landroid/view/MotionEvent$PointerCoords;IIFFIIII)Landroid/view/MotionEvent;" since="14" />
-		<method name="obtain(Landroid/view/MotionEvent;)Landroid/view/MotionEvent;" />
-		<method name="obtainNoHistory(Landroid/view/MotionEvent;)Landroid/view/MotionEvent;" since="5" />
-		<method name="offsetLocation(FF)V" />
-		<method name="recycle()V" />
-		<method name="setAction(I)V" />
-		<method name="setEdgeFlags(I)V" />
-		<method name="setLocation(FF)V" />
-		<method name="setSource(I)V" since="12" />
-		<method name="transform(Landroid/graphics/Matrix;)V" since="11" />
-		<field name="ACTION_CANCEL" />
-		<field name="ACTION_DOWN" />
-		<field name="ACTION_HOVER_ENTER" since="14" />
-		<field name="ACTION_HOVER_EXIT" since="14" />
-		<field name="ACTION_HOVER_MOVE" since="12" />
-		<field name="ACTION_MASK" since="5" />
-		<field name="ACTION_MOVE" />
-		<field name="ACTION_OUTSIDE" since="3" />
-		<field name="ACTION_POINTER_1_DOWN" since="5" />
-		<field name="ACTION_POINTER_1_UP" since="5" />
-		<field name="ACTION_POINTER_2_DOWN" since="5" />
-		<field name="ACTION_POINTER_2_UP" since="5" />
-		<field name="ACTION_POINTER_3_DOWN" since="5" />
-		<field name="ACTION_POINTER_3_UP" since="5" />
-		<field name="ACTION_POINTER_DOWN" since="5" />
-		<field name="ACTION_POINTER_ID_MASK" since="5" />
-		<field name="ACTION_POINTER_ID_SHIFT" since="5" />
-		<field name="ACTION_POINTER_INDEX_MASK" since="8" />
-		<field name="ACTION_POINTER_INDEX_SHIFT" since="8" />
-		<field name="ACTION_POINTER_UP" since="5" />
-		<field name="ACTION_SCROLL" since="12" />
-		<field name="ACTION_UP" />
-		<field name="AXIS_BRAKE" since="12" />
-		<field name="AXIS_DISTANCE" since="14" />
-		<field name="AXIS_GAS" since="12" />
-		<field name="AXIS_GENERIC_1" since="12" />
-		<field name="AXIS_GENERIC_10" since="12" />
-		<field name="AXIS_GENERIC_11" since="12" />
-		<field name="AXIS_GENERIC_12" since="12" />
-		<field name="AXIS_GENERIC_13" since="12" />
-		<field name="AXIS_GENERIC_14" since="12" />
-		<field name="AXIS_GENERIC_15" since="12" />
-		<field name="AXIS_GENERIC_16" since="12" />
-		<field name="AXIS_GENERIC_2" since="12" />
-		<field name="AXIS_GENERIC_3" since="12" />
-		<field name="AXIS_GENERIC_4" since="12" />
-		<field name="AXIS_GENERIC_5" since="12" />
-		<field name="AXIS_GENERIC_6" since="12" />
-		<field name="AXIS_GENERIC_7" since="12" />
-		<field name="AXIS_GENERIC_8" since="12" />
-		<field name="AXIS_GENERIC_9" since="12" />
-		<field name="AXIS_HAT_X" since="12" />
-		<field name="AXIS_HAT_Y" since="12" />
-		<field name="AXIS_HSCROLL" since="12" />
-		<field name="AXIS_LTRIGGER" since="12" />
-		<field name="AXIS_ORIENTATION" since="12" />
-		<field name="AXIS_PRESSURE" since="12" />
-		<field name="AXIS_RTRIGGER" since="12" />
-		<field name="AXIS_RUDDER" since="12" />
-		<field name="AXIS_RX" since="12" />
-		<field name="AXIS_RY" since="12" />
-		<field name="AXIS_RZ" since="12" />
-		<field name="AXIS_SIZE" since="12" />
-		<field name="AXIS_THROTTLE" since="12" />
-		<field name="AXIS_TILT" since="14" />
-		<field name="AXIS_TOOL_MAJOR" since="12" />
-		<field name="AXIS_TOOL_MINOR" since="12" />
-		<field name="AXIS_TOUCH_MAJOR" since="12" />
-		<field name="AXIS_TOUCH_MINOR" since="12" />
-		<field name="AXIS_VSCROLL" since="12" />
-		<field name="AXIS_WHEEL" since="12" />
-		<field name="AXIS_X" since="12" />
-		<field name="AXIS_Y" since="12" />
-		<field name="AXIS_Z" since="12" />
-		<field name="BUTTON_BACK" since="14" />
-		<field name="BUTTON_FORWARD" since="14" />
-		<field name="BUTTON_PRIMARY" since="14" />
-		<field name="BUTTON_SECONDARY" since="14" />
-		<field name="BUTTON_TERTIARY" since="14" />
-		<field name="CREATOR" />
-		<field name="EDGE_BOTTOM" />
-		<field name="EDGE_LEFT" />
-		<field name="EDGE_RIGHT" />
-		<field name="EDGE_TOP" />
-		<field name="FLAG_WINDOW_IS_OBSCURED" since="9" />
-		<field name="INVALID_POINTER_ID" since="14" />
-		<field name="TOOL_TYPE_ERASER" since="14" />
-		<field name="TOOL_TYPE_FINGER" since="14" />
-		<field name="TOOL_TYPE_MOUSE" since="14" />
-		<field name="TOOL_TYPE_STYLUS" since="14" />
-		<field name="TOOL_TYPE_UNKNOWN" since="14" />
-	</class>
-	<class name="android/view/MotionEvent$PointerCoords" since="9">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/view/MotionEvent$PointerCoords;)V" since="12" />
-		<method name="clear()V" since="12" />
-		<method name="copyFrom(Landroid/view/MotionEvent$PointerCoords;)V" since="12" />
-		<method name="getAxisValue(I)F" since="12" />
-		<method name="setAxisValue(IF)V" since="12" />
-		<field name="orientation" />
-		<field name="pressure" />
-		<field name="size" />
-		<field name="toolMajor" />
-		<field name="toolMinor" />
-		<field name="touchMajor" />
-		<field name="touchMinor" />
-		<field name="x" />
-		<field name="y" />
-	</class>
-	<class name="android/view/MotionEvent$PointerProperties" since="14">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/view/MotionEvent$PointerProperties;)V" />
-		<method name="clear()V" />
-		<method name="copyFrom(Landroid/view/MotionEvent$PointerProperties;)V" />
-		<field name="id" />
-		<field name="toolType" />
-	</class>
-	<class name="android/view/OrientationEventListener" since="3">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;I)V" />
-		<method name="canDetectOrientation()Z" />
-		<method name="disable()V" />
-		<method name="enable()V" />
-		<method name="onOrientationChanged(I)V" />
-		<field name="ORIENTATION_UNKNOWN" />
-	</class>
-	<class name="android/view/OrientationListener" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/hardware/SensorListener" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;I)V" since="3" />
-		<method name="disable()V" />
-		<method name="enable()V" />
-		<method name="onOrientationChanged(I)V" />
-		<field name="ORIENTATION_UNKNOWN" />
-	</class>
-	<class name="android/view/ScaleGestureDetector" since="8">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/view/ScaleGestureDetector$OnScaleGestureListener;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/view/ScaleGestureDetector$OnScaleGestureListener;Landroid/os/Handler;)V" since="19" />
-		<method name="getCurrentSpan()F" />
-		<method name="getCurrentSpanX()F" since="11" />
-		<method name="getCurrentSpanY()F" since="11" />
-		<method name="getEventTime()J" />
-		<method name="getFocusX()F" />
-		<method name="getFocusY()F" />
-		<method name="getPreviousSpan()F" />
-		<method name="getPreviousSpanX()F" since="11" />
-		<method name="getPreviousSpanY()F" since="11" />
-		<method name="getScaleFactor()F" />
-		<method name="getTimeDelta()J" />
-		<method name="isInProgress()Z" />
-		<method name="isQuickScaleEnabled()Z" since="19" />
-		<method name="onTouchEvent(Landroid/view/MotionEvent;)Z" />
-		<method name="setQuickScaleEnabled(Z)V" since="19" />
-	</class>
-	<class name="android/view/ScaleGestureDetector$OnScaleGestureListener" since="8">
-		<extends name="java/lang/Object" />
-		<method name="onScale(Landroid/view/ScaleGestureDetector;)Z" />
-		<method name="onScaleBegin(Landroid/view/ScaleGestureDetector;)Z" />
-		<method name="onScaleEnd(Landroid/view/ScaleGestureDetector;)V" />
-	</class>
-	<class name="android/view/ScaleGestureDetector$SimpleOnScaleGestureListener" since="8">
-		<extends name="java/lang/Object" />
-		<implements name="android/view/ScaleGestureDetector$OnScaleGestureListener" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="android/view/SoundEffectConstants" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getContantForFocusDirection(I)I" />
-		<field name="CLICK" />
-		<field name="NAVIGATION_DOWN" />
-		<field name="NAVIGATION_LEFT" />
-		<field name="NAVIGATION_RIGHT" />
-		<field name="NAVIGATION_UP" />
-	</class>
-	<class name="android/view/SubMenu" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/view/Menu" />
-		<method name="clearHeader()V" />
-		<method name="getItem()Landroid/view/MenuItem;" />
-		<method name="setHeaderIcon(I)Landroid/view/SubMenu;" />
-		<method name="setHeaderIcon(Landroid/graphics/drawable/Drawable;)Landroid/view/SubMenu;" />
-		<method name="setHeaderTitle(I)Landroid/view/SubMenu;" />
-		<method name="setHeaderTitle(Ljava/lang/CharSequence;)Landroid/view/SubMenu;" />
-		<method name="setHeaderView(Landroid/view/View;)Landroid/view/SubMenu;" />
-		<method name="setIcon(I)Landroid/view/SubMenu;" />
-		<method name="setIcon(Landroid/graphics/drawable/Drawable;)Landroid/view/SubMenu;" />
-	</class>
-	<class name="android/view/Surface" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/graphics/SurfaceTexture;)V" since="14" />
-		<method name="freeze()V" />
-		<method name="hide()V" />
-		<method name="isValid()Z" />
-		<method name="lockCanvas(Landroid/graphics/Rect;)Landroid/graphics/Canvas;" />
-		<method name="readFromParcel(Landroid/os/Parcel;)V" />
-		<method name="release()V" since="14" />
-		<method name="setAlpha(F)V" />
-		<method name="setFlags(II)V" />
-		<method name="setFreezeTint(I)V" />
-		<method name="setLayer(I)V" />
-		<method name="setMatrix(FFFF)V" />
-		<method name="setOrientation(II)V" />
-		<method name="setPosition(II)V" />
-		<method name="setSize(II)V" />
-		<method name="setTransparentRegionHint(Landroid/graphics/Region;)V" />
-		<method name="show()V" />
-		<method name="unfreeze()V" />
-		<method name="unlockCanvas(Landroid/graphics/Canvas;)V" />
-		<method name="unlockCanvasAndPost(Landroid/graphics/Canvas;)V" />
-		<field name="CREATOR" />
-		<field name="FX_SURFACE_BLUR" />
-		<field name="FX_SURFACE_DIM" />
-		<field name="FX_SURFACE_MASK" />
-		<field name="FX_SURFACE_NORMAL" />
-		<field name="GPU" />
-		<field name="HARDWARE" />
-		<field name="HIDDEN" />
-		<field name="NON_PREMULTIPLIED" />
-		<field name="PUSH_BUFFERS" />
-		<field name="ROTATION_0" />
-		<field name="ROTATION_180" />
-		<field name="ROTATION_270" />
-		<field name="ROTATION_90" />
-		<field name="SECURE" />
-		<field name="SURACE_FROZEN" />
-		<field name="SURFACE_BLUR_FREEZE" />
-		<field name="SURFACE_DITHER" />
-		<field name="SURFACE_FROZEN" since="4" />
-		<field name="SURFACE_HIDDEN" />
-	</class>
-	<class name="android/view/Surface$OutOfResourcesException" since="1">
-		<extends name="java/lang/Exception" />
-		<extends name="java/lang/RuntimeException" since="19" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/view/SurfaceHolder" since="1">
-		<extends name="java/lang/Object" />
-		<method name="addCallback(Landroid/view/SurfaceHolder$Callback;)V" />
-		<method name="getSurface()Landroid/view/Surface;" />
-		<method name="getSurfaceFrame()Landroid/graphics/Rect;" />
-		<method name="isCreating()Z" />
-		<method name="lockCanvas()Landroid/graphics/Canvas;" />
-		<method name="lockCanvas(Landroid/graphics/Rect;)Landroid/graphics/Canvas;" />
-		<method name="removeCallback(Landroid/view/SurfaceHolder$Callback;)V" />
-		<method name="setFixedSize(II)V" />
-		<method name="setFormat(I)V" />
-		<method name="setKeepScreenOn(Z)V" />
-		<method name="setSizeFromLayout()V" />
-		<method name="setType(I)V" />
-		<method name="unlockCanvasAndPost(Landroid/graphics/Canvas;)V" />
-		<field name="SURFACE_TYPE_GPU" />
-		<field name="SURFACE_TYPE_HARDWARE" />
-		<field name="SURFACE_TYPE_NORMAL" />
-		<field name="SURFACE_TYPE_PUSH_BUFFERS" />
-	</class>
-	<class name="android/view/SurfaceHolder$BadSurfaceTypeException" since="1">
-		<extends name="java/lang/RuntimeException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/view/SurfaceHolder$Callback" since="1">
-		<extends name="java/lang/Object" />
-		<method name="surfaceChanged(Landroid/view/SurfaceHolder;III)V" />
-		<method name="surfaceCreated(Landroid/view/SurfaceHolder;)V" />
-		<method name="surfaceDestroyed(Landroid/view/SurfaceHolder;)V" />
-	</class>
-	<class name="android/view/SurfaceHolder$Callback2" since="9">
-		<extends name="java/lang/Object" />
-		<implements name="android/view/SurfaceHolder$Callback" />
-		<method name="surfaceRedrawNeeded(Landroid/view/SurfaceHolder;)V" />
-	</class>
-	<class name="android/view/SurfaceView" since="1">
-		<extends name="android/view/View" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-		<method name="gatherTransparentRegion(Landroid/graphics/Region;)Z" />
-		<method name="getHolder()Landroid/view/SurfaceHolder;" />
-		<method name="setSecure(Z)V" since="17" />
-		<method name="setZOrderMediaOverlay(Z)V" since="5" />
-		<method name="setZOrderOnTop(Z)V" since="5" />
-	</class>
-	<class name="android/view/TextureView" since="14">
-		<extends name="android/view/View" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-		<method name="getBitmap()Landroid/graphics/Bitmap;" />
-		<method name="getBitmap(II)Landroid/graphics/Bitmap;" />
-		<method name="getBitmap(Landroid/graphics/Bitmap;)Landroid/graphics/Bitmap;" />
-		<method name="getSurfaceTexture()Landroid/graphics/SurfaceTexture;" />
-		<method name="getSurfaceTextureListener()Landroid/view/TextureView$SurfaceTextureListener;" />
-		<method name="getTransform(Landroid/graphics/Matrix;)Landroid/graphics/Matrix;" />
-		<method name="isAvailable()Z" />
-		<method name="lockCanvas()Landroid/graphics/Canvas;" />
-		<method name="lockCanvas(Landroid/graphics/Rect;)Landroid/graphics/Canvas;" />
-		<method name="setOpaque(Z)V" />
-		<method name="setSurfaceTexture(Landroid/graphics/SurfaceTexture;)V" since="16" />
-		<method name="setSurfaceTextureListener(Landroid/view/TextureView$SurfaceTextureListener;)V" />
-		<method name="setTransform(Landroid/graphics/Matrix;)V" />
-		<method name="unlockCanvasAndPost(Landroid/graphics/Canvas;)V" />
-	</class>
-	<class name="android/view/TextureView$SurfaceTextureListener" since="14">
-		<extends name="java/lang/Object" />
-		<method name="onSurfaceTextureAvailable(Landroid/graphics/SurfaceTexture;II)V" />
-		<method name="onSurfaceTextureDestroyed(Landroid/graphics/SurfaceTexture;)Z" />
-		<method name="onSurfaceTextureSizeChanged(Landroid/graphics/SurfaceTexture;II)V" />
-		<method name="onSurfaceTextureUpdated(Landroid/graphics/SurfaceTexture;)V" />
-	</class>
-	<class name="android/view/TouchDelegate" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/graphics/Rect;Landroid/view/View;)V" />
-		<method name="onTouchEvent(Landroid/view/MotionEvent;)Z" />
-		<field name="ABOVE" />
-		<field name="BELOW" />
-		<field name="TO_LEFT" />
-		<field name="TO_RIGHT" />
-	</class>
-	<class name="android/view/VelocityTracker" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="addMovement(Landroid/view/MotionEvent;)V" />
-		<method name="clear()V" />
-		<method name="computeCurrentVelocity(I)V" />
-		<method name="computeCurrentVelocity(IF)V" since="4" />
-		<method name="getXVelocity()F" />
-		<method name="getXVelocity(I)F" since="8" />
-		<method name="getYVelocity()F" />
-		<method name="getYVelocity(I)F" since="8" />
-		<method name="obtain()Landroid/view/VelocityTracker;" />
-		<method name="recycle()V" />
-	</class>
-	<class name="android/view/View" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/graphics/drawable/Drawable$Callback" />
-		<implements name="android/view/KeyEvent$Callback" />
-		<implements name="android/view/accessibility/AccessibilityEventSource" since="4" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-		<method name="addChildrenForAccessibility(Ljava/util/ArrayList;)V" since="16" />
-		<method name="addFocusables(Ljava/util/ArrayList;I)V" />
-		<method name="addFocusables(Ljava/util/ArrayList;II)V" since="4" />
-		<method name="addOnAttachStateChangeListener(Landroid/view/View$OnAttachStateChangeListener;)V" since="12" />
-		<method name="addOnLayoutChangeListener(Landroid/view/View$OnLayoutChangeListener;)V" since="11" />
-		<method name="addTouchables(Ljava/util/ArrayList;)V" />
-		<method name="animate()Landroid/view/ViewPropertyAnimator;" since="12" />
-		<method name="announceForAccessibility(Ljava/lang/CharSequence;)V" since="16" />
-		<method name="awakenScrollBars()Z" since="5" />
-		<method name="awakenScrollBars(I)Z" since="5" />
-		<method name="awakenScrollBars(IZ)Z" since="5" />
-		<method name="bringToFront()V" />
-		<method name="buildDrawingCache()V" />
-		<method name="buildDrawingCache(Z)V" since="4" />
-		<method name="buildLayer()V" since="12" />
-		<method name="callOnClick()Z" since="15" />
-		<method name="canResolveLayoutDirection()Z" since="19" />
-		<method name="canResolveTextAlignment()Z" since="19" />
-		<method name="canResolveTextDirection()Z" since="19" />
-		<method name="canScrollHorizontally(I)Z" since="14" />
-		<method name="canScrollVertically(I)Z" since="14" />
-		<method name="cancelLongPress()V" />
-		<method name="cancelPendingInputEvents()V" since="19" />
-		<method name="checkInputConnectionProxy(Landroid/view/View;)Z" since="3" />
-		<method name="clearAnimation()V" />
-		<method name="clearFocus()V" />
-		<method name="combineMeasuredStates(II)I" since="11" />
-		<method name="computeHorizontalScrollExtent()I" />
-		<method name="computeHorizontalScrollOffset()I" />
-		<method name="computeHorizontalScrollRange()I" />
-		<method name="computeScroll()V" />
-		<method name="computeVerticalScrollExtent()I" />
-		<method name="computeVerticalScrollOffset()I" />
-		<method name="computeVerticalScrollRange()I" />
-		<method name="createAccessibilityNodeInfo()Landroid/view/accessibility/AccessibilityNodeInfo;" since="14" />
-		<method name="createContextMenu(Landroid/view/ContextMenu;)V" />
-		<method name="destroyDrawingCache()V" />
-		<method name="dispatchApplyWindowInsets(Landroid/view/WindowInsets;)Landroid/view/WindowInsets;" since="20" />
-		<method name="dispatchConfigurationChanged(Landroid/content/res/Configuration;)V" since="8" />
-		<method name="dispatchDisplayHint(I)V" since="8" />
-		<method name="dispatchDragEvent(Landroid/view/DragEvent;)Z" since="11" />
-		<method name="dispatchDraw(Landroid/graphics/Canvas;)V" />
-		<method name="dispatchGenericFocusedEvent(Landroid/view/MotionEvent;)Z" since="14" />
-		<method name="dispatchGenericMotionEvent(Landroid/view/MotionEvent;)Z" since="12" />
-		<method name="dispatchGenericPointerEvent(Landroid/view/MotionEvent;)Z" since="14" />
-		<method name="dispatchHoverEvent(Landroid/view/MotionEvent;)Z" since="14" />
-		<method name="dispatchKeyEvent(Landroid/view/KeyEvent;)Z" />
-		<method name="dispatchKeyEventPreIme(Landroid/view/KeyEvent;)Z" since="3" />
-		<method name="dispatchKeyShortcutEvent(Landroid/view/KeyEvent;)Z" />
-		<method name="dispatchNestedFling(FFZ)Z" since="21" />
-		<method name="dispatchNestedPreScroll(II[I[I)Z" since="21" />
-		<method name="dispatchNestedScroll(IIII[I)Z" since="21" />
-		<method name="dispatchPopulateAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;)Z" since="4" />
-		<method name="dispatchRestoreInstanceState(Landroid/util/SparseArray;)V" />
-		<method name="dispatchSaveInstanceState(Landroid/util/SparseArray;)V" />
-		<method name="dispatchSetActivated(Z)V" since="11" />
-		<method name="dispatchSetPressed(Z)V" />
-		<method name="dispatchSetSelected(Z)V" />
-		<method name="dispatchSystemUiVisibilityChanged(I)V" since="11" />
-		<method name="dispatchTouchEvent(Landroid/view/MotionEvent;)Z" />
-		<method name="dispatchTrackballEvent(Landroid/view/MotionEvent;)Z" />
-		<method name="dispatchUnhandledMove(Landroid/view/View;I)Z" />
-		<method name="dispatchVisibilityChanged(Landroid/view/View;I)V" since="8" />
-		<method name="dispatchWindowFocusChanged(Z)V" />
-		<method name="dispatchWindowSystemUiVisiblityChanged(I)V" since="16" />
-		<method name="dispatchWindowVisibilityChanged(I)V" />
-		<method name="draw(Landroid/graphics/Canvas;)V" />
-		<method name="drawableStateChanged()V" />
-		<method name="findFocus()Landroid/view/View;" />
-		<method name="findViewById(I)Landroid/view/View;" />
-		<method name="findViewWithTag(Ljava/lang/Object;)Landroid/view/View;" />
-		<method name="findViewsWithText(Ljava/util/ArrayList;Ljava/lang/CharSequence;I)V" since="14" />
-		<method name="fitSystemWindows(Landroid/graphics/Rect;)Z" />
-		<method name="fitsSystemWindows()Z" since="14" />
-		<method name="focusSearch(I)Landroid/view/View;" />
-		<method name="forceLayout()V" />
-		<method name="generateViewId()I" since="17" />
-		<method name="getAccessibilityLiveRegion()I" since="19" />
-		<method name="getAccessibilityNodeProvider()Landroid/view/accessibility/AccessibilityNodeProvider;" since="16" />
-		<method name="getAlpha()F" since="11" />
-		<method name="getAnimation()Landroid/view/animation/Animation;" />
-		<method name="getApplicationWindowToken()Landroid/os/IBinder;" />
-		<method name="getBackground()Landroid/graphics/drawable/Drawable;" />
-		<method name="getBaseline()I" />
-		<method name="getBottom()I" />
-		<method name="getBottomFadingEdgeStrength()F" />
-		<method name="getBottomPaddingOffset()I" since="2" />
-		<method name="getCameraDistance()F" since="16" />
-		<method name="getClipBounds()Landroid/graphics/Rect;" since="18" />
-		<method name="getClipToOutline()Z" since="21" />
-		<method name="getContentDescription()Ljava/lang/CharSequence;" since="4" />
-		<method name="getContext()Landroid/content/Context;" />
-		<method name="getContextMenuInfo()Landroid/view/ContextMenu$ContextMenuInfo;" />
-		<method name="getDefaultSize(II)I" />
-		<method name="getDisplay()Landroid/view/Display;" since="17" />
-		<method name="getDrawableState()[I" />
-		<method name="getDrawingCache()Landroid/graphics/Bitmap;" />
-		<method name="getDrawingCache(Z)Landroid/graphics/Bitmap;" since="4" />
-		<method name="getDrawingCacheBackgroundColor()I" />
-		<method name="getDrawingCacheQuality()I" />
-		<method name="getDrawingRect(Landroid/graphics/Rect;)V" />
-		<method name="getDrawingTime()J" />
-		<method name="getElevation()F" since="21" />
-		<method name="getFilterTouchesWhenObscured()Z" since="9" />
-		<method name="getFitsSystemWindows()Z" since="16" />
-		<method name="getFocusables(I)Ljava/util/ArrayList;" />
-		<method name="getFocusedRect(Landroid/graphics/Rect;)V" />
-		<method name="getGlobalVisibleRect(Landroid/graphics/Rect;)Z" />
-		<method name="getGlobalVisibleRect(Landroid/graphics/Rect;Landroid/graphics/Point;)Z" />
-		<method name="getHandler()Landroid/os/Handler;" />
-		<method name="getHeight()I" />
-		<method name="getHitRect(Landroid/graphics/Rect;)V" />
-		<method name="getHorizontalFadingEdgeLength()I" />
-		<method name="getHorizontalScrollbarHeight()I" />
-		<method name="getId()I" />
-		<method name="getImportantForAccessibility()I" since="16" />
-		<method name="getKeepScreenOn()Z" />
-		<method name="getKeyDispatcherState()Landroid/view/KeyEvent$DispatcherState;" since="5" />
-		<method name="getLabelFor()I" since="17" />
-		<method name="getLayerType()I" since="11" />
-		<method name="getLayoutDirection()I" since="17" />
-		<method name="getLayoutParams()Landroid/view/ViewGroup$LayoutParams;" />
-		<method name="getLeft()I" />
-		<method name="getLeftFadingEdgeStrength()F" />
-		<method name="getLeftPaddingOffset()I" since="2" />
-		<method name="getLocalVisibleRect(Landroid/graphics/Rect;)Z" />
-		<method name="getLocationInWindow([I)V" />
-		<method name="getLocationOnScreen([I)V" />
-		<method name="getMatrix()Landroid/graphics/Matrix;" since="11" />
-		<method name="getMeasuredHeight()I" />
-		<method name="getMeasuredHeightAndState()I" since="11" />
-		<method name="getMeasuredState()I" since="11" />
-		<method name="getMeasuredWidth()I" />
-		<method name="getMeasuredWidthAndState()I" since="11" />
-		<method name="getMinimumHeight()I" since="16" />
-		<method name="getMinimumWidth()I" since="16" />
-		<method name="getNextFocusDownId()I" />
-		<method name="getNextFocusForwardId()I" since="11" />
-		<method name="getNextFocusLeftId()I" />
-		<method name="getNextFocusRightId()I" />
-		<method name="getNextFocusUpId()I" />
-		<method name="getOnFocusChangeListener()Landroid/view/View$OnFocusChangeListener;" />
-		<method name="getOverScrollMode()I" since="9" />
-		<method name="getOverlay()Landroid/view/ViewOverlay;" since="18" />
-		<method name="getPaddingBottom()I" />
-		<method name="getPaddingEnd()I" since="17" />
-		<method name="getPaddingLeft()I" />
-		<method name="getPaddingRight()I" />
-		<method name="getPaddingStart()I" since="17" />
-		<method name="getPaddingTop()I" />
-		<method name="getParent()Landroid/view/ViewParent;" />
-		<method name="getParentForAccessibility()Landroid/view/ViewParent;" since="16" />
-		<method name="getPivotX()F" since="11" />
-		<method name="getPivotY()F" since="11" />
-		<method name="getResources()Landroid/content/res/Resources;" />
-		<method name="getRight()I" />
-		<method name="getRightFadingEdgeStrength()F" />
-		<method name="getRightPaddingOffset()I" since="2" />
-		<method name="getRootView()Landroid/view/View;" />
-		<method name="getRotation()F" since="11" />
-		<method name="getRotationX()F" since="11" />
-		<method name="getRotationY()F" since="11" />
-		<method name="getScaleX()F" since="11" />
-		<method name="getScaleY()F" since="11" />
-		<method name="getScrollBarDefaultDelayBeforeFade()I" since="16" />
-		<method name="getScrollBarFadeDuration()I" since="16" />
-		<method name="getScrollBarSize()I" since="16" />
-		<method name="getScrollBarStyle()I" />
-		<method name="getScrollX()I" />
-		<method name="getScrollY()I" />
-		<method name="getSolidColor()I" />
-		<method name="getStateListAnimator()Landroid/animation/StateListAnimator;" since="21" />
-		<method name="getSuggestedMinimumHeight()I" />
-		<method name="getSuggestedMinimumWidth()I" />
-		<method name="getSystemUiVisibility()I" since="11" />
-		<method name="getTag()Ljava/lang/Object;" />
-		<method name="getTag(I)Ljava/lang/Object;" since="4" />
-		<method name="getTextAlignment()I" since="17" />
-		<method name="getTextDirection()I" since="17" />
-		<method name="getTop()I" />
-		<method name="getTopFadingEdgeStrength()F" />
-		<method name="getTopPaddingOffset()I" since="2" />
-		<method name="getTouchDelegate()Landroid/view/TouchDelegate;" />
-		<method name="getTouchables()Ljava/util/ArrayList;" />
-		<method name="getTranslationX()F" since="11" />
-		<method name="getTranslationY()F" since="11" />
-		<method name="getTranslationZ()F" since="21" />
-		<method name="getVerticalFadingEdgeLength()I" />
-		<method name="getVerticalScrollbarPosition()I" since="11" />
-		<method name="getVerticalScrollbarWidth()I" />
-		<method name="getViewName()Ljava/lang/String;" since="21" />
-		<method name="getViewTreeObserver()Landroid/view/ViewTreeObserver;" />
-		<method name="getVisibility()I" />
-		<method name="getWidth()I" />
-		<method name="getWindowAttachCount()I" />
-		<method name="getWindowId()Landroid/view/WindowId;" since="18" />
-		<method name="getWindowSystemUiVisibility()I" since="16" />
-		<method name="getWindowToken()Landroid/os/IBinder;" />
-		<method name="getWindowVisibility()I" />
-		<method name="getWindowVisibleDisplayFrame(Landroid/graphics/Rect;)V" since="3" />
-		<method name="getX()F" since="11" />
-		<method name="getY()F" since="11" />
-		<method name="getZ()F" since="21" />
-		<method name="hasFocus()Z" />
-		<method name="hasFocusable()Z" />
-		<method name="hasNestedScrollingParent()Z" since="21" />
-		<method name="hasOnClickListeners()Z" since="15" />
-		<method name="hasOverlappingRendering()Z" since="16" />
-		<method name="hasTransientState()Z" since="16" />
-		<method name="hasWindowFocus()Z" />
-		<method name="inflate(Landroid/content/Context;ILandroid/view/ViewGroup;)Landroid/view/View;" />
-		<method name="initializeFadingEdge(Landroid/content/res/TypedArray;)V" />
-		<method name="initializeScrollbars(Landroid/content/res/TypedArray;)V" />
-		<method name="invalidate()V" />
-		<method name="invalidate(IIII)V" />
-		<method name="invalidate(Landroid/graphics/Rect;)V" />
-		<method name="isAccessibilityFocused()Z" since="21" />
-		<method name="isActivated()Z" since="11" />
-		<method name="isAttachedToWindow()Z" since="19" />
-		<method name="isClickable()Z" />
-		<method name="isDirty()Z" since="11" />
-		<method name="isDrawingCacheEnabled()Z" />
-		<method name="isDuplicateParentStateEnabled()Z" />
-		<method name="isEnabled()Z" />
-		<method name="isFocusable()Z" />
-		<method name="isFocusableInTouchMode()Z" />
-		<method name="isFocused()Z" />
-		<method name="isHapticFeedbackEnabled()Z" since="3" />
-		<method name="isHardwareAccelerated()Z" since="11" />
-		<method name="isHorizontalFadingEdgeEnabled()Z" />
-		<method name="isHorizontalScrollBarEnabled()Z" />
-		<method name="isHovered()Z" since="14" />
-		<method name="isImportantForAccessibility()Z" since="21" />
-		<method name="isInEditMode()Z" since="3" />
-		<method name="isInLayout()Z" since="18" />
-		<method name="isInTouchMode()Z" />
-		<method name="isLaidOut()Z" since="19" />
-		<method name="isLayoutDirectionResolved()Z" since="19" />
-		<method name="isLayoutRequested()Z" />
-		<method name="isLongClickable()Z" />
-		<method name="isNestedScrollingEnabled()Z" since="21" />
-		<method name="isOpaque()Z" since="7" />
-		<method name="isPaddingOffsetRequired()Z" since="2" />
-		<method name="isPaddingRelative()Z" since="17" />
-		<method name="isPressed()Z" />
-		<method name="isSaveEnabled()Z" />
-		<method name="isSaveFromParentEnabled()Z" since="11" />
-		<method name="isScrollContainer()Z" since="16" />
-		<method name="isScrollbarFadingEnabled()Z" since="5" />
-		<method name="isSelected()Z" />
-		<method name="isShown()Z" />
-		<method name="isSoundEffectsEnabled()Z" />
-		<method name="isTextAlignmentResolved()Z" since="19" />
-		<method name="isTextDirectionResolved()Z" since="19" />
-		<method name="isVerticalFadingEdgeEnabled()Z" />
-		<method name="isVerticalScrollBarEnabled()Z" />
-		<method name="jumpDrawablesToCurrentState()V" since="11" />
-		<method name="layout(IIII)V" />
-		<method name="measure(II)V" />
-		<method name="mergeDrawableStates([I[I)[I" />
-		<method name="offsetLeftAndRight(I)V" />
-		<method name="offsetTopAndBottom(I)V" />
-		<method name="onAnimationEnd()V" />
-		<method name="onAnimationStart()V" />
-		<method name="onApplyWindowInsets(Landroid/view/WindowInsets;)Landroid/view/WindowInsets;" since="20" />
-		<method name="onAttachedToWindow()V" />
-		<method name="onCancelPendingInputEvents()V" since="19" />
-		<method name="onCheckIsTextEditor()Z" since="3" />
-		<method name="onConfigurationChanged(Landroid/content/res/Configuration;)V" since="8" />
-		<method name="onCreateContextMenu(Landroid/view/ContextMenu;)V" />
-		<method name="onCreateDrawableState(I)[I" />
-		<method name="onCreateInputConnection(Landroid/view/inputmethod/EditorInfo;)Landroid/view/inputmethod/InputConnection;" since="3" />
-		<method name="onDetachedFromWindow()V" />
-		<method name="onDisplayHint(I)V" since="8" />
-		<method name="onDragEvent(Landroid/view/DragEvent;)Z" since="11" />
-		<method name="onDraw(Landroid/graphics/Canvas;)V" />
-		<method name="onDrawScrollBars(Landroid/graphics/Canvas;)V" since="7" />
-		<method name="onFilterTouchEventForSecurity(Landroid/view/MotionEvent;)Z" since="9" />
-		<method name="onFinishInflate()V" />
-		<method name="onFinishTemporaryDetach()V" since="3" />
-		<method name="onFocusChanged(ZILandroid/graphics/Rect;)V" />
-		<method name="onGenericMotionEvent(Landroid/view/MotionEvent;)Z" since="12" />
-		<method name="onHoverChanged(Z)V" since="14" />
-		<method name="onHoverEvent(Landroid/view/MotionEvent;)Z" since="14" />
-		<method name="onInitializeAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;)V" since="14" />
-		<method name="onInitializeAccessibilityNodeInfo(Landroid/view/accessibility/AccessibilityNodeInfo;)V" since="14" />
-		<method name="onKeyPreIme(ILandroid/view/KeyEvent;)Z" since="3" />
-		<method name="onKeyShortcut(ILandroid/view/KeyEvent;)Z" />
-		<method name="onLayout(ZIIII)V" />
-		<method name="onMeasure(II)V" />
-		<method name="onOverScrolled(IIZZ)V" since="9" />
-		<method name="onPopulateAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;)V" since="14" />
-		<method name="onRestoreInstanceState(Landroid/os/Parcelable;)V" />
-		<method name="onRtlPropertiesChanged(I)V" since="17" />
-		<method name="onSaveInstanceState()Landroid/os/Parcelable;" />
-		<method name="onScreenStateChanged(I)V" since="16" />
-		<method name="onScrollChanged(IIII)V" />
-		<method name="onSetAlpha(I)Z" />
-		<method name="onSizeChanged(IIII)V" />
-		<method name="onStartTemporaryDetach()V" since="3" />
-		<method name="onTouchEvent(Landroid/view/MotionEvent;)Z" />
-		<method name="onTrackballEvent(Landroid/view/MotionEvent;)Z" />
-		<method name="onVisibilityChanged(Landroid/view/View;I)V" since="8" />
-		<method name="onWindowFocusChanged(Z)V" />
-		<method name="onWindowSystemUiVisibilityChanged(I)V" since="16" />
-		<method name="onWindowVisibilityChanged(I)V" />
-		<method name="overScrollBy(IIIIIIIIZ)Z" since="9" />
-		<method name="performAccessibilityAction(ILandroid/os/Bundle;)Z" since="16" />
-		<method name="performClick()Z" />
-		<method name="performHapticFeedback(I)Z" since="3" />
-		<method name="performHapticFeedback(II)Z" since="3" />
-		<method name="performLongClick()Z" />
-		<method name="playSoundEffect(I)V" />
-		<method name="post(Ljava/lang/Runnable;)Z" />
-		<method name="postDelayed(Ljava/lang/Runnable;J)Z" />
-		<method name="postInvalidate()V" />
-		<method name="postInvalidate(IIII)V" />
-		<method name="postInvalidateDelayed(J)V" />
-		<method name="postInvalidateDelayed(JIIII)V" />
-		<method name="postInvalidateOnAnimation()V" since="16" />
-		<method name="postInvalidateOnAnimation(IIII)V" since="16" />
-		<method name="postOnAnimation(Ljava/lang/Runnable;)V" since="16" />
-		<method name="postOnAnimationDelayed(Ljava/lang/Runnable;J)V" since="16" />
-		<method name="refreshDrawableState()V" />
-		<method name="removeCallbacks(Ljava/lang/Runnable;)Z" />
-		<method name="removeOnAttachStateChangeListener(Landroid/view/View$OnAttachStateChangeListener;)V" since="12" />
-		<method name="removeOnLayoutChangeListener(Landroid/view/View$OnLayoutChangeListener;)V" since="11" />
-		<method name="requestApplyInsets()V" since="20" />
-		<method name="requestFitSystemWindows()V" since="16" />
-		<method name="requestFocus()Z" />
-		<method name="requestFocus(I)Z" />
-		<method name="requestFocus(ILandroid/graphics/Rect;)Z" />
-		<method name="requestFocusFromTouch()Z" />
-		<method name="requestLayout()V" />
-		<method name="requestRectangleOnScreen(Landroid/graphics/Rect;)Z" />
-		<method name="requestRectangleOnScreen(Landroid/graphics/Rect;Z)Z" />
-		<method name="resolveSize(II)I" />
-		<method name="resolveSizeAndState(III)I" since="11" />
-		<method name="restoreHierarchyState(Landroid/util/SparseArray;)V" />
-		<method name="saveHierarchyState(Landroid/util/SparseArray;)V" />
-		<method name="scrollBy(II)V" />
-		<method name="scrollTo(II)V" />
-		<method name="setAccessibilityDelegate(Landroid/view/View$AccessibilityDelegate;)V" since="14" />
-		<method name="setAccessibilityLiveRegion(I)V" since="19" />
-		<method name="setActivated(Z)V" since="11" />
-		<method name="setAlpha(F)V" since="11" />
-		<method name="setAnimation(Landroid/view/animation/Animation;)V" />
-		<method name="setBackground(Landroid/graphics/drawable/Drawable;)V" since="16" />
-		<method name="setBackgroundColor(I)V" />
-		<method name="setBackgroundDrawable(Landroid/graphics/drawable/Drawable;)V" />
-		<method name="setBackgroundResource(I)V" />
-		<method name="setBottom(I)V" since="11" />
-		<method name="setCameraDistance(F)V" since="12" />
-		<method name="setClickable(Z)V" />
-		<method name="setClipBounds(Landroid/graphics/Rect;)V" since="18" />
-		<method name="setClipToOutline(Z)V" since="21" />
-		<method name="setContentDescription(Ljava/lang/CharSequence;)V" since="4" />
-		<method name="setDrawingCacheBackgroundColor(I)V" />
-		<method name="setDrawingCacheEnabled(Z)V" />
-		<method name="setDrawingCacheQuality(I)V" />
-		<method name="setDuplicateParentStateEnabled(Z)V" />
-		<method name="setElevation(F)V" since="21" />
-		<method name="setEnabled(Z)V" />
-		<method name="setFadingEdgeLength(I)V" />
-		<method name="setFilterTouchesWhenObscured(Z)V" since="9" />
-		<method name="setFitsSystemWindows(Z)V" since="14" />
-		<method name="setFocusable(Z)V" />
-		<method name="setFocusableInTouchMode(Z)V" />
-		<method name="setHapticFeedbackEnabled(Z)V" since="3" />
-		<method name="setHasTransientState(Z)V" since="16" />
-		<method name="setHorizontalFadingEdgeEnabled(Z)V" />
-		<method name="setHorizontalScrollBarEnabled(Z)V" />
-		<method name="setHovered(Z)V" since="14" />
-		<method name="setId(I)V" />
-		<method name="setImportantForAccessibility(I)V" since="16" />
-		<method name="setKeepScreenOn(Z)V" />
-		<method name="setLabelFor(I)V" since="17" />
-		<method name="setLayerPaint(Landroid/graphics/Paint;)V" since="17" />
-		<method name="setLayerType(ILandroid/graphics/Paint;)V" since="11" />
-		<method name="setLayoutDirection(I)V" since="17" />
-		<method name="setLayoutParams(Landroid/view/ViewGroup$LayoutParams;)V" />
-		<method name="setLeft(I)V" since="11" />
-		<method name="setLongClickable(Z)V" />
-		<method name="setMeasuredDimension(II)V" />
-		<method name="setMinimumHeight(I)V" />
-		<method name="setMinimumWidth(I)V" />
-		<method name="setNestedScrollingEnabled(Z)V" since="21" />
-		<method name="setNextFocusDownId(I)V" />
-		<method name="setNextFocusForwardId(I)V" since="11" />
-		<method name="setNextFocusLeftId(I)V" />
-		<method name="setNextFocusRightId(I)V" />
-		<method name="setNextFocusUpId(I)V" />
-		<method name="setOnApplyWindowInsetsListener(Landroid/view/View$OnApplyWindowInsetsListener;)V" since="20" />
-		<method name="setOnClickListener(Landroid/view/View$OnClickListener;)V" />
-		<method name="setOnCreateContextMenuListener(Landroid/view/View$OnCreateContextMenuListener;)V" />
-		<method name="setOnDragListener(Landroid/view/View$OnDragListener;)V" since="11" />
-		<method name="setOnFocusChangeListener(Landroid/view/View$OnFocusChangeListener;)V" />
-		<method name="setOnGenericMotionListener(Landroid/view/View$OnGenericMotionListener;)V" since="12" />
-		<method name="setOnHoverListener(Landroid/view/View$OnHoverListener;)V" since="14" />
-		<method name="setOnKeyListener(Landroid/view/View$OnKeyListener;)V" />
-		<method name="setOnLongClickListener(Landroid/view/View$OnLongClickListener;)V" />
-		<method name="setOnSystemUiVisibilityChangeListener(Landroid/view/View$OnSystemUiVisibilityChangeListener;)V" since="11" />
-		<method name="setOnTouchListener(Landroid/view/View$OnTouchListener;)V" />
-		<method name="setOutline(Landroid/graphics/Outline;)V" since="21" />
-		<method name="setOverScrollMode(I)V" since="9" />
-		<method name="setPadding(IIII)V" />
-		<method name="setPaddingRelative(IIII)V" since="17" />
-		<method name="setPivotX(F)V" since="11" />
-		<method name="setPivotY(F)V" since="11" />
-		<method name="setPressed(Z)V" />
-		<method name="setRight(I)V" since="11" />
-		<method name="setRotation(F)V" since="11" />
-		<method name="setRotationX(F)V" since="11" />
-		<method name="setRotationY(F)V" since="11" />
-		<method name="setSaveEnabled(Z)V" />
-		<method name="setSaveFromParentEnabled(Z)V" since="11" />
-		<method name="setScaleX(F)V" since="11" />
-		<method name="setScaleY(F)V" since="11" />
-		<method name="setScrollBarDefaultDelayBeforeFade(I)V" since="16" />
-		<method name="setScrollBarFadeDuration(I)V" since="16" />
-		<method name="setScrollBarSize(I)V" since="16" />
-		<method name="setScrollBarStyle(I)V" />
-		<method name="setScrollContainer(Z)V" since="3" />
-		<method name="setScrollX(I)V" since="14" />
-		<method name="setScrollY(I)V" since="14" />
-		<method name="setScrollbarFadingEnabled(Z)V" since="5" />
-		<method name="setSelected(Z)V" />
-		<method name="setSoundEffectsEnabled(Z)V" />
-		<method name="setStateListAnimator(Landroid/animation/StateListAnimator;)V" since="21" />
-		<method name="setSystemUiVisibility(I)V" since="11" />
-		<method name="setTag(ILjava/lang/Object;)V" since="4" />
-		<method name="setTag(Ljava/lang/Object;)V" />
-		<method name="setTextAlignment(I)V" since="17" />
-		<method name="setTextDirection(I)V" since="17" />
-		<method name="setTop(I)V" since="11" />
-		<method name="setTouchDelegate(Landroid/view/TouchDelegate;)V" />
-		<method name="setTranslationX(F)V" since="11" />
-		<method name="setTranslationY(F)V" since="11" />
-		<method name="setTranslationZ(F)V" since="21" />
-		<method name="setVerticalFadingEdgeEnabled(Z)V" />
-		<method name="setVerticalScrollBarEnabled(Z)V" />
-		<method name="setVerticalScrollbarPosition(I)V" since="11" />
-		<method name="setViewName(Ljava/lang/String;)V" since="21" />
-		<method name="setVisibility(I)V" />
-		<method name="setWillNotCacheDrawing(Z)V" />
-		<method name="setWillNotDraw(Z)V" />
-		<method name="setX(F)V" since="11" />
-		<method name="setY(F)V" since="11" />
-		<method name="setZ(F)V" since="21" />
-		<method name="showContextMenu()Z" />
-		<method name="startActionMode(Landroid/view/ActionMode$Callback;)Landroid/view/ActionMode;" since="11" />
-		<method name="startAnimation(Landroid/view/animation/Animation;)V" />
-		<method name="startDrag(Landroid/content/ClipData;Landroid/view/View$DragShadowBuilder;Ljava/lang/Object;I)Z" since="11" />
-		<method name="startNestedScroll(I)Z" since="21" />
-		<method name="stopNestedScroll()V" since="21" />
-		<method name="unscheduleDrawable(Landroid/graphics/drawable/Drawable;)V" />
-		<method name="verifyDrawable(Landroid/graphics/drawable/Drawable;)Z" />
-		<method name="willNotCacheDrawing()Z" />
-		<method name="willNotDraw()Z" />
-		<field name="ACCESSIBILITY_LIVE_REGION_ASSERTIVE" since="19" />
-		<field name="ACCESSIBILITY_LIVE_REGION_NONE" since="19" />
-		<field name="ACCESSIBILITY_LIVE_REGION_POLITE" since="19" />
-		<field name="ALPHA" since="14" />
-		<field name="DRAWING_CACHE_QUALITY_AUTO" />
-		<field name="DRAWING_CACHE_QUALITY_HIGH" />
-		<field name="DRAWING_CACHE_QUALITY_LOW" />
-		<field name="EMPTY_STATE_SET" />
-		<field name="ENABLED_FOCUSED_SELECTED_STATE_SET" />
-		<field name="ENABLED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET" />
-		<field name="ENABLED_FOCUSED_STATE_SET" />
-		<field name="ENABLED_FOCUSED_WINDOW_FOCUSED_STATE_SET" />
-		<field name="ENABLED_SELECTED_STATE_SET" />
-		<field name="ENABLED_SELECTED_WINDOW_FOCUSED_STATE_SET" />
-		<field name="ENABLED_STATE_SET" />
-		<field name="ENABLED_WINDOW_FOCUSED_STATE_SET" />
-		<field name="FIND_VIEWS_WITH_CONTENT_DESCRIPTION" since="14" />
-		<field name="FIND_VIEWS_WITH_TEXT" since="14" />
-		<field name="FOCUSABLES_ALL" since="4" />
-		<field name="FOCUSABLES_TOUCH_MODE" since="4" />
-		<field name="FOCUSED_SELECTED_STATE_SET" />
-		<field name="FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET" />
-		<field name="FOCUSED_STATE_SET" />
-		<field name="FOCUSED_WINDOW_FOCUSED_STATE_SET" />
-		<field name="FOCUS_BACKWARD" />
-		<field name="FOCUS_DOWN" />
-		<field name="FOCUS_FORWARD" />
-		<field name="FOCUS_LEFT" />
-		<field name="FOCUS_RIGHT" />
-		<field name="FOCUS_UP" />
-		<field name="GONE" />
-		<field name="HAPTIC_FEEDBACK_ENABLED" since="3" />
-		<field name="IMPORTANT_FOR_ACCESSIBILITY_AUTO" since="16" />
-		<field name="IMPORTANT_FOR_ACCESSIBILITY_NO" since="16" />
-		<field name="IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS" since="19" />
-		<field name="IMPORTANT_FOR_ACCESSIBILITY_YES" since="16" />
-		<field name="INVISIBLE" />
-		<field name="KEEP_SCREEN_ON" />
-		<field name="LAYER_TYPE_HARDWARE" since="11" />
-		<field name="LAYER_TYPE_NONE" since="11" />
-		<field name="LAYER_TYPE_SOFTWARE" since="11" />
-		<field name="LAYOUT_DIRECTION_INHERIT" since="17" />
-		<field name="LAYOUT_DIRECTION_LOCALE" since="17" />
-		<field name="LAYOUT_DIRECTION_LTR" since="17" />
-		<field name="LAYOUT_DIRECTION_RTL" since="17" />
-		<field name="MEASURED_HEIGHT_STATE_SHIFT" since="11" />
-		<field name="MEASURED_SIZE_MASK" since="11" />
-		<field name="MEASURED_STATE_MASK" since="11" />
-		<field name="MEASURED_STATE_TOO_SMALL" since="11" />
-		<field name="NO_ID" />
-		<field name="OVER_SCROLL_ALWAYS" since="9" />
-		<field name="OVER_SCROLL_IF_CONTENT_SCROLLS" since="9" />
-		<field name="OVER_SCROLL_NEVER" since="9" />
-		<field name="PRESSED_ENABLED_FOCUSED_SELECTED_STATE_SET" />
-		<field name="PRESSED_ENABLED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET" />
-		<field name="PRESSED_ENABLED_FOCUSED_STATE_SET" />
-		<field name="PRESSED_ENABLED_FOCUSED_WINDOW_FOCUSED_STATE_SET" />
-		<field name="PRESSED_ENABLED_SELECTED_STATE_SET" />
-		<field name="PRESSED_ENABLED_SELECTED_WINDOW_FOCUSED_STATE_SET" />
-		<field name="PRESSED_ENABLED_STATE_SET" />
-		<field name="PRESSED_ENABLED_WINDOW_FOCUSED_STATE_SET" />
-		<field name="PRESSED_FOCUSED_SELECTED_STATE_SET" />
-		<field name="PRESSED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET" />
-		<field name="PRESSED_FOCUSED_STATE_SET" />
-		<field name="PRESSED_FOCUSED_WINDOW_FOCUSED_STATE_SET" />
-		<field name="PRESSED_SELECTED_STATE_SET" />
-		<field name="PRESSED_SELECTED_WINDOW_FOCUSED_STATE_SET" />
-		<field name="PRESSED_STATE_SET" since="19" />
-		<field name="PRESSED_WINDOW_FOCUSED_STATE_SET" />
-		<field name="ROTATION" since="14" />
-		<field name="ROTATION_X" since="14" />
-		<field name="ROTATION_Y" since="14" />
-		<field name="SCALE_X" since="14" />
-		<field name="SCALE_Y" since="14" />
-		<field name="SCREEN_STATE_OFF" since="16" />
-		<field name="SCREEN_STATE_ON" since="16" />
-		<field name="SCROLLBARS_INSIDE_INSET" />
-		<field name="SCROLLBARS_INSIDE_OVERLAY" />
-		<field name="SCROLLBARS_OUTSIDE_INSET" />
-		<field name="SCROLLBARS_OUTSIDE_OVERLAY" />
-		<field name="SCROLLBAR_POSITION_DEFAULT" since="11" />
-		<field name="SCROLLBAR_POSITION_LEFT" since="11" />
-		<field name="SCROLLBAR_POSITION_RIGHT" since="11" />
-		<field name="SCROLL_AXIS_HORIZONTAL" since="21" />
-		<field name="SCROLL_AXIS_NONE" since="21" />
-		<field name="SCROLL_AXIS_VERTICAL" since="21" />
-		<field name="SELECTED_STATE_SET" />
-		<field name="SELECTED_WINDOW_FOCUSED_STATE_SET" />
-		<field name="SOUND_EFFECTS_ENABLED" />
-		<field name="STATUS_BAR_HIDDEN" since="11" />
-		<field name="STATUS_BAR_VISIBLE" since="11" />
-		<field name="SYSTEM_UI_FLAG_FULLSCREEN" since="16" />
-		<field name="SYSTEM_UI_FLAG_HIDE_NAVIGATION" since="14" />
-		<field name="SYSTEM_UI_FLAG_IMMERSIVE" since="19" />
-		<field name="SYSTEM_UI_FLAG_IMMERSIVE_STICKY" since="19" />
-		<field name="SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN" since="16" />
-		<field name="SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION" since="16" />
-		<field name="SYSTEM_UI_FLAG_LAYOUT_STABLE" since="16" />
-		<field name="SYSTEM_UI_FLAG_LOW_PROFILE" since="14" />
-		<field name="SYSTEM_UI_FLAG_VISIBLE" since="14" />
-		<field name="SYSTEM_UI_LAYOUT_FLAGS" since="16" />
-		<field name="TEXT_ALIGNMENT_CENTER" since="17" />
-		<field name="TEXT_ALIGNMENT_GRAVITY" since="17" />
-		<field name="TEXT_ALIGNMENT_INHERIT" since="16" />
-		<field name="TEXT_ALIGNMENT_RESOLVED_DEFAULT" since="16" />
-		<field name="TEXT_ALIGNMENT_TEXT_END" since="17" />
-		<field name="TEXT_ALIGNMENT_TEXT_START" since="17" />
-		<field name="TEXT_ALIGNMENT_VIEW_END" since="17" />
-		<field name="TEXT_ALIGNMENT_VIEW_START" since="17" />
-		<field name="TEXT_DIRECTION_ANY_RTL" since="17" />
-		<field name="TEXT_DIRECTION_FIRST_STRONG" since="17" />
-		<field name="TEXT_DIRECTION_INHERIT" since="17" />
-		<field name="TEXT_DIRECTION_LOCALE" since="17" />
-		<field name="TEXT_DIRECTION_LTR" since="17" />
-		<field name="TEXT_DIRECTION_RTL" since="17" />
-		<field name="TRANSLATION_X" since="14" />
-		<field name="TRANSLATION_Y" since="14" />
-		<field name="TRANSLATION_Z" since="21" />
-		<field name="VIEW_LOG_TAG" />
-		<field name="VISIBLE" />
-		<field name="WINDOW_FOCUSED_STATE_SET" />
-		<field name="X" since="14" />
-		<field name="Y" since="14" />
-		<field name="Z" since="21" />
-	</class>
-	<class name="android/view/View$AccessibilityDelegate" since="14">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="dispatchPopulateAccessibilityEvent(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)Z" />
-		<method name="getAccessibilityNodeProvider(Landroid/view/View;)Landroid/view/accessibility/AccessibilityNodeProvider;" since="16" />
-		<method name="onInitializeAccessibilityEvent(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)V" />
-		<method name="onInitializeAccessibilityNodeInfo(Landroid/view/View;Landroid/view/accessibility/AccessibilityNodeInfo;)V" />
-		<method name="onPopulateAccessibilityEvent(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)V" />
-		<method name="onRequestSendAccessibilityEvent(Landroid/view/ViewGroup;Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)Z" />
-		<method name="performAccessibilityAction(Landroid/view/View;ILandroid/os/Bundle;)Z" since="16" />
-		<method name="sendAccessibilityEvent(Landroid/view/View;I)V" />
-		<method name="sendAccessibilityEventUnchecked(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)V" />
-	</class>
-	<class name="android/view/View$BaseSavedState" since="1">
-		<extends name="android/view/AbsSavedState" />
-		<method name="&lt;init>(Landroid/os/Parcel;)V" />
-		<method name="&lt;init>(Landroid/os/Parcelable;)V" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/view/View$DragShadowBuilder" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/view/View;)V" />
-		<method name="getView()Landroid/view/View;" />
-		<method name="onDrawShadow(Landroid/graphics/Canvas;)V" />
-		<method name="onProvideShadowMetrics(Landroid/graphics/Point;Landroid/graphics/Point;)V" />
-	</class>
-	<class name="android/view/View$MeasureSpec" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getMode(I)I" />
-		<method name="getSize(I)I" />
-		<method name="makeMeasureSpec(II)I" />
-		<method name="toString(I)Ljava/lang/String;" />
-		<field name="AT_MOST" />
-		<field name="EXACTLY" />
-		<field name="UNSPECIFIED" />
-	</class>
-	<class name="android/view/View$OnApplyWindowInsetsListener" since="20">
-		<extends name="java/lang/Object" />
-		<method name="onApplyWindowInsets(Landroid/view/View;Landroid/view/WindowInsets;)Landroid/view/WindowInsets;" />
-	</class>
-	<class name="android/view/View$OnAttachStateChangeListener" since="12">
-		<extends name="java/lang/Object" />
-		<method name="onViewAttachedToWindow(Landroid/view/View;)V" />
-		<method name="onViewDetachedFromWindow(Landroid/view/View;)V" />
-	</class>
-	<class name="android/view/View$OnClickListener" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onClick(Landroid/view/View;)V" />
-	</class>
-	<class name="android/view/View$OnCreateContextMenuListener" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onCreateContextMenu(Landroid/view/ContextMenu;Landroid/view/View;Landroid/view/ContextMenu$ContextMenuInfo;)V" />
-	</class>
-	<class name="android/view/View$OnDragListener" since="11">
-		<extends name="java/lang/Object" />
-		<method name="onDrag(Landroid/view/View;Landroid/view/DragEvent;)Z" />
-	</class>
-	<class name="android/view/View$OnFocusChangeListener" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onFocusChange(Landroid/view/View;Z)V" />
-	</class>
-	<class name="android/view/View$OnGenericMotionListener" since="12">
-		<extends name="java/lang/Object" />
-		<method name="onGenericMotion(Landroid/view/View;Landroid/view/MotionEvent;)Z" />
-	</class>
-	<class name="android/view/View$OnHoverListener" since="14">
-		<extends name="java/lang/Object" />
-		<method name="onHover(Landroid/view/View;Landroid/view/MotionEvent;)Z" />
-	</class>
-	<class name="android/view/View$OnKeyListener" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onKey(Landroid/view/View;ILandroid/view/KeyEvent;)Z" />
-	</class>
-	<class name="android/view/View$OnLayoutChangeListener" since="11">
-		<extends name="java/lang/Object" />
-		<method name="onLayoutChange(Landroid/view/View;IIIIIIII)V" />
-	</class>
-	<class name="android/view/View$OnLongClickListener" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onLongClick(Landroid/view/View;)Z" />
-	</class>
-	<class name="android/view/View$OnSystemUiVisibilityChangeListener" since="11">
-		<extends name="java/lang/Object" />
-		<method name="onSystemUiVisibilityChange(I)V" />
-	</class>
-	<class name="android/view/View$OnTouchListener" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onTouch(Landroid/view/View;Landroid/view/MotionEvent;)Z" />
-	</class>
-	<class name="android/view/ViewAnimationUtils" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="createCircularReveal(Landroid/view/View;IIFF)Landroid/animation/ValueAnimator;" />
-	</class>
-	<class name="android/view/ViewConfiguration" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="get(Landroid/content/Context;)Landroid/view/ViewConfiguration;" since="3" />
-		<method name="getDoubleTapTimeout()I" since="3" />
-		<method name="getEdgeSlop()I" />
-		<method name="getFadingEdgeLength()I" />
-		<method name="getGlobalActionKeyTimeout()J" />
-		<method name="getJumpTapTimeout()I" />
-		<method name="getKeyRepeatDelay()I" since="12" />
-		<method name="getKeyRepeatTimeout()I" since="12" />
-		<method name="getLongPressTimeout()I" />
-		<method name="getMaximumDrawingCacheSize()I" />
-		<method name="getMaximumFlingVelocity()I" since="4" />
-		<method name="getMinimumFlingVelocity()I" />
-		<method name="getPressedStateDuration()I" />
-		<method name="getScaledDoubleTapSlop()I" since="3" />
-		<method name="getScaledEdgeSlop()I" since="3" />
-		<method name="getScaledFadingEdgeLength()I" since="3" />
-		<method name="getScaledMaximumDrawingCacheSize()I" since="3" />
-		<method name="getScaledMaximumFlingVelocity()I" since="4" />
-		<method name="getScaledMinimumFlingVelocity()I" since="3" />
-		<method name="getScaledOverflingDistance()I" since="9" />
-		<method name="getScaledOverscrollDistance()I" since="9" />
-		<method name="getScaledPagingTouchSlop()I" since="8" />
-		<method name="getScaledScrollBarSize()I" since="3" />
-		<method name="getScaledTouchSlop()I" since="3" />
-		<method name="getScaledWindowTouchSlop()I" since="3" />
-		<method name="getScrollBarFadeDuration()I" since="5" />
-		<method name="getScrollBarSize()I" />
-		<method name="getScrollDefaultDelay()I" since="5" />
-		<method name="getScrollFriction()F" />
-		<method name="getTapTimeout()I" />
-		<method name="getTouchSlop()I" />
-		<method name="getWindowTouchSlop()I" />
-		<method name="getZoomControlsTimeout()J" />
-		<method name="hasPermanentMenuKey()Z" since="14" />
-	</class>
-	<class name="android/view/ViewDebug" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="dumpCapturedView(Ljava/lang/String;Ljava/lang/Object;)V" since="3" />
-		<method name="startHierarchyTracing(Ljava/lang/String;Landroid/view/View;)V" />
-		<method name="startRecyclerTracing(Ljava/lang/String;Landroid/view/View;)V" />
-		<method name="stopHierarchyTracing()V" />
-		<method name="stopRecyclerTracing()V" />
-		<method name="trace(Landroid/view/View;Landroid/view/ViewDebug$HierarchyTraceType;)V" />
-		<method name="trace(Landroid/view/View;Landroid/view/ViewDebug$RecyclerTraceType;[I)V" />
-		<field name="TRACE_HIERARCHY" />
-		<field name="TRACE_RECYCLER" />
-	</class>
-	<class name="android/view/ViewDebug$CapturedViewProperty" since="3">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/annotation/Annotation" />
-		<method name="retrieveReturn()Z" />
-	</class>
-	<class name="android/view/ViewDebug$ExportedProperty" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/annotation/Annotation" />
-		<method name="category()Ljava/lang/String;" since="9" />
-		<method name="deepExport()Z" />
-		<method name="flagMapping()[Landroid/view/ViewDebug$FlagToString;" since="4" />
-		<method name="indexMapping()[Landroid/view/ViewDebug$IntToString;" since="3" />
-		<method name="mapping()[Landroid/view/ViewDebug$IntToString;" />
-		<method name="prefix()Ljava/lang/String;" />
-		<method name="resolveId()Z" />
-	</class>
-	<class name="android/view/ViewDebug$FlagToString" since="4">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/annotation/Annotation" />
-		<method name="equals()I" />
-		<method name="mask()I" />
-		<method name="name()Ljava/lang/String;" />
-		<method name="outputIf()Z" />
-	</class>
-	<class name="android/view/ViewDebug$HierarchyTraceType" since="1">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Landroid/view/ViewDebug$HierarchyTraceType;" />
-		<method name="values()[Landroid/view/ViewDebug$HierarchyTraceType;" />
-		<field name="BUILD_CACHE" />
-		<field name="DRAW" />
-		<field name="INVALIDATE" />
-		<field name="INVALIDATE_CHILD" />
-		<field name="INVALIDATE_CHILD_IN_PARENT" />
-		<field name="ON_LAYOUT" />
-		<field name="ON_MEASURE" />
-		<field name="REQUEST_LAYOUT" />
-	</class>
-	<class name="android/view/ViewDebug$IntToString" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/annotation/Annotation" />
-		<method name="from()I" />
-		<method name="to()Ljava/lang/String;" />
-	</class>
-	<class name="android/view/ViewDebug$RecyclerTraceType" since="1">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Landroid/view/ViewDebug$RecyclerTraceType;" />
-		<method name="values()[Landroid/view/ViewDebug$RecyclerTraceType;" />
-		<field name="BIND_VIEW" />
-		<field name="MOVE_FROM_ACTIVE_TO_SCRAP_HEAP" />
-		<field name="MOVE_TO_ACTIVE_HEAP" />
-		<field name="MOVE_TO_SCRAP_HEAP" />
-		<field name="NEW_VIEW" />
-		<field name="RECYCLE_FROM_ACTIVE_HEAP" />
-		<field name="RECYCLE_FROM_SCRAP_HEAP" />
-	</class>
-	<class name="android/view/ViewGroup" since="1">
-		<extends name="android/view/View" />
-		<implements name="android/view/ViewManager" />
-		<implements name="android/view/ViewParent" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-		<method name="addStatesFromChildren()Z" />
-		<method name="addView(Landroid/view/View;)V" />
-		<method name="addView(Landroid/view/View;I)V" />
-		<method name="addView(Landroid/view/View;II)V" />
-		<method name="addView(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;)V" />
-		<method name="addViewInLayout(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;)Z" />
-		<method name="addViewInLayout(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;Z)Z" />
-		<method name="attachLayoutAnimationParameters(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;II)V" />
-		<method name="attachViewToParent(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;)V" />
-		<method name="canAnimate()Z" />
-		<method name="checkLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Z" />
-		<method name="cleanupLayoutState(Landroid/view/View;)V" />
-		<method name="clearDisappearingChildren()V" />
-		<method name="debug(I)V" />
-		<method name="detachAllViewsFromParent()V" />
-		<method name="detachViewFromParent(I)V" />
-		<method name="detachViewFromParent(Landroid/view/View;)V" />
-		<method name="detachViewsFromParent(II)V" />
-		<method name="dispatchFreezeSelfOnly(Landroid/util/SparseArray;)V" />
-		<method name="dispatchThawSelfOnly(Landroid/util/SparseArray;)V" />
-		<method name="drawChild(Landroid/graphics/Canvas;Landroid/view/View;J)Z" />
-		<method name="endViewTransition(Landroid/view/View;)V" since="11" />
-		<method name="gatherTransparentRegion(Landroid/graphics/Region;)Z" />
-		<method name="generateDefaultLayoutParams()Landroid/view/ViewGroup$LayoutParams;" />
-		<method name="generateLayoutParams(Landroid/util/AttributeSet;)Landroid/view/ViewGroup$LayoutParams;" />
-		<method name="generateLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Landroid/view/ViewGroup$LayoutParams;" />
-		<method name="getChildAt(I)Landroid/view/View;" />
-		<method name="getChildCount()I" />
-		<method name="getChildDrawingOrder(II)I" />
-		<method name="getChildMeasureSpec(III)I" />
-		<method name="getChildStaticTransformation(Landroid/view/View;Landroid/view/animation/Transformation;)Z" />
-		<method name="getClipChildren()Z" since="18" />
-		<method name="getDescendantFocusability()I" />
-		<method name="getFocusedChild()Landroid/view/View;" />
-		<method name="getLayoutAnimation()Landroid/view/animation/LayoutAnimationController;" />
-		<method name="getLayoutAnimationListener()Landroid/view/animation/Animation$AnimationListener;" />
-		<method name="getLayoutMode()I" since="18" />
-		<method name="getLayoutTransition()Landroid/animation/LayoutTransition;" since="11" />
-		<method name="getNestedScrollAxes()I" since="21" />
-		<method name="getOverlay()Landroid/view/ViewGroupOverlay;" since="18" />
-		<method name="getPersistentDrawingCache()I" />
-		<method name="indexOfChild(Landroid/view/View;)I" />
-		<method name="isAlwaysDrawnWithCacheEnabled()Z" />
-		<method name="isAnimationCacheEnabled()Z" />
-		<method name="isChildrenDrawingOrderEnabled()Z" since="7" />
-		<method name="isChildrenDrawnWithCacheEnabled()Z" />
-		<method name="isMotionEventSplittingEnabled()Z" since="11" />
-		<method name="isTransitionGroup()Z" since="21" />
-		<method name="measureChild(Landroid/view/View;II)V" />
-		<method name="measureChildWithMargins(Landroid/view/View;IIII)V" />
-		<method name="measureChildren(II)V" />
-		<method name="offsetDescendantRectToMyCoords(Landroid/view/View;Landroid/graphics/Rect;)V" />
-		<method name="offsetRectIntoDescendantCoords(Landroid/view/View;Landroid/graphics/Rect;)V" />
-		<method name="onInterceptHoverEvent(Landroid/view/MotionEvent;)Z" since="14" />
-		<method name="onInterceptTouchEvent(Landroid/view/MotionEvent;)Z" />
-		<method name="onRequestFocusInDescendants(ILandroid/graphics/Rect;)Z" />
-		<method name="onRequestSendAccessibilityEvent(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)Z" since="14" />
-		<method name="removeAllViews()V" />
-		<method name="removeAllViewsInLayout()V" />
-		<method name="removeDetachedView(Landroid/view/View;Z)V" />
-		<method name="removeViewAt(I)V" />
-		<method name="removeViewInLayout(Landroid/view/View;)V" />
-		<method name="removeViews(II)V" />
-		<method name="removeViewsInLayout(II)V" />
-		<method name="requestChildRectangleOnScreen(Landroid/view/View;Landroid/graphics/Rect;Z)Z" />
-		<method name="resetResolvedLayoutDirection()V" since="14" />
-		<method name="resetResolvedTextDirection()V" since="14" />
-		<method name="scheduleLayoutAnimation()V" />
-		<method name="setAddStatesFromChildren(Z)V" />
-		<method name="setAlwaysDrawnWithCacheEnabled(Z)V" />
-		<method name="setAnimationCacheEnabled(Z)V" />
-		<method name="setChildrenDrawingCacheEnabled(Z)V" />
-		<method name="setChildrenDrawingOrderEnabled(Z)V" since="7" />
-		<method name="setChildrenDrawnWithCacheEnabled(Z)V" />
-		<method name="setClipChildren(Z)V" />
-		<method name="setClipToPadding(Z)V" />
-		<method name="setDescendantFocusability(I)V" />
-		<method name="setLayoutAnimation(Landroid/view/animation/LayoutAnimationController;)V" />
-		<method name="setLayoutAnimationListener(Landroid/view/animation/Animation$AnimationListener;)V" />
-		<method name="setLayoutMode(I)V" since="18" />
-		<method name="setLayoutTransition(Landroid/animation/LayoutTransition;)V" since="11" />
-		<method name="setMotionEventSplittingEnabled(Z)V" since="11" />
-		<method name="setOnHierarchyChangeListener(Landroid/view/ViewGroup$OnHierarchyChangeListener;)V" />
-		<method name="setPersistentDrawingCache(I)V" />
-		<method name="setStaticTransformationsEnabled(Z)V" since="3" />
-		<method name="setTransitionGroup(Z)V" since="21" />
-		<method name="shouldDelayChildPressedState()Z" since="14" />
-		<method name="startLayoutAnimation()V" />
-		<method name="startViewTransition(Landroid/view/View;)V" since="11" />
-		<field name="CLIP_TO_PADDING_MASK" />
-		<field name="FLAG_USE_CHILD_DRAWING_ORDER" />
-		<field name="FOCUS_AFTER_DESCENDANTS" />
-		<field name="FOCUS_BEFORE_DESCENDANTS" />
-		<field name="FOCUS_BLOCK_DESCENDANTS" />
-		<field name="LAYOUT_MODE_CLIP_BOUNDS" since="18" />
-		<field name="LAYOUT_MODE_OPTICAL_BOUNDS" since="18" />
-		<field name="PERSISTENT_ALL_CACHES" />
-		<field name="PERSISTENT_ANIMATION_CACHE" />
-		<field name="PERSISTENT_NO_CACHE" />
-		<field name="PERSISTENT_SCROLLING_CACHE" />
-	</class>
-	<class name="android/view/ViewGroup$LayoutParams" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(II)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/view/ViewGroup$LayoutParams;)V" />
-		<method name="resolveLayoutDirection(I)V" since="17" />
-		<method name="setBaseAttributes(Landroid/content/res/TypedArray;II)V" />
-		<field name="FILL_PARENT" />
-		<field name="MATCH_PARENT" since="8" />
-		<field name="WRAP_CONTENT" />
-		<field name="height" />
-		<field name="layoutAnimationParameters" />
-		<field name="width" />
-	</class>
-	<class name="android/view/ViewGroup$MarginLayoutParams" since="1">
-		<extends name="android/view/ViewGroup$LayoutParams" />
-		<method name="&lt;init>(II)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/view/ViewGroup$LayoutParams;)V" />
-		<method name="&lt;init>(Landroid/view/ViewGroup$MarginLayoutParams;)V" />
-		<method name="getLayoutDirection()I" since="17" />
-		<method name="getMarginEnd()I" since="17" />
-		<method name="getMarginStart()I" since="17" />
-		<method name="isMarginRelative()Z" since="17" />
-		<method name="setLayoutDirection(I)V" since="17" />
-		<method name="setMarginEnd(I)V" since="17" />
-		<method name="setMarginStart(I)V" since="17" />
-		<method name="setMargins(IIII)V" />
-		<field name="bottomMargin" />
-		<field name="leftMargin" />
-		<field name="rightMargin" />
-		<field name="topMargin" />
-	</class>
-	<class name="android/view/ViewGroup$OnHierarchyChangeListener" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onChildViewAdded(Landroid/view/View;Landroid/view/View;)V" />
-		<method name="onChildViewRemoved(Landroid/view/View;Landroid/view/View;)V" />
-	</class>
-	<class name="android/view/ViewGroupOverlay" since="18">
-		<extends name="android/view/ViewOverlay" />
-		<method name="&lt;init>()V" />
-		<method name="add(Landroid/view/View;)V" />
-		<method name="remove(Landroid/view/View;)V" />
-	</class>
-	<class name="android/view/ViewManager" since="1">
-		<extends name="java/lang/Object" />
-		<method name="addView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V" />
-		<method name="removeView(Landroid/view/View;)V" />
-		<method name="updateViewLayout(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V" />
-	</class>
-	<class name="android/view/ViewOverlay" since="18">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="add(Landroid/graphics/drawable/Drawable;)V" />
-		<method name="clear()V" />
-		<method name="remove(Landroid/graphics/drawable/Drawable;)V" />
-	</class>
-	<class name="android/view/ViewParent" since="1">
-		<extends name="java/lang/Object" />
-		<method name="bringChildToFront(Landroid/view/View;)V" />
-		<method name="canResolveLayoutDirection()Z" since="19" />
-		<method name="canResolveTextAlignment()Z" since="19" />
-		<method name="canResolveTextDirection()Z" since="19" />
-		<method name="childDrawableStateChanged(Landroid/view/View;)V" />
-		<method name="childHasTransientStateChanged(Landroid/view/View;Z)V" since="19" />
-		<method name="clearChildFocus(Landroid/view/View;)V" />
-		<method name="createContextMenu(Landroid/view/ContextMenu;)V" />
-		<method name="focusSearch(Landroid/view/View;I)Landroid/view/View;" />
-		<method name="focusableViewAvailable(Landroid/view/View;)V" />
-		<method name="getChildVisibleRect(Landroid/view/View;Landroid/graphics/Rect;Landroid/graphics/Point;)Z" />
-		<method name="getLayoutDirection()I" since="19" />
-		<method name="getParent()Landroid/view/ViewParent;" />
-		<method name="getParentForAccessibility()Landroid/view/ViewParent;" since="16" />
-		<method name="getTextAlignment()I" since="19" />
-		<method name="getTextDirection()I" since="19" />
-		<method name="invalidateChild(Landroid/view/View;Landroid/graphics/Rect;)V" />
-		<method name="invalidateChildInParent([ILandroid/graphics/Rect;)Landroid/view/ViewParent;" />
-		<method name="isLayoutDirectionResolved()Z" since="19" />
-		<method name="isLayoutRequested()Z" />
-		<method name="isTextAlignmentResolved()Z" since="19" />
-		<method name="isTextDirectionResolved()Z" since="19" />
-		<method name="notifySubtreeAccessibilityStateChanged(Landroid/view/View;Landroid/view/View;I)V" since="19" />
-		<method name="onNestedFling(Landroid/view/View;FFZ)Z" since="21" />
-		<method name="onNestedPreScroll(Landroid/view/View;II[I)V" since="21" />
-		<method name="onNestedScroll(Landroid/view/View;IIII)V" since="21" />
-		<method name="onNestedScrollAccepted(Landroid/view/View;Landroid/view/View;I)V" since="21" />
-		<method name="onStartNestedScroll(Landroid/view/View;Landroid/view/View;I)Z" since="21" />
-		<method name="onStopNestedScroll(Landroid/view/View;)V" since="21" />
-		<method name="recomputeViewAttributes(Landroid/view/View;)V" />
-		<method name="requestChildFocus(Landroid/view/View;Landroid/view/View;)V" />
-		<method name="requestChildRectangleOnScreen(Landroid/view/View;Landroid/graphics/Rect;Z)Z" since="3" />
-		<method name="requestDisallowInterceptTouchEvent(Z)V" />
-		<method name="requestFitSystemWindows()V" since="16" />
-		<method name="requestLayout()V" />
-		<method name="requestSendAccessibilityEvent(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)Z" since="14" />
-		<method name="requestTransparentRegion(Landroid/view/View;)V" />
-		<method name="showContextMenuForChild(Landroid/view/View;)Z" />
-		<method name="startActionModeForChild(Landroid/view/View;Landroid/view/ActionMode$Callback;)Landroid/view/ActionMode;" since="11" />
-	</class>
-	<class name="android/view/ViewPropertyAnimator" since="12">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="alpha(F)Landroid/view/ViewPropertyAnimator;" />
-		<method name="alphaBy(F)Landroid/view/ViewPropertyAnimator;" />
-		<method name="cancel()V" since="14" />
-		<method name="getDuration()J" since="14" />
-		<method name="getInterpolator()Landroid/animation/TimeInterpolator;" since="18" />
-		<method name="getStartDelay()J" since="14" />
-		<method name="rotation(F)Landroid/view/ViewPropertyAnimator;" />
-		<method name="rotationBy(F)Landroid/view/ViewPropertyAnimator;" />
-		<method name="rotationX(F)Landroid/view/ViewPropertyAnimator;" />
-		<method name="rotationXBy(F)Landroid/view/ViewPropertyAnimator;" />
-		<method name="rotationY(F)Landroid/view/ViewPropertyAnimator;" />
-		<method name="rotationYBy(F)Landroid/view/ViewPropertyAnimator;" />
-		<method name="scaleX(F)Landroid/view/ViewPropertyAnimator;" />
-		<method name="scaleXBy(F)Landroid/view/ViewPropertyAnimator;" />
-		<method name="scaleY(F)Landroid/view/ViewPropertyAnimator;" />
-		<method name="scaleYBy(F)Landroid/view/ViewPropertyAnimator;" />
-		<method name="setDuration(J)Landroid/view/ViewPropertyAnimator;" />
-		<method name="setInterpolator(Landroid/animation/TimeInterpolator;)Landroid/view/ViewPropertyAnimator;" />
-		<method name="setListener(Landroid/animation/Animator$AnimatorListener;)Landroid/view/ViewPropertyAnimator;" />
-		<method name="setStartDelay(J)Landroid/view/ViewPropertyAnimator;" since="14" />
-		<method name="setUpdateListener(Landroid/animation/ValueAnimator$AnimatorUpdateListener;)Landroid/view/ViewPropertyAnimator;" since="19" />
-		<method name="start()V" since="14" />
-		<method name="translationX(F)Landroid/view/ViewPropertyAnimator;" />
-		<method name="translationXBy(F)Landroid/view/ViewPropertyAnimator;" />
-		<method name="translationY(F)Landroid/view/ViewPropertyAnimator;" />
-		<method name="translationYBy(F)Landroid/view/ViewPropertyAnimator;" />
-		<method name="translationZ(F)Landroid/view/ViewPropertyAnimator;" since="21" />
-		<method name="translationZBy(F)Landroid/view/ViewPropertyAnimator;" since="21" />
-		<method name="withEndAction(Ljava/lang/Runnable;)Landroid/view/ViewPropertyAnimator;" since="16" />
-		<method name="withLayer()Landroid/view/ViewPropertyAnimator;" since="16" />
-		<method name="withStartAction(Ljava/lang/Runnable;)Landroid/view/ViewPropertyAnimator;" since="16" />
-		<method name="x(F)Landroid/view/ViewPropertyAnimator;" />
-		<method name="xBy(F)Landroid/view/ViewPropertyAnimator;" />
-		<method name="y(F)Landroid/view/ViewPropertyAnimator;" />
-		<method name="yBy(F)Landroid/view/ViewPropertyAnimator;" />
-		<method name="z(F)Landroid/view/ViewPropertyAnimator;" since="21" />
-		<method name="zBy(F)Landroid/view/ViewPropertyAnimator;" since="21" />
-	</class>
-	<class name="android/view/ViewStub" since="1">
-		<extends name="android/view/View" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-		<method name="getInflatedId()I" />
-		<method name="getLayoutInflater()Landroid/view/LayoutInflater;" since="16" />
-		<method name="getLayoutResource()I" />
-		<method name="inflate()Landroid/view/View;" />
-		<method name="setInflatedId(I)V" />
-		<method name="setLayoutInflater(Landroid/view/LayoutInflater;)V" since="16" />
-		<method name="setLayoutResource(I)V" />
-		<method name="setOnInflateListener(Landroid/view/ViewStub$OnInflateListener;)V" />
-	</class>
-	<class name="android/view/ViewStub$OnInflateListener" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onInflate(Landroid/view/ViewStub;Landroid/view/View;)V" />
-	</class>
-	<class name="android/view/ViewTreeObserver" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="addOnDrawListener(Landroid/view/ViewTreeObserver$OnDrawListener;)V" since="16" />
-		<method name="addOnGlobalFocusChangeListener(Landroid/view/ViewTreeObserver$OnGlobalFocusChangeListener;)V" />
-		<method name="addOnGlobalLayoutListener(Landroid/view/ViewTreeObserver$OnGlobalLayoutListener;)V" />
-		<method name="addOnPreDrawListener(Landroid/view/ViewTreeObserver$OnPreDrawListener;)V" />
-		<method name="addOnScrollChangedListener(Landroid/view/ViewTreeObserver$OnScrollChangedListener;)V" since="3" />
-		<method name="addOnTouchModeChangeListener(Landroid/view/ViewTreeObserver$OnTouchModeChangeListener;)V" />
-		<method name="addOnWindowAttachListener(Landroid/view/ViewTreeObserver$OnWindowAttachListener;)V" since="18" />
-		<method name="addOnWindowFocusChangeListener(Landroid/view/ViewTreeObserver$OnWindowFocusChangeListener;)V" since="18" />
-		<method name="dispatchOnDraw()V" since="16" />
-		<method name="dispatchOnGlobalLayout()V" />
-		<method name="dispatchOnPreDraw()Z" />
-		<method name="isAlive()Z" />
-		<method name="removeGlobalOnLayoutListener(Landroid/view/ViewTreeObserver$OnGlobalLayoutListener;)V" />
-		<method name="removeOnDrawListener(Landroid/view/ViewTreeObserver$OnDrawListener;)V" since="16" />
-		<method name="removeOnGlobalFocusChangeListener(Landroid/view/ViewTreeObserver$OnGlobalFocusChangeListener;)V" />
-		<method name="removeOnGlobalLayoutListener(Landroid/view/ViewTreeObserver$OnGlobalLayoutListener;)V" since="16" />
-		<method name="removeOnPreDrawListener(Landroid/view/ViewTreeObserver$OnPreDrawListener;)V" />
-		<method name="removeOnScrollChangedListener(Landroid/view/ViewTreeObserver$OnScrollChangedListener;)V" since="3" />
-		<method name="removeOnTouchModeChangeListener(Landroid/view/ViewTreeObserver$OnTouchModeChangeListener;)V" />
-		<method name="removeOnWindowAttachListener(Landroid/view/ViewTreeObserver$OnWindowAttachListener;)V" since="18" />
-		<method name="removeOnWindowFocusChangeListener(Landroid/view/ViewTreeObserver$OnWindowFocusChangeListener;)V" since="18" />
-	</class>
-	<class name="android/view/ViewTreeObserver$OnDrawListener" since="16">
-		<extends name="java/lang/Object" />
-		<method name="onDraw()V" />
-	</class>
-	<class name="android/view/ViewTreeObserver$OnGlobalFocusChangeListener" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onGlobalFocusChanged(Landroid/view/View;Landroid/view/View;)V" />
-	</class>
-	<class name="android/view/ViewTreeObserver$OnGlobalLayoutListener" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onGlobalLayout()V" />
-	</class>
-	<class name="android/view/ViewTreeObserver$OnPreDrawListener" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onPreDraw()Z" />
-	</class>
-	<class name="android/view/ViewTreeObserver$OnScrollChangedListener" since="3">
-		<extends name="java/lang/Object" />
-		<method name="onScrollChanged()V" />
-	</class>
-	<class name="android/view/ViewTreeObserver$OnTouchModeChangeListener" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onTouchModeChanged(Z)V" />
-	</class>
-	<class name="android/view/ViewTreeObserver$OnWindowAttachListener" since="18">
-		<extends name="java/lang/Object" />
-		<method name="onWindowAttached()V" />
-		<method name="onWindowDetached()V" />
-	</class>
-	<class name="android/view/ViewTreeObserver$OnWindowFocusChangeListener" since="18">
-		<extends name="java/lang/Object" />
-		<method name="onWindowFocusChanged(Z)V" />
-	</class>
-	<class name="android/view/Window" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="addContentView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V" />
-		<method name="addFlags(I)V" />
-		<method name="clearFlags(I)V" />
-		<method name="closeAllPanels()V" />
-		<method name="closePanel(I)V" />
-		<method name="findViewById(I)Landroid/view/View;" />
-		<method name="getAllowEnterTransitionOverlap()Z" since="21" />
-		<method name="getAllowExitTransitionOverlap()Z" since="21" />
-		<method name="getAttributes()Landroid/view/WindowManager$LayoutParams;" />
-		<method name="getCallback()Landroid/view/Window$Callback;" />
-		<method name="getContainer()Landroid/view/Window;" />
-		<method name="getContentScene()Landroid/transition/Scene;" since="21" />
-		<method name="getContext()Landroid/content/Context;" />
-		<method name="getCurrentFocus()Landroid/view/View;" />
-		<method name="getDecorView()Landroid/view/View;" />
-		<method name="getEnterTransition()Landroid/transition/Transition;" since="21" />
-		<method name="getExitTransition()Landroid/transition/Transition;" since="21" />
-		<method name="getFeatures()I" />
-		<method name="getForcedWindowFlags()I" />
-		<method name="getLayoutInflater()Landroid/view/LayoutInflater;" />
-		<method name="getLocalFeatures()I" />
-		<method name="getNavigationBarColor()I" since="21" />
-		<method name="getSharedElementEnterTransition()Landroid/transition/Transition;" since="21" />
-		<method name="getSharedElementExitTransition()Landroid/transition/Transition;" since="21" />
-		<method name="getStatusBarColor()I" since="21" />
-		<method name="getTransitionManager()Landroid/transition/TransitionManager;" since="21" />
-		<method name="getVolumeControlStream()I" />
-		<method name="getWindowManager()Landroid/view/WindowManager;" />
-		<method name="getWindowStyle()Landroid/content/res/TypedArray;" />
-		<method name="hasChildren()Z" />
-		<method name="hasFeature(I)Z" since="11" />
-		<method name="hasSoftInputMode()Z" since="3" />
-		<method name="injectInputEvent(Landroid/view/InputEvent;)V" since="19" />
-		<method name="invalidatePanelMenu(I)V" since="11" />
-		<method name="isActive()Z" />
-		<method name="isFloating()Z" />
-		<method name="isShortcutKey(ILandroid/view/KeyEvent;)Z" />
-		<method name="makeActive()V" />
-		<method name="onActive()V" />
-		<method name="onConfigurationChanged(Landroid/content/res/Configuration;)V" />
-		<method name="openPanel(ILandroid/view/KeyEvent;)V" />
-		<method name="peekDecorView()Landroid/view/View;" />
-		<method name="performContextMenuIdentifierAction(II)Z" />
-		<method name="performPanelIdentifierAction(III)Z" />
-		<method name="performPanelShortcut(IILandroid/view/KeyEvent;I)Z" />
-		<method name="requestFeature(I)Z" />
-		<method name="restoreHierarchyState(Landroid/os/Bundle;)V" />
-		<method name="saveHierarchyState()Landroid/os/Bundle;" />
-		<method name="setAllowEnterTransitionOverlap(Z)V" since="21" />
-		<method name="setAllowExitTransitionOverlap(Z)V" since="21" />
-		<method name="setAttributes(Landroid/view/WindowManager$LayoutParams;)V" />
-		<method name="setBackgroundDrawable(Landroid/graphics/drawable/Drawable;)V" />
-		<method name="setBackgroundDrawableResource(I)V" />
-		<method name="setCallback(Landroid/view/Window$Callback;)V" />
-		<method name="setChildDrawable(ILandroid/graphics/drawable/Drawable;)V" />
-		<method name="setChildInt(II)V" />
-		<method name="setContainer(Landroid/view/Window;)V" />
-		<method name="setContentView(I)V" />
-		<method name="setContentView(Landroid/view/View;)V" />
-		<method name="setContentView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V" />
-		<method name="setDefaultWindowFormat(I)V" />
-		<method name="setDimAmount(F)V" since="14" />
-		<method name="setEnterTransition(Landroid/transition/Transition;)V" since="21" />
-		<method name="setExitTransition(Landroid/transition/Transition;)V" since="21" />
-		<method name="setFeatureDrawable(ILandroid/graphics/drawable/Drawable;)V" />
-		<method name="setFeatureDrawableAlpha(II)V" />
-		<method name="setFeatureDrawableResource(II)V" />
-		<method name="setFeatureDrawableUri(ILandroid/net/Uri;)V" />
-		<method name="setFeatureInt(II)V" />
-		<method name="setFlags(II)V" />
-		<method name="setFormat(I)V" />
-		<method name="setGravity(I)V" />
-		<method name="setIcon(I)V" since="19" />
-		<method name="setLayout(II)V" />
-		<method name="setLocalFocus(ZZ)V" since="19" />
-		<method name="setLogo(I)V" since="19" />
-		<method name="setNavigationBarColor(I)V" since="21" />
-		<method name="setSharedElementEnterTransition(Landroid/transition/Transition;)V" since="21" />
-		<method name="setSharedElementExitTransition(Landroid/transition/Transition;)V" since="21" />
-		<method name="setSoftInputMode(I)V" since="3" />
-		<method name="setStatusBarColor(I)V" since="21" />
-		<method name="setTitle(Ljava/lang/CharSequence;)V" />
-		<method name="setTitleColor(I)V" />
-		<method name="setTransitionManager(Landroid/transition/TransitionManager;)V" since="21" />
-		<method name="setType(I)V" />
-		<method name="setUiOptions(I)V" since="14" />
-		<method name="setUiOptions(II)V" since="14" />
-		<method name="setVolumeControlStream(I)V" />
-		<method name="setWindowAnimations(I)V" since="3" />
-		<method name="setWindowManager(Landroid/view/WindowManager;Landroid/os/IBinder;Ljava/lang/String;)V" />
-		<method name="setWindowManager(Landroid/view/WindowManager;Landroid/os/IBinder;Ljava/lang/String;Z)V" since="11" />
-		<method name="superDispatchGenericMotionEvent(Landroid/view/MotionEvent;)Z" since="12" />
-		<method name="superDispatchKeyEvent(Landroid/view/KeyEvent;)Z" />
-		<method name="superDispatchKeyShortcutEvent(Landroid/view/KeyEvent;)Z" since="11" />
-		<method name="superDispatchTouchEvent(Landroid/view/MotionEvent;)Z" />
-		<method name="superDispatchTrackballEvent(Landroid/view/MotionEvent;)Z" />
-		<method name="takeInputQueue(Landroid/view/InputQueue$Callback;)V" since="9" />
-		<method name="takeKeyEvents(Z)V" />
-		<method name="takeSurface(Landroid/view/SurfaceHolder$Callback2;)V" since="9" />
-		<method name="togglePanel(ILandroid/view/KeyEvent;)V" />
-		<field name="DEFAULT_FEATURES" />
-		<field name="FEATURE_ACTION_BAR" since="11" />
-		<field name="FEATURE_ACTION_BAR_OVERLAY" since="11" />
-		<field name="FEATURE_ACTION_MODE_OVERLAY" since="11" />
-		<field name="FEATURE_CONTENT_TRANSITIONS" since="21" />
-		<field name="FEATURE_CONTEXT_MENU" />
-		<field name="FEATURE_CUSTOM_TITLE" />
-		<field name="FEATURE_INDETERMINATE_PROGRESS" />
-		<field name="FEATURE_LEFT_ICON" />
-		<field name="FEATURE_NO_TITLE" />
-		<field name="FEATURE_OPTIONS_PANEL" />
-		<field name="FEATURE_PROGRESS" />
-		<field name="FEATURE_RIGHT_ICON" />
-		<field name="FEATURE_SWIPE_TO_DISMISS" since="20" />
-		<field name="ID_ANDROID_CONTENT" />
-		<field name="PROGRESS_END" />
-		<field name="PROGRESS_INDETERMINATE_OFF" />
-		<field name="PROGRESS_INDETERMINATE_ON" />
-		<field name="PROGRESS_SECONDARY_END" />
-		<field name="PROGRESS_SECONDARY_START" />
-		<field name="PROGRESS_START" />
-		<field name="PROGRESS_VISIBILITY_OFF" />
-		<field name="PROGRESS_VISIBILITY_ON" />
-	</class>
-	<class name="android/view/Window$Callback" since="1">
-		<extends name="java/lang/Object" />
-		<method name="dispatchGenericMotionEvent(Landroid/view/MotionEvent;)Z" since="12" />
-		<method name="dispatchKeyEvent(Landroid/view/KeyEvent;)Z" />
-		<method name="dispatchKeyShortcutEvent(Landroid/view/KeyEvent;)Z" since="11" />
-		<method name="dispatchPopulateAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;)Z" since="4" />
-		<method name="dispatchTouchEvent(Landroid/view/MotionEvent;)Z" />
-		<method name="dispatchTrackballEvent(Landroid/view/MotionEvent;)Z" />
-		<method name="onActionModeFinished(Landroid/view/ActionMode;)V" since="11" />
-		<method name="onActionModeStarted(Landroid/view/ActionMode;)V" since="11" />
-		<method name="onAttachedToWindow()V" since="5" />
-		<method name="onContentChanged()V" />
-		<method name="onCreatePanelMenu(ILandroid/view/Menu;)Z" />
-		<method name="onCreatePanelView(I)Landroid/view/View;" />
-		<method name="onDetachedFromWindow()V" since="5" />
-		<method name="onMenuItemSelected(ILandroid/view/MenuItem;)Z" />
-		<method name="onMenuOpened(ILandroid/view/Menu;)Z" />
-		<method name="onPanelClosed(ILandroid/view/Menu;)V" />
-		<method name="onPreparePanel(ILandroid/view/View;Landroid/view/Menu;)Z" />
-		<method name="onSearchRequested()Z" />
-		<method name="onWindowAttributesChanged(Landroid/view/WindowManager$LayoutParams;)V" />
-		<method name="onWindowFocusChanged(Z)V" />
-		<method name="onWindowStartingActionMode(Landroid/view/ActionMode$Callback;)Landroid/view/ActionMode;" since="11" />
-	</class>
-	<class name="android/view/WindowAnimationFrameStats" since="21">
-		<extends name="android/view/FrameStats" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/view/WindowContentFrameStats" since="21">
-		<extends name="android/view/FrameStats" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="getFramePostedTimeNano(I)J" />
-		<method name="getFrameReadyTimeNano(I)J" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/view/WindowId" since="18">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="isFocused()Z" />
-		<method name="registerFocusObserver(Landroid/view/WindowId$FocusObserver;)V" />
-		<method name="unregisterFocusObserver(Landroid/view/WindowId$FocusObserver;)V" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/view/WindowId$FocusObserver" since="18">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="onFocusGained(Landroid/view/WindowId;)V" />
-		<method name="onFocusLost(Landroid/view/WindowId;)V" />
-	</class>
-	<class name="android/view/WindowInsets" since="20">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/view/WindowInsets;)V" />
-		<method name="consumeSystemWindowInsets()Landroid/view/WindowInsets;" />
-		<method name="getSystemWindowInsetBottom()I" />
-		<method name="getSystemWindowInsetLeft()I" />
-		<method name="getSystemWindowInsetRight()I" />
-		<method name="getSystemWindowInsetTop()I" />
-		<method name="hasInsets()Z" />
-		<method name="hasSystemWindowInsets()Z" />
-		<method name="isRound()Z" />
-		<method name="replaceSystemWindowInsets(IIII)Landroid/view/WindowInsets;" />
-	</class>
-	<class name="android/view/WindowManager" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/view/ViewManager" />
-		<method name="getDefaultDisplay()Landroid/view/Display;" />
-		<method name="removeViewImmediate(Landroid/view/View;)V" />
-	</class>
-	<class name="android/view/WindowManager$BadTokenException" since="1">
-		<extends name="java/lang/RuntimeException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/view/WindowManager$InvalidDisplayException" since="17">
-		<extends name="java/lang/RuntimeException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/view/WindowManager$LayoutParams" since="1">
-		<extends name="android/view/ViewGroup$LayoutParams" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(I)V" />
-		<method name="&lt;init>(II)V" />
-		<method name="&lt;init>(III)V" />
-		<method name="&lt;init>(IIIII)V" />
-		<method name="&lt;init>(IIIIIII)V" />
-		<method name="&lt;init>(Landroid/os/Parcel;)V" />
-		<method name="copyFrom(Landroid/view/WindowManager$LayoutParams;)I" />
-		<method name="debug(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="getTitle()Ljava/lang/CharSequence;" />
-		<method name="mayUseInputMethod(I)Z" since="3" />
-		<method name="setTitle(Ljava/lang/CharSequence;)V" />
-		<field name="ALPHA_CHANGED" />
-		<field name="ANIMATION_CHANGED" />
-		<field name="BRIGHTNESS_OVERRIDE_FULL" since="8" />
-		<field name="BRIGHTNESS_OVERRIDE_NONE" since="8" />
-		<field name="BRIGHTNESS_OVERRIDE_OFF" since="8" />
-		<field name="CREATOR" />
-		<field name="DIM_AMOUNT_CHANGED" />
-		<field name="FIRST_APPLICATION_WINDOW" />
-		<field name="FIRST_SUB_WINDOW" />
-		<field name="FIRST_SYSTEM_WINDOW" />
-		<field name="FLAGS_CHANGED" />
-		<field name="FLAG_ALLOW_LOCK_WHILE_SCREEN_ON" since="8" />
-		<field name="FLAG_ALT_FOCUSABLE_IM" since="3" />
-		<field name="FLAG_BLUR_BEHIND" />
-		<field name="FLAG_DIM_BEHIND" />
-		<field name="FLAG_DISMISS_KEYGUARD" since="5" />
-		<field name="FLAG_DITHER" />
-		<field name="FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS" since="21" />
-		<field name="FLAG_FORCE_NOT_FULLSCREEN" />
-		<field name="FLAG_FULLSCREEN" />
-		<field name="FLAG_HARDWARE_ACCELERATED" since="11" />
-		<field name="FLAG_IGNORE_CHEEK_PRESSES" />
-		<field name="FLAG_KEEP_SCREEN_ON" />
-		<field name="FLAG_LAYOUT_INSET_DECOR" />
-		<field name="FLAG_LAYOUT_IN_OVERSCAN" since="18" />
-		<field name="FLAG_LAYOUT_IN_SCREEN" />
-		<field name="FLAG_LAYOUT_NO_LIMITS" />
-		<field name="FLAG_LOCAL_FOCUS_MODE" since="19" />
-		<field name="FLAG_NOT_FOCUSABLE" />
-		<field name="FLAG_NOT_TOUCHABLE" />
-		<field name="FLAG_NOT_TOUCH_MODAL" />
-		<field name="FLAG_SCALED" />
-		<field name="FLAG_SECURE" />
-		<field name="FLAG_SHOW_WALLPAPER" since="5" />
-		<field name="FLAG_SHOW_WHEN_LOCKED" since="5" />
-		<field name="FLAG_SPLIT_TOUCH" since="11" />
-		<field name="FLAG_TOUCHABLE_WHEN_WAKING" />
-		<field name="FLAG_TRANSLUCENT_NAVIGATION" since="19" />
-		<field name="FLAG_TRANSLUCENT_STATUS" since="19" />
-		<field name="FLAG_TURN_SCREEN_ON" since="5" />
-		<field name="FLAG_WATCH_OUTSIDE_TOUCH" since="3" />
-		<field name="FORMAT_CHANGED" />
-		<field name="LAST_APPLICATION_WINDOW" />
-		<field name="LAST_SUB_WINDOW" />
-		<field name="LAST_SYSTEM_WINDOW" />
-		<field name="LAYOUT_CHANGED" />
-		<field name="MEMORY_TYPE_CHANGED" />
-		<field name="MEMORY_TYPE_GPU" />
-		<field name="MEMORY_TYPE_HARDWARE" />
-		<field name="MEMORY_TYPE_NORMAL" />
-		<field name="MEMORY_TYPE_PUSH_BUFFERS" />
-		<field name="ROTATION_ANIMATION_CHANGED" since="18" />
-		<field name="ROTATION_ANIMATION_CROSSFADE" since="18" />
-		<field name="ROTATION_ANIMATION_JUMPCUT" since="18" />
-		<field name="ROTATION_ANIMATION_ROTATE" since="18" />
-		<field name="SCREEN_BRIGHTNESS_CHANGED" since="3" />
-		<field name="SCREEN_ORIENTATION_CHANGED" since="3" />
-		<field name="SOFT_INPUT_ADJUST_NOTHING" since="11" />
-		<field name="SOFT_INPUT_ADJUST_PAN" since="3" />
-		<field name="SOFT_INPUT_ADJUST_RESIZE" since="3" />
-		<field name="SOFT_INPUT_ADJUST_UNSPECIFIED" since="3" />
-		<field name="SOFT_INPUT_IS_FORWARD_NAVIGATION" since="3" />
-		<field name="SOFT_INPUT_MASK_ADJUST" since="3" />
-		<field name="SOFT_INPUT_MASK_STATE" since="3" />
-		<field name="SOFT_INPUT_MODE_CHANGED" since="3" />
-		<field name="SOFT_INPUT_STATE_ALWAYS_HIDDEN" since="3" />
-		<field name="SOFT_INPUT_STATE_ALWAYS_VISIBLE" since="3" />
-		<field name="SOFT_INPUT_STATE_HIDDEN" since="3" />
-		<field name="SOFT_INPUT_STATE_UNCHANGED" since="3" />
-		<field name="SOFT_INPUT_STATE_UNSPECIFIED" since="3" />
-		<field name="SOFT_INPUT_STATE_VISIBLE" since="3" />
-		<field name="TITLE_CHANGED" />
-		<field name="TYPE_APPLICATION" />
-		<field name="TYPE_APPLICATION_ATTACHED_DIALOG" since="3" />
-		<field name="TYPE_APPLICATION_MEDIA" />
-		<field name="TYPE_APPLICATION_PANEL" />
-		<field name="TYPE_APPLICATION_STARTING" />
-		<field name="TYPE_APPLICATION_SUB_PANEL" />
-		<field name="TYPE_BASE_APPLICATION" />
-		<field name="TYPE_CHANGED" />
-		<field name="TYPE_INPUT_METHOD" since="3" />
-		<field name="TYPE_INPUT_METHOD_DIALOG" since="3" />
-		<field name="TYPE_KEYGUARD" />
-		<field name="TYPE_KEYGUARD_DIALOG" />
-		<field name="TYPE_PHONE" />
-		<field name="TYPE_PRIORITY_PHONE" />
-		<field name="TYPE_PRIVATE_PRESENTATION" since="19" />
-		<field name="TYPE_SEARCH_BAR" />
-		<field name="TYPE_STATUS_BAR" />
-		<field name="TYPE_STATUS_BAR_PANEL" />
-		<field name="TYPE_SYSTEM_ALERT" />
-		<field name="TYPE_SYSTEM_DIALOG" />
-		<field name="TYPE_SYSTEM_ERROR" />
-		<field name="TYPE_SYSTEM_OVERLAY" />
-		<field name="TYPE_TOAST" />
-		<field name="TYPE_WALLPAPER" since="5" />
-		<field name="alpha" />
-		<field name="buttonBrightness" since="8" />
-		<field name="dimAmount" />
-		<field name="flags" />
-		<field name="format" />
-		<field name="gravity" />
-		<field name="horizontalMargin" />
-		<field name="horizontalWeight" />
-		<field name="memoryType" />
-		<field name="packageName" />
-		<field name="rotationAnimation" since="18" />
-		<field name="screenBrightness" since="3" />
-		<field name="screenOrientation" since="3" />
-		<field name="softInputMode" since="3" />
-		<field name="systemUiVisibility" since="11" />
-		<field name="token" />
-		<field name="type" />
-		<field name="verticalMargin" />
-		<field name="verticalWeight" />
-		<field name="windowAnimations" />
-		<field name="x" />
-		<field name="y" />
-	</class>
-	<class name="android/view/accessibility/AccessibilityEvent" since="4">
-		<extends name="android/view/accessibility/AccessibilityRecord" since="14" />
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="appendRecord(Landroid/view/accessibility/AccessibilityRecord;)V" since="14" />
-		<method name="eventTypeToString(I)Ljava/lang/String;" since="14" />
-		<method name="getAction()I" since="16" />
-		<method name="getAddedCount()I" />
-		<method name="getBeforeText()Ljava/lang/CharSequence;" />
-		<method name="getClassName()Ljava/lang/CharSequence;" />
-		<method name="getContentChangeTypes()I" since="19" />
-		<method name="getContentDescription()Ljava/lang/CharSequence;" />
-		<method name="getCurrentItemIndex()I" />
-		<method name="getEventTime()J" />
-		<method name="getEventType()I" />
-		<method name="getFromIndex()I" />
-		<method name="getItemCount()I" />
-		<method name="getMovementGranularity()I" since="16" />
-		<method name="getPackageName()Ljava/lang/CharSequence;" />
-		<method name="getParcelableData()Landroid/os/Parcelable;" />
-		<method name="getRecord(I)Landroid/view/accessibility/AccessibilityRecord;" since="14" />
-		<method name="getRecordCount()I" since="14" />
-		<method name="getRemovedCount()I" />
-		<method name="getText()Ljava/util/List;" />
-		<method name="initFromParcel(Landroid/os/Parcel;)V" />
-		<method name="isChecked()Z" />
-		<method name="isEnabled()Z" />
-		<method name="isFullScreen()Z" />
-		<method name="isPassword()Z" />
-		<method name="obtain()Landroid/view/accessibility/AccessibilityEvent;" />
-		<method name="obtain(I)Landroid/view/accessibility/AccessibilityEvent;" />
-		<method name="obtain(Landroid/view/accessibility/AccessibilityEvent;)Landroid/view/accessibility/AccessibilityEvent;" since="14" />
-		<method name="recycle()V" />
-		<method name="setAction(I)V" since="16" />
-		<method name="setAddedCount(I)V" />
-		<method name="setBeforeText(Ljava/lang/CharSequence;)V" />
-		<method name="setChecked(Z)V" />
-		<method name="setClassName(Ljava/lang/CharSequence;)V" />
-		<method name="setContentChangeTypes(I)V" since="19" />
-		<method name="setContentDescription(Ljava/lang/CharSequence;)V" />
-		<method name="setCurrentItemIndex(I)V" />
-		<method name="setEnabled(Z)V" />
-		<method name="setEventTime(J)V" />
-		<method name="setEventType(I)V" />
-		<method name="setFromIndex(I)V" />
-		<method name="setFullScreen(Z)V" />
-		<method name="setItemCount(I)V" />
-		<method name="setMovementGranularity(I)V" since="16" />
-		<method name="setPackageName(Ljava/lang/CharSequence;)V" />
-		<method name="setParcelableData(Landroid/os/Parcelable;)V" />
-		<method name="setPassword(Z)V" />
-		<method name="setRemovedCount(I)V" />
-		<field name="CONTENT_CHANGE_TYPE_CONTENT_DESCRIPTION" since="19" />
-		<field name="CONTENT_CHANGE_TYPE_SUBTREE" since="19" />
-		<field name="CONTENT_CHANGE_TYPE_TEXT" since="19" />
-		<field name="CONTENT_CHANGE_TYPE_UNDEFINED" since="19" />
-		<field name="CREATOR" />
-		<field name="INVALID_POSITION" />
-		<field name="MAX_TEXT_LENGTH" />
-		<field name="TYPES_ALL_MASK" />
-		<field name="TYPE_ANNOUNCEMENT" since="16" />
-		<field name="TYPE_GESTURE_DETECTION_END" since="17" />
-		<field name="TYPE_GESTURE_DETECTION_START" since="17" />
-		<field name="TYPE_NOTIFICATION_STATE_CHANGED" />
-		<field name="TYPE_TOUCH_EXPLORATION_GESTURE_END" since="14" />
-		<field name="TYPE_TOUCH_EXPLORATION_GESTURE_START" since="14" />
-		<field name="TYPE_TOUCH_INTERACTION_END" since="17" />
-		<field name="TYPE_TOUCH_INTERACTION_START" since="17" />
-		<field name="TYPE_VIEW_ACCESSIBILITY_FOCUSED" since="16" />
-		<field name="TYPE_VIEW_ACCESSIBILITY_FOCUS_CLEARED" since="16" />
-		<field name="TYPE_VIEW_CLICKED" />
-		<field name="TYPE_VIEW_FOCUSED" />
-		<field name="TYPE_VIEW_HOVER_ENTER" since="14" />
-		<field name="TYPE_VIEW_HOVER_EXIT" since="14" />
-		<field name="TYPE_VIEW_LONG_CLICKED" />
-		<field name="TYPE_VIEW_SCROLLED" since="14" />
-		<field name="TYPE_VIEW_SELECTED" />
-		<field name="TYPE_VIEW_TEXT_CHANGED" />
-		<field name="TYPE_VIEW_TEXT_SELECTION_CHANGED" since="14" />
-		<field name="TYPE_VIEW_TEXT_TRAVERSED_AT_MOVEMENT_GRANULARITY" since="16" />
-		<field name="TYPE_WINDOWS_CHANGED" since="21" />
-		<field name="TYPE_WINDOW_CONTENT_CHANGED" since="14" />
-		<field name="TYPE_WINDOW_STATE_CHANGED" />
-	</class>
-	<class name="android/view/accessibility/AccessibilityEventSource" since="4">
-		<extends name="java/lang/Object" />
-		<method name="sendAccessibilityEvent(I)V" />
-		<method name="sendAccessibilityEventUnchecked(Landroid/view/accessibility/AccessibilityEvent;)V" />
-	</class>
-	<class name="android/view/accessibility/AccessibilityManager" since="4">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="addAccessibilityStateChangeListener(Landroid/view/accessibility/AccessibilityManager$AccessibilityStateChangeListener;)Z" since="14" />
-		<method name="addTouchExplorationStateChangeListener(Landroid/view/accessibility/AccessibilityManager$TouchExplorationStateChangeListener;)Z" since="19" />
-		<method name="getAccessibilityServiceList()Ljava/util/List;" />
-		<method name="getEnabledAccessibilityServiceList(I)Ljava/util/List;" since="14" />
-		<method name="getInstalledAccessibilityServiceList()Ljava/util/List;" since="14" />
-		<method name="interrupt()V" />
-		<method name="isEnabled()Z" />
-		<method name="isTouchExplorationEnabled()Z" since="14" />
-		<method name="removeAccessibilityStateChangeListener(Landroid/view/accessibility/AccessibilityManager$AccessibilityStateChangeListener;)Z" since="14" />
-		<method name="removeTouchExplorationStateChangeListener(Landroid/view/accessibility/AccessibilityManager$TouchExplorationStateChangeListener;)Z" since="19" />
-		<method name="sendAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;)V" />
-	</class>
-	<class name="android/view/accessibility/AccessibilityManager$AccessibilityStateChangeListener" since="14">
-		<extends name="java/lang/Object" />
-		<method name="onAccessibilityStateChanged(Z)V" />
-	</class>
-	<class name="android/view/accessibility/AccessibilityManager$TouchExplorationStateChangeListener" since="19">
-		<extends name="java/lang/Object" />
-		<method name="onTouchExplorationStateChanged(Z)V" />
-	</class>
-	<class name="android/view/accessibility/AccessibilityNodeInfo" since="14">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="addAction(I)V" />
-		<method name="addAction(Landroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction;)V" since="21" />
-		<method name="addChild(Landroid/view/View;)V" />
-		<method name="addChild(Landroid/view/View;I)V" since="16" />
-		<method name="canOpenPopup()Z" since="19" />
-		<method name="findAccessibilityNodeInfosByText(Ljava/lang/String;)Ljava/util/List;" />
-		<method name="findAccessibilityNodeInfosByViewId(Ljava/lang/String;)Ljava/util/List;" since="18" />
-		<method name="findFocus(I)Landroid/view/accessibility/AccessibilityNodeInfo;" since="16" />
-		<method name="focusSearch(I)Landroid/view/accessibility/AccessibilityNodeInfo;" since="16" />
-		<method name="getActionList()Ljava/util/List;" since="21" />
-		<method name="getActions()I" />
-		<method name="getBoundsInParent(Landroid/graphics/Rect;)V" />
-		<method name="getBoundsInScreen(Landroid/graphics/Rect;)V" />
-		<method name="getChild(I)Landroid/view/accessibility/AccessibilityNodeInfo;" />
-		<method name="getChildCount()I" />
-		<method name="getClassName()Ljava/lang/CharSequence;" />
-		<method name="getCollectionInfo()Landroid/view/accessibility/AccessibilityNodeInfo$CollectionInfo;" since="19" />
-		<method name="getCollectionItemInfo()Landroid/view/accessibility/AccessibilityNodeInfo$CollectionItemInfo;" since="19" />
-		<method name="getContentDescription()Ljava/lang/CharSequence;" />
-		<method name="getExtras()Landroid/os/Bundle;" since="19" />
-		<method name="getInputType()I" since="19" />
-		<method name="getLabelFor()Landroid/view/accessibility/AccessibilityNodeInfo;" since="17" />
-		<method name="getLabeledBy()Landroid/view/accessibility/AccessibilityNodeInfo;" since="17" />
-		<method name="getLiveRegion()I" since="19" />
-		<method name="getMovementGranularities()I" since="16" />
-		<method name="getPackageName()Ljava/lang/CharSequence;" />
-		<method name="getParent()Landroid/view/accessibility/AccessibilityNodeInfo;" />
-		<method name="getRangeInfo()Landroid/view/accessibility/AccessibilityNodeInfo$RangeInfo;" since="19" />
-		<method name="getText()Ljava/lang/CharSequence;" />
-		<method name="getTextSelectionEnd()I" since="18" />
-		<method name="getTextSelectionStart()I" since="18" />
-		<method name="getViewIdResourceName()Ljava/lang/String;" since="18" />
-		<method name="getWindow()Landroid/view/accessibility/AccessibilityWindowInfo;" since="21" />
-		<method name="getWindowId()I" />
-		<method name="isAccessibilityFocused()Z" since="16" />
-		<method name="isCheckable()Z" />
-		<method name="isChecked()Z" />
-		<method name="isClickable()Z" />
-		<method name="isContentInvalid()Z" since="19" />
-		<method name="isDismissable()Z" since="19" />
-		<method name="isEditable()Z" since="18" />
-		<method name="isEnabled()Z" />
-		<method name="isFocusable()Z" />
-		<method name="isFocused()Z" />
-		<method name="isLongClickable()Z" />
-		<method name="isMultiLine()Z" since="19" />
-		<method name="isPassword()Z" />
-		<method name="isScrollable()Z" />
-		<method name="isSelected()Z" />
-		<method name="isVisibleToUser()Z" since="16" />
-		<method name="obtain()Landroid/view/accessibility/AccessibilityNodeInfo;" />
-		<method name="obtain(Landroid/view/View;)Landroid/view/accessibility/AccessibilityNodeInfo;" />
-		<method name="obtain(Landroid/view/View;I)Landroid/view/accessibility/AccessibilityNodeInfo;" since="16" />
-		<method name="obtain(Landroid/view/accessibility/AccessibilityNodeInfo;)Landroid/view/accessibility/AccessibilityNodeInfo;" />
-		<method name="performAction(I)Z" />
-		<method name="performAction(ILandroid/os/Bundle;)Z" since="16" />
-		<method name="recycle()V" />
-		<method name="refresh()Z" since="18" />
-		<method name="removeAction(I)V" since="21" />
-		<method name="removeAction(Landroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction;)Z" since="21" />
-		<method name="removeChild(Landroid/view/View;)Z" since="21" />
-		<method name="removeChild(Landroid/view/View;I)Z" since="21" />
-		<method name="setAccessibilityFocused(Z)V" since="16" />
-		<method name="setBoundsInParent(Landroid/graphics/Rect;)V" />
-		<method name="setBoundsInScreen(Landroid/graphics/Rect;)V" />
-		<method name="setCanOpenPopup(Z)V" since="19" />
-		<method name="setCheckable(Z)V" />
-		<method name="setChecked(Z)V" />
-		<method name="setClassName(Ljava/lang/CharSequence;)V" />
-		<method name="setClickable(Z)V" />
-		<method name="setCollectionInfo(Landroid/view/accessibility/AccessibilityNodeInfo$CollectionInfo;)V" since="19" />
-		<method name="setCollectionItemInfo(Landroid/view/accessibility/AccessibilityNodeInfo$CollectionItemInfo;)V" since="19" />
-		<method name="setContentDescription(Ljava/lang/CharSequence;)V" />
-		<method name="setContentInvalid(Z)V" since="19" />
-		<method name="setDismissable(Z)V" since="19" />
-		<method name="setEditable(Z)V" since="18" />
-		<method name="setEnabled(Z)V" />
-		<method name="setFocusable(Z)V" />
-		<method name="setFocused(Z)V" />
-		<method name="setInputType(I)V" since="19" />
-		<method name="setLabelFor(Landroid/view/View;)V" since="17" />
-		<method name="setLabelFor(Landroid/view/View;I)V" since="17" />
-		<method name="setLabeledBy(Landroid/view/View;)V" since="17" />
-		<method name="setLabeledBy(Landroid/view/View;I)V" since="17" />
-		<method name="setLiveRegion(I)V" since="19" />
-		<method name="setLongClickable(Z)V" />
-		<method name="setMovementGranularities(I)V" since="16" />
-		<method name="setMultiLine(Z)V" since="19" />
-		<method name="setPackageName(Ljava/lang/CharSequence;)V" />
-		<method name="setParent(Landroid/view/View;)V" />
-		<method name="setParent(Landroid/view/View;I)V" since="16" />
-		<method name="setPassword(Z)V" />
-		<method name="setRangeInfo(Landroid/view/accessibility/AccessibilityNodeInfo$RangeInfo;)V" since="19" />
-		<method name="setScrollable(Z)V" />
-		<method name="setSelected(Z)V" />
-		<method name="setSource(Landroid/view/View;)V" />
-		<method name="setSource(Landroid/view/View;I)V" since="16" />
-		<method name="setText(Ljava/lang/CharSequence;)V" />
-		<method name="setTextSelection(II)V" since="18" />
-		<method name="setViewIdResourceName(Ljava/lang/String;)V" since="18" />
-		<method name="setVisibleToUser(Z)V" since="16" />
-		<field name="ACTION_ACCESSIBILITY_FOCUS" since="16" />
-		<field name="ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN" since="18" />
-		<field name="ACTION_ARGUMENT_HTML_ELEMENT_STRING" since="16" />
-		<field name="ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT" since="16" />
-		<field name="ACTION_ARGUMENT_SELECTION_END_INT" since="18" />
-		<field name="ACTION_ARGUMENT_SELECTION_START_INT" since="18" />
-		<field name="ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE" since="21" />
-		<field name="ACTION_CLEAR_ACCESSIBILITY_FOCUS" since="16" />
-		<field name="ACTION_CLEAR_FOCUS" />
-		<field name="ACTION_CLEAR_SELECTION" />
-		<field name="ACTION_CLICK" since="16" />
-		<field name="ACTION_COLLAPSE" since="19" />
-		<field name="ACTION_COPY" since="18" />
-		<field name="ACTION_CUT" since="18" />
-		<field name="ACTION_DISMISS" since="19" />
-		<field name="ACTION_EXPAND" since="19" />
-		<field name="ACTION_FOCUS" />
-		<field name="ACTION_LONG_CLICK" since="16" />
-		<field name="ACTION_NEXT_AT_MOVEMENT_GRANULARITY" since="16" />
-		<field name="ACTION_NEXT_HTML_ELEMENT" since="16" />
-		<field name="ACTION_PASTE" since="18" />
-		<field name="ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY" since="16" />
-		<field name="ACTION_PREVIOUS_HTML_ELEMENT" since="16" />
-		<field name="ACTION_SCROLL_BACKWARD" since="16" />
-		<field name="ACTION_SCROLL_FORWARD" since="16" />
-		<field name="ACTION_SELECT" />
-		<field name="ACTION_SET_SELECTION" since="18" />
-		<field name="ACTION_SET_TEXT" since="21" />
-		<field name="CREATOR" />
-		<field name="FOCUS_ACCESSIBILITY" since="16" />
-		<field name="FOCUS_INPUT" since="16" />
-		<field name="MOVEMENT_GRANULARITY_CHARACTER" since="16" />
-		<field name="MOVEMENT_GRANULARITY_LINE" since="16" />
-		<field name="MOVEMENT_GRANULARITY_PAGE" since="16" />
-		<field name="MOVEMENT_GRANULARITY_PARAGRAPH" since="16" />
-		<field name="MOVEMENT_GRANULARITY_WORD" since="16" />
-	</class>
-	<class name="android/view/accessibility/AccessibilityNodeInfo$AccessibilityAction" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(ILjava/lang/CharSequence;)V" />
-		<method name="getId()I" />
-		<method name="getLabel()Ljava/lang/CharSequence;" />
-		<field name="ACTION_ACCESSIBILITY_FOCUS" />
-		<field name="ACTION_CLEAR_ACCESSIBILITY_FOCUS" />
-		<field name="ACTION_CLEAR_FOCUS" />
-		<field name="ACTION_CLEAR_SELECTION" />
-		<field name="ACTION_CLICK" />
-		<field name="ACTION_COLLAPSE" />
-		<field name="ACTION_COPY" />
-		<field name="ACTION_CUT" />
-		<field name="ACTION_DISMISS" />
-		<field name="ACTION_EXPAND" />
-		<field name="ACTION_FOCUS" />
-		<field name="ACTION_LONG_CLICK" />
-		<field name="ACTION_NEXT_AT_MOVEMENT_GRANULARITY" />
-		<field name="ACTION_NEXT_HTML_ELEMENT" />
-		<field name="ACTION_PASTE" />
-		<field name="ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY" />
-		<field name="ACTION_PREVIOUS_HTML_ELEMENT" />
-		<field name="ACTION_SCROLL_BACKWARD" />
-		<field name="ACTION_SCROLL_FORWARD" />
-		<field name="ACTION_SELECT" />
-		<field name="ACTION_SET_SELECTION" />
-		<field name="ACTION_SET_TEXT" />
-	</class>
-	<class name="android/view/accessibility/AccessibilityNodeInfo$CollectionInfo" since="19">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getColumnCount()I" />
-		<method name="getRowCount()I" />
-		<method name="getSelectionMode()I" since="21" />
-		<method name="isHierarchical()Z" />
-		<method name="obtain(IIZ)Landroid/view/accessibility/AccessibilityNodeInfo$CollectionInfo;" />
-		<method name="obtain(IIZI)Landroid/view/accessibility/AccessibilityNodeInfo$CollectionInfo;" since="21" />
-		<field name="SELECTION_MODE_MULTIPLE" since="21" />
-		<field name="SELECTION_MODE_NONE" since="21" />
-		<field name="SELECTION_MODE_SINGLE" since="21" />
-	</class>
-	<class name="android/view/accessibility/AccessibilityNodeInfo$CollectionItemInfo" since="19">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getColumnIndex()I" />
-		<method name="getColumnSpan()I" />
-		<method name="getRowIndex()I" />
-		<method name="getRowSpan()I" />
-		<method name="isHeading()Z" />
-		<method name="isSelected()Z" since="21" />
-		<method name="obtain(IIIIZ)Landroid/view/accessibility/AccessibilityNodeInfo$CollectionItemInfo;" />
-		<method name="obtain(IIIIZZ)Landroid/view/accessibility/AccessibilityNodeInfo$CollectionItemInfo;" since="21" />
-	</class>
-	<class name="android/view/accessibility/AccessibilityNodeInfo$RangeInfo" since="19">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getCurrent()F" />
-		<method name="getMax()F" />
-		<method name="getMin()F" />
-		<method name="getType()I" />
-		<method name="obtain(IFFF)Landroid/view/accessibility/AccessibilityNodeInfo$RangeInfo;" />
-		<field name="RANGE_TYPE_FLOAT" />
-		<field name="RANGE_TYPE_INT" />
-		<field name="RANGE_TYPE_PERCENT" />
-	</class>
-	<class name="android/view/accessibility/AccessibilityNodeProvider" since="16">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="createAccessibilityNodeInfo(I)Landroid/view/accessibility/AccessibilityNodeInfo;" />
-		<method name="findAccessibilityNodeInfosByText(Ljava/lang/String;I)Ljava/util/List;" />
-		<method name="findFocus(I)Landroid/view/accessibility/AccessibilityNodeInfo;" since="19" />
-		<method name="performAction(IILandroid/os/Bundle;)Z" />
-		<field name="HOST_VIEW_ID" since="21" />
-	</class>
-	<class name="android/view/accessibility/AccessibilityRecord" since="14">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getAddedCount()I" />
-		<method name="getBeforeText()Ljava/lang/CharSequence;" />
-		<method name="getClassName()Ljava/lang/CharSequence;" />
-		<method name="getContentDescription()Ljava/lang/CharSequence;" />
-		<method name="getCurrentItemIndex()I" />
-		<method name="getFromIndex()I" />
-		<method name="getItemCount()I" />
-		<method name="getMaxScrollX()I" since="15" />
-		<method name="getMaxScrollY()I" since="15" />
-		<method name="getParcelableData()Landroid/os/Parcelable;" />
-		<method name="getRemovedCount()I" />
-		<method name="getScrollX()I" />
-		<method name="getScrollY()I" />
-		<method name="getSource()Landroid/view/accessibility/AccessibilityNodeInfo;" />
-		<method name="getText()Ljava/util/List;" />
-		<method name="getToIndex()I" />
-		<method name="getWindowId()I" />
-		<method name="isChecked()Z" />
-		<method name="isEnabled()Z" />
-		<method name="isFullScreen()Z" />
-		<method name="isPassword()Z" />
-		<method name="isScrollable()Z" />
-		<method name="obtain()Landroid/view/accessibility/AccessibilityRecord;" />
-		<method name="obtain(Landroid/view/accessibility/AccessibilityRecord;)Landroid/view/accessibility/AccessibilityRecord;" />
-		<method name="recycle()V" />
-		<method name="setAddedCount(I)V" />
-		<method name="setBeforeText(Ljava/lang/CharSequence;)V" />
-		<method name="setChecked(Z)V" />
-		<method name="setClassName(Ljava/lang/CharSequence;)V" />
-		<method name="setContentDescription(Ljava/lang/CharSequence;)V" />
-		<method name="setCurrentItemIndex(I)V" />
-		<method name="setEnabled(Z)V" />
-		<method name="setFromIndex(I)V" />
-		<method name="setFullScreen(Z)V" />
-		<method name="setItemCount(I)V" />
-		<method name="setMaxScrollX(I)V" since="15" />
-		<method name="setMaxScrollY(I)V" since="15" />
-		<method name="setParcelableData(Landroid/os/Parcelable;)V" />
-		<method name="setPassword(Z)V" />
-		<method name="setRemovedCount(I)V" />
-		<method name="setScrollX(I)V" />
-		<method name="setScrollY(I)V" />
-		<method name="setScrollable(Z)V" />
-		<method name="setSource(Landroid/view/View;)V" />
-		<method name="setSource(Landroid/view/View;I)V" since="16" />
-		<method name="setToIndex(I)V" />
-	</class>
-	<class name="android/view/accessibility/AccessibilityWindowInfo" since="21">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="getBoundsInScreen(Landroid/graphics/Rect;)V" />
-		<method name="getChild(I)Landroid/view/accessibility/AccessibilityWindowInfo;" />
-		<method name="getChildCount()I" />
-		<method name="getId()I" />
-		<method name="getLayer()I" />
-		<method name="getParent()Landroid/view/accessibility/AccessibilityWindowInfo;" />
-		<method name="getRoot()Landroid/view/accessibility/AccessibilityNodeInfo;" />
-		<method name="getType()I" />
-		<method name="isActive()Z" />
-		<method name="isFocused()Z" />
-		<method name="obtain()Landroid/view/accessibility/AccessibilityWindowInfo;" />
-		<method name="obtain(Landroid/view/accessibility/AccessibilityWindowInfo;)Landroid/view/accessibility/AccessibilityWindowInfo;" />
-		<method name="recycle()V" />
-		<field name="CREATOR" />
-		<field name="TYPE_APPLICATION" />
-		<field name="TYPE_INPUT_METHOD" />
-		<field name="TYPE_SYSTEM" />
-	</class>
-	<class name="android/view/accessibility/CaptioningManager" since="19">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="addCaptioningChangeListener(Landroid/view/accessibility/CaptioningManager$CaptioningChangeListener;)V" />
-		<method name="getFontScale()F" />
-		<method name="getLocale()Ljava/util/Locale;" />
-		<method name="getUserStyle()Landroid/view/accessibility/CaptioningManager$CaptionStyle;" />
-		<method name="isEnabled()Z" />
-		<method name="removeCaptioningChangeListener(Landroid/view/accessibility/CaptioningManager$CaptioningChangeListener;)V" />
-	</class>
-	<class name="android/view/accessibility/CaptioningManager$CaptionStyle" since="19">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getTypeface()Landroid/graphics/Typeface;" />
-		<method name="hasBackgroundColor()Z" since="21" />
-		<method name="hasEdgeColor()Z" since="21" />
-		<method name="hasEdgeType()Z" since="21" />
-		<method name="hasForegroundColor()Z" since="21" />
-		<method name="hasWindowColor()Z" since="21" />
-		<field name="EDGE_TYPE_DEPRESSED" since="21" />
-		<field name="EDGE_TYPE_DROP_SHADOW" />
-		<field name="EDGE_TYPE_NONE" />
-		<field name="EDGE_TYPE_OUTLINE" />
-		<field name="EDGE_TYPE_RAISED" since="21" />
-		<field name="EDGE_TYPE_UNSPECIFIED" since="21" />
-		<field name="backgroundColor" />
-		<field name="edgeColor" />
-		<field name="edgeType" />
-		<field name="foregroundColor" />
-		<field name="windowColor" since="21" />
-	</class>
-	<class name="android/view/accessibility/CaptioningManager$CaptioningChangeListener" since="19">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="onEnabledChanged(Z)V" />
-		<method name="onFontScaleChanged(F)V" />
-		<method name="onLocaleChanged(Ljava/util/Locale;)V" />
-		<method name="onUserStyleChanged(Landroid/view/accessibility/CaptioningManager$CaptionStyle;)V" />
-	</class>
-	<class name="android/view/animation/AccelerateDecelerateInterpolator" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/view/animation/Interpolator" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-	</class>
-	<class name="android/view/animation/AccelerateInterpolator" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/view/animation/Interpolator" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(F)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-	</class>
-	<class name="android/view/animation/AlphaAnimation" since="1">
-		<extends name="android/view/animation/Animation" />
-		<method name="&lt;init>(FF)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-	</class>
-	<class name="android/view/animation/Animation" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/Cloneable" since="3" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="applyTransformation(FLandroid/view/animation/Transformation;)V" />
-		<method name="cancel()V" since="8" />
-		<method name="clone()Landroid/view/animation/Animation;" since="3" />
-		<method name="computeDurationHint()J" since="3" />
-		<method name="ensureInterpolator()V" />
-		<method name="getBackgroundColor()I" since="12" />
-		<method name="getDetachWallpaper()Z" since="5" />
-		<method name="getDuration()J" />
-		<method name="getFillAfter()Z" />
-		<method name="getFillBefore()Z" />
-		<method name="getInterpolator()Landroid/view/animation/Interpolator;" />
-		<method name="getRepeatCount()I" />
-		<method name="getRepeatMode()I" />
-		<method name="getScaleFactor()F" since="11" />
-		<method name="getStartOffset()J" />
-		<method name="getStartTime()J" />
-		<method name="getTransformation(JLandroid/view/animation/Transformation;)Z" />
-		<method name="getTransformation(JLandroid/view/animation/Transformation;F)Z" since="11" />
-		<method name="getZAdjustment()I" />
-		<method name="hasEnded()Z" />
-		<method name="hasStarted()Z" />
-		<method name="initialize(IIII)V" />
-		<method name="isFillEnabled()Z" since="3" />
-		<method name="isInitialized()Z" />
-		<method name="reset()V" />
-		<method name="resolveSize(IFII)F" />
-		<method name="restrictDuration(J)V" />
-		<method name="scaleCurrentDuration(F)V" />
-		<method name="setAnimationListener(Landroid/view/animation/Animation$AnimationListener;)V" />
-		<method name="setBackgroundColor(I)V" since="12" />
-		<method name="setDetachWallpaper(Z)V" since="5" />
-		<method name="setDuration(J)V" />
-		<method name="setFillAfter(Z)V" />
-		<method name="setFillBefore(Z)V" />
-		<method name="setFillEnabled(Z)V" since="3" />
-		<method name="setInterpolator(Landroid/content/Context;I)V" />
-		<method name="setInterpolator(Landroid/view/animation/Interpolator;)V" />
-		<method name="setRepeatCount(I)V" />
-		<method name="setRepeatMode(I)V" />
-		<method name="setStartOffset(J)V" />
-		<method name="setStartTime(J)V" />
-		<method name="setZAdjustment(I)V" />
-		<method name="start()V" />
-		<method name="startNow()V" />
-		<method name="willChangeBounds()Z" />
-		<method name="willChangeTransformationMatrix()Z" />
-		<field name="ABSOLUTE" />
-		<field name="INFINITE" />
-		<field name="RELATIVE_TO_PARENT" />
-		<field name="RELATIVE_TO_SELF" />
-		<field name="RESTART" />
-		<field name="REVERSE" />
-		<field name="START_ON_FIRST_FRAME" />
-		<field name="ZORDER_BOTTOM" />
-		<field name="ZORDER_NORMAL" />
-		<field name="ZORDER_TOP" />
-	</class>
-	<class name="android/view/animation/Animation$AnimationListener" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onAnimationEnd(Landroid/view/animation/Animation;)V" />
-		<method name="onAnimationRepeat(Landroid/view/animation/Animation;)V" />
-		<method name="onAnimationStart(Landroid/view/animation/Animation;)V" />
-	</class>
-	<class name="android/view/animation/Animation$Description" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="type" />
-		<field name="value" />
-	</class>
-	<class name="android/view/animation/AnimationSet" since="1">
-		<extends name="android/view/animation/Animation" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Z)V" />
-		<method name="addAnimation(Landroid/view/animation/Animation;)V" />
-		<method name="clone()Landroid/view/animation/AnimationSet;" since="3" />
-		<method name="getAnimations()Ljava/util/List;" />
-	</class>
-	<class name="android/view/animation/AnimationUtils" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="currentAnimationTimeMillis()J" />
-		<method name="loadAnimation(Landroid/content/Context;I)Landroid/view/animation/Animation;" />
-		<method name="loadInterpolator(Landroid/content/Context;I)Landroid/view/animation/Interpolator;" />
-		<method name="loadLayoutAnimation(Landroid/content/Context;I)Landroid/view/animation/LayoutAnimationController;" />
-		<method name="makeInAnimation(Landroid/content/Context;Z)Landroid/view/animation/Animation;" />
-		<method name="makeInChildBottomAnimation(Landroid/content/Context;)Landroid/view/animation/Animation;" />
-		<method name="makeOutAnimation(Landroid/content/Context;Z)Landroid/view/animation/Animation;" />
-	</class>
-	<class name="android/view/animation/AnticipateInterpolator" since="4">
-		<extends name="java/lang/Object" />
-		<implements name="android/view/animation/Interpolator" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(F)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-	</class>
-	<class name="android/view/animation/AnticipateOvershootInterpolator" since="4">
-		<extends name="java/lang/Object" />
-		<implements name="android/view/animation/Interpolator" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(F)V" />
-		<method name="&lt;init>(FF)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-	</class>
-	<class name="android/view/animation/BounceInterpolator" since="4">
-		<extends name="java/lang/Object" />
-		<implements name="android/view/animation/Interpolator" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-	</class>
-	<class name="android/view/animation/CycleInterpolator" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/view/animation/Interpolator" />
-		<method name="&lt;init>(F)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-	</class>
-	<class name="android/view/animation/DecelerateInterpolator" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/view/animation/Interpolator" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(F)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-	</class>
-	<class name="android/view/animation/GridLayoutAnimationController" since="1">
-		<extends name="android/view/animation/LayoutAnimationController" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/view/animation/Animation;)V" />
-		<method name="&lt;init>(Landroid/view/animation/Animation;FF)V" />
-		<method name="getColumnDelay()F" />
-		<method name="getDirection()I" />
-		<method name="getDirectionPriority()I" />
-		<method name="getRowDelay()F" />
-		<method name="setColumnDelay(F)V" />
-		<method name="setDirection(I)V" />
-		<method name="setDirectionPriority(I)V" />
-		<method name="setRowDelay(F)V" />
-		<field name="DIRECTION_BOTTOM_TO_TOP" />
-		<field name="DIRECTION_HORIZONTAL_MASK" />
-		<field name="DIRECTION_LEFT_TO_RIGHT" />
-		<field name="DIRECTION_RIGHT_TO_LEFT" />
-		<field name="DIRECTION_TOP_TO_BOTTOM" />
-		<field name="DIRECTION_VERTICAL_MASK" />
-		<field name="PRIORITY_COLUMN" />
-		<field name="PRIORITY_NONE" />
-		<field name="PRIORITY_ROW" />
-	</class>
-	<class name="android/view/animation/GridLayoutAnimationController$AnimationParameters" since="1">
-		<extends name="android/view/animation/LayoutAnimationController$AnimationParameters" />
-		<method name="&lt;init>()V" />
-		<field name="column" />
-		<field name="columnsCount" />
-		<field name="row" />
-		<field name="rowsCount" />
-	</class>
-	<class name="android/view/animation/Interpolator" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/animation/TimeInterpolator" since="11" />
-		<method name="getInterpolation(F)F" />
-	</class>
-	<class name="android/view/animation/LayoutAnimationController" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/view/animation/Animation;)V" />
-		<method name="&lt;init>(Landroid/view/animation/Animation;F)V" />
-		<method name="getAnimation()Landroid/view/animation/Animation;" />
-		<method name="getAnimationForView(Landroid/view/View;)Landroid/view/animation/Animation;" />
-		<method name="getDelay()F" />
-		<method name="getDelayForView(Landroid/view/View;)J" />
-		<method name="getInterpolator()Landroid/view/animation/Interpolator;" />
-		<method name="getOrder()I" />
-		<method name="getTransformedIndex(Landroid/view/animation/LayoutAnimationController$AnimationParameters;)I" />
-		<method name="isDone()Z" />
-		<method name="setAnimation(Landroid/content/Context;I)V" />
-		<method name="setAnimation(Landroid/view/animation/Animation;)V" />
-		<method name="setDelay(F)V" />
-		<method name="setInterpolator(Landroid/content/Context;I)V" />
-		<method name="setInterpolator(Landroid/view/animation/Interpolator;)V" />
-		<method name="setOrder(I)V" />
-		<method name="start()V" />
-		<method name="willOverlap()Z" />
-		<field name="ORDER_NORMAL" />
-		<field name="ORDER_RANDOM" />
-		<field name="ORDER_REVERSE" />
-		<field name="mAnimation" />
-		<field name="mInterpolator" />
-		<field name="mRandomizer" />
-	</class>
-	<class name="android/view/animation/LayoutAnimationController$AnimationParameters" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="count" />
-		<field name="index" />
-	</class>
-	<class name="android/view/animation/LinearInterpolator" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/view/animation/Interpolator" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-	</class>
-	<class name="android/view/animation/OvershootInterpolator" since="4">
-		<extends name="java/lang/Object" />
-		<implements name="android/view/animation/Interpolator" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(F)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-	</class>
-	<class name="android/view/animation/PathInterpolator" since="21">
-		<extends name="java/lang/Object" />
-		<implements name="android/view/animation/Interpolator" />
-		<method name="&lt;init>(FF)V" />
-		<method name="&lt;init>(FFFF)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/graphics/Path;)V" />
-	</class>
-	<class name="android/view/animation/RotateAnimation" since="1">
-		<extends name="android/view/animation/Animation" />
-		<method name="&lt;init>(FF)V" />
-		<method name="&lt;init>(FFFF)V" />
-		<method name="&lt;init>(FFIFIF)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-	</class>
-	<class name="android/view/animation/ScaleAnimation" since="1">
-		<extends name="android/view/animation/Animation" />
-		<method name="&lt;init>(FFFF)V" />
-		<method name="&lt;init>(FFFFFF)V" />
-		<method name="&lt;init>(FFFFIFIF)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-	</class>
-	<class name="android/view/animation/Transformation" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="clear()V" />
-		<method name="compose(Landroid/view/animation/Transformation;)V" />
-		<method name="getAlpha()F" />
-		<method name="getMatrix()Landroid/graphics/Matrix;" />
-		<method name="getTransformationType()I" />
-		<method name="set(Landroid/view/animation/Transformation;)V" />
-		<method name="setAlpha(F)V" />
-		<method name="setTransformationType(I)V" />
-		<method name="toShortString()Ljava/lang/String;" since="3" />
-		<field name="TYPE_ALPHA" />
-		<field name="TYPE_BOTH" />
-		<field name="TYPE_IDENTITY" />
-		<field name="TYPE_MATRIX" />
-		<field name="mAlpha" />
-		<field name="mMatrix" />
-		<field name="mTransformationType" />
-	</class>
-	<class name="android/view/animation/TranslateAnimation" since="1">
-		<extends name="android/view/animation/Animation" />
-		<method name="&lt;init>(FFFF)V" />
-		<method name="&lt;init>(IFIFIFIF)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-	</class>
-	<class name="android/view/inputmethod/BaseInputConnection" since="3">
-		<extends name="java/lang/Object" />
-		<implements name="android/view/inputmethod/InputConnection" />
-		<method name="&lt;init>(Landroid/view/View;Z)V" />
-		<method name="getComposingSpanEnd(Landroid/text/Spannable;)I" />
-		<method name="getComposingSpanStart(Landroid/text/Spannable;)I" />
-		<method name="getEditable()Landroid/text/Editable;" />
-		<method name="removeComposingSpans(Landroid/text/Spannable;)V" />
-		<method name="setComposingSpans(Landroid/text/Spannable;)V" />
-	</class>
-	<class name="android/view/inputmethod/CompletionInfo" since="3">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>(JILjava/lang/CharSequence;)V" />
-		<method name="&lt;init>(JILjava/lang/CharSequence;Ljava/lang/CharSequence;)V" />
-		<method name="getId()J" />
-		<method name="getLabel()Ljava/lang/CharSequence;" />
-		<method name="getPosition()I" />
-		<method name="getText()Ljava/lang/CharSequence;" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/view/inputmethod/CorrectionInfo" since="11">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>(ILjava/lang/CharSequence;Ljava/lang/CharSequence;)V" />
-		<method name="getNewText()Ljava/lang/CharSequence;" />
-		<method name="getOffset()I" />
-		<method name="getOldText()Ljava/lang/CharSequence;" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/view/inputmethod/CursorAnchorInfo" since="21">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>(Landroid/os/Parcel;)V" />
-		<method name="getCharacterRect(I)Landroid/graphics/RectF;" />
-		<method name="getComposingText()Ljava/lang/String;" />
-		<method name="getComposingTextStart()I" />
-		<method name="getInsertionMarkerBaseline()F" />
-		<method name="getInsertionMarkerBottom()F" />
-		<method name="getInsertionMarkerHorizontal()F" />
-		<method name="getInsertionMarkerTop()F" />
-		<method name="getMatrix()Landroid/graphics/Matrix;" />
-		<method name="getSelectionEnd()I" />
-		<method name="getSelectionStart()I" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/view/inputmethod/CursorAnchorInfo$Builder" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="addCharacterRect(IFFFF)Landroid/view/inputmethod/CursorAnchorInfo$Builder;" />
-		<method name="build()Landroid/view/inputmethod/CursorAnchorInfo;" />
-		<method name="reset()V" />
-		<method name="setComposingText(ILjava/lang/CharSequence;)Landroid/view/inputmethod/CursorAnchorInfo$Builder;" />
-		<method name="setInsertionMarkerLocation(FFFF)Landroid/view/inputmethod/CursorAnchorInfo$Builder;" />
-		<method name="setMatrix(Landroid/graphics/Matrix;)Landroid/view/inputmethod/CursorAnchorInfo$Builder;" />
-		<method name="setSelectionRange(II)Landroid/view/inputmethod/CursorAnchorInfo$Builder;" />
-	</class>
-	<class name="android/view/inputmethod/EditorInfo" since="3">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<implements name="android/text/InputType" />
-		<method name="&lt;init>()V" />
-		<method name="dump(Landroid/util/Printer;Ljava/lang/String;)V" />
-		<method name="makeCompatible(I)V" since="11" />
-		<field name="CREATOR" />
-		<field name="IME_ACTION_DONE" />
-		<field name="IME_ACTION_GO" />
-		<field name="IME_ACTION_NEXT" />
-		<field name="IME_ACTION_NONE" />
-		<field name="IME_ACTION_PREVIOUS" since="11" />
-		<field name="IME_ACTION_SEARCH" />
-		<field name="IME_ACTION_SEND" />
-		<field name="IME_ACTION_UNSPECIFIED" />
-		<field name="IME_FLAG_FORCE_ASCII" since="16" />
-		<field name="IME_FLAG_NAVIGATE_NEXT" since="11" />
-		<field name="IME_FLAG_NAVIGATE_PREVIOUS" since="11" />
-		<field name="IME_FLAG_NO_ACCESSORY_ACTION" />
-		<field name="IME_FLAG_NO_ENTER_ACTION" />
-		<field name="IME_FLAG_NO_EXTRACT_UI" />
-		<field name="IME_FLAG_NO_FULLSCREEN" since="11" />
-		<field name="IME_MASK_ACTION" />
-		<field name="IME_NULL" />
-		<field name="actionId" />
-		<field name="actionLabel" />
-		<field name="extras" />
-		<field name="fieldId" />
-		<field name="fieldName" />
-		<field name="hintText" />
-		<field name="imeOptions" />
-		<field name="initialCapsMode" />
-		<field name="initialSelEnd" />
-		<field name="initialSelStart" />
-		<field name="inputType" />
-		<field name="label" />
-		<field name="packageName" />
-		<field name="privateImeOptions" />
-	</class>
-	<class name="android/view/inputmethod/ExtractedText" since="3">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<field name="CREATOR" />
-		<field name="FLAG_SELECTING" />
-		<field name="FLAG_SINGLE_LINE" />
-		<field name="flags" />
-		<field name="partialEndOffset" />
-		<field name="partialStartOffset" />
-		<field name="selectionEnd" />
-		<field name="selectionStart" />
-		<field name="startOffset" />
-		<field name="text" />
-	</class>
-	<class name="android/view/inputmethod/ExtractedTextRequest" since="3">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<field name="CREATOR" />
-		<field name="flags" />
-		<field name="hintMaxChars" />
-		<field name="hintMaxLines" />
-		<field name="token" />
-	</class>
-	<class name="android/view/inputmethod/InputBinding" since="3">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>(Landroid/view/inputmethod/InputConnection;Landroid/os/IBinder;II)V" />
-		<method name="&lt;init>(Landroid/view/inputmethod/InputConnection;Landroid/view/inputmethod/InputBinding;)V" />
-		<method name="getConnection()Landroid/view/inputmethod/InputConnection;" />
-		<method name="getConnectionToken()Landroid/os/IBinder;" />
-		<method name="getPid()I" />
-		<method name="getUid()I" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/view/inputmethod/InputConnection" since="3">
-		<extends name="java/lang/Object" />
-		<method name="beginBatchEdit()Z" />
-		<method name="clearMetaKeyStates(I)Z" />
-		<method name="commitCompletion(Landroid/view/inputmethod/CompletionInfo;)Z" />
-		<method name="commitCorrection(Landroid/view/inputmethod/CorrectionInfo;)Z" since="11" />
-		<method name="commitText(Ljava/lang/CharSequence;I)Z" />
-		<method name="deleteSurroundingText(II)Z" />
-		<method name="endBatchEdit()Z" />
-		<method name="finishComposingText()Z" />
-		<method name="getCursorCapsMode(I)I" />
-		<method name="getExtractedText(Landroid/view/inputmethod/ExtractedTextRequest;I)Landroid/view/inputmethod/ExtractedText;" />
-		<method name="getSelectedText(I)Ljava/lang/CharSequence;" since="9" />
-		<method name="getTextAfterCursor(II)Ljava/lang/CharSequence;" />
-		<method name="getTextBeforeCursor(II)Ljava/lang/CharSequence;" />
-		<method name="performContextMenuAction(I)Z" />
-		<method name="performEditorAction(I)Z" />
-		<method name="performPrivateCommand(Ljava/lang/String;Landroid/os/Bundle;)Z" />
-		<method name="reportFullscreenMode(Z)Z" />
-		<method name="sendKeyEvent(Landroid/view/KeyEvent;)Z" />
-		<method name="setComposingRegion(II)Z" since="9" />
-		<method name="setComposingText(Ljava/lang/CharSequence;I)Z" />
-		<method name="setSelection(II)Z" />
-		<field name="GET_EXTRACTED_TEXT_MONITOR" />
-		<field name="GET_TEXT_WITH_STYLES" />
-	</class>
-	<class name="android/view/inputmethod/InputConnectionWrapper" since="3">
-		<extends name="java/lang/Object" />
-		<implements name="android/view/inputmethod/InputConnection" />
-		<method name="&lt;init>(Landroid/view/inputmethod/InputConnection;Z)V" />
-		<method name="setTarget(Landroid/view/inputmethod/InputConnection;)V" />
-	</class>
-	<class name="android/view/inputmethod/InputMethod" since="3">
-		<extends name="java/lang/Object" />
-		<method name="attachToken(Landroid/os/IBinder;)V" />
-		<method name="bindInput(Landroid/view/inputmethod/InputBinding;)V" />
-		<method name="changeInputMethodSubtype(Landroid/view/inputmethod/InputMethodSubtype;)V" since="11" />
-		<method name="createSession(Landroid/view/inputmethod/InputMethod$SessionCallback;)V" />
-		<method name="hideSoftInput(ILandroid/os/ResultReceiver;)V" />
-		<method name="restartInput(Landroid/view/inputmethod/InputConnection;Landroid/view/inputmethod/EditorInfo;)V" />
-		<method name="revokeSession(Landroid/view/inputmethod/InputMethodSession;)V" />
-		<method name="setSessionEnabled(Landroid/view/inputmethod/InputMethodSession;Z)V" />
-		<method name="showSoftInput(ILandroid/os/ResultReceiver;)V" />
-		<method name="startInput(Landroid/view/inputmethod/InputConnection;Landroid/view/inputmethod/EditorInfo;)V" />
-		<method name="unbindInput()V" />
-		<field name="SERVICE_INTERFACE" />
-		<field name="SERVICE_META_DATA" />
-		<field name="SHOW_EXPLICIT" />
-		<field name="SHOW_FORCED" />
-	</class>
-	<class name="android/view/inputmethod/InputMethod$SessionCallback" since="3">
-		<extends name="java/lang/Object" />
-		<method name="sessionCreated(Landroid/view/inputmethod/InputMethodSession;)V" />
-	</class>
-	<class name="android/view/inputmethod/InputMethodInfo" since="3">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/content/pm/ResolveInfo;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/CharSequence;Ljava/lang/String;)V" />
-		<method name="dump(Landroid/util/Printer;Ljava/lang/String;)V" />
-		<method name="getComponent()Landroid/content/ComponentName;" />
-		<method name="getId()Ljava/lang/String;" />
-		<method name="getIsDefaultResourceId()I" />
-		<method name="getPackageName()Ljava/lang/String;" />
-		<method name="getServiceInfo()Landroid/content/pm/ServiceInfo;" />
-		<method name="getServiceName()Ljava/lang/String;" />
-		<method name="getSettingsActivity()Ljava/lang/String;" />
-		<method name="getSubtypeAt(I)Landroid/view/inputmethod/InputMethodSubtype;" since="11" />
-		<method name="getSubtypeCount()I" since="11" />
-		<method name="loadIcon(Landroid/content/pm/PackageManager;)Landroid/graphics/drawable/Drawable;" />
-		<method name="loadLabel(Landroid/content/pm/PackageManager;)Ljava/lang/CharSequence;" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/view/inputmethod/InputMethodManager" since="3">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="displayCompletions(Landroid/view/View;[Landroid/view/inputmethod/CompletionInfo;)V" />
-		<method name="getCurrentInputMethodSubtype()Landroid/view/inputmethod/InputMethodSubtype;" since="11" />
-		<method name="getEnabledInputMethodList()Ljava/util/List;" />
-		<method name="getEnabledInputMethodSubtypeList(Landroid/view/inputmethod/InputMethodInfo;Z)Ljava/util/List;" since="11" />
-		<method name="getInputMethodList()Ljava/util/List;" />
-		<method name="getLastInputMethodSubtype()Landroid/view/inputmethod/InputMethodSubtype;" since="14" />
-		<method name="getShortcutInputMethodsAndSubtypes()Ljava/util/Map;" since="11" />
-		<method name="hideSoftInputFromInputMethod(Landroid/os/IBinder;I)V" />
-		<method name="hideSoftInputFromWindow(Landroid/os/IBinder;I)Z" />
-		<method name="hideSoftInputFromWindow(Landroid/os/IBinder;ILandroid/os/ResultReceiver;)Z" />
-		<method name="hideStatusIcon(Landroid/os/IBinder;)V" />
-		<method name="isAcceptingText()Z" />
-		<method name="isActive()Z" />
-		<method name="isActive(Landroid/view/View;)Z" />
-		<method name="isFullscreenMode()Z" />
-		<method name="isWatchingCursor(Landroid/view/View;)Z" />
-		<method name="restartInput(Landroid/view/View;)V" />
-		<method name="sendAppPrivateCommand(Landroid/view/View;Ljava/lang/String;Landroid/os/Bundle;)V" />
-		<method name="setAdditionalInputMethodSubtypes(Ljava/lang/String;[Landroid/view/inputmethod/InputMethodSubtype;)V" since="14" />
-		<method name="setCurrentInputMethodSubtype(Landroid/view/inputmethod/InputMethodSubtype;)Z" since="11" />
-		<method name="setInputMethod(Landroid/os/IBinder;Ljava/lang/String;)V" />
-		<method name="setInputMethodAndSubtype(Landroid/os/IBinder;Ljava/lang/String;Landroid/view/inputmethod/InputMethodSubtype;)V" since="11" />
-		<method name="shouldOfferSwitchingToNextInputMethod(Landroid/os/IBinder;)Z" since="19" />
-		<method name="showInputMethodAndSubtypeEnabler(Ljava/lang/String;)V" since="11" />
-		<method name="showInputMethodPicker()V" />
-		<method name="showSoftInput(Landroid/view/View;I)Z" />
-		<method name="showSoftInput(Landroid/view/View;ILandroid/os/ResultReceiver;)Z" />
-		<method name="showSoftInputFromInputMethod(Landroid/os/IBinder;I)V" />
-		<method name="showStatusIcon(Landroid/os/IBinder;Ljava/lang/String;I)V" />
-		<method name="switchToLastInputMethod(Landroid/os/IBinder;)Z" since="11" />
-		<method name="switchToNextInputMethod(Landroid/os/IBinder;Z)Z" since="16" />
-		<method name="toggleSoftInput(II)V" />
-		<method name="toggleSoftInputFromWindow(Landroid/os/IBinder;II)V" />
-		<method name="updateCursor(Landroid/view/View;IIII)V" />
-		<method name="updateCursorAnchorInfo(Landroid/view/View;Landroid/view/inputmethod/CursorAnchorInfo;)V" since="21" />
-		<method name="updateExtractedText(Landroid/view/View;ILandroid/view/inputmethod/ExtractedText;)V" />
-		<method name="updateSelection(Landroid/view/View;IIII)V" />
-		<method name="viewClicked(Landroid/view/View;)V" since="14" />
-		<field name="HIDE_IMPLICIT_ONLY" />
-		<field name="HIDE_NOT_ALWAYS" />
-		<field name="RESULT_HIDDEN" />
-		<field name="RESULT_SHOWN" />
-		<field name="RESULT_UNCHANGED_HIDDEN" />
-		<field name="RESULT_UNCHANGED_SHOWN" />
-		<field name="SHOW_FORCED" />
-		<field name="SHOW_IMPLICIT" />
-	</class>
-	<class name="android/view/inputmethod/InputMethodSession" since="3">
-		<extends name="java/lang/Object" />
-		<method name="appPrivateCommand(Ljava/lang/String;Landroid/os/Bundle;)V" />
-		<method name="dispatchGenericMotionEvent(ILandroid/view/MotionEvent;Landroid/view/inputmethod/InputMethodSession$EventCallback;)V" since="17" />
-		<method name="dispatchKeyEvent(ILandroid/view/KeyEvent;Landroid/view/inputmethod/InputMethodSession$EventCallback;)V" />
-		<method name="dispatchTrackballEvent(ILandroid/view/MotionEvent;Landroid/view/inputmethod/InputMethodSession$EventCallback;)V" />
-		<method name="displayCompletions([Landroid/view/inputmethod/CompletionInfo;)V" />
-		<method name="finishInput()V" />
-		<method name="toggleSoftInput(II)V" />
-		<method name="updateCursor(Landroid/graphics/Rect;)V" />
-		<method name="updateCursorAnchorInfo(Landroid/view/inputmethod/CursorAnchorInfo;)V" since="21" />
-		<method name="updateExtractedText(ILandroid/view/inputmethod/ExtractedText;)V" />
-		<method name="updateSelection(IIIIII)V" />
-		<method name="viewClicked(Z)V" since="14" />
-	</class>
-	<class name="android/view/inputmethod/InputMethodSession$EventCallback" since="3">
-		<extends name="java/lang/Object" />
-		<method name="finishedEvent(IZ)V" />
-	</class>
-	<class name="android/view/inputmethod/InputMethodSubtype" since="11">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;ZZ)V" since="14" />
-		<method name="&lt;init>(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;ZZI)V" since="17" />
-		<method name="containsExtraValueKey(Ljava/lang/String;)Z" since="12" />
-		<method name="getDisplayName(Landroid/content/Context;Ljava/lang/String;Landroid/content/pm/ApplicationInfo;)Ljava/lang/CharSequence;" since="14" />
-		<method name="getExtraValue()Ljava/lang/String;" />
-		<method name="getExtraValueOf(Ljava/lang/String;)Ljava/lang/String;" since="12" />
-		<method name="getIconResId()I" />
-		<method name="getLocale()Ljava/lang/String;" />
-		<method name="getMode()Ljava/lang/String;" />
-		<method name="getNameResId()I" />
-		<method name="isAsciiCapable()Z" since="19" />
-		<method name="isAuxiliary()Z" since="14" />
-		<method name="overridesImplicitlyEnabledSubtype()Z" since="14" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/view/inputmethod/InputMethodSubtype$InputMethodSubtypeBuilder" since="19">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="build()Landroid/view/inputmethod/InputMethodSubtype;" />
-		<method name="setIsAsciiCapable(Z)Landroid/view/inputmethod/InputMethodSubtype$InputMethodSubtypeBuilder;" />
-		<method name="setIsAuxiliary(Z)Landroid/view/inputmethod/InputMethodSubtype$InputMethodSubtypeBuilder;" />
-		<method name="setOverridesImplicitlyEnabledSubtype(Z)Landroid/view/inputmethod/InputMethodSubtype$InputMethodSubtypeBuilder;" />
-		<method name="setSubtypeExtraValue(Ljava/lang/String;)Landroid/view/inputmethod/InputMethodSubtype$InputMethodSubtypeBuilder;" />
-		<method name="setSubtypeIconResId(I)Landroid/view/inputmethod/InputMethodSubtype$InputMethodSubtypeBuilder;" />
-		<method name="setSubtypeId(I)Landroid/view/inputmethod/InputMethodSubtype$InputMethodSubtypeBuilder;" />
-		<method name="setSubtypeLocale(Ljava/lang/String;)Landroid/view/inputmethod/InputMethodSubtype$InputMethodSubtypeBuilder;" />
-		<method name="setSubtypeMode(Ljava/lang/String;)Landroid/view/inputmethod/InputMethodSubtype$InputMethodSubtypeBuilder;" />
-		<method name="setSubtypeNameResId(I)Landroid/view/inputmethod/InputMethodSubtype$InputMethodSubtypeBuilder;" />
-	</class>
-	<class name="android/view/textservice/SentenceSuggestionsInfo" since="16">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>(Landroid/os/Parcel;)V" />
-		<method name="&lt;init>([Landroid/view/textservice/SuggestionsInfo;[I[I)V" />
-		<method name="getLengthAt(I)I" />
-		<method name="getOffsetAt(I)I" />
-		<method name="getSuggestionsCount()I" />
-		<method name="getSuggestionsInfoAt(I)Landroid/view/textservice/SuggestionsInfo;" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/view/textservice/SpellCheckerInfo" since="14">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>()V" />
-		<method name="getComponent()Landroid/content/ComponentName;" />
-		<method name="getId()Ljava/lang/String;" />
-		<method name="getPackageName()Ljava/lang/String;" />
-		<method name="getServiceInfo()Landroid/content/pm/ServiceInfo;" />
-		<method name="getSettingsActivity()Ljava/lang/String;" />
-		<method name="getSubtypeAt(I)Landroid/view/textservice/SpellCheckerSubtype;" />
-		<method name="getSubtypeCount()I" />
-		<method name="loadIcon(Landroid/content/pm/PackageManager;)Landroid/graphics/drawable/Drawable;" />
-		<method name="loadLabel(Landroid/content/pm/PackageManager;)Ljava/lang/CharSequence;" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/view/textservice/SpellCheckerSession" since="14">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="cancel()V" since="15" />
-		<method name="close()V" />
-		<method name="getSentenceSuggestions([Landroid/view/textservice/TextInfo;I)V" since="16" />
-		<method name="getSpellChecker()Landroid/view/textservice/SpellCheckerInfo;" />
-		<method name="getSuggestions(Landroid/view/textservice/TextInfo;I)V" />
-		<method name="getSuggestions([Landroid/view/textservice/TextInfo;IZ)V" />
-		<method name="isSessionDisconnected()Z" />
-		<field name="SERVICE_META_DATA" />
-	</class>
-	<class name="android/view/textservice/SpellCheckerSession$SpellCheckerSessionListener" since="14">
-		<extends name="java/lang/Object" />
-		<method name="onGetSentenceSuggestions([Landroid/view/textservice/SentenceSuggestionsInfo;)V" since="16" />
-		<method name="onGetSuggestions([Landroid/view/textservice/SuggestionsInfo;)V" />
-	</class>
-	<class name="android/view/textservice/SpellCheckerSubtype" since="14">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>(ILjava/lang/String;Ljava/lang/String;)V" />
-		<method name="containsExtraValueKey(Ljava/lang/String;)Z" since="16" />
-		<method name="getDisplayName(Landroid/content/Context;Ljava/lang/String;Landroid/content/pm/ApplicationInfo;)Ljava/lang/CharSequence;" />
-		<method name="getExtraValue()Ljava/lang/String;" />
-		<method name="getExtraValueOf(Ljava/lang/String;)Ljava/lang/String;" since="16" />
-		<method name="getLocale()Ljava/lang/String;" />
-		<method name="getNameResId()I" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/view/textservice/SuggestionsInfo" since="14">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>(I[Ljava/lang/String;)V" />
-		<method name="&lt;init>(I[Ljava/lang/String;II)V" />
-		<method name="&lt;init>(Landroid/os/Parcel;)V" />
-		<method name="getCookie()I" />
-		<method name="getSequence()I" />
-		<method name="getSuggestionAt(I)Ljava/lang/String;" />
-		<method name="getSuggestionsAttributes()I" />
-		<method name="getSuggestionsCount()I" />
-		<method name="setCookieAndSequence(II)V" />
-		<field name="CREATOR" />
-		<field name="RESULT_ATTR_HAS_RECOMMENDED_SUGGESTIONS" since="15" />
-		<field name="RESULT_ATTR_IN_THE_DICTIONARY" />
-		<field name="RESULT_ATTR_LOOKS_LIKE_TYPO" />
-	</class>
-	<class name="android/view/textservice/TextInfo" since="14">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<method name="&lt;init>(Landroid/os/Parcel;)V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;II)V" />
-		<method name="getCookie()I" />
-		<method name="getSequence()I" />
-		<method name="getText()Ljava/lang/String;" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/view/textservice/TextServicesManager" since="14">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="newSpellCheckerSession(Landroid/os/Bundle;Ljava/util/Locale;Landroid/view/textservice/SpellCheckerSession$SpellCheckerSessionListener;Z)Landroid/view/textservice/SpellCheckerSession;" />
-	</class>
-	<class name="android/webkit/CacheManager" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="cacheDisabled()Z" />
-		<method name="endCacheTransaction()Z" />
-		<method name="getCacheFile(Ljava/lang/String;Ljava/util/Map;)Landroid/webkit/CacheManager$CacheResult;" />
-		<method name="getCacheFileBaseDir()Ljava/io/File;" />
-		<method name="saveCacheFile(Ljava/lang/String;Landroid/webkit/CacheManager$CacheResult;)V" />
-		<method name="startCacheTransaction()Z" />
-	</class>
-	<class name="android/webkit/CacheManager$CacheResult" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getContentDisposition()Ljava/lang/String;" since="7" />
-		<method name="getContentLength()J" />
-		<method name="getETag()Ljava/lang/String;" />
-		<method name="getEncoding()Ljava/lang/String;" />
-		<method name="getExpires()J" />
-		<method name="getExpiresString()Ljava/lang/String;" since="7" />
-		<method name="getHttpStatusCode()I" />
-		<method name="getInputStream()Ljava/io/InputStream;" />
-		<method name="getLastModified()Ljava/lang/String;" />
-		<method name="getLocalPath()Ljava/lang/String;" />
-		<method name="getLocation()Ljava/lang/String;" />
-		<method name="getMimeType()Ljava/lang/String;" />
-		<method name="getOutputStream()Ljava/io/OutputStream;" />
-		<method name="setEncoding(Ljava/lang/String;)V" />
-		<method name="setInputStream(Ljava/io/InputStream;)V" />
-	</class>
-	<class name="android/webkit/CallbackProxy" since="1">
-		<extends name="android/os/Handler" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/webkit/WebView;)V" />
-		<method name="addMessageToConsole(Ljava/lang/String;ILjava/lang/String;)V" since="7" />
-		<method name="createWindow(ZZ)Landroid/webkit/WebView;" />
-		<method name="doUpdateVisitedHistory(Ljava/lang/String;Z)V" />
-		<method name="getBackForwardList()Landroid/webkit/WebBackForwardList;" />
-		<method name="getProgress()I" />
-		<method name="getVisitedHistory(Landroid/webkit/ValueCallback;)V" since="7" />
-		<method name="getWebChromeClient()Landroid/webkit/WebChromeClient;" since="7" />
-		<method name="onCloseWindow(Landroid/webkit/WebView;)V" />
-		<method name="onDownloadStart(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;J)Z" />
-		<method name="onExceededDatabaseQuota(Ljava/lang/String;Ljava/lang/String;JJJLandroid/webkit/WebStorage$QuotaUpdater;)V" since="5" />
-		<method name="onFormResubmission(Landroid/os/Message;Landroid/os/Message;)V" />
-		<method name="onGeolocationPermissionsHidePrompt()V" since="7" />
-		<method name="onGeolocationPermissionsShowPrompt(Ljava/lang/String;Landroid/webkit/GeolocationPermissions$Callback;)V" since="7" />
-		<method name="onJsAlert(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="onJsBeforeUnload(Ljava/lang/String;Ljava/lang/String;)Z" />
-		<method name="onJsConfirm(Ljava/lang/String;Ljava/lang/String;)Z" />
-		<method name="onJsPrompt(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="onJsTimeout()Z" since="7" />
-		<method name="onLoadResource(Ljava/lang/String;)V" />
-		<method name="onPageFinished(Ljava/lang/String;)V" />
-		<method name="onPageStarted(Ljava/lang/String;Landroid/graphics/Bitmap;)V" />
-		<method name="onProgressChanged(I)V" />
-		<method name="onReachedMaxAppCacheSize(JJLandroid/webkit/WebStorage$QuotaUpdater;)V" since="7" />
-		<method name="onReceivedError(ILjava/lang/String;Ljava/lang/String;)V" />
-		<method name="onReceivedHttpAuthRequest(Landroid/webkit/HttpAuthHandler;Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="onReceivedIcon(Landroid/graphics/Bitmap;)V" />
-		<method name="onReceivedTitle(Ljava/lang/String;)V" />
-		<method name="onRequestFocus()V" />
-		<method name="onSavePassword(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/os/Message;)Z" />
-		<method name="onScaleChanged(FF)V" />
-		<method name="onTooManyRedirects(Landroid/os/Message;Landroid/os/Message;)V" />
-		<method name="onUnhandledKeyEvent(Landroid/view/KeyEvent;)V" />
-		<method name="setDownloadListener(Landroid/webkit/DownloadListener;)V" />
-		<method name="setWebChromeClient(Landroid/webkit/WebChromeClient;)V" />
-		<method name="setWebViewClient(Landroid/webkit/WebViewClient;)V" />
-		<method name="shouldOverrideUrlLoading(Ljava/lang/String;)Z" />
-		<method name="uiOverrideKeyEvent(Landroid/view/KeyEvent;)Z" />
-		<method name="uiOverrideUrlLoading(Ljava/lang/String;)Z" />
-	</class>
-	<class name="android/webkit/ClientCertRequest" since="21">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="cancel()V" />
-		<method name="getHost()Ljava/lang/String;" />
-		<method name="getKeyTypes()[Ljava/lang/String;" />
-		<method name="getPort()I" />
-		<method name="getPrincipals()[Ljava/security/Principal;" />
-		<method name="ignore()V" />
-		<method name="proceed(Ljava/security/PrivateKey;[Ljava/security/cert/X509Certificate;)V" />
-	</class>
-	<class name="android/webkit/ConsoleMessage" since="8">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;ILandroid/webkit/ConsoleMessage$MessageLevel;)V" />
-		<method name="lineNumber()I" />
-		<method name="message()Ljava/lang/String;" />
-		<method name="messageLevel()Landroid/webkit/ConsoleMessage$MessageLevel;" />
-		<method name="sourceId()Ljava/lang/String;" />
-	</class>
-	<class name="android/webkit/ConsoleMessage$MessageLevel" since="8">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Landroid/webkit/ConsoleMessage$MessageLevel;" />
-		<method name="values()[Landroid/webkit/ConsoleMessage$MessageLevel;" />
-		<field name="DEBUG" />
-		<field name="ERROR" />
-		<field name="LOG" />
-		<field name="TIP" />
-		<field name="WARNING" />
-	</class>
-	<class name="android/webkit/CookieManager" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="acceptCookie()Z" />
-		<method name="allowFileSchemeCookies()Z" since="12" />
-		<method name="getCookie(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="getInstance()Landroid/webkit/CookieManager;" />
-		<method name="hasCookies()Z" />
-		<method name="removeAllCookie()V" />
-		<method name="removeExpiredCookie()V" />
-		<method name="removeSessionCookie()V" />
-		<method name="setAcceptCookie(Z)V" />
-		<method name="setAcceptFileSchemeCookies(Z)V" since="12" />
-		<method name="setCookie(Ljava/lang/String;Ljava/lang/String;)V" />
-	</class>
-	<class name="android/webkit/CookieSyncManager" since="1">
-		<extends name="android/webkit/WebSyncManager" />
-		<method name="&lt;init>()V" />
-		<method name="createInstance(Landroid/content/Context;)Landroid/webkit/CookieSyncManager;" />
-		<method name="getInstance()Landroid/webkit/CookieSyncManager;" />
-		<method name="syncFromRamToFlash()V" />
-		<field name="LOGTAG" since="21" />
-		<field name="mDataBase" since="21" />
-		<field name="mHandler" since="21" />
-	</class>
-	<class name="android/webkit/DateSorter" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="getBoundary(I)J" />
-		<method name="getIndex(J)I" />
-		<method name="getLabel(I)Ljava/lang/String;" />
-		<field name="DAY_COUNT" />
-	</class>
-	<class name="android/webkit/DownloadListener" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onDownloadStart(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;J)V" />
-	</class>
-	<class name="android/webkit/GeolocationPermissions" since="5">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="allow(Ljava/lang/String;)V" since="7" />
-		<method name="clear(Ljava/lang/String;)V" since="7" />
-		<method name="clearAll()V" since="7" />
-		<method name="getAllowed(Ljava/lang/String;Landroid/webkit/ValueCallback;)V" since="7" />
-		<method name="getInstance()Landroid/webkit/GeolocationPermissions;" since="7" />
-		<method name="getOrigins(Landroid/webkit/ValueCallback;)V" since="7" />
-	</class>
-	<class name="android/webkit/GeolocationPermissions$Callback" since="5">
-		<extends name="java/lang/Object" />
-		<method name="invoke(Ljava/lang/String;ZZ)V" />
-	</class>
-	<class name="android/webkit/HttpAuthHandler" since="1">
-		<extends name="android/os/Handler" />
-		<method name="&lt;init>()V" />
-		<method name="cancel()V" />
-		<method name="proceed(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="useHttpAuthUsernamePassword()Z" />
-	</class>
-	<class name="android/webkit/JavascriptInterface" since="17">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/annotation/Annotation" />
-	</class>
-	<class name="android/webkit/JsPromptResult" since="1">
-		<extends name="android/webkit/JsResult" />
-		<method name="&lt;init>()V" />
-		<method name="confirm(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/webkit/JsResult" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="cancel()V" />
-		<method name="confirm()V" />
-		<method name="wakeUp()V" />
-		<field name="mProxy" />
-		<field name="mResult" />
-	</class>
-	<class name="android/webkit/MimeTypeMap" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getExtensionFromMimeType(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="getFileExtensionFromUrl(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="getMimeTypeFromExtension(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="getSingleton()Landroid/webkit/MimeTypeMap;" />
-		<method name="hasExtension(Ljava/lang/String;)Z" />
-		<method name="hasMimeType(Ljava/lang/String;)Z" />
-	</class>
-	<class name="android/webkit/PermissionRequest" since="21">
-		<extends name="java/lang/Object" />
-		<method name="deny()V" />
-		<method name="getOrigin()Landroid/net/Uri;" />
-		<method name="getResources()J" />
-		<method name="grant(J)V" />
-		<field name="RESOURCE_AUDIO_CAPTURE" />
-		<field name="RESOURCE_VIDEO_CAPTURE" />
-	</class>
-	<class name="android/webkit/Plugin" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="dispatchClickEvent(Landroid/content/Context;)V" />
-		<method name="getDescription()Ljava/lang/String;" />
-		<method name="getFileName()Ljava/lang/String;" />
-		<method name="getName()Ljava/lang/String;" />
-		<method name="getPath()Ljava/lang/String;" />
-		<method name="setClickHandler(Landroid/webkit/Plugin$PreferencesClickHandler;)V" />
-		<method name="setDescription(Ljava/lang/String;)V" />
-		<method name="setFileName(Ljava/lang/String;)V" />
-		<method name="setName(Ljava/lang/String;)V" />
-		<method name="setPath(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/webkit/Plugin$PreferencesClickHandler" since="1">
-		<extends name="java/lang/Object" />
-		<method name="handleClickEvent(Landroid/content/Context;)V" />
-	</class>
-	<class name="android/webkit/PluginData" since="3">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/io/InputStream;JLjava/util/Map;I)V" />
-		<method name="getContentLength()J" />
-		<method name="getHeaders()Ljava/util/Map;" />
-		<method name="getInputStream()Ljava/io/InputStream;" />
-		<method name="getStatusCode()I" />
-	</class>
-	<class name="android/webkit/PluginList" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="addPlugin(Landroid/webkit/Plugin;)V" />
-		<method name="clear()V" />
-		<method name="getList()Ljava/util/List;" />
-		<method name="pluginClicked(Landroid/content/Context;I)V" />
-		<method name="removePlugin(Landroid/webkit/Plugin;)V" />
-	</class>
-	<class name="android/webkit/PluginStub" since="5">
-		<extends name="java/lang/Object" />
-		<method name="getEmbeddedView(ILandroid/content/Context;)Landroid/view/View;" />
-		<method name="getFullScreenView(ILandroid/content/Context;)Landroid/view/View;" />
-	</class>
-	<class name="android/webkit/SslErrorHandler" since="1">
-		<extends name="android/os/Handler" />
-		<method name="&lt;init>()V" />
-		<method name="cancel()V" />
-		<method name="proceed()V" />
-	</class>
-	<class name="android/webkit/URLUtil" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="composeSearchUrl(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="decode([B)[B" />
-		<method name="guessFileName(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="guessUrl(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="isAboutUrl(Ljava/lang/String;)Z" />
-		<method name="isAssetUrl(Ljava/lang/String;)Z" />
-		<method name="isContentUrl(Ljava/lang/String;)Z" />
-		<method name="isCookielessProxyUrl(Ljava/lang/String;)Z" />
-		<method name="isDataUrl(Ljava/lang/String;)Z" />
-		<method name="isFileUrl(Ljava/lang/String;)Z" />
-		<method name="isHttpUrl(Ljava/lang/String;)Z" />
-		<method name="isHttpsUrl(Ljava/lang/String;)Z" />
-		<method name="isJavaScriptUrl(Ljava/lang/String;)Z" />
-		<method name="isNetworkUrl(Ljava/lang/String;)Z" />
-		<method name="isValidUrl(Ljava/lang/String;)Z" />
-		<method name="stripAnchor(Ljava/lang/String;)Ljava/lang/String;" />
-	</class>
-	<class name="android/webkit/UrlInterceptHandler" since="1">
-		<extends name="java/lang/Object" />
-		<method name="getPluginData(Ljava/lang/String;Ljava/util/Map;)Landroid/webkit/PluginData;" since="3" />
-		<method name="service(Ljava/lang/String;Ljava/util/Map;)Landroid/webkit/CacheManager$CacheResult;" />
-	</class>
-	<class name="android/webkit/UrlInterceptRegistry" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getPluginData(Ljava/lang/String;Ljava/util/Map;)Landroid/webkit/PluginData;" since="3" />
-		<method name="getSurrogate(Ljava/lang/String;Ljava/util/Map;)Landroid/webkit/CacheManager$CacheResult;" />
-		<method name="registerHandler(Landroid/webkit/UrlInterceptHandler;)Z" />
-		<method name="setUrlInterceptDisabled(Z)V" />
-		<method name="unregisterHandler(Landroid/webkit/UrlInterceptHandler;)Z" />
-		<method name="urlInterceptDisabled()Z" />
-	</class>
-	<class name="android/webkit/ValueCallback" since="7">
-		<extends name="java/lang/Object" />
-		<method name="onReceiveValue(Ljava/lang/Object;)V" />
-	</class>
-	<class name="android/webkit/WebBackForwardList" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<implements name="java/lang/Cloneable" />
-		<method name="&lt;init>()V" />
-		<method name="clone()Landroid/webkit/WebBackForwardList;" />
-		<method name="getCurrentIndex()I" />
-		<method name="getCurrentItem()Landroid/webkit/WebHistoryItem;" />
-		<method name="getItemAtIndex(I)Landroid/webkit/WebHistoryItem;" />
-		<method name="getSize()I" />
-	</class>
-	<class name="android/webkit/WebChromeClient" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getDefaultVideoPoster()Landroid/graphics/Bitmap;" since="7" />
-		<method name="getVideoLoadingProgressView()Landroid/view/View;" since="7" />
-		<method name="getVisitedHistory(Landroid/webkit/ValueCallback;)V" since="7" />
-		<method name="onCloseWindow(Landroid/webkit/WebView;)V" />
-		<method name="onConsoleMessage(Landroid/webkit/ConsoleMessage;)Z" since="8" />
-		<method name="onConsoleMessage(Ljava/lang/String;ILjava/lang/String;)V" since="7" />
-		<method name="onCreateWindow(Landroid/webkit/WebView;ZZLandroid/os/Message;)Z" />
-		<method name="onExceededDatabaseQuota(Ljava/lang/String;Ljava/lang/String;JJJLandroid/webkit/WebStorage$QuotaUpdater;)V" since="5" />
-		<method name="onGeolocationPermissionsHidePrompt()V" since="5" />
-		<method name="onGeolocationPermissionsShowPrompt(Ljava/lang/String;Landroid/webkit/GeolocationPermissions$Callback;)V" since="5" />
-		<method name="onHideCustomView()V" since="7" />
-		<method name="onJsAlert(Landroid/webkit/WebView;Ljava/lang/String;Ljava/lang/String;Landroid/webkit/JsResult;)Z" />
-		<method name="onJsBeforeUnload(Landroid/webkit/WebView;Ljava/lang/String;Ljava/lang/String;Landroid/webkit/JsResult;)Z" />
-		<method name="onJsConfirm(Landroid/webkit/WebView;Ljava/lang/String;Ljava/lang/String;Landroid/webkit/JsResult;)Z" />
-		<method name="onJsPrompt(Landroid/webkit/WebView;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/webkit/JsPromptResult;)Z" />
-		<method name="onJsTimeout()Z" since="7" />
-		<method name="onPermissionRequest(Landroid/webkit/PermissionRequest;)V" since="21" />
-		<method name="onPermissionRequestCanceled(Landroid/webkit/PermissionRequest;)V" since="21" />
-		<method name="onProgressChanged(Landroid/webkit/WebView;I)V" />
-		<method name="onReachedMaxAppCacheSize(JJLandroid/webkit/WebStorage$QuotaUpdater;)V" since="7" />
-		<method name="onReceivedIcon(Landroid/webkit/WebView;Landroid/graphics/Bitmap;)V" />
-		<method name="onReceivedTitle(Landroid/webkit/WebView;Ljava/lang/String;)V" />
-		<method name="onReceivedTouchIconUrl(Landroid/webkit/WebView;Ljava/lang/String;Z)V" since="7" />
-		<method name="onRequestFocus(Landroid/webkit/WebView;)V" />
-		<method name="onShowCustomView(Landroid/view/View;ILandroid/webkit/WebChromeClient$CustomViewCallback;)V" since="14" />
-		<method name="onShowCustomView(Landroid/view/View;Landroid/webkit/WebChromeClient$CustomViewCallback;)V" since="7" />
-	</class>
-	<class name="android/webkit/WebChromeClient$CustomViewCallback" since="7">
-		<extends name="java/lang/Object" />
-		<method name="onCustomViewHidden()V" />
-	</class>
-	<class name="android/webkit/WebHistoryItem" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/Cloneable" />
-		<method name="&lt;init>()V" />
-		<method name="clone()Landroid/webkit/WebHistoryItem;" />
-		<method name="getFavicon()Landroid/graphics/Bitmap;" />
-		<method name="getId()I" />
-		<method name="getOriginalUrl()Ljava/lang/String;" since="3" />
-		<method name="getTitle()Ljava/lang/String;" />
-		<method name="getUrl()Ljava/lang/String;" />
-	</class>
-	<class name="android/webkit/WebIconDatabase" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="close()V" />
-		<method name="getInstance()Landroid/webkit/WebIconDatabase;" />
-		<method name="open(Ljava/lang/String;)V" />
-		<method name="releaseIconForPageUrl(Ljava/lang/String;)V" />
-		<method name="removeAllIcons()V" />
-		<method name="requestIconForPageUrl(Ljava/lang/String;Landroid/webkit/WebIconDatabase$IconListener;)V" />
-		<method name="retainIconForPageUrl(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/webkit/WebIconDatabase$IconListener" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onReceivedIcon(Ljava/lang/String;Landroid/graphics/Bitmap;)V" />
-	</class>
-	<class name="android/webkit/WebResourceResponse" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/io/InputStream;)V" />
-		<method name="getData()Ljava/io/InputStream;" />
-		<method name="getEncoding()Ljava/lang/String;" />
-		<method name="getMimeType()Ljava/lang/String;" />
-		<method name="setData(Ljava/io/InputStream;)V" />
-		<method name="setEncoding(Ljava/lang/String;)V" />
-		<method name="setMimeType(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/webkit/WebSettings" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="enableSmoothTransition()Z" since="11" />
-		<method name="getAllowContentAccess()Z" since="11" />
-		<method name="getAllowFileAccess()Z" since="3" />
-		<method name="getAllowFileAccessFromFileURLs()Z" since="16" />
-		<method name="getAllowUniversalAccessFromFileURLs()Z" since="16" />
-		<method name="getBlockNetworkImage()Z" />
-		<method name="getBlockNetworkLoads()Z" since="8" />
-		<method name="getBuiltInZoomControls()Z" since="3" />
-		<method name="getCacheMode()I" />
-		<method name="getCursiveFontFamily()Ljava/lang/String;" />
-		<method name="getDatabaseEnabled()Z" since="5" />
-		<method name="getDatabasePath()Ljava/lang/String;" since="5" />
-		<method name="getDefaultFixedFontSize()I" />
-		<method name="getDefaultFontSize()I" />
-		<method name="getDefaultTextEncodingName()Ljava/lang/String;" />
-		<method name="getDefaultUserAgent(Landroid/content/Context;)Ljava/lang/String;" since="17" />
-		<method name="getDefaultZoom()Landroid/webkit/WebSettings$ZoomDensity;" since="7" />
-		<method name="getDisplayZoomControls()Z" since="11" />
-		<method name="getDomStorageEnabled()Z" since="7" />
-		<method name="getFantasyFontFamily()Ljava/lang/String;" />
-		<method name="getFixedFontFamily()Ljava/lang/String;" />
-		<method name="getJavaScriptCanOpenWindowsAutomatically()Z" />
-		<method name="getJavaScriptEnabled()Z" />
-		<method name="getLayoutAlgorithm()Landroid/webkit/WebSettings$LayoutAlgorithm;" />
-		<method name="getLightTouchEnabled()Z" />
-		<method name="getLoadWithOverviewMode()Z" since="7" />
-		<method name="getLoadsImagesAutomatically()Z" />
-		<method name="getMediaPlaybackRequiresUserGesture()Z" since="17" />
-		<method name="getMinimumFontSize()I" />
-		<method name="getMinimumLogicalFontSize()I" />
-		<method name="getMixedContentMode()I" since="21" />
-		<method name="getNavDump()Z" />
-		<method name="getPluginState()Landroid/webkit/WebSettings$PluginState;" since="8" />
-		<method name="getPluginsEnabled()Z" />
-		<method name="getPluginsPath()Ljava/lang/String;" />
-		<method name="getSansSerifFontFamily()Ljava/lang/String;" />
-		<method name="getSaveFormData()Z" />
-		<method name="getSavePassword()Z" />
-		<method name="getSerifFontFamily()Ljava/lang/String;" />
-		<method name="getStandardFontFamily()Ljava/lang/String;" />
-		<method name="getTextSize()Landroid/webkit/WebSettings$TextSize;" />
-		<method name="getTextZoom()I" since="14" />
-		<method name="getUseDoubleTree()Z" />
-		<method name="getUseWebViewBackgroundForOverscrollBackground()Z" since="9" />
-		<method name="getUseWideViewPort()Z" />
-		<method name="getUserAgent()I" />
-		<method name="getUserAgentString()Ljava/lang/String;" since="3" />
-		<method name="setAllowContentAccess(Z)V" since="11" />
-		<method name="setAllowFileAccess(Z)V" since="3" />
-		<method name="setAllowFileAccessFromFileURLs(Z)V" since="16" />
-		<method name="setAllowUniversalAccessFromFileURLs(Z)V" since="16" />
-		<method name="setAppCacheEnabled(Z)V" since="7" />
-		<method name="setAppCacheMaxSize(J)V" since="7" />
-		<method name="setAppCachePath(Ljava/lang/String;)V" since="7" />
-		<method name="setBlockNetworkImage(Z)V" />
-		<method name="setBlockNetworkLoads(Z)V" since="8" />
-		<method name="setBuiltInZoomControls(Z)V" since="3" />
-		<method name="setCacheMode(I)V" />
-		<method name="setCursiveFontFamily(Ljava/lang/String;)V" />
-		<method name="setDatabaseEnabled(Z)V" since="5" />
-		<method name="setDatabasePath(Ljava/lang/String;)V" since="5" />
-		<method name="setDefaultFixedFontSize(I)V" />
-		<method name="setDefaultFontSize(I)V" />
-		<method name="setDefaultTextEncodingName(Ljava/lang/String;)V" />
-		<method name="setDefaultZoom(Landroid/webkit/WebSettings$ZoomDensity;)V" since="7" />
-		<method name="setDisplayZoomControls(Z)V" since="11" />
-		<method name="setDomStorageEnabled(Z)V" since="7" />
-		<method name="setEnableSmoothTransition(Z)V" since="11" />
-		<method name="setFantasyFontFamily(Ljava/lang/String;)V" />
-		<method name="setFixedFontFamily(Ljava/lang/String;)V" />
-		<method name="setGeolocationDatabasePath(Ljava/lang/String;)V" since="5" />
-		<method name="setGeolocationEnabled(Z)V" since="5" />
-		<method name="setJavaScriptCanOpenWindowsAutomatically(Z)V" />
-		<method name="setJavaScriptEnabled(Z)V" />
-		<method name="setLayoutAlgorithm(Landroid/webkit/WebSettings$LayoutAlgorithm;)V" />
-		<method name="setLightTouchEnabled(Z)V" />
-		<method name="setLoadWithOverviewMode(Z)V" since="7" />
-		<method name="setLoadsImagesAutomatically(Z)V" />
-		<method name="setMediaPlaybackRequiresUserGesture(Z)V" since="17" />
-		<method name="setMinimumFontSize(I)V" />
-		<method name="setMinimumLogicalFontSize(I)V" />
-		<method name="setMixedContentMode(I)V" since="21" />
-		<method name="setNavDump(Z)V" />
-		<method name="setNeedInitialFocus(Z)V" />
-		<method name="setPluginState(Landroid/webkit/WebSettings$PluginState;)V" since="8" />
-		<method name="setPluginsEnabled(Z)V" />
-		<method name="setPluginsPath(Ljava/lang/String;)V" />
-		<method name="setRenderPriority(Landroid/webkit/WebSettings$RenderPriority;)V" />
-		<method name="setSansSerifFontFamily(Ljava/lang/String;)V" />
-		<method name="setSaveFormData(Z)V" />
-		<method name="setSavePassword(Z)V" />
-		<method name="setSerifFontFamily(Ljava/lang/String;)V" />
-		<method name="setStandardFontFamily(Ljava/lang/String;)V" />
-		<method name="setSupportMultipleWindows(Z)V" />
-		<method name="setSupportZoom(Z)V" />
-		<method name="setTextSize(Landroid/webkit/WebSettings$TextSize;)V" />
-		<method name="setTextZoom(I)V" since="14" />
-		<method name="setUseDoubleTree(Z)V" />
-		<method name="setUseWebViewBackgroundForOverscrollBackground(Z)V" since="9" />
-		<method name="setUseWideViewPort(Z)V" />
-		<method name="setUserAgent(I)V" />
-		<method name="setUserAgentString(Ljava/lang/String;)V" since="3" />
-		<method name="supportMultipleWindows()Z" />
-		<method name="supportZoom()Z" />
-		<field name="LOAD_CACHE_ELSE_NETWORK" />
-		<field name="LOAD_CACHE_ONLY" />
-		<field name="LOAD_DEFAULT" />
-		<field name="LOAD_NORMAL" />
-		<field name="LOAD_NO_CACHE" />
-		<field name="MIXED_CONTENT_ALWAYS_ALLOW" since="21" />
-		<field name="MIXED_CONTENT_COMPATIBILITY_MODE" since="21" />
-		<field name="MIXED_CONTENT_NEVER_ALLOW" since="21" />
-	</class>
-	<class name="android/webkit/WebSettings$LayoutAlgorithm" since="1">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Landroid/webkit/WebSettings$LayoutAlgorithm;" />
-		<method name="values()[Landroid/webkit/WebSettings$LayoutAlgorithm;" />
-		<field name="NARROW_COLUMNS" />
-		<field name="NORMAL" />
-		<field name="SINGLE_COLUMN" />
-		<field name="TEXT_AUTOSIZING" since="19" />
-	</class>
-	<class name="android/webkit/WebSettings$PluginState" since="8">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Landroid/webkit/WebSettings$PluginState;" />
-		<method name="values()[Landroid/webkit/WebSettings$PluginState;" />
-		<field name="OFF" />
-		<field name="ON" />
-		<field name="ON_DEMAND" />
-	</class>
-	<class name="android/webkit/WebSettings$RenderPriority" since="1">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Landroid/webkit/WebSettings$RenderPriority;" />
-		<method name="values()[Landroid/webkit/WebSettings$RenderPriority;" />
-		<field name="HIGH" />
-		<field name="LOW" />
-		<field name="NORMAL" />
-	</class>
-	<class name="android/webkit/WebSettings$TextSize" since="1">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Landroid/webkit/WebSettings$TextSize;" />
-		<method name="values()[Landroid/webkit/WebSettings$TextSize;" />
-		<field name="LARGER" />
-		<field name="LARGEST" />
-		<field name="NORMAL" />
-		<field name="SMALLER" />
-		<field name="SMALLEST" />
-	</class>
-	<class name="android/webkit/WebSettings$ZoomDensity" since="7">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Landroid/webkit/WebSettings$ZoomDensity;" />
-		<method name="values()[Landroid/webkit/WebSettings$ZoomDensity;" />
-		<field name="CLOSE" />
-		<field name="FAR" />
-		<field name="MEDIUM" />
-	</class>
-	<class name="android/webkit/WebStorage" since="5">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="deleteAllData()V" since="7" />
-		<method name="deleteOrigin(Ljava/lang/String;)V" since="7" />
-		<method name="getInstance()Landroid/webkit/WebStorage;" since="7" />
-		<method name="getOrigins(Landroid/webkit/ValueCallback;)V" since="7" />
-		<method name="getQuotaForOrigin(Ljava/lang/String;Landroid/webkit/ValueCallback;)V" since="7" />
-		<method name="getUsageForOrigin(Ljava/lang/String;Landroid/webkit/ValueCallback;)V" since="7" />
-		<method name="setQuotaForOrigin(Ljava/lang/String;J)V" since="7" />
-	</class>
-	<class name="android/webkit/WebStorage$Origin" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getOrigin()Ljava/lang/String;" />
-		<method name="getQuota()J" />
-		<method name="getUsage()J" />
-	</class>
-	<class name="android/webkit/WebStorage$QuotaUpdater" since="5">
-		<extends name="java/lang/Object" />
-		<method name="updateQuota(J)V" />
-	</class>
-	<class name="android/webkit/WebSyncManager" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/Runnable" />
-		<method name="&lt;init>(Landroid/content/Context;Ljava/lang/String;)V" />
-		<method name="onSyncInit()V" />
-		<method name="resetSync()V" />
-		<method name="startSync()V" />
-		<method name="stopSync()V" />
-		<method name="sync()V" />
-		<field name="LOGTAG" />
-		<field name="mDataBase" />
-		<field name="mHandler" />
-	</class>
-	<class name="android/webkit/WebView" since="1">
-		<extends name="android/widget/AbsoluteLayout" />
-		<implements name="android/view/ViewGroup$OnHierarchyChangeListener" />
-		<implements name="android/view/ViewTreeObserver$OnGlobalFocusChangeListener" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;IZ)V" since="11" />
-		<method name="addJavascriptInterface(Ljava/lang/Object;Ljava/lang/String;)V" />
-		<method name="canGoBack()Z" />
-		<method name="canGoBackOrForward(I)Z" />
-		<method name="canGoForward()Z" />
-		<method name="canZoomIn()Z" since="11" />
-		<method name="canZoomOut()Z" since="11" />
-		<method name="capturePicture()Landroid/graphics/Picture;" />
-		<method name="clearCache(Z)V" />
-		<method name="clearClientCertPreferences(Ljava/lang/Runnable;)V" since="21" />
-		<method name="clearFormData()V" />
-		<method name="clearHistory()V" />
-		<method name="clearMatches()V" since="3" />
-		<method name="clearSslPreferences()V" />
-		<method name="clearView()V" />
-		<method name="copyBackForwardList()Landroid/webkit/WebBackForwardList;" />
-		<method name="createPrintDocumentAdapter()Landroid/print/PrintDocumentAdapter;" since="19" />
-		<method name="createPrintDocumentAdapter(Ljava/lang/String;)Landroid/print/PrintDocumentAdapter;" since="21" />
-		<method name="debugDump()V" />
-		<method name="destroy()V" />
-		<method name="disablePlatformNotifications()V" />
-		<method name="documentHasImages(Landroid/os/Message;)V" />
-		<method name="emulateShiftHeld()V" since="8" />
-		<method name="enablePlatformNotifications()V" />
-		<method name="evaluateJavascript(Ljava/lang/String;Landroid/webkit/ValueCallback;)V" since="19" />
-		<method name="findAddress(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="findAll(Ljava/lang/String;)I" since="3" />
-		<method name="findAllAsync(Ljava/lang/String;)V" since="16" />
-		<method name="findNext(Z)V" since="3" />
-		<method name="flingScroll(II)V" />
-		<method name="freeMemory()V" since="7" />
-		<method name="getCertificate()Landroid/net/http/SslCertificate;" />
-		<method name="getContentHeight()I" />
-		<method name="getFavicon()Landroid/graphics/Bitmap;" />
-		<method name="getHitTestResult()Landroid/webkit/WebView$HitTestResult;" />
-		<method name="getHttpAuthUsernamePassword(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;" />
-		<method name="getOriginalUrl()Ljava/lang/String;" since="3" />
-		<method name="getPluginList()Landroid/webkit/PluginList;" />
-		<method name="getProgress()I" />
-		<method name="getScale()F" />
-		<method name="getSettings()Landroid/webkit/WebSettings;" />
-		<method name="getTitle()Ljava/lang/String;" />
-		<method name="getUrl()Ljava/lang/String;" />
-		<method name="getVisibleTitleHeight()I" since="11" />
-		<method name="getZoomControls()Landroid/view/View;" />
-		<method name="goBack()V" />
-		<method name="goBackOrForward(I)V" />
-		<method name="goForward()V" />
-		<method name="invokeZoomPicker()V" />
-		<method name="isPrivateBrowsingEnabled()Z" since="11" />
-		<method name="loadData(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="loadDataWithBaseURL(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="loadUrl(Ljava/lang/String;)V" />
-		<method name="loadUrl(Ljava/lang/String;Ljava/util/Map;)V" since="8" />
-		<method name="onPause()V" since="11" />
-		<method name="onResume()V" since="11" />
-		<method name="overlayHorizontalScrollbar()Z" />
-		<method name="overlayVerticalScrollbar()Z" />
-		<method name="pageDown(Z)Z" />
-		<method name="pageUp(Z)Z" />
-		<method name="pauseTimers()V" />
-		<method name="postUrl(Ljava/lang/String;[B)V" since="5" />
-		<method name="preauthorizePermission(Landroid/net/Uri;J)V" since="21" />
-		<method name="refreshPlugins(Z)V" />
-		<method name="reload()V" />
-		<method name="removeJavascriptInterface(Ljava/lang/String;)V" since="11" />
-		<method name="requestFocusNodeHref(Landroid/os/Message;)V" />
-		<method name="requestImageRef(Landroid/os/Message;)V" />
-		<method name="restorePicture(Landroid/os/Bundle;Ljava/io/File;)Z" since="3" />
-		<method name="restoreState(Landroid/os/Bundle;)Landroid/webkit/WebBackForwardList;" />
-		<method name="resumeTimers()V" />
-		<method name="savePassword(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="savePicture(Landroid/os/Bundle;Ljava/io/File;)Z" since="3" />
-		<method name="saveState(Landroid/os/Bundle;)Landroid/webkit/WebBackForwardList;" />
-		<method name="saveWebArchive(Ljava/lang/String;)V" since="11" />
-		<method name="saveWebArchive(Ljava/lang/String;ZLandroid/webkit/ValueCallback;)V" since="11" />
-		<method name="setCertificate(Landroid/net/http/SslCertificate;)V" />
-		<method name="setDownloadListener(Landroid/webkit/DownloadListener;)V" />
-		<method name="setFindListener(Landroid/webkit/WebView$FindListener;)V" since="16" />
-		<method name="setHorizontalScrollbarOverlay(Z)V" />
-		<method name="setHttpAuthUsernamePassword(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="setInitialScale(I)V" />
-		<method name="setMapTrackballToArrowKeys(Z)V" />
-		<method name="setNetworkAvailable(Z)V" since="3" />
-		<method name="setPictureListener(Landroid/webkit/WebView$PictureListener;)V" />
-		<method name="setVerticalScrollbarOverlay(Z)V" />
-		<method name="setWebChromeClient(Landroid/webkit/WebChromeClient;)V" />
-		<method name="setWebContentsDebuggingEnabled(Z)V" since="19" />
-		<method name="setWebViewClient(Landroid/webkit/WebViewClient;)V" />
-		<method name="showFindDialog(Ljava/lang/String;Z)Z" since="11" />
-		<method name="stopLoading()V" />
-		<method name="zoomIn()Z" />
-		<method name="zoomOut()Z" />
-		<field name="SCHEME_GEO" />
-		<field name="SCHEME_MAILTO" />
-		<field name="SCHEME_TEL" />
-	</class>
-	<class name="android/webkit/WebView$FindListener" since="16">
-		<extends name="java/lang/Object" />
-		<method name="onFindResultReceived(IIZ)V" />
-	</class>
-	<class name="android/webkit/WebView$HitTestResult" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" since="16" />
-		<method name="&lt;init>(Landroid/webkit/WebView;)V" />
-		<method name="getExtra()Ljava/lang/String;" />
-		<method name="getType()I" />
-		<field name="ANCHOR_TYPE" />
-		<field name="EDIT_TEXT_TYPE" />
-		<field name="EMAIL_TYPE" />
-		<field name="GEO_TYPE" />
-		<field name="IMAGE_ANCHOR_TYPE" />
-		<field name="IMAGE_TYPE" />
-		<field name="PHONE_TYPE" />
-		<field name="SRC_ANCHOR_TYPE" />
-		<field name="SRC_IMAGE_ANCHOR_TYPE" />
-		<field name="UNKNOWN_TYPE" />
-	</class>
-	<class name="android/webkit/WebView$PictureListener" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onNewPicture(Landroid/webkit/WebView;Landroid/graphics/Picture;)V" />
-	</class>
-	<class name="android/webkit/WebView$WebViewTransport" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/webkit/WebView;)V" />
-		<method name="getWebView()Landroid/webkit/WebView;" />
-		<method name="setWebView(Landroid/webkit/WebView;)V" />
-	</class>
-	<class name="android/webkit/WebViewClient" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="doUpdateVisitedHistory(Landroid/webkit/WebView;Ljava/lang/String;Z)V" />
-		<method name="onFormResubmission(Landroid/webkit/WebView;Landroid/os/Message;Landroid/os/Message;)V" />
-		<method name="onLoadResource(Landroid/webkit/WebView;Ljava/lang/String;)V" />
-		<method name="onPageFinished(Landroid/webkit/WebView;Ljava/lang/String;)V" />
-		<method name="onPageStarted(Landroid/webkit/WebView;Ljava/lang/String;Landroid/graphics/Bitmap;)V" />
-		<method name="onReceivedClientCertRequest(Landroid/webkit/WebView;Landroid/webkit/ClientCertRequest;)V" since="21" />
-		<method name="onReceivedError(Landroid/webkit/WebView;ILjava/lang/String;Ljava/lang/String;)V" />
-		<method name="onReceivedHttpAuthRequest(Landroid/webkit/WebView;Landroid/webkit/HttpAuthHandler;Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="onReceivedLoginRequest(Landroid/webkit/WebView;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" since="12" />
-		<method name="onReceivedSslError(Landroid/webkit/WebView;Landroid/webkit/SslErrorHandler;Landroid/net/http/SslError;)V" since="8" />
-		<method name="onScaleChanged(Landroid/webkit/WebView;FF)V" />
-		<method name="onTooManyRedirects(Landroid/webkit/WebView;Landroid/os/Message;Landroid/os/Message;)V" />
-		<method name="onUnhandledInputEvent(Landroid/webkit/WebView;Landroid/view/InputEvent;)V" since="21" />
-		<method name="onUnhandledKeyEvent(Landroid/webkit/WebView;Landroid/view/KeyEvent;)V" />
-		<method name="shouldInterceptRequest(Landroid/webkit/WebView;Ljava/lang/String;)Landroid/webkit/WebResourceResponse;" since="11" />
-		<method name="shouldOverrideKeyEvent(Landroid/webkit/WebView;Landroid/view/KeyEvent;)Z" />
-		<method name="shouldOverrideUrlLoading(Landroid/webkit/WebView;Ljava/lang/String;)Z" />
-		<field name="ERROR_AUTHENTICATION" since="5" />
-		<field name="ERROR_BAD_URL" since="5" />
-		<field name="ERROR_CONNECT" since="5" />
-		<field name="ERROR_FAILED_SSL_HANDSHAKE" since="5" />
-		<field name="ERROR_FILE" since="5" />
-		<field name="ERROR_FILE_NOT_FOUND" since="5" />
-		<field name="ERROR_HOST_LOOKUP" since="5" />
-		<field name="ERROR_IO" since="5" />
-		<field name="ERROR_PROXY_AUTHENTICATION" since="5" />
-		<field name="ERROR_REDIRECT_LOOP" since="5" />
-		<field name="ERROR_TIMEOUT" since="5" />
-		<field name="ERROR_TOO_MANY_REQUESTS" since="5" />
-		<field name="ERROR_UNKNOWN" since="5" />
-		<field name="ERROR_UNSUPPORTED_AUTH_SCHEME" since="5" />
-		<field name="ERROR_UNSUPPORTED_SCHEME" since="5" />
-	</class>
-	<class name="android/webkit/WebViewDatabase" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="clearFormData()V" />
-		<method name="clearHttpAuthUsernamePassword()V" />
-		<method name="clearUsernamePassword()V" />
-		<method name="getInstance(Landroid/content/Context;)Landroid/webkit/WebViewDatabase;" />
-		<method name="hasFormData()Z" />
-		<method name="hasHttpAuthUsernamePassword()Z" />
-		<method name="hasUsernamePassword()Z" />
-		<field name="LOGTAG" />
-	</class>
-	<class name="android/webkit/WebViewFragment" since="11">
-		<extends name="android/app/Fragment" />
-		<method name="&lt;init>()V" />
-		<method name="getWebView()Landroid/webkit/WebView;" />
-	</class>
-	<class name="android/widget/AbsListView" since="1">
-		<extends name="android/widget/AdapterView" />
-		<implements name="android/text/TextWatcher" />
-		<implements name="android/view/ViewTreeObserver$OnGlobalLayoutListener" />
-		<implements name="android/view/ViewTreeObserver$OnTouchModeChangeListener" />
-		<implements name="android/widget/Filter$FilterListener" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-		<method name="canScrollList(I)Z" since="19" />
-		<method name="clearChoices()V" since="11" />
-		<method name="clearTextFilter()V" />
-		<method name="deferNotifyDataSetChanged()V" since="14" />
-		<method name="generateLayoutParams(Landroid/util/AttributeSet;)Landroid/widget/AbsListView$LayoutParams;" />
-		<method name="getCacheColorHint()I" />
-		<method name="getCheckedItemCount()I" since="11" />
-		<method name="getCheckedItemIds()[J" since="11" />
-		<method name="getCheckedItemPosition()I" since="11" />
-		<method name="getCheckedItemPositions()Landroid/util/SparseBooleanArray;" since="11" />
-		<method name="getChoiceMode()I" since="11" />
-		<method name="getListPaddingBottom()I" />
-		<method name="getListPaddingLeft()I" />
-		<method name="getListPaddingRight()I" />
-		<method name="getListPaddingTop()I" />
-		<method name="getSelector()Landroid/graphics/drawable/Drawable;" />
-		<method name="getTextFilter()Ljava/lang/CharSequence;" since="3" />
-		<method name="getTranscriptMode()I" />
-		<method name="handleDataChanged()V" />
-		<method name="hasTextFilter()Z" />
-		<method name="invalidateViews()V" />
-		<method name="isFastScrollAlwaysVisible()Z" since="11" />
-		<method name="isFastScrollEnabled()Z" since="3" />
-		<method name="isInFilterMode()Z" />
-		<method name="isItemChecked(I)Z" since="11" />
-		<method name="isScrollingCacheEnabled()Z" />
-		<method name="isSmoothScrollbarEnabled()Z" since="3" />
-		<method name="isStackFromBottom()Z" />
-		<method name="isTextFilterEnabled()Z" />
-		<method name="layoutChildren()V" />
-		<method name="onInitializeAccessibilityNodeInfoForItem(Landroid/view/View;ILandroid/view/accessibility/AccessibilityNodeInfo;)V" since="19" />
-		<method name="onRemoteAdapterConnected()Z" since="11" />
-		<method name="onRemoteAdapterDisconnected()V" since="11" />
-		<method name="pointToPosition(II)I" />
-		<method name="pointToRowId(II)J" />
-		<method name="reclaimViews(Ljava/util/List;)V" />
-		<method name="scrollListBy(I)V" since="19" />
-		<method name="setAdapter(Landroid/widget/ListAdapter;)V" since="11" />
-		<method name="setCacheColorHint(I)V" />
-		<method name="setChoiceMode(I)V" since="11" />
-		<method name="setDrawSelectorOnTop(Z)V" />
-		<method name="setFastScrollAlwaysVisible(Z)V" since="11" />
-		<method name="setFastScrollEnabled(Z)V" since="3" />
-		<method name="setFastScrollStyle(I)V" since="21" />
-		<method name="setFilterText(Ljava/lang/String;)V" />
-		<method name="setFriction(F)V" since="11" />
-		<method name="setItemChecked(IZ)V" since="11" />
-		<method name="setMultiChoiceModeListener(Landroid/widget/AbsListView$MultiChoiceModeListener;)V" since="11" />
-		<method name="setOnScrollListener(Landroid/widget/AbsListView$OnScrollListener;)V" />
-		<method name="setRecyclerListener(Landroid/widget/AbsListView$RecyclerListener;)V" />
-		<method name="setRemoteViewsAdapter(Landroid/content/Intent;)V" since="11" />
-		<method name="setScrollIndicators(Landroid/view/View;Landroid/view/View;)V" />
-		<method name="setScrollingCacheEnabled(Z)V" />
-		<method name="setSelectionFromTop(II)V" since="21" />
-		<method name="setSelector(I)V" />
-		<method name="setSelector(Landroid/graphics/drawable/Drawable;)V" />
-		<method name="setSmoothScrollbarEnabled(Z)V" since="3" />
-		<method name="setStackFromBottom(Z)V" />
-		<method name="setTextFilterEnabled(Z)V" />
-		<method name="setTranscriptMode(I)V" />
-		<method name="setVelocityScale(F)V" since="11" />
-		<method name="smoothScrollBy(II)V" since="8" />
-		<method name="smoothScrollToPosition(I)V" since="8" />
-		<method name="smoothScrollToPosition(II)V" since="8" />
-		<method name="smoothScrollToPositionFromTop(II)V" since="11" />
-		<method name="smoothScrollToPositionFromTop(III)V" since="11" />
-		<field name="CHOICE_MODE_MULTIPLE" since="11" />
-		<field name="CHOICE_MODE_MULTIPLE_MODAL" since="11" />
-		<field name="CHOICE_MODE_NONE" since="11" />
-		<field name="CHOICE_MODE_SINGLE" since="11" />
-		<field name="TRANSCRIPT_MODE_ALWAYS_SCROLL" />
-		<field name="TRANSCRIPT_MODE_DISABLED" />
-		<field name="TRANSCRIPT_MODE_NORMAL" />
-	</class>
-	<class name="android/widget/AbsListView$LayoutParams" since="1">
-		<extends name="android/view/ViewGroup$LayoutParams" />
-		<method name="&lt;init>(II)V" />
-		<method name="&lt;init>(III)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/view/ViewGroup$LayoutParams;)V" />
-	</class>
-	<class name="android/widget/AbsListView$MultiChoiceModeListener" since="11">
-		<extends name="java/lang/Object" />
-		<implements name="android/view/ActionMode$Callback" />
-		<method name="onItemCheckedStateChanged(Landroid/view/ActionMode;IJZ)V" />
-	</class>
-	<class name="android/widget/AbsListView$OnScrollListener" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onScroll(Landroid/widget/AbsListView;III)V" />
-		<method name="onScrollStateChanged(Landroid/widget/AbsListView;I)V" />
-		<field name="SCROLL_STATE_FLING" />
-		<field name="SCROLL_STATE_IDLE" />
-		<field name="SCROLL_STATE_TOUCH_SCROLL" />
-	</class>
-	<class name="android/widget/AbsListView$RecyclerListener" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onMovedToScrapHeap(Landroid/view/View;)V" />
-	</class>
-	<class name="android/widget/AbsListView$SelectionBoundsAdjuster" since="11">
-		<extends name="java/lang/Object" />
-		<method name="adjustListItemSelectionBounds(Landroid/graphics/Rect;)V" />
-	</class>
-	<class name="android/widget/AbsSeekBar" since="1">
-		<extends name="android/widget/ProgressBar" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-		<method name="getKeyProgressIncrement()I" since="3" />
-		<method name="getSplitTrack()Z" since="21" />
-		<method name="getThumb()Landroid/graphics/drawable/Drawable;" since="16" />
-		<method name="getThumbOffset()I" />
-		<method name="setKeyProgressIncrement(I)V" since="3" />
-		<method name="setSplitTrack(Z)V" since="21" />
-		<method name="setThumb(Landroid/graphics/drawable/Drawable;)V" />
-		<method name="setThumbOffset(I)V" />
-	</class>
-	<class name="android/widget/AbsSpinner" since="1">
-		<extends name="android/widget/AdapterView" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-		<method name="getAdapter()Landroid/widget/SpinnerAdapter;" />
-		<method name="pointToPosition(II)I" />
-		<method name="setAdapter(Landroid/widget/SpinnerAdapter;)V" />
-		<method name="setSelection(IZ)V" />
-	</class>
-	<class name="android/widget/AbsoluteLayout" since="1">
-		<extends name="android/view/ViewGroup" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-	</class>
-	<class name="android/widget/AbsoluteLayout$LayoutParams" since="1">
-		<extends name="android/view/ViewGroup$LayoutParams" />
-		<method name="&lt;init>(IIII)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/view/ViewGroup$LayoutParams;)V" />
-		<method name="debug(Ljava/lang/String;)Ljava/lang/String;" />
-		<field name="x" />
-		<field name="y" />
-	</class>
-	<class name="android/widget/ActionMenuView" since="21">
-		<extends name="android/widget/LinearLayout" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="dismissPopupMenus()V" />
-		<method name="generateDefaultLayoutParams()Landroid/widget/ActionMenuView$LayoutParams;" />
-		<method name="generateLayoutParams(Landroid/util/AttributeSet;)Landroid/widget/ActionMenuView$LayoutParams;" />
-		<method name="generateLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Landroid/widget/ActionMenuView$LayoutParams;" />
-		<method name="getMenu()Landroid/view/Menu;" />
-		<method name="hideOverflowMenu()Z" />
-		<method name="isOverflowMenuShowing()Z" />
-		<method name="setOnMenuItemClickListener(Landroid/widget/ActionMenuView$OnMenuItemClickListener;)V" />
-		<method name="showOverflowMenu()Z" />
-	</class>
-	<class name="android/widget/ActionMenuView$LayoutParams" since="21">
-		<extends name="android/widget/LinearLayout$LayoutParams" />
-		<method name="&lt;init>(II)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/view/ViewGroup$LayoutParams;)V" />
-		<method name="&lt;init>(Landroid/widget/ActionMenuView$LayoutParams;)V" />
-	</class>
-	<class name="android/widget/ActionMenuView$OnMenuItemClickListener" since="21">
-		<extends name="java/lang/Object" />
-		<method name="onMenuItemClick(Landroid/view/MenuItem;)Z" />
-	</class>
-	<class name="android/widget/Adapter" since="1">
-		<extends name="java/lang/Object" />
-		<method name="getCount()I" />
-		<method name="getItem(I)Ljava/lang/Object;" />
-		<method name="getItemId(I)J" />
-		<method name="getItemViewType(I)I" />
-		<method name="getView(ILandroid/view/View;Landroid/view/ViewGroup;)Landroid/view/View;" />
-		<method name="getViewTypeCount()I" />
-		<method name="hasStableIds()Z" />
-		<method name="isEmpty()Z" />
-		<method name="registerDataSetObserver(Landroid/database/DataSetObserver;)V" />
-		<method name="unregisterDataSetObserver(Landroid/database/DataSetObserver;)V" />
-		<field name="IGNORE_ITEM_VIEW_TYPE" />
-		<field name="NO_SELECTION" />
-	</class>
-	<class name="android/widget/AdapterView" since="1">
-		<extends name="android/view/ViewGroup" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-		<method name="getAdapter()Landroid/widget/Adapter;" />
-		<method name="getCount()I" />
-		<method name="getEmptyView()Landroid/view/View;" />
-		<method name="getFirstVisiblePosition()I" />
-		<method name="getItemAtPosition(I)Ljava/lang/Object;" />
-		<method name="getItemIdAtPosition(I)J" />
-		<method name="getLastVisiblePosition()I" />
-		<method name="getOnItemClickListener()Landroid/widget/AdapterView$OnItemClickListener;" />
-		<method name="getOnItemLongClickListener()Landroid/widget/AdapterView$OnItemLongClickListener;" />
-		<method name="getOnItemSelectedListener()Landroid/widget/AdapterView$OnItemSelectedListener;" />
-		<method name="getPositionForView(Landroid/view/View;)I" />
-		<method name="getSelectedItem()Ljava/lang/Object;" />
-		<method name="getSelectedItemId()J" />
-		<method name="getSelectedItemPosition()I" />
-		<method name="getSelectedView()Landroid/view/View;" />
-		<method name="performItemClick(Landroid/view/View;IJ)Z" />
-		<method name="setAdapter(Landroid/widget/Adapter;)V" />
-		<method name="setEmptyView(Landroid/view/View;)V" />
-		<method name="setOnItemClickListener(Landroid/widget/AdapterView$OnItemClickListener;)V" />
-		<method name="setOnItemLongClickListener(Landroid/widget/AdapterView$OnItemLongClickListener;)V" />
-		<method name="setOnItemSelectedListener(Landroid/widget/AdapterView$OnItemSelectedListener;)V" />
-		<method name="setSelection(I)V" />
-		<field name="INVALID_POSITION" />
-		<field name="INVALID_ROW_ID" />
-		<field name="ITEM_VIEW_TYPE_HEADER_OR_FOOTER" />
-		<field name="ITEM_VIEW_TYPE_IGNORE" />
-	</class>
-	<class name="android/widget/AdapterView$AdapterContextMenuInfo" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/view/ContextMenu$ContextMenuInfo" />
-		<method name="&lt;init>(Landroid/view/View;IJ)V" />
-		<field name="id" />
-		<field name="position" />
-		<field name="targetView" />
-	</class>
-	<class name="android/widget/AdapterView$OnItemClickListener" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onItemClick(Landroid/widget/AdapterView;Landroid/view/View;IJ)V" />
-	</class>
-	<class name="android/widget/AdapterView$OnItemLongClickListener" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onItemLongClick(Landroid/widget/AdapterView;Landroid/view/View;IJ)Z" />
-	</class>
-	<class name="android/widget/AdapterView$OnItemSelectedListener" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onItemSelected(Landroid/widget/AdapterView;Landroid/view/View;IJ)V" />
-		<method name="onNothingSelected(Landroid/widget/AdapterView;)V" />
-	</class>
-	<class name="android/widget/AdapterViewAnimator" since="11">
-		<extends name="android/widget/AdapterView" />
-		<implements name="android/widget/Advanceable" since="16" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" since="14" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-		<method name="advance()V" />
-		<method name="deferNotifyDataSetChanged()V" since="14" />
-		<method name="fyiWillBeAdvancedByHostKThx()V" />
-		<method name="getCurrentView()Landroid/view/View;" />
-		<method name="getDisplayedChild()I" />
-		<method name="getInAnimation()Landroid/animation/ObjectAnimator;" />
-		<method name="getOutAnimation()Landroid/animation/ObjectAnimator;" />
-		<method name="onRemoteAdapterConnected()Z" />
-		<method name="onRemoteAdapterDisconnected()V" />
-		<method name="setAnimateFirstView(Z)V" />
-		<method name="setDisplayedChild(I)V" />
-		<method name="setInAnimation(Landroid/animation/ObjectAnimator;)V" />
-		<method name="setInAnimation(Landroid/content/Context;I)V" />
-		<method name="setOutAnimation(Landroid/animation/ObjectAnimator;)V" />
-		<method name="setOutAnimation(Landroid/content/Context;I)V" />
-		<method name="setRemoteViewsAdapter(Landroid/content/Intent;)V" />
-		<method name="showNext()V" />
-		<method name="showPrevious()V" />
-	</class>
-	<class name="android/widget/AdapterViewFlipper" since="11">
-		<extends name="android/widget/AdapterViewAnimator" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" since="21" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-		<method name="getFlipInterval()I" since="16" />
-		<method name="isAutoStart()Z" />
-		<method name="isFlipping()Z" />
-		<method name="setAutoStart(Z)V" />
-		<method name="setFlipInterval(I)V" />
-		<method name="startFlipping()V" />
-		<method name="stopFlipping()V" />
-	</class>
-	<class name="android/widget/Advanceable" since="16">
-		<extends name="java/lang/Object" />
-		<method name="advance()V" />
-		<method name="fyiWillBeAdvancedByHostKThx()V" />
-	</class>
-	<class name="android/widget/AlphabetIndexer" since="3">
-		<extends name="android/database/DataSetObserver" />
-		<implements name="android/widget/SectionIndexer" />
-		<method name="&lt;init>(Landroid/database/Cursor;ILjava/lang/CharSequence;)V" />
-		<method name="compare(Ljava/lang/String;Ljava/lang/String;)I" />
-		<method name="setCursor(Landroid/database/Cursor;)V" />
-		<field name="mAlphabet" />
-		<field name="mColumnIndex" />
-		<field name="mDataCursor" />
-	</class>
-	<class name="android/widget/AnalogClock" since="1">
-		<extends name="android/view/View" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-	</class>
-	<class name="android/widget/ArrayAdapter" since="1">
-		<extends name="android/widget/BaseAdapter" />
-		<implements name="android/widget/Filterable" />
-		<method name="&lt;init>(Landroid/content/Context;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;II)V" />
-		<method name="&lt;init>(Landroid/content/Context;IILjava/util/List;)V" />
-		<method name="&lt;init>(Landroid/content/Context;II[Ljava/lang/Object;)V" />
-		<method name="&lt;init>(Landroid/content/Context;ILjava/util/List;)V" />
-		<method name="&lt;init>(Landroid/content/Context;I[Ljava/lang/Object;)V" />
-		<method name="add(Ljava/lang/Object;)V" />
-		<method name="addAll(Ljava/util/Collection;)V" since="11" />
-		<method name="addAll([Ljava/lang/Object;)V" since="11" />
-		<method name="clear()V" />
-		<method name="createFromResource(Landroid/content/Context;II)Landroid/widget/ArrayAdapter;" />
-		<method name="getContext()Landroid/content/Context;" />
-		<method name="getPosition(Ljava/lang/Object;)I" />
-		<method name="insert(Ljava/lang/Object;I)V" />
-		<method name="remove(Ljava/lang/Object;)V" />
-		<method name="setDropDownViewResource(I)V" />
-		<method name="setNotifyOnChange(Z)V" />
-		<method name="sort(Ljava/util/Comparator;)V" since="3" />
-	</class>
-	<class name="android/widget/AutoCompleteTextView" since="1">
-		<extends name="android/widget/EditText" />
-		<implements name="android/widget/Filter$FilterListener" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-		<method name="clearListSelection()V" since="3" />
-		<method name="convertSelectionToString(Ljava/lang/Object;)Ljava/lang/CharSequence;" />
-		<method name="dismissDropDown()V" />
-		<method name="enoughToFilter()Z" />
-		<method name="getAdapter()Landroid/widget/ListAdapter;" />
-		<method name="getCompletionHint()Ljava/lang/CharSequence;" since="16" />
-		<method name="getDropDownAnchor()I" since="3" />
-		<method name="getDropDownBackground()Landroid/graphics/drawable/Drawable;" since="5" />
-		<method name="getDropDownHeight()I" since="4" />
-		<method name="getDropDownHorizontalOffset()I" since="5" />
-		<method name="getDropDownVerticalOffset()I" since="5" />
-		<method name="getDropDownWidth()I" since="3" />
-		<method name="getFilter()Landroid/widget/Filter;" />
-		<method name="getItemClickListener()Landroid/widget/AdapterView$OnItemClickListener;" />
-		<method name="getItemSelectedListener()Landroid/widget/AdapterView$OnItemSelectedListener;" />
-		<method name="getListSelection()I" since="3" />
-		<method name="getOnItemClickListener()Landroid/widget/AdapterView$OnItemClickListener;" since="3" />
-		<method name="getOnItemSelectedListener()Landroid/widget/AdapterView$OnItemSelectedListener;" since="3" />
-		<method name="getThreshold()I" />
-		<method name="getValidator()Landroid/widget/AutoCompleteTextView$Validator;" />
-		<method name="isPerformingCompletion()Z" since="3" />
-		<method name="isPopupShowing()Z" />
-		<method name="performCompletion()V" />
-		<method name="performFiltering(Ljava/lang/CharSequence;I)V" />
-		<method name="performValidation()V" />
-		<method name="replaceText(Ljava/lang/CharSequence;)V" />
-		<method name="setAdapter(Landroid/widget/ListAdapter;)V" />
-		<method name="setCompletionHint(Ljava/lang/CharSequence;)V" />
-		<method name="setDropDownAnchor(I)V" since="3" />
-		<method name="setDropDownBackgroundDrawable(Landroid/graphics/drawable/Drawable;)V" since="5" />
-		<method name="setDropDownBackgroundResource(I)V" since="5" />
-		<method name="setDropDownHeight(I)V" since="4" />
-		<method name="setDropDownHorizontalOffset(I)V" since="5" />
-		<method name="setDropDownVerticalOffset(I)V" since="5" />
-		<method name="setDropDownWidth(I)V" since="3" />
-		<method name="setListSelection(I)V" since="3" />
-		<method name="setOnDismissListener(Landroid/widget/AutoCompleteTextView$OnDismissListener;)V" since="17" />
-		<method name="setOnItemClickListener(Landroid/widget/AdapterView$OnItemClickListener;)V" />
-		<method name="setOnItemSelectedListener(Landroid/widget/AdapterView$OnItemSelectedListener;)V" />
-		<method name="setText(Ljava/lang/CharSequence;Z)V" since="17" />
-		<method name="setThreshold(I)V" />
-		<method name="setValidator(Landroid/widget/AutoCompleteTextView$Validator;)V" />
-		<method name="showDropDown()V" />
-	</class>
-	<class name="android/widget/AutoCompleteTextView$OnDismissListener" since="17">
-		<extends name="java/lang/Object" />
-		<method name="onDismiss()V" />
-	</class>
-	<class name="android/widget/AutoCompleteTextView$Validator" since="1">
-		<extends name="java/lang/Object" />
-		<method name="fixText(Ljava/lang/CharSequence;)Ljava/lang/CharSequence;" />
-		<method name="isValid(Ljava/lang/CharSequence;)Z" />
-	</class>
-	<class name="android/widget/BaseAdapter" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/widget/ListAdapter" />
-		<implements name="android/widget/SpinnerAdapter" />
-		<method name="&lt;init>()V" />
-		<method name="notifyDataSetChanged()V" />
-		<method name="notifyDataSetInvalidated()V" />
-	</class>
-	<class name="android/widget/BaseExpandableListAdapter" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/widget/ExpandableListAdapter" />
-		<implements name="android/widget/HeterogeneousExpandableList" since="8" />
-		<method name="&lt;init>()V" />
-		<method name="notifyDataSetChanged()V" />
-		<method name="notifyDataSetInvalidated()V" />
-	</class>
-	<class name="android/widget/Button" since="1">
-		<extends name="android/widget/TextView" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-	</class>
-	<class name="android/widget/CalendarView" since="11">
-		<extends name="android/widget/FrameLayout" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-		<method name="getDate()J" />
-		<method name="getDateTextAppearance()I" since="16" />
-		<method name="getFirstDayOfWeek()I" />
-		<method name="getFocusedMonthDateColor()I" since="16" />
-		<method name="getMaxDate()J" />
-		<method name="getMinDate()J" />
-		<method name="getSelectedDateVerticalBar()Landroid/graphics/drawable/Drawable;" since="16" />
-		<method name="getSelectedWeekBackgroundColor()I" since="16" />
-		<method name="getShowWeekNumber()Z" />
-		<method name="getShownWeekCount()I" since="16" />
-		<method name="getUnfocusedMonthDateColor()I" since="16" />
-		<method name="getWeekDayTextAppearance()I" since="16" />
-		<method name="getWeekNumberColor()I" since="16" />
-		<method name="getWeekSeparatorLineColor()I" since="16" />
-		<method name="setDate(J)V" />
-		<method name="setDate(JZZ)V" />
-		<method name="setDateTextAppearance(I)V" since="16" />
-		<method name="setFirstDayOfWeek(I)V" />
-		<method name="setFocusedMonthDateColor(I)V" since="16" />
-		<method name="setMaxDate(J)V" />
-		<method name="setMinDate(J)V" />
-		<method name="setOnDateChangeListener(Landroid/widget/CalendarView$OnDateChangeListener;)V" />
-		<method name="setSelectedDateVerticalBar(I)V" since="16" />
-		<method name="setSelectedDateVerticalBar(Landroid/graphics/drawable/Drawable;)V" since="16" />
-		<method name="setSelectedWeekBackgroundColor(I)V" since="16" />
-		<method name="setShowWeekNumber(Z)V" />
-		<method name="setShownWeekCount(I)V" since="16" />
-		<method name="setUnfocusedMonthDateColor(I)V" since="16" />
-		<method name="setWeekDayTextAppearance(I)V" since="16" />
-		<method name="setWeekNumberColor(I)V" since="16" />
-		<method name="setWeekSeparatorLineColor(I)V" since="16" />
-	</class>
-	<class name="android/widget/CalendarView$OnDateChangeListener" since="11">
-		<extends name="java/lang/Object" />
-		<method name="onSelectedDayChange(Landroid/widget/CalendarView;III)V" />
-	</class>
-	<class name="android/widget/CheckBox" since="1">
-		<extends name="android/widget/CompoundButton" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-	</class>
-	<class name="android/widget/Checkable" since="1">
-		<extends name="java/lang/Object" />
-		<method name="isChecked()Z" />
-		<method name="setChecked(Z)V" />
-		<method name="toggle()V" />
-	</class>
-	<class name="android/widget/CheckedTextView" since="1">
-		<extends name="android/widget/TextView" />
-		<implements name="android/widget/Checkable" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-		<method name="getCheckMarkDrawable()Landroid/graphics/drawable/Drawable;" since="16" />
-		<method name="onPaddingChanged(I)V" since="16" />
-		<method name="setCheckMarkDrawable(I)V" />
-		<method name="setCheckMarkDrawable(Landroid/graphics/drawable/Drawable;)V" />
-	</class>
-	<class name="android/widget/Chronometer" since="1">
-		<extends name="android/widget/TextView" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-		<method name="getBase()J" />
-		<method name="getFormat()Ljava/lang/String;" />
-		<method name="getOnChronometerTickListener()Landroid/widget/Chronometer$OnChronometerTickListener;" since="3" />
-		<method name="setBase(J)V" />
-		<method name="setFormat(Ljava/lang/String;)V" />
-		<method name="setOnChronometerTickListener(Landroid/widget/Chronometer$OnChronometerTickListener;)V" since="3" />
-		<method name="start()V" />
-		<method name="stop()V" />
-	</class>
-	<class name="android/widget/Chronometer$OnChronometerTickListener" since="3">
-		<extends name="java/lang/Object" />
-		<method name="onChronometerTick(Landroid/widget/Chronometer;)V" />
-	</class>
-	<class name="android/widget/CompoundButton" since="1">
-		<extends name="android/widget/Button" />
-		<implements name="android/widget/Checkable" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-		<method name="setButtonDrawable(I)V" />
-		<method name="setButtonDrawable(Landroid/graphics/drawable/Drawable;)V" />
-		<method name="setOnCheckedChangeListener(Landroid/widget/CompoundButton$OnCheckedChangeListener;)V" />
-	</class>
-	<class name="android/widget/CompoundButton$OnCheckedChangeListener" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onCheckedChanged(Landroid/widget/CompoundButton;Z)V" />
-	</class>
-	<class name="android/widget/CursorAdapter" since="1">
-		<extends name="android/widget/BaseAdapter" />
-		<implements name="android/widget/Filterable" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/database/Cursor;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/database/Cursor;I)V" since="11" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/database/Cursor;Z)V" />
-		<method name="bindView(Landroid/view/View;Landroid/content/Context;Landroid/database/Cursor;)V" />
-		<method name="changeCursor(Landroid/database/Cursor;)V" />
-		<method name="convertToString(Landroid/database/Cursor;)Ljava/lang/CharSequence;" />
-		<method name="getCursor()Landroid/database/Cursor;" />
-		<method name="getFilterQueryProvider()Landroid/widget/FilterQueryProvider;" />
-		<method name="init(Landroid/content/Context;Landroid/database/Cursor;Z)V" />
-		<method name="newDropDownView(Landroid/content/Context;Landroid/database/Cursor;Landroid/view/ViewGroup;)Landroid/view/View;" />
-		<method name="newView(Landroid/content/Context;Landroid/database/Cursor;Landroid/view/ViewGroup;)Landroid/view/View;" />
-		<method name="onContentChanged()V" since="3" />
-		<method name="runQueryOnBackgroundThread(Ljava/lang/CharSequence;)Landroid/database/Cursor;" />
-		<method name="setFilterQueryProvider(Landroid/widget/FilterQueryProvider;)V" />
-		<method name="swapCursor(Landroid/database/Cursor;)Landroid/database/Cursor;" since="11" />
-		<field name="FLAG_AUTO_REQUERY" since="11" />
-		<field name="FLAG_REGISTER_CONTENT_OBSERVER" since="11" />
-	</class>
-	<class name="android/widget/CursorTreeAdapter" since="1">
-		<extends name="android/widget/BaseExpandableListAdapter" />
-		<implements name="android/widget/Filterable" />
-		<method name="&lt;init>(Landroid/database/Cursor;Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/database/Cursor;Landroid/content/Context;Z)V" />
-		<method name="bindChildView(Landroid/view/View;Landroid/content/Context;Landroid/database/Cursor;Z)V" />
-		<method name="bindGroupView(Landroid/view/View;Landroid/content/Context;Landroid/database/Cursor;Z)V" />
-		<method name="changeCursor(Landroid/database/Cursor;)V" />
-		<method name="convertToString(Landroid/database/Cursor;)Ljava/lang/String;" />
-		<method name="getChild(II)Landroid/database/Cursor;" />
-		<method name="getChildrenCursor(Landroid/database/Cursor;)Landroid/database/Cursor;" />
-		<method name="getCursor()Landroid/database/Cursor;" />
-		<method name="getFilterQueryProvider()Landroid/widget/FilterQueryProvider;" />
-		<method name="getGroup(I)Landroid/database/Cursor;" />
-		<method name="newChildView(Landroid/content/Context;Landroid/database/Cursor;ZLandroid/view/ViewGroup;)Landroid/view/View;" />
-		<method name="newGroupView(Landroid/content/Context;Landroid/database/Cursor;ZLandroid/view/ViewGroup;)Landroid/view/View;" />
-		<method name="notifyDataSetChanged(Z)V" />
-		<method name="runQueryOnBackgroundThread(Ljava/lang/CharSequence;)Landroid/database/Cursor;" />
-		<method name="setChildrenCursor(ILandroid/database/Cursor;)V" />
-		<method name="setFilterQueryProvider(Landroid/widget/FilterQueryProvider;)V" />
-		<method name="setGroupCursor(Landroid/database/Cursor;)V" />
-	</class>
-	<class name="android/widget/DatePicker" since="1">
-		<extends name="android/widget/FrameLayout" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-		<method name="getCalendarView()Landroid/widget/CalendarView;" since="12" />
-		<method name="getCalendarViewShown()Z" since="11" />
-		<method name="getDayOfMonth()I" />
-		<method name="getMaxDate()J" since="11" />
-		<method name="getMinDate()J" since="11" />
-		<method name="getMonth()I" />
-		<method name="getSpinnersShown()Z" since="11" />
-		<method name="getYear()I" />
-		<method name="init(IIILandroid/widget/DatePicker$OnDateChangedListener;)V" />
-		<method name="setCalendarViewShown(Z)V" since="11" />
-		<method name="setMaxDate(J)V" since="11" />
-		<method name="setMinDate(J)V" since="11" />
-		<method name="setSpinnersShown(Z)V" since="11" />
-		<method name="updateDate(III)V" />
-	</class>
-	<class name="android/widget/DatePicker$OnDateChangedListener" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onDateChanged(Landroid/widget/DatePicker;III)V" />
-	</class>
-	<class name="android/widget/DialerFilter" since="1">
-		<extends name="android/widget/RelativeLayout" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="append(Ljava/lang/String;)V" />
-		<method name="clearText()V" />
-		<method name="getDigits()Ljava/lang/CharSequence;" />
-		<method name="getFilterText()Ljava/lang/CharSequence;" />
-		<method name="getLetters()Ljava/lang/CharSequence;" />
-		<method name="getMode()I" />
-		<method name="isQwertyKeyboard()Z" />
-		<method name="onModeChange(II)V" />
-		<method name="removeFilterWatcher(Landroid/text/TextWatcher;)V" />
-		<method name="setDigitsWatcher(Landroid/text/TextWatcher;)V" />
-		<method name="setFilterWatcher(Landroid/text/TextWatcher;)V" />
-		<method name="setLettersWatcher(Landroid/text/TextWatcher;)V" />
-		<method name="setMode(I)V" />
-		<field name="DIGITS_AND_LETTERS" />
-		<field name="DIGITS_AND_LETTERS_NO_DIGITS" />
-		<field name="DIGITS_AND_LETTERS_NO_LETTERS" />
-		<field name="DIGITS_ONLY" />
-		<field name="LETTERS_ONLY" />
-	</class>
-	<class name="android/widget/DigitalClock" since="1">
-		<extends name="android/widget/TextView" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-	</class>
-	<class name="android/widget/EdgeEffect" since="14">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="draw(Landroid/graphics/Canvas;)Z" />
-		<method name="finish()V" />
-		<method name="getMaxHeight()I" since="21" />
-		<method name="isFinished()Z" />
-		<method name="onAbsorb(I)V" />
-		<method name="onPull(F)V" />
-		<method name="onPull(FF)V" since="21" />
-		<method name="onRelease()V" />
-		<method name="setSize(II)V" />
-	</class>
-	<class name="android/widget/EditText" since="1">
-		<extends name="android/widget/TextView" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-		<method name="extendSelection(I)V" />
-		<method name="getText()Landroid/text/Editable;" />
-		<method name="selectAll()V" />
-		<method name="setSelection(I)V" />
-		<method name="setSelection(II)V" />
-	</class>
-	<class name="android/widget/ExpandableListAdapter" since="1">
-		<extends name="java/lang/Object" />
-		<method name="areAllItemsEnabled()Z" />
-		<method name="getChild(II)Ljava/lang/Object;" />
-		<method name="getChildId(II)J" />
-		<method name="getChildView(IIZLandroid/view/View;Landroid/view/ViewGroup;)Landroid/view/View;" />
-		<method name="getChildrenCount(I)I" />
-		<method name="getCombinedChildId(JJ)J" />
-		<method name="getCombinedGroupId(J)J" />
-		<method name="getGroup(I)Ljava/lang/Object;" />
-		<method name="getGroupCount()I" />
-		<method name="getGroupId(I)J" />
-		<method name="getGroupView(IZLandroid/view/View;Landroid/view/ViewGroup;)Landroid/view/View;" />
-		<method name="hasStableIds()Z" />
-		<method name="isChildSelectable(II)Z" />
-		<method name="isEmpty()Z" />
-		<method name="onGroupCollapsed(I)V" />
-		<method name="onGroupExpanded(I)V" />
-		<method name="registerDataSetObserver(Landroid/database/DataSetObserver;)V" />
-		<method name="unregisterDataSetObserver(Landroid/database/DataSetObserver;)V" />
-	</class>
-	<class name="android/widget/ExpandableListView" since="1">
-		<extends name="android/widget/ListView" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-		<method name="collapseGroup(I)Z" />
-		<method name="expandGroup(I)Z" />
-		<method name="expandGroup(IZ)Z" since="14" />
-		<method name="getExpandableListAdapter()Landroid/widget/ExpandableListAdapter;" />
-		<method name="getExpandableListPosition(I)J" />
-		<method name="getFlatListPosition(J)I" />
-		<method name="getPackedPositionChild(J)I" />
-		<method name="getPackedPositionForChild(II)J" />
-		<method name="getPackedPositionForGroup(I)J" />
-		<method name="getPackedPositionGroup(J)I" />
-		<method name="getPackedPositionType(J)I" />
-		<method name="getSelectedId()J" />
-		<method name="getSelectedPosition()J" />
-		<method name="isGroupExpanded(I)Z" />
-		<method name="setAdapter(Landroid/widget/ExpandableListAdapter;)V" />
-		<method name="setChildDivider(Landroid/graphics/drawable/Drawable;)V" />
-		<method name="setChildIndicator(Landroid/graphics/drawable/Drawable;)V" />
-		<method name="setChildIndicatorBounds(II)V" />
-		<method name="setChildIndicatorBoundsRelative(II)V" since="18" />
-		<method name="setGroupIndicator(Landroid/graphics/drawable/Drawable;)V" />
-		<method name="setIndicatorBounds(II)V" />
-		<method name="setIndicatorBoundsRelative(II)V" since="18" />
-		<method name="setOnChildClickListener(Landroid/widget/ExpandableListView$OnChildClickListener;)V" />
-		<method name="setOnGroupClickListener(Landroid/widget/ExpandableListView$OnGroupClickListener;)V" />
-		<method name="setOnGroupCollapseListener(Landroid/widget/ExpandableListView$OnGroupCollapseListener;)V" />
-		<method name="setOnGroupExpandListener(Landroid/widget/ExpandableListView$OnGroupExpandListener;)V" />
-		<method name="setSelectedChild(IIZ)Z" />
-		<method name="setSelectedGroup(I)V" />
-		<field name="CHILD_INDICATOR_INHERIT" />
-		<field name="PACKED_POSITION_TYPE_CHILD" />
-		<field name="PACKED_POSITION_TYPE_GROUP" />
-		<field name="PACKED_POSITION_TYPE_NULL" />
-		<field name="PACKED_POSITION_VALUE_NULL" />
-	</class>
-	<class name="android/widget/ExpandableListView$ExpandableListContextMenuInfo" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/view/ContextMenu$ContextMenuInfo" />
-		<method name="&lt;init>(Landroid/view/View;JJ)V" />
-		<field name="id" />
-		<field name="packedPosition" />
-		<field name="targetView" />
-	</class>
-	<class name="android/widget/ExpandableListView$OnChildClickListener" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onChildClick(Landroid/widget/ExpandableListView;Landroid/view/View;IIJ)Z" />
-	</class>
-	<class name="android/widget/ExpandableListView$OnGroupClickListener" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onGroupClick(Landroid/widget/ExpandableListView;Landroid/view/View;IJ)Z" />
-	</class>
-	<class name="android/widget/ExpandableListView$OnGroupCollapseListener" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onGroupCollapse(I)V" />
-	</class>
-	<class name="android/widget/ExpandableListView$OnGroupExpandListener" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onGroupExpand(I)V" />
-	</class>
-	<class name="android/widget/Filter" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="convertResultToString(Ljava/lang/Object;)Ljava/lang/CharSequence;" />
-		<method name="filter(Ljava/lang/CharSequence;)V" />
-		<method name="filter(Ljava/lang/CharSequence;Landroid/widget/Filter$FilterListener;)V" />
-		<method name="performFiltering(Ljava/lang/CharSequence;)Landroid/widget/Filter$FilterResults;" />
-		<method name="publishResults(Ljava/lang/CharSequence;Landroid/widget/Filter$FilterResults;)V" />
-	</class>
-	<class name="android/widget/Filter$FilterListener" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onFilterComplete(I)V" />
-	</class>
-	<class name="android/widget/Filter$FilterResults" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="count" />
-		<field name="values" />
-	</class>
-	<class name="android/widget/FilterQueryProvider" since="1">
-		<extends name="java/lang/Object" />
-		<method name="runQuery(Ljava/lang/CharSequence;)Landroid/database/Cursor;" />
-	</class>
-	<class name="android/widget/Filterable" since="1">
-		<extends name="java/lang/Object" />
-		<method name="getFilter()Landroid/widget/Filter;" />
-	</class>
-	<class name="android/widget/FrameLayout" since="1">
-		<extends name="android/view/ViewGroup" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-		<method name="generateDefaultLayoutParams()Landroid/widget/FrameLayout$LayoutParams;" />
-		<method name="generateLayoutParams(Landroid/util/AttributeSet;)Landroid/widget/FrameLayout$LayoutParams;" />
-		<method name="getConsiderGoneChildrenWhenMeasuring()Z" />
-		<method name="getForeground()Landroid/graphics/drawable/Drawable;" />
-		<method name="getForegroundGravity()I" since="16" />
-		<method name="getMeasureAllChildren()Z" since="14" />
-		<method name="setForeground(Landroid/graphics/drawable/Drawable;)V" />
-		<method name="setForegroundGravity(I)V" />
-		<method name="setMeasureAllChildren(Z)V" />
-	</class>
-	<class name="android/widget/FrameLayout$LayoutParams" since="1">
-		<extends name="android/view/ViewGroup$MarginLayoutParams" />
-		<method name="&lt;init>(II)V" />
-		<method name="&lt;init>(III)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/view/ViewGroup$LayoutParams;)V" />
-		<method name="&lt;init>(Landroid/view/ViewGroup$MarginLayoutParams;)V" />
-		<method name="&lt;init>(Landroid/widget/FrameLayout$LayoutParams;)V" since="19" />
-		<field name="gravity" />
-	</class>
-	<class name="android/widget/Gallery" since="1">
-		<extends name="android/widget/AbsSpinner" />
-		<implements name="android/view/GestureDetector$OnGestureListener" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-		<method name="setAnimationDuration(I)V" />
-		<method name="setCallbackDuringFling(Z)V" />
-		<method name="setGravity(I)V" />
-		<method name="setSpacing(I)V" />
-		<method name="setUnselectedAlpha(F)V" />
-	</class>
-	<class name="android/widget/Gallery$LayoutParams" since="1">
-		<extends name="android/view/ViewGroup$LayoutParams" />
-		<method name="&lt;init>(II)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/view/ViewGroup$LayoutParams;)V" />
-	</class>
-	<class name="android/widget/GridLayout" since="14">
-		<extends name="android/view/ViewGroup" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-		<method name="generateDefaultLayoutParams()Landroid/widget/GridLayout$LayoutParams;" />
-		<method name="generateLayoutParams(Landroid/util/AttributeSet;)Landroid/widget/GridLayout$LayoutParams;" />
-		<method name="generateLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Landroid/widget/GridLayout$LayoutParams;" />
-		<method name="getAlignmentMode()I" />
-		<method name="getColumnCount()I" />
-		<method name="getOrientation()I" />
-		<method name="getRowCount()I" />
-		<method name="getUseDefaultMargins()Z" />
-		<method name="isColumnOrderPreserved()Z" />
-		<method name="isRowOrderPreserved()Z" />
-		<method name="setAlignmentMode(I)V" />
-		<method name="setColumnCount(I)V" />
-		<method name="setColumnOrderPreserved(Z)V" />
-		<method name="setOrientation(I)V" />
-		<method name="setRowCount(I)V" />
-		<method name="setRowOrderPreserved(Z)V" />
-		<method name="setUseDefaultMargins(Z)V" />
-		<method name="spec(I)Landroid/widget/GridLayout$Spec;" />
-		<method name="spec(II)Landroid/widget/GridLayout$Spec;" />
-		<method name="spec(IILandroid/widget/GridLayout$Alignment;)Landroid/widget/GridLayout$Spec;" />
-		<method name="spec(ILandroid/widget/GridLayout$Alignment;)Landroid/widget/GridLayout$Spec;" />
-		<field name="ALIGN_BOUNDS" />
-		<field name="ALIGN_MARGINS" />
-		<field name="BASELINE" />
-		<field name="BOTTOM" />
-		<field name="CENTER" />
-		<field name="END" since="16" />
-		<field name="FILL" />
-		<field name="HORIZONTAL" />
-		<field name="LEFT" />
-		<field name="RIGHT" />
-		<field name="START" since="16" />
-		<field name="TOP" />
-		<field name="UNDEFINED" />
-		<field name="VERTICAL" />
-	</class>
-	<class name="android/widget/GridLayout$Alignment" since="14">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="android/widget/GridLayout$LayoutParams" since="14">
-		<extends name="android/view/ViewGroup$MarginLayoutParams" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/view/ViewGroup$LayoutParams;)V" />
-		<method name="&lt;init>(Landroid/view/ViewGroup$MarginLayoutParams;)V" />
-		<method name="&lt;init>(Landroid/widget/GridLayout$LayoutParams;)V" />
-		<method name="&lt;init>(Landroid/widget/GridLayout$Spec;Landroid/widget/GridLayout$Spec;)V" />
-		<method name="setGravity(I)V" />
-		<field name="columnSpec" />
-		<field name="rowSpec" />
-	</class>
-	<class name="android/widget/GridLayout$Spec" since="14">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="android/widget/GridView" since="1">
-		<extends name="android/widget/AbsListView" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-		<method name="getAdapter()Landroid/widget/ListAdapter;" />
-		<method name="getColumnWidth()I" since="16" />
-		<method name="getGravity()I" since="16" />
-		<method name="getHorizontalSpacing()I" since="16" />
-		<method name="getNumColumns()I" since="11" />
-		<method name="getRequestedColumnWidth()I" since="16" />
-		<method name="getRequestedHorizontalSpacing()I" since="16" />
-		<method name="getStretchMode()I" />
-		<method name="getVerticalSpacing()I" since="16" />
-		<method name="setAdapter(Landroid/widget/ListAdapter;)V" />
-		<method name="setColumnWidth(I)V" />
-		<method name="setGravity(I)V" />
-		<method name="setHorizontalSpacing(I)V" />
-		<method name="setNumColumns(I)V" />
-		<method name="setStretchMode(I)V" />
-		<method name="setVerticalSpacing(I)V" />
-		<method name="smoothScrollByOffset(I)V" since="11" />
-		<field name="AUTO_FIT" />
-		<field name="NO_STRETCH" />
-		<field name="STRETCH_COLUMN_WIDTH" />
-		<field name="STRETCH_SPACING" />
-		<field name="STRETCH_SPACING_UNIFORM" since="3" />
-	</class>
-	<class name="android/widget/HeaderViewListAdapter" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/widget/Filterable" />
-		<implements name="android/widget/WrapperListAdapter" />
-		<method name="&lt;init>(Ljava/util/ArrayList;Ljava/util/ArrayList;Landroid/widget/ListAdapter;)V" />
-		<method name="getFootersCount()I" />
-		<method name="getHeadersCount()I" />
-		<method name="removeFooter(Landroid/view/View;)Z" />
-		<method name="removeHeader(Landroid/view/View;)Z" />
-	</class>
-	<class name="android/widget/HeterogeneousExpandableList" since="8">
-		<extends name="java/lang/Object" />
-		<method name="getChildType(II)I" />
-		<method name="getChildTypeCount()I" />
-		<method name="getGroupType(I)I" />
-		<method name="getGroupTypeCount()I" />
-	</class>
-	<class name="android/widget/HorizontalScrollView" since="3">
-		<extends name="android/widget/FrameLayout" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-		<method name="arrowScroll(I)Z" />
-		<method name="computeScrollDeltaToGetChildRectOnScreen(Landroid/graphics/Rect;)I" />
-		<method name="executeKeyEvent(Landroid/view/KeyEvent;)Z" />
-		<method name="fling(I)V" />
-		<method name="fullScroll(I)Z" />
-		<method name="getMaxScrollAmount()I" />
-		<method name="isFillViewport()Z" />
-		<method name="isSmoothScrollingEnabled()Z" />
-		<method name="pageScroll(I)Z" />
-		<method name="setFillViewport(Z)V" />
-		<method name="setSmoothScrollingEnabled(Z)V" />
-		<method name="smoothScrollBy(II)V" />
-		<method name="smoothScrollTo(II)V" />
-	</class>
-	<class name="android/widget/ImageButton" since="1">
-		<extends name="android/widget/ImageView" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-	</class>
-	<class name="android/widget/ImageSwitcher" since="1">
-		<extends name="android/widget/ViewSwitcher" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="setImageDrawable(Landroid/graphics/drawable/Drawable;)V" />
-		<method name="setImageResource(I)V" />
-		<method name="setImageURI(Landroid/net/Uri;)V" />
-	</class>
-	<class name="android/widget/ImageView" since="1">
-		<extends name="android/view/View" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-		<method name="clearColorFilter()V" />
-		<method name="getAdjustViewBounds()Z" since="16" />
-		<method name="getBaselineAlignBottom()Z" since="11" />
-		<method name="getColorFilter()Landroid/graphics/ColorFilter;" since="16" />
-		<method name="getCropToPadding()Z" since="16" />
-		<method name="getDrawable()Landroid/graphics/drawable/Drawable;" />
-		<method name="getImageAlpha()I" since="16" />
-		<method name="getImageMatrix()Landroid/graphics/Matrix;" />
-		<method name="getMaxHeight()I" since="16" />
-		<method name="getMaxWidth()I" since="16" />
-		<method name="getScaleType()Landroid/widget/ImageView$ScaleType;" />
-		<method name="setAdjustViewBounds(Z)V" />
-		<method name="setAlpha(I)V" />
-		<method name="setBaseline(I)V" since="11" />
-		<method name="setBaselineAlignBottom(Z)V" since="11" />
-		<method name="setColorFilter(I)V" since="8" />
-		<method name="setColorFilter(ILandroid/graphics/PorterDuff$Mode;)V" />
-		<method name="setColorFilter(Landroid/graphics/ColorFilter;)V" />
-		<method name="setCropToPadding(Z)V" since="16" />
-		<method name="setFrame(IIII)Z" />
-		<method name="setImageAlpha(I)V" since="16" />
-		<method name="setImageBitmap(Landroid/graphics/Bitmap;)V" />
-		<method name="setImageDrawable(Landroid/graphics/drawable/Drawable;)V" />
-		<method name="setImageLevel(I)V" />
-		<method name="setImageMatrix(Landroid/graphics/Matrix;)V" />
-		<method name="setImageResource(I)V" />
-		<method name="setImageState([IZ)V" />
-		<method name="setImageURI(Landroid/net/Uri;)V" />
-		<method name="setMaxHeight(I)V" />
-		<method name="setMaxWidth(I)V" />
-		<method name="setScaleType(Landroid/widget/ImageView$ScaleType;)V" />
-	</class>
-	<class name="android/widget/ImageView$ScaleType" since="1">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Landroid/widget/ImageView$ScaleType;" />
-		<method name="values()[Landroid/widget/ImageView$ScaleType;" />
-		<field name="CENTER" />
-		<field name="CENTER_CROP" />
-		<field name="CENTER_INSIDE" />
-		<field name="FIT_CENTER" />
-		<field name="FIT_END" />
-		<field name="FIT_START" />
-		<field name="FIT_XY" />
-		<field name="MATRIX" />
-	</class>
-	<class name="android/widget/LinearLayout" since="1">
-		<extends name="android/view/ViewGroup" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" since="11" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-		<method name="generateDefaultLayoutParams()Landroid/widget/LinearLayout$LayoutParams;" />
-		<method name="generateLayoutParams(Landroid/util/AttributeSet;)Landroid/widget/LinearLayout$LayoutParams;" />
-		<method name="generateLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Landroid/widget/LinearLayout$LayoutParams;" />
-		<method name="getBaselineAlignedChildIndex()I" />
-		<method name="getDividerDrawable()Landroid/graphics/drawable/Drawable;" since="16" />
-		<method name="getDividerPadding()I" since="14" />
-		<method name="getOrientation()I" />
-		<method name="getShowDividers()I" since="11" />
-		<method name="getWeightSum()F" />
-		<method name="isBaselineAligned()Z" />
-		<method name="isMeasureWithLargestChildEnabled()Z" since="11" />
-		<method name="setBaselineAligned(Z)V" />
-		<method name="setBaselineAlignedChildIndex(I)V" />
-		<method name="setDividerDrawable(Landroid/graphics/drawable/Drawable;)V" since="11" />
-		<method name="setDividerPadding(I)V" since="14" />
-		<method name="setGravity(I)V" />
-		<method name="setHorizontalGravity(I)V" />
-		<method name="setMeasureWithLargestChildEnabled(Z)V" since="11" />
-		<method name="setOrientation(I)V" />
-		<method name="setShowDividers(I)V" since="11" />
-		<method name="setVerticalGravity(I)V" />
-		<method name="setWeightSum(F)V" />
-		<field name="HORIZONTAL" />
-		<field name="SHOW_DIVIDER_BEGINNING" since="11" />
-		<field name="SHOW_DIVIDER_END" since="11" />
-		<field name="SHOW_DIVIDER_MIDDLE" since="11" />
-		<field name="SHOW_DIVIDER_NONE" since="11" />
-		<field name="VERTICAL" />
-	</class>
-	<class name="android/widget/LinearLayout$LayoutParams" since="1">
-		<extends name="android/view/ViewGroup$MarginLayoutParams" />
-		<method name="&lt;init>(II)V" />
-		<method name="&lt;init>(IIF)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/view/ViewGroup$LayoutParams;)V" />
-		<method name="&lt;init>(Landroid/view/ViewGroup$MarginLayoutParams;)V" />
-		<method name="&lt;init>(Landroid/widget/LinearLayout$LayoutParams;)V" since="19" />
-		<method name="debug(Ljava/lang/String;)Ljava/lang/String;" />
-		<field name="gravity" />
-		<field name="weight" />
-	</class>
-	<class name="android/widget/ListAdapter" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/widget/Adapter" />
-		<method name="areAllItemsEnabled()Z" />
-		<method name="isEnabled(I)Z" />
-	</class>
-	<class name="android/widget/ListPopupWindow" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" />
-		<method name="clearListSelection()V" />
-		<method name="createDragToOpenListener(Landroid/view/View;)Landroid/view/View$OnTouchListener;" since="19" />
-		<method name="dismiss()V" />
-		<method name="getAnchorView()Landroid/view/View;" />
-		<method name="getAnimationStyle()I" />
-		<method name="getBackground()Landroid/graphics/drawable/Drawable;" />
-		<method name="getHeight()I" />
-		<method name="getHorizontalOffset()I" />
-		<method name="getInputMethodMode()I" />
-		<method name="getListView()Landroid/widget/ListView;" />
-		<method name="getPromptPosition()I" />
-		<method name="getSelectedItem()Ljava/lang/Object;" />
-		<method name="getSelectedItemId()J" />
-		<method name="getSelectedItemPosition()I" />
-		<method name="getSelectedView()Landroid/view/View;" />
-		<method name="getSoftInputMode()I" />
-		<method name="getVerticalOffset()I" />
-		<method name="getWidth()I" />
-		<method name="isInputMethodNotNeeded()Z" />
-		<method name="isModal()Z" />
-		<method name="isShowing()Z" />
-		<method name="onKeyDown(ILandroid/view/KeyEvent;)Z" />
-		<method name="onKeyPreIme(ILandroid/view/KeyEvent;)Z" />
-		<method name="onKeyUp(ILandroid/view/KeyEvent;)Z" />
-		<method name="performItemClick(I)Z" />
-		<method name="postShow()V" />
-		<method name="setAdapter(Landroid/widget/ListAdapter;)V" />
-		<method name="setAnchorView(Landroid/view/View;)V" />
-		<method name="setAnimationStyle(I)V" />
-		<method name="setBackgroundDrawable(Landroid/graphics/drawable/Drawable;)V" />
-		<method name="setContentWidth(I)V" />
-		<method name="setDropDownGravity(I)V" since="19" />
-		<method name="setHeight(I)V" />
-		<method name="setHorizontalOffset(I)V" />
-		<method name="setInputMethodMode(I)V" />
-		<method name="setListSelector(Landroid/graphics/drawable/Drawable;)V" />
-		<method name="setModal(Z)V" />
-		<method name="setOnDismissListener(Landroid/widget/PopupWindow$OnDismissListener;)V" />
-		<method name="setOnItemClickListener(Landroid/widget/AdapterView$OnItemClickListener;)V" />
-		<method name="setOnItemSelectedListener(Landroid/widget/AdapterView$OnItemSelectedListener;)V" />
-		<method name="setPromptPosition(I)V" />
-		<method name="setPromptView(Landroid/view/View;)V" />
-		<method name="setSelection(I)V" />
-		<method name="setSoftInputMode(I)V" />
-		<method name="setVerticalOffset(I)V" />
-		<method name="setWidth(I)V" />
-		<method name="show()V" />
-		<field name="INPUT_METHOD_FROM_FOCUSABLE" />
-		<field name="INPUT_METHOD_NEEDED" />
-		<field name="INPUT_METHOD_NOT_NEEDED" />
-		<field name="MATCH_PARENT" />
-		<field name="POSITION_PROMPT_ABOVE" />
-		<field name="POSITION_PROMPT_BELOW" />
-		<field name="WRAP_CONTENT" />
-	</class>
-	<class name="android/widget/ListView" since="1">
-		<extends name="android/widget/AbsListView" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-		<method name="addFooterView(Landroid/view/View;)V" />
-		<method name="addFooterView(Landroid/view/View;Ljava/lang/Object;Z)V" />
-		<method name="addHeaderView(Landroid/view/View;)V" />
-		<method name="addHeaderView(Landroid/view/View;Ljava/lang/Object;Z)V" />
-		<method name="areFooterDividersEnabled()Z" since="19" />
-		<method name="areHeaderDividersEnabled()Z" since="19" />
-		<method name="clearChoices()V" />
-		<method name="findViewTraversal(I)Landroid/view/View;" />
-		<method name="findViewWithTagTraversal(Ljava/lang/Object;)Landroid/view/View;" />
-		<method name="getAdapter()Landroid/widget/ListAdapter;" />
-		<method name="getCheckItemIds()[J" since="4" />
-		<method name="getCheckedItemIds()[J" since="8" />
-		<method name="getCheckedItemPosition()I" />
-		<method name="getCheckedItemPositions()Landroid/util/SparseBooleanArray;" />
-		<method name="getChoiceMode()I" />
-		<method name="getDivider()Landroid/graphics/drawable/Drawable;" />
-		<method name="getDividerHeight()I" />
-		<method name="getFooterViewsCount()I" />
-		<method name="getHeaderViewsCount()I" />
-		<method name="getItemsCanFocus()Z" />
-		<method name="getMaxScrollAmount()I" />
-		<method name="getOverscrollFooter()Landroid/graphics/drawable/Drawable;" since="9" />
-		<method name="getOverscrollHeader()Landroid/graphics/drawable/Drawable;" since="9" />
-		<method name="isItemChecked(I)Z" />
-		<method name="removeFooterView(Landroid/view/View;)Z" />
-		<method name="removeHeaderView(Landroid/view/View;)Z" />
-		<method name="setAdapter(Landroid/widget/ListAdapter;)V" />
-		<method name="setChoiceMode(I)V" />
-		<method name="setDivider(Landroid/graphics/drawable/Drawable;)V" />
-		<method name="setDividerHeight(I)V" />
-		<method name="setFooterDividersEnabled(Z)V" since="3" />
-		<method name="setHeaderDividersEnabled(Z)V" since="3" />
-		<method name="setItemChecked(IZ)V" />
-		<method name="setItemsCanFocus(Z)V" />
-		<method name="setOverscrollFooter(Landroid/graphics/drawable/Drawable;)V" since="9" />
-		<method name="setOverscrollHeader(Landroid/graphics/drawable/Drawable;)V" since="9" />
-		<method name="setSelectionAfterHeaderView()V" />
-		<method name="setSelectionFromTop(II)V" />
-		<method name="smoothScrollByOffset(I)V" since="11" />
-		<field name="CHOICE_MODE_MULTIPLE" />
-		<field name="CHOICE_MODE_NONE" />
-		<field name="CHOICE_MODE_SINGLE" />
-	</class>
-	<class name="android/widget/ListView$FixedViewInfo" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/widget/ListView;)V" />
-		<field name="data" />
-		<field name="isSelectable" />
-		<field name="view" />
-	</class>
-	<class name="android/widget/MediaController" since="1">
-		<extends name="android/widget/FrameLayout" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Z)V" />
-		<method name="hide()V" />
-		<method name="isShowing()Z" />
-		<method name="setAnchorView(Landroid/view/View;)V" />
-		<method name="setMediaPlayer(Landroid/widget/MediaController$MediaPlayerControl;)V" />
-		<method name="setPrevNextListeners(Landroid/view/View$OnClickListener;Landroid/view/View$OnClickListener;)V" />
-		<method name="show()V" />
-		<method name="show(I)V" />
-	</class>
-	<class name="android/widget/MediaController$MediaPlayerControl" since="1">
-		<extends name="java/lang/Object" />
-		<method name="canPause()Z" since="5" />
-		<method name="canSeekBackward()Z" since="5" />
-		<method name="canSeekForward()Z" since="5" />
-		<method name="getAudioSessionId()I" since="18" />
-		<method name="getBufferPercentage()I" />
-		<method name="getCurrentPosition()I" />
-		<method name="getDuration()I" />
-		<method name="isPlaying()Z" />
-		<method name="pause()V" />
-		<method name="seekTo(I)V" />
-		<method name="start()V" />
-	</class>
-	<class name="android/widget/MultiAutoCompleteTextView" since="1">
-		<extends name="android/widget/AutoCompleteTextView" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-		<method name="performFiltering(Ljava/lang/CharSequence;III)V" />
-		<method name="setTokenizer(Landroid/widget/MultiAutoCompleteTextView$Tokenizer;)V" />
-	</class>
-	<class name="android/widget/MultiAutoCompleteTextView$CommaTokenizer" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/widget/MultiAutoCompleteTextView$Tokenizer" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="android/widget/MultiAutoCompleteTextView$Tokenizer" since="1">
-		<extends name="java/lang/Object" />
-		<method name="findTokenEnd(Ljava/lang/CharSequence;I)I" />
-		<method name="findTokenStart(Ljava/lang/CharSequence;I)I" />
-		<method name="terminateToken(Ljava/lang/CharSequence;)Ljava/lang/CharSequence;" />
-	</class>
-	<class name="android/widget/NumberPicker" since="11">
-		<extends name="android/widget/LinearLayout" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-		<method name="getDisplayedValues()[Ljava/lang/String;" />
-		<method name="getMaxValue()I" />
-		<method name="getMinValue()I" />
-		<method name="getValue()I" />
-		<method name="getWrapSelectorWheel()Z" />
-		<method name="setDisplayedValues([Ljava/lang/String;)V" />
-		<method name="setFormatter(Landroid/widget/NumberPicker$Formatter;)V" />
-		<method name="setMaxValue(I)V" />
-		<method name="setMinValue(I)V" />
-		<method name="setOnLongPressUpdateInterval(J)V" />
-		<method name="setOnScrollListener(Landroid/widget/NumberPicker$OnScrollListener;)V" />
-		<method name="setOnValueChangedListener(Landroid/widget/NumberPicker$OnValueChangeListener;)V" />
-		<method name="setValue(I)V" />
-		<method name="setWrapSelectorWheel(Z)V" />
-	</class>
-	<class name="android/widget/NumberPicker$Formatter" since="11">
-		<extends name="java/lang/Object" />
-		<method name="format(I)Ljava/lang/String;" />
-	</class>
-	<class name="android/widget/NumberPicker$OnScrollListener" since="11">
-		<extends name="java/lang/Object" />
-		<method name="onScrollStateChange(Landroid/widget/NumberPicker;I)V" />
-		<field name="SCROLL_STATE_FLING" />
-		<field name="SCROLL_STATE_IDLE" />
-		<field name="SCROLL_STATE_TOUCH_SCROLL" />
-	</class>
-	<class name="android/widget/NumberPicker$OnValueChangeListener" since="11">
-		<extends name="java/lang/Object" />
-		<method name="onValueChange(Landroid/widget/NumberPicker;II)V" />
-	</class>
-	<class name="android/widget/OverScroller" since="9">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/view/animation/Interpolator;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/view/animation/Interpolator;FF)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/view/animation/Interpolator;FFZ)V" since="11" />
-		<method name="abortAnimation()V" />
-		<method name="computeScrollOffset()Z" />
-		<method name="fling(IIIIIIII)V" />
-		<method name="fling(IIIIIIIIII)V" />
-		<method name="forceFinished(Z)V" />
-		<method name="getCurrVelocity()F" since="14" />
-		<method name="getCurrX()I" />
-		<method name="getCurrY()I" />
-		<method name="getFinalX()I" />
-		<method name="getFinalY()I" />
-		<method name="getStartX()I" />
-		<method name="getStartY()I" />
-		<method name="isFinished()Z" />
-		<method name="isOverScrolled()Z" />
-		<method name="notifyHorizontalEdgeReached(III)V" />
-		<method name="notifyVerticalEdgeReached(III)V" />
-		<method name="setFriction(F)V" since="11" />
-		<method name="springBack(IIIIII)Z" />
-		<method name="startScroll(IIII)V" />
-		<method name="startScroll(IIIII)V" />
-	</class>
-	<class name="android/widget/PopupMenu" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/view/View;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/view/View;I)V" since="19" />
-		<method name="dismiss()V" />
-		<method name="getDragToOpenListener()Landroid/view/View$OnTouchListener;" since="19" />
-		<method name="getMenu()Landroid/view/Menu;" />
-		<method name="getMenuInflater()Landroid/view/MenuInflater;" />
-		<method name="inflate(I)V" since="14" />
-		<method name="setOnDismissListener(Landroid/widget/PopupMenu$OnDismissListener;)V" since="14" />
-		<method name="setOnMenuItemClickListener(Landroid/widget/PopupMenu$OnMenuItemClickListener;)V" />
-		<method name="show()V" />
-	</class>
-	<class name="android/widget/PopupMenu$OnDismissListener" since="14">
-		<extends name="java/lang/Object" />
-		<method name="onDismiss(Landroid/widget/PopupMenu;)V" />
-	</class>
-	<class name="android/widget/PopupMenu$OnMenuItemClickListener" since="11">
-		<extends name="java/lang/Object" />
-		<method name="onMenuItemClick(Landroid/view/MenuItem;)Z" />
-	</class>
-	<class name="android/widget/PopupWindow" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(II)V" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="11" />
-		<method name="&lt;init>(Landroid/view/View;)V" />
-		<method name="&lt;init>(Landroid/view/View;II)V" />
-		<method name="&lt;init>(Landroid/view/View;IIZ)V" />
-		<method name="dismiss()V" />
-		<method name="getAnimationStyle()I" />
-		<method name="getBackground()Landroid/graphics/drawable/Drawable;" />
-		<method name="getContentView()Landroid/view/View;" />
-		<method name="getHeight()I" />
-		<method name="getInputMethodMode()I" since="3" />
-		<method name="getMaxAvailableHeight(Landroid/view/View;)I" />
-		<method name="getMaxAvailableHeight(Landroid/view/View;I)I" since="3" />
-		<method name="getSoftInputMode()I" since="4" />
-		<method name="getWidth()I" />
-		<method name="isAboveAnchor()Z" since="3" />
-		<method name="isClippingEnabled()Z" since="3" />
-		<method name="isFocusable()Z" />
-		<method name="isOutsideTouchable()Z" since="3" />
-		<method name="isShowing()Z" />
-		<method name="isSplitTouchEnabled()Z" since="11" />
-		<method name="isTouchable()Z" since="3" />
-		<method name="setAnimationStyle(I)V" />
-		<method name="setBackgroundDrawable(Landroid/graphics/drawable/Drawable;)V" />
-		<method name="setClippingEnabled(Z)V" since="3" />
-		<method name="setContentView(Landroid/view/View;)V" />
-		<method name="setFocusable(Z)V" />
-		<method name="setHeight(I)V" />
-		<method name="setIgnoreCheekPress()V" />
-		<method name="setInputMethodMode(I)V" since="3" />
-		<method name="setOnDismissListener(Landroid/widget/PopupWindow$OnDismissListener;)V" />
-		<method name="setOutsideTouchable(Z)V" since="3" />
-		<method name="setSoftInputMode(I)V" since="4" />
-		<method name="setSplitTouchEnabled(Z)V" since="11" />
-		<method name="setTouchInterceptor(Landroid/view/View$OnTouchListener;)V" since="3" />
-		<method name="setTouchable(Z)V" since="3" />
-		<method name="setWidth(I)V" />
-		<method name="setWindowLayoutMode(II)V" since="3" />
-		<method name="showAsDropDown(Landroid/view/View;)V" />
-		<method name="showAsDropDown(Landroid/view/View;II)V" />
-		<method name="showAsDropDown(Landroid/view/View;III)V" since="19" />
-		<method name="showAtLocation(Landroid/view/View;III)V" />
-		<method name="update()V" since="3" />
-		<method name="update(II)V" since="4" />
-		<method name="update(IIII)V" />
-		<method name="update(IIIIZ)V" since="3" />
-		<method name="update(Landroid/view/View;II)V" />
-		<method name="update(Landroid/view/View;IIII)V" />
-		<field name="INPUT_METHOD_FROM_FOCUSABLE" since="3" />
-		<field name="INPUT_METHOD_NEEDED" since="3" />
-		<field name="INPUT_METHOD_NOT_NEEDED" since="3" />
-	</class>
-	<class name="android/widget/PopupWindow$OnDismissListener" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onDismiss()V" />
-	</class>
-	<class name="android/widget/ProgressBar" since="1">
-		<extends name="android/view/View" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-		<method name="getIndeterminateDrawable()Landroid/graphics/drawable/Drawable;" />
-		<method name="getInterpolator()Landroid/view/animation/Interpolator;" />
-		<method name="getMax()I" />
-		<method name="getProgress()I" />
-		<method name="getProgressDrawable()Landroid/graphics/drawable/Drawable;" />
-		<method name="getSecondaryProgress()I" />
-		<method name="incrementProgressBy(I)V" />
-		<method name="incrementSecondaryProgressBy(I)V" />
-		<method name="isIndeterminate()Z" />
-		<method name="setIndeterminate(Z)V" />
-		<method name="setIndeterminateDrawable(Landroid/graphics/drawable/Drawable;)V" />
-		<method name="setIndeterminateDrawableTiled(Landroid/graphics/drawable/Drawable;)V" since="21" />
-		<method name="setInterpolator(Landroid/content/Context;I)V" />
-		<method name="setInterpolator(Landroid/view/animation/Interpolator;)V" />
-		<method name="setMax(I)V" />
-		<method name="setProgress(I)V" />
-		<method name="setProgressDrawable(Landroid/graphics/drawable/Drawable;)V" />
-		<method name="setProgressDrawableTiled(Landroid/graphics/drawable/Drawable;)V" since="21" />
-		<method name="setSecondaryProgress(I)V" />
-	</class>
-	<class name="android/widget/QuickContactBadge" since="5">
-		<extends name="android/widget/ImageView" />
-		<implements name="android/view/View$OnClickListener" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-		<method name="assignContactFromEmail(Ljava/lang/String;Z)V" />
-		<method name="assignContactFromEmail(Ljava/lang/String;ZLandroid/os/Bundle;)V" since="18" />
-		<method name="assignContactFromPhone(Ljava/lang/String;Z)V" />
-		<method name="assignContactFromPhone(Ljava/lang/String;ZLandroid/os/Bundle;)V" since="18" />
-		<method name="assignContactUri(Landroid/net/Uri;)V" />
-		<method name="setExcludeMimes([Ljava/lang/String;)V" />
-		<method name="setImageToDefault()V" since="11" />
-		<method name="setMode(I)V" />
-		<method name="setOverlay(Landroid/graphics/drawable/Drawable;)V" since="21" />
-		<field name="mExcludeMimes" />
-	</class>
-	<class name="android/widget/RadioButton" since="1">
-		<extends name="android/widget/CompoundButton" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-	</class>
-	<class name="android/widget/RadioGroup" since="1">
-		<extends name="android/widget/LinearLayout" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="check(I)V" />
-		<method name="clearCheck()V" />
-		<method name="generateLayoutParams(Landroid/util/AttributeSet;)Landroid/widget/RadioGroup$LayoutParams;" />
-		<method name="getCheckedRadioButtonId()I" />
-		<method name="setOnCheckedChangeListener(Landroid/widget/RadioGroup$OnCheckedChangeListener;)V" />
-	</class>
-	<class name="android/widget/RadioGroup$LayoutParams" since="1">
-		<extends name="android/widget/LinearLayout$LayoutParams" />
-		<method name="&lt;init>(II)V" />
-		<method name="&lt;init>(IIF)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/view/ViewGroup$LayoutParams;)V" />
-		<method name="&lt;init>(Landroid/view/ViewGroup$MarginLayoutParams;)V" />
-	</class>
-	<class name="android/widget/RadioGroup$OnCheckedChangeListener" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onCheckedChanged(Landroid/widget/RadioGroup;I)V" />
-	</class>
-	<class name="android/widget/RatingBar" since="1">
-		<extends name="android/widget/AbsSeekBar" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-		<method name="getNumStars()I" />
-		<method name="getOnRatingBarChangeListener()Landroid/widget/RatingBar$OnRatingBarChangeListener;" />
-		<method name="getRating()F" />
-		<method name="getStepSize()F" />
-		<method name="isIndicator()Z" />
-		<method name="setIsIndicator(Z)V" />
-		<method name="setNumStars(I)V" />
-		<method name="setOnRatingBarChangeListener(Landroid/widget/RatingBar$OnRatingBarChangeListener;)V" />
-		<method name="setRating(F)V" />
-		<method name="setStepSize(F)V" />
-	</class>
-	<class name="android/widget/RatingBar$OnRatingBarChangeListener" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onRatingChanged(Landroid/widget/RatingBar;FZ)V" />
-	</class>
-	<class name="android/widget/RelativeLayout" since="1">
-		<extends name="android/view/ViewGroup" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-		<method name="generateLayoutParams(Landroid/util/AttributeSet;)Landroid/widget/RelativeLayout$LayoutParams;" />
-		<method name="getGravity()I" since="16" />
-		<method name="setGravity(I)V" />
-		<method name="setHorizontalGravity(I)V" />
-		<method name="setIgnoreGravity(I)V" />
-		<method name="setVerticalGravity(I)V" />
-		<field name="ABOVE" />
-		<field name="ALIGN_BASELINE" />
-		<field name="ALIGN_BOTTOM" />
-		<field name="ALIGN_END" since="17" />
-		<field name="ALIGN_LEFT" />
-		<field name="ALIGN_PARENT_BOTTOM" />
-		<field name="ALIGN_PARENT_END" since="17" />
-		<field name="ALIGN_PARENT_LEFT" />
-		<field name="ALIGN_PARENT_RIGHT" />
-		<field name="ALIGN_PARENT_START" since="17" />
-		<field name="ALIGN_PARENT_TOP" />
-		<field name="ALIGN_RIGHT" />
-		<field name="ALIGN_START" since="17" />
-		<field name="ALIGN_TOP" />
-		<field name="BELOW" />
-		<field name="CENTER_HORIZONTAL" />
-		<field name="CENTER_IN_PARENT" />
-		<field name="CENTER_VERTICAL" />
-		<field name="END_OF" since="17" />
-		<field name="LEFT_OF" />
-		<field name="RIGHT_OF" />
-		<field name="START_OF" since="17" />
-		<field name="TRUE" />
-	</class>
-	<class name="android/widget/RelativeLayout$LayoutParams" since="1">
-		<extends name="android/view/ViewGroup$MarginLayoutParams" />
-		<method name="&lt;init>(II)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/view/ViewGroup$LayoutParams;)V" />
-		<method name="&lt;init>(Landroid/view/ViewGroup$MarginLayoutParams;)V" />
-		<method name="&lt;init>(Landroid/widget/RelativeLayout$LayoutParams;)V" since="19" />
-		<method name="addRule(I)V" />
-		<method name="addRule(II)V" />
-		<method name="debug(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="getRules()[I" />
-		<method name="removeRule(I)V" since="17" />
-		<field name="alignWithParent" />
-	</class>
-	<class name="android/widget/RemoteViews" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/os/Parcelable" />
-		<implements name="android/view/LayoutInflater$Filter" />
-		<method name="&lt;init>(Landroid/os/Parcel;)V" />
-		<method name="&lt;init>(Landroid/widget/RemoteViews;Landroid/widget/RemoteViews;)V" since="16" />
-		<method name="&lt;init>(Ljava/lang/String;I)V" />
-		<method name="addView(ILandroid/widget/RemoteViews;)V" since="7" />
-		<method name="apply(Landroid/content/Context;Landroid/view/ViewGroup;)Landroid/view/View;" />
-		<method name="clone()Landroid/widget/RemoteViews;" since="9" />
-		<method name="getLayoutId()I" />
-		<method name="getPackage()Ljava/lang/String;" />
-		<method name="reapply(Landroid/content/Context;Landroid/view/View;)V" />
-		<method name="removeAllViews(I)V" since="7" />
-		<method name="setBitmap(ILjava/lang/String;Landroid/graphics/Bitmap;)V" since="3" />
-		<method name="setBoolean(ILjava/lang/String;Z)V" since="3" />
-		<method name="setBundle(ILjava/lang/String;Landroid/os/Bundle;)V" since="8" />
-		<method name="setByte(ILjava/lang/String;B)V" since="3" />
-		<method name="setChar(ILjava/lang/String;C)V" since="3" />
-		<method name="setCharSequence(ILjava/lang/String;Ljava/lang/CharSequence;)V" since="3" />
-		<method name="setChronometer(IJLjava/lang/String;Z)V" />
-		<method name="setContentDescription(ILjava/lang/CharSequence;)V" since="15" />
-		<method name="setDisplayedChild(II)V" since="12" />
-		<method name="setDouble(ILjava/lang/String;D)V" since="3" />
-		<method name="setEmptyView(II)V" since="11" />
-		<method name="setFloat(ILjava/lang/String;F)V" since="3" />
-		<method name="setImageViewBitmap(ILandroid/graphics/Bitmap;)V" since="3" />
-		<method name="setImageViewResource(II)V" />
-		<method name="setImageViewUri(ILandroid/net/Uri;)V" />
-		<method name="setInt(ILjava/lang/String;I)V" since="3" />
-		<method name="setIntent(ILjava/lang/String;Landroid/content/Intent;)V" since="11" />
-		<method name="setLabelFor(II)V" since="17" />
-		<method name="setLong(ILjava/lang/String;J)V" since="3" />
-		<method name="setOnClickFillInIntent(ILandroid/content/Intent;)V" since="11" />
-		<method name="setOnClickPendingIntent(ILandroid/app/PendingIntent;)V" since="3" />
-		<method name="setPendingIntentTemplate(ILandroid/app/PendingIntent;)V" since="11" />
-		<method name="setProgressBar(IIIZ)V" />
-		<method name="setRelativeScrollPosition(II)V" since="11" />
-		<method name="setRemoteAdapter(IILandroid/content/Intent;)V" since="11" />
-		<method name="setRemoteAdapter(ILandroid/content/Intent;)V" since="14" />
-		<method name="setScrollPosition(II)V" since="11" />
-		<method name="setShort(ILjava/lang/String;S)V" since="3" />
-		<method name="setString(ILjava/lang/String;Ljava/lang/String;)V" since="3" />
-		<method name="setTextColor(II)V" since="3" />
-		<method name="setTextViewCompoundDrawables(IIIII)V" since="16" />
-		<method name="setTextViewCompoundDrawablesRelative(IIIII)V" since="16" />
-		<method name="setTextViewText(ILjava/lang/CharSequence;)V" />
-		<method name="setTextViewTextSize(IIF)V" since="16" />
-		<method name="setUri(ILjava/lang/String;Landroid/net/Uri;)V" since="3" />
-		<method name="setViewPadding(IIIII)V" since="16" />
-		<method name="setViewVisibility(II)V" />
-		<method name="showNext(I)V" since="11" />
-		<method name="showPrevious(I)V" since="11" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/widget/RemoteViews$ActionException" since="1">
-		<extends name="java/lang/RuntimeException" />
-		<method name="&lt;init>(Ljava/lang/Exception;)V" since="3" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/widget/RemoteViews$RemoteView" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/annotation/Annotation" />
-	</class>
-	<class name="android/widget/RemoteViewsService" since="11">
-		<extends name="android/app/Service" />
-		<method name="&lt;init>()V" />
-		<method name="onGetViewFactory(Landroid/content/Intent;)Landroid/widget/RemoteViewsService$RemoteViewsFactory;" />
-	</class>
-	<class name="android/widget/RemoteViewsService$RemoteViewsFactory" since="11">
-		<extends name="java/lang/Object" />
-		<method name="getCount()I" />
-		<method name="getItemId(I)J" />
-		<method name="getLoadingView()Landroid/widget/RemoteViews;" />
-		<method name="getViewAt(I)Landroid/widget/RemoteViews;" />
-		<method name="getViewTypeCount()I" />
-		<method name="hasStableIds()Z" />
-		<method name="onCreate()V" />
-		<method name="onDataSetChanged()V" />
-		<method name="onDestroy()V" />
-	</class>
-	<class name="android/widget/ResourceCursorAdapter" since="1">
-		<extends name="android/widget/CursorAdapter" />
-		<method name="&lt;init>(Landroid/content/Context;ILandroid/database/Cursor;)V" />
-		<method name="&lt;init>(Landroid/content/Context;ILandroid/database/Cursor;I)V" since="11" />
-		<method name="&lt;init>(Landroid/content/Context;ILandroid/database/Cursor;Z)V" since="3" />
-		<method name="setDropDownViewResource(I)V" />
-		<method name="setViewResource(I)V" since="3" />
-	</class>
-	<class name="android/widget/ResourceCursorTreeAdapter" since="1">
-		<extends name="android/widget/CursorTreeAdapter" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/database/Cursor;II)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/database/Cursor;III)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/database/Cursor;IIII)V" />
-	</class>
-	<class name="android/widget/ScrollView" since="1">
-		<extends name="android/widget/FrameLayout" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-		<method name="arrowScroll(I)Z" />
-		<method name="computeScrollDeltaToGetChildRectOnScreen(Landroid/graphics/Rect;)I" />
-		<method name="executeKeyEvent(Landroid/view/KeyEvent;)Z" />
-		<method name="fling(I)V" />
-		<method name="fullScroll(I)Z" />
-		<method name="getMaxScrollAmount()I" />
-		<method name="isFillViewport()Z" />
-		<method name="isSmoothScrollingEnabled()Z" />
-		<method name="pageScroll(I)Z" />
-		<method name="setFillViewport(Z)V" />
-		<method name="setSmoothScrollingEnabled(Z)V" />
-		<method name="smoothScrollBy(II)V" />
-		<method name="smoothScrollTo(II)V" />
-	</class>
-	<class name="android/widget/Scroller" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/view/animation/Interpolator;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/view/animation/Interpolator;Z)V" since="11" />
-		<method name="abortAnimation()V" />
-		<method name="computeScrollOffset()Z" />
-		<method name="extendDuration(I)V" />
-		<method name="fling(IIIIIIII)V" />
-		<method name="forceFinished(Z)V" />
-		<method name="getCurrVelocity()F" since="14" />
-		<method name="getCurrX()I" />
-		<method name="getCurrY()I" />
-		<method name="getDuration()I" />
-		<method name="getFinalX()I" />
-		<method name="getFinalY()I" />
-		<method name="getStartX()I" since="3" />
-		<method name="getStartY()I" since="3" />
-		<method name="isFinished()Z" />
-		<method name="setFinalX(I)V" />
-		<method name="setFinalY(I)V" />
-		<method name="setFriction(F)V" since="11" />
-		<method name="startScroll(IIII)V" />
-		<method name="startScroll(IIIII)V" />
-		<method name="timePassed()I" />
-	</class>
-	<class name="android/widget/SearchView" since="11">
-		<extends name="android/widget/LinearLayout" />
-		<implements name="android/view/CollapsibleActionView" since="14" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" since="21" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-		<method name="getImeOptions()I" since="16" />
-		<method name="getInputType()I" since="16" />
-		<method name="getMaxWidth()I" since="16" />
-		<method name="getQuery()Ljava/lang/CharSequence;" />
-		<method name="getQueryHint()Ljava/lang/CharSequence;" since="16" />
-		<method name="getSuggestionsAdapter()Landroid/widget/CursorAdapter;" />
-		<method name="isIconfiedByDefault()Z" />
-		<method name="isIconified()Z" />
-		<method name="isQueryRefinementEnabled()Z" />
-		<method name="isSubmitButtonEnabled()Z" />
-		<method name="setIconified(Z)V" />
-		<method name="setIconifiedByDefault(Z)V" />
-		<method name="setImeOptions(I)V" since="14" />
-		<method name="setInputType(I)V" since="14" />
-		<method name="setMaxWidth(I)V" />
-		<method name="setOnCloseListener(Landroid/widget/SearchView$OnCloseListener;)V" />
-		<method name="setOnQueryTextFocusChangeListener(Landroid/view/View$OnFocusChangeListener;)V" />
-		<method name="setOnQueryTextListener(Landroid/widget/SearchView$OnQueryTextListener;)V" />
-		<method name="setOnSearchClickListener(Landroid/view/View$OnClickListener;)V" />
-		<method name="setOnSuggestionListener(Landroid/widget/SearchView$OnSuggestionListener;)V" />
-		<method name="setQuery(Ljava/lang/CharSequence;Z)V" />
-		<method name="setQueryHint(Ljava/lang/CharSequence;)V" />
-		<method name="setQueryRefinementEnabled(Z)V" />
-		<method name="setSearchableInfo(Landroid/app/SearchableInfo;)V" />
-		<method name="setSubmitButtonEnabled(Z)V" />
-		<method name="setSuggestionsAdapter(Landroid/widget/CursorAdapter;)V" />
-	</class>
-	<class name="android/widget/SearchView$OnCloseListener" since="11">
-		<extends name="java/lang/Object" />
-		<method name="onClose()Z" />
-	</class>
-	<class name="android/widget/SearchView$OnQueryTextListener" since="11">
-		<extends name="java/lang/Object" />
-		<method name="onQueryTextChange(Ljava/lang/String;)Z" />
-		<method name="onQueryTextSubmit(Ljava/lang/String;)Z" />
-	</class>
-	<class name="android/widget/SearchView$OnSuggestionListener" since="11">
-		<extends name="java/lang/Object" />
-		<method name="onSuggestionClick(I)Z" />
-		<method name="onSuggestionSelect(I)Z" />
-	</class>
-	<class name="android/widget/SectionIndexer" since="3">
-		<extends name="java/lang/Object" />
-		<method name="getPositionForSection(I)I" />
-		<method name="getSectionForPosition(I)I" />
-		<method name="getSections()[Ljava/lang/Object;" />
-	</class>
-	<class name="android/widget/SeekBar" since="1">
-		<extends name="android/widget/AbsSeekBar" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-		<method name="setOnSeekBarChangeListener(Landroid/widget/SeekBar$OnSeekBarChangeListener;)V" />
-	</class>
-	<class name="android/widget/SeekBar$OnSeekBarChangeListener" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onProgressChanged(Landroid/widget/SeekBar;IZ)V" />
-		<method name="onStartTrackingTouch(Landroid/widget/SeekBar;)V" />
-		<method name="onStopTrackingTouch(Landroid/widget/SeekBar;)V" />
-	</class>
-	<class name="android/widget/ShareActionProvider" since="14">
-		<extends name="android/view/ActionProvider" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="setOnShareTargetSelectedListener(Landroid/widget/ShareActionProvider$OnShareTargetSelectedListener;)V" />
-		<method name="setShareHistoryFileName(Ljava/lang/String;)V" />
-		<method name="setShareIntent(Landroid/content/Intent;)V" />
-		<field name="DEFAULT_SHARE_HISTORY_FILE_NAME" />
-	</class>
-	<class name="android/widget/ShareActionProvider$OnShareTargetSelectedListener" since="14">
-		<extends name="java/lang/Object" />
-		<method name="onShareTargetSelected(Landroid/widget/ShareActionProvider;Landroid/content/Intent;)Z" />
-	</class>
-	<class name="android/widget/SimpleAdapter" since="1">
-		<extends name="android/widget/BaseAdapter" />
-		<implements name="android/widget/Filterable" />
-		<method name="&lt;init>(Landroid/content/Context;Ljava/util/List;I[Ljava/lang/String;[I)V" />
-		<method name="getViewBinder()Landroid/widget/SimpleAdapter$ViewBinder;" />
-		<method name="setDropDownViewResource(I)V" />
-		<method name="setViewBinder(Landroid/widget/SimpleAdapter$ViewBinder;)V" />
-		<method name="setViewImage(Landroid/widget/ImageView;I)V" />
-		<method name="setViewImage(Landroid/widget/ImageView;Ljava/lang/String;)V" />
-		<method name="setViewText(Landroid/widget/TextView;Ljava/lang/String;)V" />
-	</class>
-	<class name="android/widget/SimpleAdapter$ViewBinder" since="1">
-		<extends name="java/lang/Object" />
-		<method name="setViewValue(Landroid/view/View;Ljava/lang/Object;Ljava/lang/String;)Z" />
-	</class>
-	<class name="android/widget/SimpleCursorAdapter" since="1">
-		<extends name="android/widget/ResourceCursorAdapter" />
-		<method name="&lt;init>(Landroid/content/Context;ILandroid/database/Cursor;[Ljava/lang/String;[I)V" />
-		<method name="&lt;init>(Landroid/content/Context;ILandroid/database/Cursor;[Ljava/lang/String;[II)V" since="11" />
-		<method name="changeCursorAndColumns(Landroid/database/Cursor;[Ljava/lang/String;[I)V" since="3" />
-		<method name="getCursorToStringConverter()Landroid/widget/SimpleCursorAdapter$CursorToStringConverter;" />
-		<method name="getStringConversionColumn()I" />
-		<method name="getViewBinder()Landroid/widget/SimpleCursorAdapter$ViewBinder;" />
-		<method name="setCursorToStringConverter(Landroid/widget/SimpleCursorAdapter$CursorToStringConverter;)V" />
-		<method name="setStringConversionColumn(I)V" />
-		<method name="setViewBinder(Landroid/widget/SimpleCursorAdapter$ViewBinder;)V" />
-		<method name="setViewImage(Landroid/widget/ImageView;Ljava/lang/String;)V" />
-		<method name="setViewText(Landroid/widget/TextView;Ljava/lang/String;)V" />
-	</class>
-	<class name="android/widget/SimpleCursorAdapter$CursorToStringConverter" since="1">
-		<extends name="java/lang/Object" />
-		<method name="convertToString(Landroid/database/Cursor;)Ljava/lang/CharSequence;" />
-	</class>
-	<class name="android/widget/SimpleCursorAdapter$ViewBinder" since="1">
-		<extends name="java/lang/Object" />
-		<method name="setViewValue(Landroid/view/View;Landroid/database/Cursor;I)Z" />
-	</class>
-	<class name="android/widget/SimpleCursorTreeAdapter" since="1">
-		<extends name="android/widget/ResourceCursorTreeAdapter" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/database/Cursor;II[Ljava/lang/String;[III[Ljava/lang/String;[I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/database/Cursor;II[Ljava/lang/String;[II[Ljava/lang/String;[I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/database/Cursor;I[Ljava/lang/String;[II[Ljava/lang/String;[I)V" />
-		<method name="getViewBinder()Landroid/widget/SimpleCursorTreeAdapter$ViewBinder;" since="5" />
-		<method name="setViewBinder(Landroid/widget/SimpleCursorTreeAdapter$ViewBinder;)V" since="5" />
-		<method name="setViewImage(Landroid/widget/ImageView;Ljava/lang/String;)V" />
-		<method name="setViewText(Landroid/widget/TextView;Ljava/lang/String;)V" since="5" />
-	</class>
-	<class name="android/widget/SimpleCursorTreeAdapter$ViewBinder" since="5">
-		<extends name="java/lang/Object" />
-		<method name="setViewValue(Landroid/view/View;Landroid/database/Cursor;I)Z" />
-	</class>
-	<class name="android/widget/SimpleExpandableListAdapter" since="1">
-		<extends name="android/widget/BaseExpandableListAdapter" />
-		<method name="&lt;init>(Landroid/content/Context;Ljava/util/List;II[Ljava/lang/String;[ILjava/util/List;II[Ljava/lang/String;[I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Ljava/util/List;II[Ljava/lang/String;[ILjava/util/List;I[Ljava/lang/String;[I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Ljava/util/List;I[Ljava/lang/String;[ILjava/util/List;I[Ljava/lang/String;[I)V" />
-		<method name="newChildView(ZLandroid/view/ViewGroup;)Landroid/view/View;" />
-		<method name="newGroupView(ZLandroid/view/ViewGroup;)Landroid/view/View;" />
-	</class>
-	<class name="android/widget/SlidingDrawer" since="3">
-		<extends name="android/view/ViewGroup" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-		<method name="animateClose()V" />
-		<method name="animateOpen()V" />
-		<method name="animateToggle()V" />
-		<method name="close()V" />
-		<method name="getContent()Landroid/view/View;" />
-		<method name="getHandle()Landroid/view/View;" />
-		<method name="isMoving()Z" />
-		<method name="isOpened()Z" />
-		<method name="lock()V" />
-		<method name="open()V" />
-		<method name="setOnDrawerCloseListener(Landroid/widget/SlidingDrawer$OnDrawerCloseListener;)V" />
-		<method name="setOnDrawerOpenListener(Landroid/widget/SlidingDrawer$OnDrawerOpenListener;)V" />
-		<method name="setOnDrawerScrollListener(Landroid/widget/SlidingDrawer$OnDrawerScrollListener;)V" />
-		<method name="toggle()V" />
-		<method name="unlock()V" />
-		<field name="ORIENTATION_HORIZONTAL" />
-		<field name="ORIENTATION_VERTICAL" />
-	</class>
-	<class name="android/widget/SlidingDrawer$OnDrawerCloseListener" since="3">
-		<extends name="java/lang/Object" />
-		<method name="onDrawerClosed()V" />
-	</class>
-	<class name="android/widget/SlidingDrawer$OnDrawerOpenListener" since="3">
-		<extends name="java/lang/Object" />
-		<method name="onDrawerOpened()V" />
-	</class>
-	<class name="android/widget/SlidingDrawer$OnDrawerScrollListener" since="3">
-		<extends name="java/lang/Object" />
-		<method name="onScrollEnded()V" />
-		<method name="onScrollStarted()V" />
-	</class>
-	<class name="android/widget/Space" since="14">
-		<extends name="android/view/View" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-	</class>
-	<class name="android/widget/Spinner" since="1">
-		<extends name="android/widget/AbsSpinner" />
-		<implements name="android/content/DialogInterface$OnClickListener" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;I)V" since="11" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="11" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;III)V" since="21" />
-		<method name="getDropDownHorizontalOffset()I" since="16" />
-		<method name="getDropDownVerticalOffset()I" since="16" />
-		<method name="getDropDownWidth()I" since="16" />
-		<method name="getGravity()I" since="16" />
-		<method name="getPopupBackground()Landroid/graphics/drawable/Drawable;" since="16" />
-		<method name="getPrompt()Ljava/lang/CharSequence;" />
-		<method name="setDropDownHorizontalOffset(I)V" since="16" />
-		<method name="setDropDownVerticalOffset(I)V" since="16" />
-		<method name="setDropDownWidth(I)V" since="16" />
-		<method name="setGravity(I)V" since="11" />
-		<method name="setPopupBackgroundDrawable(Landroid/graphics/drawable/Drawable;)V" since="16" />
-		<method name="setPopupBackgroundResource(I)V" since="16" />
-		<method name="setPrompt(Ljava/lang/CharSequence;)V" />
-		<method name="setPromptId(I)V" />
-		<field name="MODE_DIALOG" since="11" />
-		<field name="MODE_DROPDOWN" since="11" />
-	</class>
-	<class name="android/widget/SpinnerAdapter" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/widget/Adapter" />
-		<method name="getDropDownView(ILandroid/view/View;Landroid/view/ViewGroup;)Landroid/view/View;" />
-	</class>
-	<class name="android/widget/StackView" since="11">
-		<extends name="android/widget/AdapterViewAnimator" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" since="14" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-	</class>
-	<class name="android/widget/Switch" since="14">
-		<extends name="android/widget/CompoundButton" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-		<method name="getSplitTrack()Z" since="21" />
-		<method name="getSwitchMinWidth()I" since="16" />
-		<method name="getSwitchPadding()I" since="16" />
-		<method name="getTextOff()Ljava/lang/CharSequence;" />
-		<method name="getTextOn()Ljava/lang/CharSequence;" />
-		<method name="getThumbDrawable()Landroid/graphics/drawable/Drawable;" since="16" />
-		<method name="getThumbTextPadding()I" since="16" />
-		<method name="getTrackDrawable()Landroid/graphics/drawable/Drawable;" since="16" />
-		<method name="setSplitTrack(Z)V" since="21" />
-		<method name="setSwitchMinWidth(I)V" since="16" />
-		<method name="setSwitchPadding(I)V" since="16" />
-		<method name="setSwitchTextAppearance(Landroid/content/Context;I)V" />
-		<method name="setSwitchTypeface(Landroid/graphics/Typeface;)V" />
-		<method name="setSwitchTypeface(Landroid/graphics/Typeface;I)V" />
-		<method name="setTextOff(Ljava/lang/CharSequence;)V" />
-		<method name="setTextOn(Ljava/lang/CharSequence;)V" />
-		<method name="setThumbDrawable(Landroid/graphics/drawable/Drawable;)V" since="16" />
-		<method name="setThumbResource(I)V" since="16" />
-		<method name="setThumbTextPadding(I)V" since="16" />
-		<method name="setTrackDrawable(Landroid/graphics/drawable/Drawable;)V" since="16" />
-		<method name="setTrackResource(I)V" since="16" />
-	</class>
-	<class name="android/widget/TabHost" since="1">
-		<extends name="android/widget/FrameLayout" />
-		<implements name="android/view/ViewTreeObserver$OnTouchModeChangeListener" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" since="21" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-		<method name="addTab(Landroid/widget/TabHost$TabSpec;)V" />
-		<method name="clearAllTabs()V" />
-		<method name="getCurrentTab()I" />
-		<method name="getCurrentTabTag()Ljava/lang/String;" />
-		<method name="getCurrentTabView()Landroid/view/View;" />
-		<method name="getCurrentView()Landroid/view/View;" />
-		<method name="getTabContentView()Landroid/widget/FrameLayout;" />
-		<method name="getTabWidget()Landroid/widget/TabWidget;" />
-		<method name="newTabSpec(Ljava/lang/String;)Landroid/widget/TabHost$TabSpec;" />
-		<method name="setCurrentTab(I)V" />
-		<method name="setCurrentTabByTag(Ljava/lang/String;)V" />
-		<method name="setOnTabChangedListener(Landroid/widget/TabHost$OnTabChangeListener;)V" />
-		<method name="setup()V" />
-		<method name="setup(Landroid/app/LocalActivityManager;)V" />
-	</class>
-	<class name="android/widget/TabHost$OnTabChangeListener" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onTabChanged(Ljava/lang/String;)V" />
-	</class>
-	<class name="android/widget/TabHost$TabContentFactory" since="1">
-		<extends name="java/lang/Object" />
-		<method name="createTabContent(Ljava/lang/String;)Landroid/view/View;" />
-	</class>
-	<class name="android/widget/TabHost$TabSpec" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/widget/TabHost;)V" />
-		<method name="getTag()Ljava/lang/String;" since="4" />
-		<method name="setContent(I)Landroid/widget/TabHost$TabSpec;" />
-		<method name="setContent(Landroid/content/Intent;)Landroid/widget/TabHost$TabSpec;" />
-		<method name="setContent(Landroid/widget/TabHost$TabContentFactory;)Landroid/widget/TabHost$TabSpec;" />
-		<method name="setIndicator(Landroid/view/View;)Landroid/widget/TabHost$TabSpec;" since="4" />
-		<method name="setIndicator(Ljava/lang/CharSequence;)Landroid/widget/TabHost$TabSpec;" />
-		<method name="setIndicator(Ljava/lang/CharSequence;Landroid/graphics/drawable/Drawable;)Landroid/widget/TabHost$TabSpec;" />
-	</class>
-	<class name="android/widget/TabWidget" since="1">
-		<extends name="android/widget/LinearLayout" />
-		<implements name="android/view/View$OnFocusChangeListener" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-		<method name="focusCurrentTab(I)V" />
-		<method name="getChildTabViewAt(I)Landroid/view/View;" since="4" />
-		<method name="getTabCount()I" since="4" />
-		<method name="isStripEnabled()Z" since="8" />
-		<method name="setCurrentTab(I)V" />
-		<method name="setDividerDrawable(I)V" since="4" />
-		<method name="setDividerDrawable(Landroid/graphics/drawable/Drawable;)V" since="4" />
-		<method name="setLeftStripDrawable(I)V" since="8" />
-		<method name="setLeftStripDrawable(Landroid/graphics/drawable/Drawable;)V" since="8" />
-		<method name="setRightStripDrawable(I)V" since="8" />
-		<method name="setRightStripDrawable(Landroid/graphics/drawable/Drawable;)V" since="8" />
-		<method name="setStripEnabled(Z)V" since="8" />
-	</class>
-	<class name="android/widget/TableLayout" since="1">
-		<extends name="android/widget/LinearLayout" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="generateLayoutParams(Landroid/util/AttributeSet;)Landroid/widget/TableLayout$LayoutParams;" />
-		<method name="isColumnCollapsed(I)Z" />
-		<method name="isColumnShrinkable(I)Z" />
-		<method name="isColumnStretchable(I)Z" />
-		<method name="isShrinkAllColumns()Z" />
-		<method name="isStretchAllColumns()Z" />
-		<method name="setColumnCollapsed(IZ)V" />
-		<method name="setColumnShrinkable(IZ)V" />
-		<method name="setColumnStretchable(IZ)V" />
-		<method name="setShrinkAllColumns(Z)V" />
-		<method name="setStretchAllColumns(Z)V" />
-	</class>
-	<class name="android/widget/TableLayout$LayoutParams" since="1">
-		<extends name="android/widget/LinearLayout$LayoutParams" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(II)V" />
-		<method name="&lt;init>(IIF)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/view/ViewGroup$LayoutParams;)V" />
-		<method name="&lt;init>(Landroid/view/ViewGroup$MarginLayoutParams;)V" />
-	</class>
-	<class name="android/widget/TableRow" since="1">
-		<extends name="android/widget/LinearLayout" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="generateLayoutParams(Landroid/util/AttributeSet;)Landroid/widget/TableRow$LayoutParams;" />
-		<method name="getVirtualChildAt(I)Landroid/view/View;" />
-		<method name="getVirtualChildCount()I" />
-	</class>
-	<class name="android/widget/TableRow$LayoutParams" since="1">
-		<extends name="android/widget/LinearLayout$LayoutParams" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(I)V" />
-		<method name="&lt;init>(II)V" />
-		<method name="&lt;init>(IIF)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/view/ViewGroup$LayoutParams;)V" />
-		<method name="&lt;init>(Landroid/view/ViewGroup$MarginLayoutParams;)V" />
-		<field name="column" />
-		<field name="span" />
-	</class>
-	<class name="android/widget/TextClock" since="17">
-		<extends name="android/widget/TextView" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-		<method name="getFormat12Hour()Ljava/lang/CharSequence;" />
-		<method name="getFormat24Hour()Ljava/lang/CharSequence;" />
-		<method name="getTimeZone()Ljava/lang/String;" />
-		<method name="is24HourModeEnabled()Z" />
-		<method name="setFormat12Hour(Ljava/lang/CharSequence;)V" />
-		<method name="setFormat24Hour(Ljava/lang/CharSequence;)V" />
-		<method name="setTimeZone(Ljava/lang/String;)V" />
-		<field name="DEFAULT_FORMAT_12_HOUR" />
-		<field name="DEFAULT_FORMAT_24_HOUR" />
-	</class>
-	<class name="android/widget/TextSwitcher" since="1">
-		<extends name="android/widget/ViewSwitcher" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="setCurrentText(Ljava/lang/CharSequence;)V" />
-		<method name="setText(Ljava/lang/CharSequence;)V" />
-	</class>
-	<class name="android/widget/TextView" since="1">
-		<extends name="android/view/View" />
-		<implements name="android/view/ViewTreeObserver$OnPreDrawListener" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-		<method name="addTextChangedListener(Landroid/text/TextWatcher;)V" />
-		<method name="append(Ljava/lang/CharSequence;)V" />
-		<method name="append(Ljava/lang/CharSequence;II)V" />
-		<method name="beginBatchEdit()V" since="3" />
-		<method name="bringPointIntoView(I)Z" since="3" />
-		<method name="clearComposingText()V" since="3" />
-		<method name="debug(I)V" />
-		<method name="didTouchFocusSelect()Z" since="3" />
-		<method name="endBatchEdit()V" since="3" />
-		<method name="extractText(Landroid/view/inputmethod/ExtractedTextRequest;Landroid/view/inputmethod/ExtractedText;)Z" since="3" />
-		<method name="getAutoLinkMask()I" />
-		<method name="getCompoundDrawablePadding()I" />
-		<method name="getCompoundDrawables()[Landroid/graphics/drawable/Drawable;" />
-		<method name="getCompoundDrawablesRelative()[Landroid/graphics/drawable/Drawable;" since="17" />
-		<method name="getCompoundPaddingBottom()I" />
-		<method name="getCompoundPaddingEnd()I" since="17" />
-		<method name="getCompoundPaddingLeft()I" />
-		<method name="getCompoundPaddingRight()I" />
-		<method name="getCompoundPaddingStart()I" since="17" />
-		<method name="getCompoundPaddingTop()I" />
-		<method name="getCurrentHintTextColor()I" />
-		<method name="getCurrentTextColor()I" />
-		<method name="getCustomSelectionActionModeCallback()Landroid/view/ActionMode$Callback;" since="11" />
-		<method name="getDefaultEditable()Z" />
-		<method name="getDefaultMovementMethod()Landroid/text/method/MovementMethod;" />
-		<method name="getEditableText()Landroid/text/Editable;" since="3" />
-		<method name="getEllipsize()Landroid/text/TextUtils$TruncateAt;" />
-		<method name="getError()Ljava/lang/CharSequence;" />
-		<method name="getExtendedPaddingBottom()I" />
-		<method name="getExtendedPaddingTop()I" />
-		<method name="getFilters()[Landroid/text/InputFilter;" />
-		<method name="getFreezesText()Z" />
-		<method name="getGravity()I" />
-		<method name="getHighlightColor()I" since="16" />
-		<method name="getHint()Ljava/lang/CharSequence;" />
-		<method name="getHintTextColors()Landroid/content/res/ColorStateList;" />
-		<method name="getImeActionId()I" since="3" />
-		<method name="getImeActionLabel()Ljava/lang/CharSequence;" since="3" />
-		<method name="getImeOptions()I" since="3" />
-		<method name="getIncludeFontPadding()Z" since="16" />
-		<method name="getInputExtras(Z)Landroid/os/Bundle;" since="3" />
-		<method name="getInputType()I" since="3" />
-		<method name="getKeyListener()Landroid/text/method/KeyListener;" />
-		<method name="getLayout()Landroid/text/Layout;" />
-		<method name="getLineBounds(ILandroid/graphics/Rect;)I" />
-		<method name="getLineCount()I" />
-		<method name="getLineHeight()I" />
-		<method name="getLineSpacingExtra()F" since="16" />
-		<method name="getLineSpacingMultiplier()F" since="16" />
-		<method name="getLinkTextColors()Landroid/content/res/ColorStateList;" />
-		<method name="getLinksClickable()Z" />
-		<method name="getMarqueeRepeatLimit()I" since="16" />
-		<method name="getMaxEms()I" since="16" />
-		<method name="getMaxHeight()I" since="16" />
-		<method name="getMaxLines()I" since="16" />
-		<method name="getMaxWidth()I" since="16" />
-		<method name="getMinEms()I" since="16" />
-		<method name="getMinHeight()I" since="16" />
-		<method name="getMinLines()I" since="16" />
-		<method name="getMinWidth()I" since="16" />
-		<method name="getMovementMethod()Landroid/text/method/MovementMethod;" />
-		<method name="getOffsetForPosition(FF)I" since="14" />
-		<method name="getPaint()Landroid/text/TextPaint;" />
-		<method name="getPaintFlags()I" />
-		<method name="getPrivateImeOptions()Ljava/lang/String;" since="3" />
-		<method name="getSelectionEnd()I" />
-		<method name="getSelectionStart()I" />
-		<method name="getShadowColor()I" since="16" />
-		<method name="getShadowDx()F" since="16" />
-		<method name="getShadowDy()F" since="16" />
-		<method name="getShadowRadius()F" since="16" />
-		<method name="getText()Ljava/lang/CharSequence;" />
-		<method name="getTextColor(Landroid/content/Context;Landroid/content/res/TypedArray;I)I" />
-		<method name="getTextColors()Landroid/content/res/ColorStateList;" />
-		<method name="getTextColors(Landroid/content/Context;Landroid/content/res/TypedArray;)Landroid/content/res/ColorStateList;" />
-		<method name="getTextLocale()Ljava/util/Locale;" since="17" />
-		<method name="getTextScaleX()F" />
-		<method name="getTextSize()F" />
-		<method name="getTotalPaddingBottom()I" />
-		<method name="getTotalPaddingEnd()I" since="17" />
-		<method name="getTotalPaddingLeft()I" />
-		<method name="getTotalPaddingRight()I" />
-		<method name="getTotalPaddingStart()I" since="17" />
-		<method name="getTotalPaddingTop()I" />
-		<method name="getTransformationMethod()Landroid/text/method/TransformationMethod;" />
-		<method name="getTypeface()Landroid/graphics/Typeface;" />
-		<method name="getUrls()[Landroid/text/style/URLSpan;" />
-		<method name="hasSelection()Z" />
-		<method name="isCursorVisible()Z" since="16" />
-		<method name="isInputMethodTarget()Z" since="3" />
-		<method name="isSuggestionsEnabled()Z" since="14" />
-		<method name="isTextSelectable()Z" since="11" />
-		<method name="length()I" />
-		<method name="moveCursorToVisibleOffset()Z" since="3" />
-		<method name="onBeginBatchEdit()V" since="3" />
-		<method name="onCommitCompletion(Landroid/view/inputmethod/CompletionInfo;)V" since="3" />
-		<method name="onCommitCorrection(Landroid/view/inputmethod/CorrectionInfo;)V" since="11" />
-		<method name="onEditorAction(I)V" since="3" />
-		<method name="onEndBatchEdit()V" since="3" />
-		<method name="onPrivateIMECommand(Ljava/lang/String;Landroid/os/Bundle;)Z" since="3" />
-		<method name="onSelectionChanged(II)V" since="3" />
-		<method name="onTextChanged(Ljava/lang/CharSequence;III)V" />
-		<method name="onTextContextMenuItem(I)Z" since="3" />
-		<method name="removeTextChangedListener(Landroid/text/TextWatcher;)V" />
-		<method name="resetResolvedDrawables()V" since="14" />
-		<method name="resetResolvedLayoutDirection()V" since="14" />
-		<method name="resolveDrawables()V" since="14" />
-		<method name="resolveTextDirection()V" since="14" />
-		<method name="setAllCaps(Z)V" since="14" />
-		<method name="setAutoLinkMask(I)V" />
-		<method name="setCompoundDrawablePadding(I)V" />
-		<method name="setCompoundDrawables(Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)V" />
-		<method name="setCompoundDrawablesRelative(Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)V" since="17" />
-		<method name="setCompoundDrawablesRelativeWithIntrinsicBounds(IIII)V" since="17" />
-		<method name="setCompoundDrawablesRelativeWithIntrinsicBounds(Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)V" since="17" />
-		<method name="setCompoundDrawablesWithIntrinsicBounds(IIII)V" since="3" />
-		<method name="setCompoundDrawablesWithIntrinsicBounds(Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)V" />
-		<method name="setCursorVisible(Z)V" />
-		<method name="setCustomSelectionActionModeCallback(Landroid/view/ActionMode$Callback;)V" since="11" />
-		<method name="setEditableFactory(Landroid/text/Editable$Factory;)V" />
-		<method name="setElegantTextHeight(Z)V" since="21" />
-		<method name="setEllipsize(Landroid/text/TextUtils$TruncateAt;)V" />
-		<method name="setEms(I)V" />
-		<method name="setError(Ljava/lang/CharSequence;)V" />
-		<method name="setError(Ljava/lang/CharSequence;Landroid/graphics/drawable/Drawable;)V" />
-		<method name="setExtractedText(Landroid/view/inputmethod/ExtractedText;)V" since="3" />
-		<method name="setFilters([Landroid/text/InputFilter;)V" />
-		<method name="setFrame(IIII)Z" />
-		<method name="setFreezesText(Z)V" />
-		<method name="setGravity(I)V" />
-		<method name="setHeight(I)V" />
-		<method name="setHighlightColor(I)V" />
-		<method name="setHint(I)V" />
-		<method name="setHint(Ljava/lang/CharSequence;)V" />
-		<method name="setHintTextColor(I)V" />
-		<method name="setHintTextColor(Landroid/content/res/ColorStateList;)V" />
-		<method name="setHorizontallyScrolling(Z)V" />
-		<method name="setImeActionLabel(Ljava/lang/CharSequence;I)V" since="3" />
-		<method name="setImeOptions(I)V" since="3" />
-		<method name="setIncludeFontPadding(Z)V" />
-		<method name="setInputExtras(I)V" since="3" />
-		<method name="setInputType(I)V" since="3" />
-		<method name="setKeyListener(Landroid/text/method/KeyListener;)V" />
-		<method name="setLineSpacing(FF)V" />
-		<method name="setLines(I)V" />
-		<method name="setLinkTextColor(I)V" />
-		<method name="setLinkTextColor(Landroid/content/res/ColorStateList;)V" />
-		<method name="setLinksClickable(Z)V" />
-		<method name="setMarqueeRepeatLimit(I)V" since="2" />
-		<method name="setMaxEms(I)V" />
-		<method name="setMaxHeight(I)V" />
-		<method name="setMaxLines(I)V" />
-		<method name="setMaxWidth(I)V" />
-		<method name="setMinEms(I)V" />
-		<method name="setMinHeight(I)V" />
-		<method name="setMinLines(I)V" />
-		<method name="setMinWidth(I)V" />
-		<method name="setMovementMethod(Landroid/text/method/MovementMethod;)V" />
-		<method name="setOnEditorActionListener(Landroid/widget/TextView$OnEditorActionListener;)V" since="3" />
-		<method name="setPaddingRelative(IIII)V" since="16" />
-		<method name="setPaintFlags(I)V" />
-		<method name="setPrivateImeOptions(Ljava/lang/String;)V" since="3" />
-		<method name="setRawInputType(I)V" since="3" />
-		<method name="setScroller(Landroid/widget/Scroller;)V" />
-		<method name="setSelectAllOnFocus(Z)V" />
-		<method name="setShadowLayer(FFFI)V" />
-		<method name="setSingleLine()V" />
-		<method name="setSingleLine(Z)V" />
-		<method name="setSpannableFactory(Landroid/text/Spannable$Factory;)V" />
-		<method name="setText(I)V" />
-		<method name="setText(ILandroid/widget/TextView$BufferType;)V" />
-		<method name="setText(Ljava/lang/CharSequence;)V" />
-		<method name="setText(Ljava/lang/CharSequence;Landroid/widget/TextView$BufferType;)V" />
-		<method name="setText([CII)V" />
-		<method name="setTextAppearance(Landroid/content/Context;I)V" />
-		<method name="setTextColor(I)V" />
-		<method name="setTextColor(Landroid/content/res/ColorStateList;)V" />
-		<method name="setTextIsSelectable(Z)V" since="11" />
-		<method name="setTextKeepState(Ljava/lang/CharSequence;)V" />
-		<method name="setTextKeepState(Ljava/lang/CharSequence;Landroid/widget/TextView$BufferType;)V" />
-		<method name="setTextLocale(Ljava/util/Locale;)V" since="17" />
-		<method name="setTextScaleX(F)V" />
-		<method name="setTextSize(F)V" />
-		<method name="setTextSize(IF)V" />
-		<method name="setTransformationMethod(Landroid/text/method/TransformationMethod;)V" />
-		<method name="setTypeface(Landroid/graphics/Typeface;)V" />
-		<method name="setTypeface(Landroid/graphics/Typeface;I)V" />
-		<method name="setWidth(I)V" />
-	</class>
-	<class name="android/widget/TextView$BufferType" since="1">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Landroid/widget/TextView$BufferType;" />
-		<method name="values()[Landroid/widget/TextView$BufferType;" />
-		<field name="EDITABLE" />
-		<field name="NORMAL" />
-		<field name="SPANNABLE" />
-	</class>
-	<class name="android/widget/TextView$OnEditorActionListener" since="3">
-		<extends name="java/lang/Object" />
-		<method name="onEditorAction(Landroid/widget/TextView;ILandroid/view/KeyEvent;)Z" />
-	</class>
-	<class name="android/widget/TextView$SavedState" since="1">
-		<extends name="android/view/View$BaseSavedState" />
-		<method name="&lt;init>()V" />
-		<field name="CREATOR" />
-	</class>
-	<class name="android/widget/TimePicker" since="1">
-		<extends name="android/widget/FrameLayout" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-		<method name="getCurrentHour()Ljava/lang/Integer;" />
-		<method name="getCurrentMinute()Ljava/lang/Integer;" />
-		<method name="is24HourView()Z" />
-		<method name="setCurrentHour(Ljava/lang/Integer;)V" />
-		<method name="setCurrentMinute(Ljava/lang/Integer;)V" />
-		<method name="setIs24HourView(Ljava/lang/Boolean;)V" />
-		<method name="setOnTimeChangedListener(Landroid/widget/TimePicker$OnTimeChangedListener;)V" />
-	</class>
-	<class name="android/widget/TimePicker$OnTimeChangedListener" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onTimeChanged(Landroid/widget/TimePicker;II)V" />
-	</class>
-	<class name="android/widget/Toast" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="cancel()V" />
-		<method name="getDuration()I" />
-		<method name="getGravity()I" />
-		<method name="getHorizontalMargin()F" />
-		<method name="getVerticalMargin()F" />
-		<method name="getView()Landroid/view/View;" />
-		<method name="getXOffset()I" />
-		<method name="getYOffset()I" />
-		<method name="makeText(Landroid/content/Context;II)Landroid/widget/Toast;" />
-		<method name="makeText(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast;" />
-		<method name="setDuration(I)V" />
-		<method name="setGravity(III)V" />
-		<method name="setMargin(FF)V" />
-		<method name="setText(I)V" />
-		<method name="setText(Ljava/lang/CharSequence;)V" />
-		<method name="setView(Landroid/view/View;)V" />
-		<method name="show()V" />
-		<field name="LENGTH_LONG" />
-		<field name="LENGTH_SHORT" />
-	</class>
-	<class name="android/widget/ToggleButton" since="1">
-		<extends name="android/widget/CompoundButton" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-		<method name="getTextOff()Ljava/lang/CharSequence;" />
-		<method name="getTextOn()Ljava/lang/CharSequence;" />
-		<method name="setTextOff(Ljava/lang/CharSequence;)V" />
-		<method name="setTextOn(Ljava/lang/CharSequence;)V" />
-	</class>
-	<class name="android/widget/Toolbar" since="21">
-		<extends name="android/view/ViewGroup" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" />
-		<method name="collapseActionView()V" />
-		<method name="dismissPopupMenus()V" />
-		<method name="generateDefaultLayoutParams()Landroid/widget/Toolbar$LayoutParams;" />
-		<method name="generateLayoutParams(Landroid/util/AttributeSet;)Landroid/widget/Toolbar$LayoutParams;" />
-		<method name="generateLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Landroid/widget/Toolbar$LayoutParams;" />
-		<method name="getContentInsetEnd()I" />
-		<method name="getContentInsetLeft()I" />
-		<method name="getContentInsetRight()I" />
-		<method name="getContentInsetStart()I" />
-		<method name="getLogo()Landroid/graphics/drawable/Drawable;" />
-		<method name="getLogoDescription()Ljava/lang/CharSequence;" />
-		<method name="getMenu()Landroid/view/Menu;" />
-		<method name="getNavigationIcon()Landroid/graphics/drawable/Drawable;" />
-		<method name="getSubtitle()Ljava/lang/CharSequence;" />
-		<method name="getTitle()Ljava/lang/CharSequence;" />
-		<method name="hasExpandedActionView()Z" />
-		<method name="hideOverflowMenu()Z" />
-		<method name="inflateMenu(I)V" />
-		<method name="isOverflowMenuShowing()Z" />
-		<method name="setContentInsetsAbsolute(II)V" />
-		<method name="setContentInsetsRelative(II)V" />
-		<method name="setLogo(I)V" />
-		<method name="setLogo(Landroid/graphics/drawable/Drawable;)V" />
-		<method name="setLogoDescription(I)V" />
-		<method name="setLogoDescription(Ljava/lang/CharSequence;)V" />
-		<method name="setNavigationContentDescription(I)V" />
-		<method name="setNavigationContentDescription(Ljava/lang/CharSequence;)V" />
-		<method name="setNavigationDescription(I)V" />
-		<method name="setNavigationDescription(Ljava/lang/CharSequence;)V" />
-		<method name="setNavigationIcon(I)V" />
-		<method name="setNavigationIcon(Landroid/graphics/drawable/Drawable;)V" />
-		<method name="setNavigationOnClickListener(Landroid/view/View$OnClickListener;)V" />
-		<method name="setOnMenuItemClickListener(Landroid/widget/Toolbar$OnMenuItemClickListener;)V" />
-		<method name="setSubtitle(I)V" />
-		<method name="setSubtitle(Ljava/lang/CharSequence;)V" />
-		<method name="setSubtitleTextAppearance(Landroid/content/Context;I)V" />
-		<method name="setTitle(I)V" />
-		<method name="setTitle(Ljava/lang/CharSequence;)V" />
-		<method name="setTitleTextAppearance(Landroid/content/Context;I)V" />
-		<method name="showOverflowMenu()Z" />
-	</class>
-	<class name="android/widget/Toolbar$LayoutParams" since="21">
-		<extends name="android/app/ActionBar$LayoutParams" />
-		<method name="&lt;init>(I)V" />
-		<method name="&lt;init>(II)V" />
-		<method name="&lt;init>(III)V" />
-		<method name="&lt;init>(Landroid/app/ActionBar$LayoutParams;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/view/ViewGroup$LayoutParams;)V" />
-		<method name="&lt;init>(Landroid/view/ViewGroup$MarginLayoutParams;)V" />
-		<method name="&lt;init>(Landroid/widget/Toolbar$LayoutParams;)V" />
-	</class>
-	<class name="android/widget/Toolbar$OnMenuItemClickListener" since="21">
-		<extends name="java/lang/Object" />
-		<method name="onMenuItemClick(Landroid/view/MenuItem;)Z" />
-	</class>
-	<class name="android/widget/TwoLineListItem" since="1">
-		<extends name="android/widget/RelativeLayout" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-		<method name="getText1()Landroid/widget/TextView;" />
-		<method name="getText2()Landroid/widget/TextView;" />
-	</class>
-	<class name="android/widget/VideoView" since="1">
-		<extends name="android/view/SurfaceView" />
-		<implements name="android/widget/MediaController$MediaPlayerControl" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-		<method name="addSubtitleSource(Ljava/io/InputStream;Landroid/media/MediaFormat;)V" since="19" />
-		<method name="resolveAdjustedSize(II)I" />
-		<method name="resume()V" since="8" />
-		<method name="setMediaController(Landroid/widget/MediaController;)V" />
-		<method name="setOnCompletionListener(Landroid/media/MediaPlayer$OnCompletionListener;)V" />
-		<method name="setOnErrorListener(Landroid/media/MediaPlayer$OnErrorListener;)V" />
-		<method name="setOnInfoListener(Landroid/media/MediaPlayer$OnInfoListener;)V" since="17" />
-		<method name="setOnPreparedListener(Landroid/media/MediaPlayer$OnPreparedListener;)V" />
-		<method name="setVideoPath(Ljava/lang/String;)V" />
-		<method name="setVideoURI(Landroid/net/Uri;)V" />
-		<method name="stopPlayback()V" />
-		<method name="suspend()V" since="8" />
-	</class>
-	<class name="android/widget/ViewAnimator" since="1">
-		<extends name="android/widget/FrameLayout" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="getAnimateFirstView()Z" since="17" />
-		<method name="getCurrentView()Landroid/view/View;" />
-		<method name="getDisplayedChild()I" />
-		<method name="getInAnimation()Landroid/view/animation/Animation;" />
-		<method name="getOutAnimation()Landroid/view/animation/Animation;" />
-		<method name="setAnimateFirstView(Z)V" />
-		<method name="setDisplayedChild(I)V" />
-		<method name="setInAnimation(Landroid/content/Context;I)V" />
-		<method name="setInAnimation(Landroid/view/animation/Animation;)V" />
-		<method name="setOutAnimation(Landroid/content/Context;I)V" />
-		<method name="setOutAnimation(Landroid/view/animation/Animation;)V" />
-		<method name="showNext()V" />
-		<method name="showPrevious()V" />
-	</class>
-	<class name="android/widget/ViewFlipper" since="1">
-		<extends name="android/widget/ViewAnimator" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="isAutoStart()Z" since="7" />
-		<method name="isFlipping()Z" />
-		<method name="setAutoStart(Z)V" since="7" />
-		<method name="setFlipInterval(I)V" />
-		<method name="startFlipping()V" />
-		<method name="stopFlipping()V" />
-	</class>
-	<class name="android/widget/ViewSwitcher" since="1">
-		<extends name="android/widget/ViewAnimator" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="getNextView()Landroid/view/View;" />
-		<method name="reset()V" />
-		<method name="setFactory(Landroid/widget/ViewSwitcher$ViewFactory;)V" />
-	</class>
-	<class name="android/widget/ViewSwitcher$ViewFactory" since="1">
-		<extends name="java/lang/Object" />
-		<method name="makeView()Landroid/view/View;" />
-	</class>
-	<class name="android/widget/WrapperListAdapter" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/widget/ListAdapter" />
-		<method name="getWrappedAdapter()Landroid/widget/ListAdapter;" />
-	</class>
-	<class name="android/widget/ZoomButton" since="1">
-		<extends name="android/widget/ImageButton" />
-		<implements name="android/view/View$OnLongClickListener" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21" />
-		<method name="setZoomSpeed(J)V" />
-	</class>
-	<class name="android/widget/ZoomButtonsController" since="4">
-		<extends name="java/lang/Object" />
-		<implements name="android/view/View$OnTouchListener" />
-		<method name="&lt;init>(Landroid/view/View;)V" />
-		<method name="getContainer()Landroid/view/ViewGroup;" />
-		<method name="getZoomControls()Landroid/view/View;" />
-		<method name="isAutoDismissed()Z" />
-		<method name="isVisible()Z" />
-		<method name="setAutoDismissed(Z)V" />
-		<method name="setFocusable(Z)V" />
-		<method name="setOnZoomListener(Landroid/widget/ZoomButtonsController$OnZoomListener;)V" />
-		<method name="setVisible(Z)V" />
-		<method name="setZoomInEnabled(Z)V" />
-		<method name="setZoomOutEnabled(Z)V" />
-		<method name="setZoomSpeed(J)V" />
-	</class>
-	<class name="android/widget/ZoomButtonsController$OnZoomListener" since="4">
-		<extends name="java/lang/Object" />
-		<method name="onVisibilityChanged(Z)V" />
-		<method name="onZoom(Z)V" />
-	</class>
-	<class name="android/widget/ZoomControls" since="1">
-		<extends name="android/widget/LinearLayout" />
-		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="hide()V" />
-		<method name="setIsZoomInEnabled(Z)V" />
-		<method name="setIsZoomOutEnabled(Z)V" />
-		<method name="setOnZoomInClickListener(Landroid/view/View$OnClickListener;)V" />
-		<method name="setOnZoomOutClickListener(Landroid/view/View$OnClickListener;)V" />
-		<method name="setZoomSpeed(J)V" />
-		<method name="show()V" />
-	</class>
-	<class name="com/android/internal/util/Predicate" since="1">
-		<extends name="java/lang/Object" />
-		<method name="apply(Ljava/lang/Object;)Z" />
-	</class>
-	<class name="com/google/android/maps/GeoPoint" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(II)V" />
-		<method name="getLatitudeE6()I" />
-		<method name="getLongitudeE6()I" />
-	</class>
-	<class name="com/google/android/maps/ItemizedOverlay" since="1">
-		<extends name="com/google/android/maps/Overlay" />
-		<method name="&lt;init>(Landroid/graphics/drawable/Drawable;)V" />
-		<method name="boundCenter(Landroid/graphics/drawable/Drawable;)Landroid/graphics/drawable/Drawable;" />
-		<method name="boundCenterBottom(Landroid/graphics/drawable/Drawable;)Landroid/graphics/drawable/Drawable;" />
-		<method name="createItem(I)Lcom/google/android/maps/OverlayItem;" />
-		<method name="getCenter()Lcom/google/android/maps/GeoPoint;" />
-		<method name="getFocus()Lcom/google/android/maps/OverlayItem;" />
-		<method name="getIndexToDraw(I)I" />
-		<method name="getItem(I)Lcom/google/android/maps/OverlayItem;" />
-		<method name="getLastFocusedIndex()I" />
-		<method name="getLatSpanE6()I" />
-		<method name="getLonSpanE6()I" />
-		<method name="hitTest(Lcom/google/android/maps/OverlayItem;Landroid/graphics/drawable/Drawable;II)Z" />
-		<method name="nextFocus(Z)Lcom/google/android/maps/OverlayItem;" />
-		<method name="onTap(I)Z" />
-		<method name="populate()V" />
-		<method name="setDrawFocusedItem(Z)V" />
-		<method name="setFocus(Lcom/google/android/maps/OverlayItem;)V" />
-		<method name="setLastFocusedIndex(I)V" />
-		<method name="setOnFocusChangeListener(Lcom/google/android/maps/ItemizedOverlay$OnFocusChangeListener;)V" />
-		<method name="size()I" />
-	</class>
-	<class name="com/google/android/maps/ItemizedOverlay$OnFocusChangeListener" since="1">
-		<extends name="java/lang/Object" />
-		<method name="onFocusChanged(Lcom/google/android/maps/ItemizedOverlay;Lcom/google/android/maps/OverlayItem;)V" />
-	</class>
-	<class name="com/google/android/maps/MapActivity" since="1">
-		<extends name="android/app/Activity" />
-		<method name="&lt;init>()V" />
-		<method name="isLocationDisplayed()Z" />
-		<method name="isRouteDisplayed()Z" />
-	</class>
-	<class name="com/google/android/maps/MapController" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="android/view/View$OnKeyListener" />
-		<method name="&lt;init>()V" />
-		<method name="animateTo(Lcom/google/android/maps/GeoPoint;)V" />
-		<method name="animateTo(Lcom/google/android/maps/GeoPoint;Landroid/os/Message;)V" />
-		<method name="animateTo(Lcom/google/android/maps/GeoPoint;Ljava/lang/Runnable;)V" />
-		<method name="scrollBy(II)V" />
-		<method name="setCenter(Lcom/google/android/maps/GeoPoint;)V" />
-		<method name="setZoom(I)I" />
-		<method name="stopAnimation(Z)V" />
-		<method name="stopPanning()V" />
-		<method name="zoomIn()Z" />
-		<method name="zoomInFixing(II)Z" />
-		<method name="zoomOut()Z" />
-		<method name="zoomOutFixing(II)Z" />
-		<method name="zoomToSpan(II)V" />
-	</class>
-	<class name="com/google/android/maps/MapView" since="1">
-		<extends name="android/view/ViewGroup" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
-		<method name="&lt;init>(Landroid/content/Context;Ljava/lang/String;)V" />
-		<method name="canCoverCenter()Z" />
-		<method name="displayZoomControls(Z)V" />
-		<method name="generateDefaultLayoutParams()Lcom/google/android/maps/MapView$LayoutParams;" />
-		<method name="getController()Lcom/google/android/maps/MapController;" />
-		<method name="getLatitudeSpan()I" />
-		<method name="getLongitudeSpan()I" />
-		<method name="getMapCenter()Lcom/google/android/maps/GeoPoint;" />
-		<method name="getMaxZoomLevel()I" />
-		<method name="getOverlays()Ljava/util/List;" />
-		<method name="getProjection()Lcom/google/android/maps/Projection;" />
-		<method name="getZoomControls()Landroid/view/View;" />
-		<method name="getZoomLevel()I" />
-		<method name="isSatellite()Z" />
-		<method name="isStreetView()Z" />
-		<method name="isTraffic()Z" />
-		<method name="onRestoreInstanceState(Landroid/os/Bundle;)V" />
-		<method name="onSaveInstanceState(Landroid/os/Bundle;)V" />
-		<method name="preLoad()V" />
-		<method name="setReticleDrawMode(Lcom/google/android/maps/MapView$ReticleDrawMode;)V" />
-		<method name="setSatellite(Z)V" />
-		<method name="setStreetView(Z)V" />
-		<method name="setTraffic(Z)V" />
-	</class>
-	<class name="com/google/android/maps/MapView$LayoutParams" since="1">
-		<extends name="android/view/ViewGroup$LayoutParams" />
-		<method name="&lt;init>(IIIII)V" />
-		<method name="&lt;init>(IILcom/google/android/maps/GeoPoint;I)V" />
-		<method name="&lt;init>(IILcom/google/android/maps/GeoPoint;III)V" />
-		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="&lt;init>(Landroid/view/ViewGroup$LayoutParams;)V" />
-		<method name="debug(Ljava/lang/String;)Ljava/lang/String;" />
-		<field name="BOTTOM" />
-		<field name="BOTTOM_CENTER" />
-		<field name="CENTER" />
-		<field name="CENTER_HORIZONTAL" />
-		<field name="CENTER_VERTICAL" />
-		<field name="LEFT" />
-		<field name="MODE_MAP" />
-		<field name="MODE_VIEW" />
-		<field name="RIGHT" />
-		<field name="TOP" />
-		<field name="TOP_LEFT" />
-		<field name="alignment" />
-		<field name="mode" />
-		<field name="point" />
-		<field name="x" />
-		<field name="y" />
-	</class>
-	<class name="com/google/android/maps/MapView$ReticleDrawMode" since="1">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Lcom/google/android/maps/MapView$ReticleDrawMode;" />
-		<method name="values()[Lcom/google/android/maps/MapView$ReticleDrawMode;" />
-		<field name="DRAW_RETICLE_NEVER" />
-		<field name="DRAW_RETICLE_OVER" />
-		<field name="DRAW_RETICLE_UNDER" />
-	</class>
-	<class name="com/google/android/maps/MyLocationOverlay" since="1">
-		<extends name="com/google/android/maps/Overlay" />
-		<implements name="android/hardware/SensorListener" />
-		<implements name="android/location/LocationListener" />
-		<method name="&lt;init>(Landroid/content/Context;Lcom/google/android/maps/MapView;)V" />
-		<method name="disableCompass()V" />
-		<method name="disableMyLocation()V" />
-		<method name="dispatchTap()Z" />
-		<method name="drawCompass(Landroid/graphics/Canvas;F)V" />
-		<method name="drawMyLocation(Landroid/graphics/Canvas;Lcom/google/android/maps/MapView;Landroid/location/Location;Lcom/google/android/maps/GeoPoint;J)V" />
-		<method name="enableCompass()Z" />
-		<method name="enableMyLocation()Z" />
-		<method name="getLastFix()Landroid/location/Location;" />
-		<method name="getMyLocation()Lcom/google/android/maps/GeoPoint;" />
-		<method name="getOrientation()F" />
-		<method name="isCompassEnabled()Z" />
-		<method name="isMyLocationEnabled()Z" />
-		<method name="runOnFirstFix(Ljava/lang/Runnable;)Z" />
-	</class>
-	<class name="com/google/android/maps/Overlay" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="draw(Landroid/graphics/Canvas;Lcom/google/android/maps/MapView;Z)V" />
-		<method name="draw(Landroid/graphics/Canvas;Lcom/google/android/maps/MapView;ZJ)Z" />
-		<method name="drawAt(Landroid/graphics/Canvas;Landroid/graphics/drawable/Drawable;IIZ)V" />
-		<method name="onKeyDown(ILandroid/view/KeyEvent;Lcom/google/android/maps/MapView;)Z" />
-		<method name="onKeyUp(ILandroid/view/KeyEvent;Lcom/google/android/maps/MapView;)Z" />
-		<method name="onTap(Lcom/google/android/maps/GeoPoint;Lcom/google/android/maps/MapView;)Z" />
-		<method name="onTouchEvent(Landroid/view/MotionEvent;Lcom/google/android/maps/MapView;)Z" />
-		<method name="onTrackballEvent(Landroid/view/MotionEvent;Lcom/google/android/maps/MapView;)Z" />
-		<field name="SHADOW_X_SKEW" />
-		<field name="SHADOW_Y_SCALE" />
-	</class>
-	<class name="com/google/android/maps/OverlayItem" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Lcom/google/android/maps/GeoPoint;Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="getMarker(I)Landroid/graphics/drawable/Drawable;" />
-		<method name="getPoint()Lcom/google/android/maps/GeoPoint;" />
-		<method name="getSnippet()Ljava/lang/String;" />
-		<method name="getTitle()Ljava/lang/String;" />
-		<method name="routableAddress()Ljava/lang/String;" />
-		<method name="setMarker(Landroid/graphics/drawable/Drawable;)V" />
-		<method name="setState(Landroid/graphics/drawable/Drawable;I)V" />
-		<field name="ITEM_STATE_FOCUSED_MASK" />
-		<field name="ITEM_STATE_PRESSED_MASK" />
-		<field name="ITEM_STATE_SELECTED_MASK" />
-		<field name="mMarker" />
-		<field name="mPoint" />
-		<field name="mSnippet" />
-		<field name="mTitle" />
-	</class>
-	<class name="com/google/android/maps/Projection" since="1">
-		<extends name="java/lang/Object" />
-		<method name="fromPixels(II)Lcom/google/android/maps/GeoPoint;" />
-		<method name="metersToEquatorPixels(F)F" />
-		<method name="toPixels(Lcom/google/android/maps/GeoPoint;Landroid/graphics/Point;)Landroid/graphics/Point;" />
-	</class>
-	<class name="com/google/android/maps/TrackballGestureDetector" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="analyze(Landroid/view/MotionEvent;)V" />
-		<method name="getCurrentDownX()F" />
-		<method name="getCurrentDownY()F" />
-		<method name="getFirstDownX()F" />
-		<method name="getFirstDownY()F" />
-		<method name="isDoubleTap()Z" />
-		<method name="isScroll()Z" />
-		<method name="isTap()Z" />
-		<method name="registerLongPressCallback(Ljava/lang/Runnable;)V" />
-		<method name="scrollX()F" />
-		<method name="scrollY()F" />
-	</class>
-	<class name="dalvik/annotation/TestTarget" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/annotation/Annotation" />
-		<method name="conceptName()Ljava/lang/String;" since="3" />
-		<method name="methodArgs()[Ljava/lang/Class;" />
-		<method name="methodName()Ljava/lang/String;" />
-	</class>
-	<class name="dalvik/annotation/TestTargetClass" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/annotation/Annotation" />
-		<method name="value()Ljava/lang/Class;" />
-	</class>
-	<class name="dalvik/bytecode/OpcodeInfo" since="11">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="MAXIMUM_PACKED_VALUE" />
-		<field name="MAXIMUM_VALUE" />
-	</class>
-	<class name="dalvik/bytecode/Opcodes" since="1">
-		<extends name="java/lang/Object" />
-		<field name="OP_ADD_DOUBLE" />
-		<field name="OP_ADD_DOUBLE_2ADDR" />
-		<field name="OP_ADD_FLOAT" />
-		<field name="OP_ADD_FLOAT_2ADDR" />
-		<field name="OP_ADD_INT" />
-		<field name="OP_ADD_INT_2ADDR" />
-		<field name="OP_ADD_INT_LIT16" />
-		<field name="OP_ADD_INT_LIT8" />
-		<field name="OP_ADD_LONG" />
-		<field name="OP_ADD_LONG_2ADDR" />
-		<field name="OP_AGET" />
-		<field name="OP_AGET_BOOLEAN" />
-		<field name="OP_AGET_BYTE" />
-		<field name="OP_AGET_CHAR" />
-		<field name="OP_AGET_OBJECT" />
-		<field name="OP_AGET_SHORT" />
-		<field name="OP_AGET_WIDE" />
-		<field name="OP_AND_INT" />
-		<field name="OP_AND_INT_2ADDR" />
-		<field name="OP_AND_INT_LIT16" />
-		<field name="OP_AND_INT_LIT8" />
-		<field name="OP_AND_LONG" />
-		<field name="OP_AND_LONG_2ADDR" />
-		<field name="OP_APUT" />
-		<field name="OP_APUT_BOOLEAN" />
-		<field name="OP_APUT_BYTE" />
-		<field name="OP_APUT_CHAR" />
-		<field name="OP_APUT_OBJECT" />
-		<field name="OP_APUT_SHORT" />
-		<field name="OP_APUT_WIDE" />
-		<field name="OP_ARRAY_LENGTH" />
-		<field name="OP_BREAKPOINT" since="8" />
-		<field name="OP_CHECK_CAST" />
-		<field name="OP_CHECK_CAST_JUMBO" since="11" />
-		<field name="OP_CMPG_DOUBLE" />
-		<field name="OP_CMPG_FLOAT" />
-		<field name="OP_CMPL_DOUBLE" />
-		<field name="OP_CMPL_FLOAT" />
-		<field name="OP_CMP_LONG" />
-		<field name="OP_CONST" />
-		<field name="OP_CONST_16" />
-		<field name="OP_CONST_4" />
-		<field name="OP_CONST_CLASS" />
-		<field name="OP_CONST_CLASS_JUMBO" since="11" />
-		<field name="OP_CONST_HIGH16" />
-		<field name="OP_CONST_STRING" />
-		<field name="OP_CONST_STRING_JUMBO" />
-		<field name="OP_CONST_WIDE" />
-		<field name="OP_CONST_WIDE_16" />
-		<field name="OP_CONST_WIDE_32" />
-		<field name="OP_CONST_WIDE_HIGH16" />
-		<field name="OP_DIV_DOUBLE" />
-		<field name="OP_DIV_DOUBLE_2ADDR" />
-		<field name="OP_DIV_FLOAT" />
-		<field name="OP_DIV_FLOAT_2ADDR" />
-		<field name="OP_DIV_INT" />
-		<field name="OP_DIV_INT_2ADDR" />
-		<field name="OP_DIV_INT_LIT16" />
-		<field name="OP_DIV_INT_LIT8" />
-		<field name="OP_DIV_LONG" />
-		<field name="OP_DIV_LONG_2ADDR" />
-		<field name="OP_DOUBLE_TO_FLOAT" />
-		<field name="OP_DOUBLE_TO_INT" />
-		<field name="OP_DOUBLE_TO_LONG" />
-		<field name="OP_EXECUTE_INLINE" />
-		<field name="OP_EXECUTE_INLINE_RANGE" since="8" />
-		<field name="OP_FILLED_NEW_ARRAY" />
-		<field name="OP_FILLED_NEW_ARRAY_JUMBO" since="11" />
-		<field name="OP_FILLED_NEW_ARRAY_RANGE" />
-		<field name="OP_FILL_ARRAY_DATA" />
-		<field name="OP_FLOAT_TO_DOUBLE" />
-		<field name="OP_FLOAT_TO_INT" />
-		<field name="OP_FLOAT_TO_LONG" />
-		<field name="OP_GOTO" />
-		<field name="OP_GOTO_16" />
-		<field name="OP_GOTO_32" />
-		<field name="OP_IF_EQ" />
-		<field name="OP_IF_EQZ" />
-		<field name="OP_IF_GE" />
-		<field name="OP_IF_GEZ" />
-		<field name="OP_IF_GT" />
-		<field name="OP_IF_GTZ" />
-		<field name="OP_IF_LE" />
-		<field name="OP_IF_LEZ" />
-		<field name="OP_IF_LT" />
-		<field name="OP_IF_LTZ" />
-		<field name="OP_IF_NE" />
-		<field name="OP_IF_NEZ" />
-		<field name="OP_IGET" />
-		<field name="OP_IGET_BOOLEAN" />
-		<field name="OP_IGET_BOOLEAN_JUMBO" since="11" />
-		<field name="OP_IGET_BYTE" />
-		<field name="OP_IGET_BYTE_JUMBO" since="11" />
-		<field name="OP_IGET_CHAR" />
-		<field name="OP_IGET_CHAR_JUMBO" since="11" />
-		<field name="OP_IGET_JUMBO" since="11" />
-		<field name="OP_IGET_OBJECT" />
-		<field name="OP_IGET_OBJECT_JUMBO" since="11" />
-		<field name="OP_IGET_OBJECT_QUICK" />
-		<field name="OP_IGET_QUICK" />
-		<field name="OP_IGET_SHORT" />
-		<field name="OP_IGET_SHORT_JUMBO" since="11" />
-		<field name="OP_IGET_WIDE" />
-		<field name="OP_IGET_WIDE_JUMBO" since="11" />
-		<field name="OP_IGET_WIDE_QUICK" />
-		<field name="OP_IGET_WIDE_VOLATILE" since="9" />
-		<field name="OP_INSTANCE_OF" />
-		<field name="OP_INSTANCE_OF_JUMBO" since="11" />
-		<field name="OP_INT_TO_BYTE" />
-		<field name="OP_INT_TO_CHAR" />
-		<field name="OP_INT_TO_DOUBLE" />
-		<field name="OP_INT_TO_FLOAT" />
-		<field name="OP_INT_TO_LONG" />
-		<field name="OP_INT_TO_SHORT" />
-		<field name="OP_INVOKE_DIRECT" />
-		<field name="OP_INVOKE_DIRECT_EMPTY" />
-		<field name="OP_INVOKE_DIRECT_JUMBO" since="11" />
-		<field name="OP_INVOKE_DIRECT_RANGE" />
-		<field name="OP_INVOKE_INTERFACE" />
-		<field name="OP_INVOKE_INTERFACE_JUMBO" since="11" />
-		<field name="OP_INVOKE_INTERFACE_RANGE" />
-		<field name="OP_INVOKE_STATIC" />
-		<field name="OP_INVOKE_STATIC_JUMBO" since="11" />
-		<field name="OP_INVOKE_STATIC_RANGE" />
-		<field name="OP_INVOKE_SUPER" />
-		<field name="OP_INVOKE_SUPER_JUMBO" since="11" />
-		<field name="OP_INVOKE_SUPER_QUICK" />
-		<field name="OP_INVOKE_SUPER_QUICK_RANGE" />
-		<field name="OP_INVOKE_SUPER_RANGE" />
-		<field name="OP_INVOKE_VIRTUAL" />
-		<field name="OP_INVOKE_VIRTUAL_JUMBO" since="11" />
-		<field name="OP_INVOKE_VIRTUAL_QUICK" />
-		<field name="OP_INVOKE_VIRTUAL_QUICK_RANGE" />
-		<field name="OP_INVOKE_VIRTUAL_RANGE" />
-		<field name="OP_IPUT" />
-		<field name="OP_IPUT_BOOLEAN" />
-		<field name="OP_IPUT_BOOLEAN_JUMBO" since="11" />
-		<field name="OP_IPUT_BYTE" />
-		<field name="OP_IPUT_BYTE_JUMBO" since="11" />
-		<field name="OP_IPUT_CHAR" />
-		<field name="OP_IPUT_CHAR_JUMBO" since="11" />
-		<field name="OP_IPUT_JUMBO" since="11" />
-		<field name="OP_IPUT_OBJECT" />
-		<field name="OP_IPUT_OBJECT_JUMBO" since="11" />
-		<field name="OP_IPUT_OBJECT_QUICK" />
-		<field name="OP_IPUT_QUICK" />
-		<field name="OP_IPUT_SHORT" />
-		<field name="OP_IPUT_SHORT_JUMBO" since="11" />
-		<field name="OP_IPUT_WIDE" />
-		<field name="OP_IPUT_WIDE_JUMBO" since="11" />
-		<field name="OP_IPUT_WIDE_QUICK" />
-		<field name="OP_IPUT_WIDE_VOLATILE" since="9" />
-		<field name="OP_LONG_TO_DOUBLE" />
-		<field name="OP_LONG_TO_FLOAT" />
-		<field name="OP_LONG_TO_INT" />
-		<field name="OP_MONITOR_ENTER" />
-		<field name="OP_MONITOR_EXIT" />
-		<field name="OP_MOVE" />
-		<field name="OP_MOVE_16" />
-		<field name="OP_MOVE_EXCEPTION" />
-		<field name="OP_MOVE_FROM16" />
-		<field name="OP_MOVE_OBJECT" />
-		<field name="OP_MOVE_OBJECT_16" />
-		<field name="OP_MOVE_OBJECT_FROM16" />
-		<field name="OP_MOVE_RESULT" />
-		<field name="OP_MOVE_RESULT_OBJECT" />
-		<field name="OP_MOVE_RESULT_WIDE" />
-		<field name="OP_MOVE_WIDE" />
-		<field name="OP_MOVE_WIDE_16" />
-		<field name="OP_MOVE_WIDE_FROM16" />
-		<field name="OP_MUL_DOUBLE" />
-		<field name="OP_MUL_DOUBLE_2ADDR" />
-		<field name="OP_MUL_FLOAT" />
-		<field name="OP_MUL_FLOAT_2ADDR" />
-		<field name="OP_MUL_INT" />
-		<field name="OP_MUL_INT_2ADDR" />
-		<field name="OP_MUL_INT_LIT16" />
-		<field name="OP_MUL_INT_LIT8" />
-		<field name="OP_MUL_LONG" />
-		<field name="OP_MUL_LONG_2ADDR" />
-		<field name="OP_NEG_DOUBLE" />
-		<field name="OP_NEG_FLOAT" />
-		<field name="OP_NEG_INT" />
-		<field name="OP_NEG_LONG" />
-		<field name="OP_NEW_ARRAY" />
-		<field name="OP_NEW_ARRAY_JUMBO" since="11" />
-		<field name="OP_NEW_INSTANCE" />
-		<field name="OP_NEW_INSTANCE_JUMBO" since="11" />
-		<field name="OP_NOP" />
-		<field name="OP_NOT_INT" />
-		<field name="OP_NOT_LONG" />
-		<field name="OP_OR_INT" />
-		<field name="OP_OR_INT_2ADDR" />
-		<field name="OP_OR_INT_LIT16" />
-		<field name="OP_OR_INT_LIT8" />
-		<field name="OP_OR_LONG" />
-		<field name="OP_OR_LONG_2ADDR" />
-		<field name="OP_PACKED_SWITCH" />
-		<field name="OP_REM_DOUBLE" />
-		<field name="OP_REM_DOUBLE_2ADDR" />
-		<field name="OP_REM_FLOAT" />
-		<field name="OP_REM_FLOAT_2ADDR" />
-		<field name="OP_REM_INT" />
-		<field name="OP_REM_INT_2ADDR" />
-		<field name="OP_REM_INT_LIT16" />
-		<field name="OP_REM_INT_LIT8" />
-		<field name="OP_REM_LONG" />
-		<field name="OP_REM_LONG_2ADDR" />
-		<field name="OP_RETURN" />
-		<field name="OP_RETURN_OBJECT" />
-		<field name="OP_RETURN_VOID" />
-		<field name="OP_RETURN_WIDE" />
-		<field name="OP_RSUB_INT" />
-		<field name="OP_RSUB_INT_LIT8" />
-		<field name="OP_SGET" />
-		<field name="OP_SGET_BOOLEAN" />
-		<field name="OP_SGET_BOOLEAN_JUMBO" since="11" />
-		<field name="OP_SGET_BYTE" />
-		<field name="OP_SGET_BYTE_JUMBO" since="11" />
-		<field name="OP_SGET_CHAR" />
-		<field name="OP_SGET_CHAR_JUMBO" since="11" />
-		<field name="OP_SGET_JUMBO" since="11" />
-		<field name="OP_SGET_OBJECT" />
-		<field name="OP_SGET_OBJECT_JUMBO" since="11" />
-		<field name="OP_SGET_SHORT" />
-		<field name="OP_SGET_SHORT_JUMBO" since="11" />
-		<field name="OP_SGET_WIDE" />
-		<field name="OP_SGET_WIDE_JUMBO" since="11" />
-		<field name="OP_SGET_WIDE_VOLATILE" since="9" />
-		<field name="OP_SHL_INT" />
-		<field name="OP_SHL_INT_2ADDR" />
-		<field name="OP_SHL_INT_LIT8" />
-		<field name="OP_SHL_LONG" />
-		<field name="OP_SHL_LONG_2ADDR" />
-		<field name="OP_SHR_INT" />
-		<field name="OP_SHR_INT_2ADDR" />
-		<field name="OP_SHR_INT_LIT8" />
-		<field name="OP_SHR_LONG" />
-		<field name="OP_SHR_LONG_2ADDR" />
-		<field name="OP_SPARSE_SWITCH" />
-		<field name="OP_SPUT" />
-		<field name="OP_SPUT_BOOLEAN" />
-		<field name="OP_SPUT_BOOLEAN_JUMBO" since="11" />
-		<field name="OP_SPUT_BYTE" />
-		<field name="OP_SPUT_BYTE_JUMBO" since="11" />
-		<field name="OP_SPUT_CHAR" />
-		<field name="OP_SPUT_CHAR_JUMBO" since="11" />
-		<field name="OP_SPUT_JUMBO" since="11" />
-		<field name="OP_SPUT_OBJECT" />
-		<field name="OP_SPUT_OBJECT_JUMBO" since="11" />
-		<field name="OP_SPUT_SHORT" />
-		<field name="OP_SPUT_SHORT_JUMBO" since="11" />
-		<field name="OP_SPUT_WIDE" />
-		<field name="OP_SPUT_WIDE_JUMBO" since="11" />
-		<field name="OP_SPUT_WIDE_VOLATILE" since="9" />
-		<field name="OP_SUB_DOUBLE" />
-		<field name="OP_SUB_DOUBLE_2ADDR" />
-		<field name="OP_SUB_FLOAT" />
-		<field name="OP_SUB_FLOAT_2ADDR" />
-		<field name="OP_SUB_INT" />
-		<field name="OP_SUB_INT_2ADDR" />
-		<field name="OP_SUB_LONG" />
-		<field name="OP_SUB_LONG_2ADDR" />
-		<field name="OP_THROW" />
-		<field name="OP_THROW_VERIFICATION_ERROR" since="8" />
-		<field name="OP_UNUSED_3e" />
-		<field name="OP_UNUSED_3f" />
-		<field name="OP_UNUSED_40" />
-		<field name="OP_UNUSED_41" />
-		<field name="OP_UNUSED_42" />
-		<field name="OP_UNUSED_43" />
-		<field name="OP_UNUSED_73" />
-		<field name="OP_UNUSED_79" />
-		<field name="OP_UNUSED_7A" />
-		<field name="OP_UNUSED_E3" />
-		<field name="OP_UNUSED_E4" />
-		<field name="OP_UNUSED_E5" />
-		<field name="OP_UNUSED_E6" />
-		<field name="OP_UNUSED_E7" />
-		<field name="OP_UNUSED_E8" />
-		<field name="OP_UNUSED_E9" />
-		<field name="OP_UNUSED_EA" />
-		<field name="OP_UNUSED_EB" />
-		<field name="OP_UNUSED_EC" />
-		<field name="OP_UNUSED_ED" />
-		<field name="OP_UNUSED_EF" />
-		<field name="OP_UNUSED_F1" />
-		<field name="OP_UNUSED_FC" />
-		<field name="OP_UNUSED_FD" />
-		<field name="OP_UNUSED_FE" />
-		<field name="OP_UNUSED_FF" />
-		<field name="OP_USHR_INT" />
-		<field name="OP_USHR_INT_2ADDR" />
-		<field name="OP_USHR_INT_LIT8" />
-		<field name="OP_USHR_LONG" />
-		<field name="OP_USHR_LONG_2ADDR" />
-		<field name="OP_XOR_INT" />
-		<field name="OP_XOR_INT_2ADDR" />
-		<field name="OP_XOR_INT_LIT16" />
-		<field name="OP_XOR_INT_LIT8" />
-		<field name="OP_XOR_LONG" />
-		<field name="OP_XOR_LONG_2ADDR" />
-	</class>
-	<class name="dalvik/system/AllocationLimitError" since="1">
-		<extends name="java/lang/VirtualMachineError" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="dalvik/system/BaseDexClassLoader" since="14">
-		<extends name="java/lang/ClassLoader" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/io/File;Ljava/lang/String;Ljava/lang/ClassLoader;)V" />
-	</class>
-	<class name="dalvik/system/DexClassLoader" since="3">
-		<extends name="dalvik/system/BaseDexClassLoader" since="14" />
-		<extends name="java/lang/ClassLoader" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;)V" />
-	</class>
-	<class name="dalvik/system/DexFile" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/io/File;)V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="close()V" />
-		<method name="entries()Ljava/util/Enumeration;" />
-		<method name="getName()Ljava/lang/String;" />
-		<method name="isDexOptNeeded(Ljava/lang/String;)Z" />
-		<method name="loadClass(Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/lang/Class;" />
-		<method name="loadDex(Ljava/lang/String;Ljava/lang/String;I)Ldalvik/system/DexFile;" since="3" />
-	</class>
-	<class name="dalvik/system/PathClassLoader" since="1">
-		<extends name="dalvik/system/BaseDexClassLoader" since="14" />
-		<extends name="java/lang/ClassLoader" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/ClassLoader;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;)V" />
-	</class>
-	<class name="dalvik/system/PotentialDeadlockError" since="1">
-		<extends name="java/lang/VirtualMachineError" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="dalvik/system/StaleDexCacheError" since="1">
-		<extends name="java/lang/VirtualMachineError" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="dalvik/system/TemporaryDirectory" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="setUpDirectory(Ljava/io/File;)V" />
-		<method name="setUpDirectory(Ljava/lang/String;)V" />
-	</class>
-	<class name="dalvik/system/TouchDex" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="main([Ljava/lang/String;)V" />
-		<method name="start(Ljava/lang/String;)I" />
-	</class>
-	<class name="dalvik/system/VMDebug" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="dumpHprofData(Ljava/lang/String;)V" since="3" />
-		<method name="getAllocCount(I)I" />
-		<method name="getInstructionCount([I)V" />
-		<method name="getLoadedClassCount()I" />
-		<method name="isDebuggerConnected()Z" />
-		<method name="isDebuggingEnabled()Z" since="3" />
-		<method name="lastDebuggerActivity()J" />
-		<method name="printLoadedClasses(I)V" />
-		<method name="resetAllocCount(I)V" />
-		<method name="resetInstructionCount()V" />
-		<method name="setAllocationLimit(I)I" />
-		<method name="setGlobalAllocationLimit(I)I" />
-		<method name="startAllocCounting()V" />
-		<method name="startEmulatorTracing()V" />
-		<method name="startInstructionCounting()V" />
-		<method name="startMethodTracing()V" />
-		<method name="startMethodTracing(Ljava/lang/String;II)V" />
-		<method name="stopAllocCounting()V" />
-		<method name="stopEmulatorTracing()V" />
-		<method name="stopInstructionCounting()V" />
-		<method name="stopMethodTracing()V" />
-		<method name="threadCpuTimeNanos()J" />
-		<field name="DEFAULT_METHOD_TRACE_FILE_NAME" />
-		<field name="KIND_ALL_COUNTS" />
-		<field name="KIND_GLOBAL_ALLOCATED_BYTES" />
-		<field name="KIND_GLOBAL_ALLOCATED_OBJECTS" />
-		<field name="KIND_GLOBAL_CLASS_INIT_COUNT" since="8" />
-		<field name="KIND_GLOBAL_CLASS_INIT_TIME" since="8" />
-		<field name="KIND_GLOBAL_EXT_ALLOCATED_BYTES" />
-		<field name="KIND_GLOBAL_EXT_ALLOCATED_OBJECTS" />
-		<field name="KIND_GLOBAL_EXT_FREED_BYTES" />
-		<field name="KIND_GLOBAL_EXT_FREED_OBJECTS" />
-		<field name="KIND_GLOBAL_FREED_BYTES" />
-		<field name="KIND_GLOBAL_FREED_OBJECTS" />
-		<field name="KIND_GLOBAL_GC_INVOCATIONS" />
-		<field name="KIND_THREAD_ALLOCATED_BYTES" />
-		<field name="KIND_THREAD_ALLOCATED_OBJECTS" />
-		<field name="KIND_THREAD_CLASS_INIT_COUNT" since="8" />
-		<field name="KIND_THREAD_CLASS_INIT_TIME" since="8" />
-		<field name="KIND_THREAD_EXT_ALLOCATED_BYTES" />
-		<field name="KIND_THREAD_EXT_ALLOCATED_OBJECTS" />
-		<field name="KIND_THREAD_EXT_FREED_BYTES" />
-		<field name="KIND_THREAD_EXT_FREED_OBJECTS" />
-		<field name="KIND_THREAD_FREED_BYTES" />
-		<field name="KIND_THREAD_FREED_OBJECTS" />
-		<field name="KIND_THREAD_GC_INVOCATIONS" />
-		<field name="TRACE_COUNT_ALLOCS" />
-	</class>
-	<class name="dalvik/system/VMRuntime" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="gcSoftReferences()V" />
-		<method name="getExternalBytesAllocated()J" />
-		<method name="getMinimumHeapSize()J" />
-		<method name="getRuntime()Ldalvik/system/VMRuntime;" />
-		<method name="getTargetHeapUtilization()F" />
-		<method name="runFinalizationSync()V" />
-		<method name="setMinimumHeapSize(J)J" />
-		<method name="setTargetHeapUtilization(F)F" />
-	</class>
-	<class name="dalvik/system/VMStack" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getCallingClassLoader()Ljava/lang/ClassLoader;" />
-		<method name="getCallingClassLoader2()Ljava/lang/ClassLoader;" />
-		<method name="getClasses(IZ)[Ljava/lang/Class;" />
-		<method name="getThreadStackTrace(Ljava/lang/Thread;)[Ljava/lang/StackTraceElement;" />
-	</class>
-	<class name="dalvik/system/Zygote" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="fork()I" />
-		<method name="forkAndSpecialize(II[II[[I)I" since="3" />
-		<method name="forkAndSpecialize(II[IZ[[I)I" />
-		<method name="forkSystemServer(II[II[[I)I" since="3" />
-		<method name="forkSystemServer(II[IZ[[I)I" />
-		<field name="DEBUG_ENABLE_ASSERT" since="3" />
-		<field name="DEBUG_ENABLE_CHECKJNI" since="3" />
-		<field name="DEBUG_ENABLE_DEBUGGER" since="3" />
-		<field name="DEBUG_ENABLE_SAFEMODE" since="8" />
-	</class>
-	<class name="java/awt/font/NumericShaper" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<method name="&lt;init>()V" />
-		<method name="getContextualShaper(I)Ljava/awt/font/NumericShaper;" />
-		<method name="getContextualShaper(II)Ljava/awt/font/NumericShaper;" />
-		<method name="getRanges()I" />
-		<method name="getShaper(I)Ljava/awt/font/NumericShaper;" />
-		<method name="isContextual()Z" />
-		<method name="shape([CII)V" />
-		<method name="shape([CIII)V" />
-		<field name="ALL_RANGES" />
-		<field name="ARABIC" />
-		<field name="BENGALI" />
-		<field name="DEVANAGARI" />
-		<field name="EASTERN_ARABIC" />
-		<field name="ETHIOPIC" />
-		<field name="EUROPEAN" />
-		<field name="GUJARATI" />
-		<field name="GURMUKHI" />
-		<field name="KANNADA" />
-		<field name="KHMER" />
-		<field name="LAO" />
-		<field name="MALAYALAM" />
-		<field name="MONGOLIAN" />
-		<field name="MYANMAR" />
-		<field name="ORIYA" />
-		<field name="TAMIL" />
-		<field name="TELUGU" />
-		<field name="THAI" />
-		<field name="TIBETAN" />
-	</class>
-	<class name="java/awt/font/TextAttribute" since="1">
-		<extends name="java/text/AttributedCharacterIterator$Attribute" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<field name="BACKGROUND" />
-		<field name="BIDI_EMBEDDING" />
-		<field name="CHAR_REPLACEMENT" />
-		<field name="FAMILY" />
-		<field name="FONT" />
-		<field name="FOREGROUND" />
-		<field name="INPUT_METHOD_HIGHLIGHT" />
-		<field name="INPUT_METHOD_UNDERLINE" />
-		<field name="JUSTIFICATION" />
-		<field name="JUSTIFICATION_FULL" />
-		<field name="JUSTIFICATION_NONE" />
-		<field name="KERNING" since="9" />
-		<field name="KERNING_ON" since="9" />
-		<field name="LIGATURES" since="9" />
-		<field name="LIGATURES_ON" since="9" />
-		<field name="NUMERIC_SHAPING" />
-		<field name="POSTURE" />
-		<field name="POSTURE_OBLIQUE" />
-		<field name="POSTURE_REGULAR" />
-		<field name="RUN_DIRECTION" />
-		<field name="RUN_DIRECTION_LTR" />
-		<field name="RUN_DIRECTION_RTL" />
-		<field name="SIZE" />
-		<field name="STRIKETHROUGH" />
-		<field name="STRIKETHROUGH_ON" />
-		<field name="SUPERSCRIPT" />
-		<field name="SUPERSCRIPT_SUB" />
-		<field name="SUPERSCRIPT_SUPER" />
-		<field name="SWAP_COLORS" />
-		<field name="SWAP_COLORS_ON" />
-		<field name="TRACKING" since="9" />
-		<field name="TRACKING_LOOSE" since="9" />
-		<field name="TRACKING_TIGHT" since="9" />
-		<field name="TRANSFORM" />
-		<field name="UNDERLINE" />
-		<field name="UNDERLINE_LOW_DASHED" />
-		<field name="UNDERLINE_LOW_DOTTED" />
-		<field name="UNDERLINE_LOW_GRAY" />
-		<field name="UNDERLINE_LOW_ONE_PIXEL" />
-		<field name="UNDERLINE_LOW_TWO_PIXEL" />
-		<field name="UNDERLINE_ON" />
-		<field name="WEIGHT" />
-		<field name="WEIGHT_BOLD" />
-		<field name="WEIGHT_DEMIBOLD" />
-		<field name="WEIGHT_DEMILIGHT" />
-		<field name="WEIGHT_EXTRABOLD" />
-		<field name="WEIGHT_EXTRA_LIGHT" />
-		<field name="WEIGHT_HEAVY" />
-		<field name="WEIGHT_LIGHT" />
-		<field name="WEIGHT_MEDIUM" />
-		<field name="WEIGHT_REGULAR" />
-		<field name="WEIGHT_SEMIBOLD" />
-		<field name="WEIGHT_ULTRABOLD" />
-		<field name="WIDTH" />
-		<field name="WIDTH_CONDENSED" />
-		<field name="WIDTH_EXTENDED" />
-		<field name="WIDTH_REGULAR" />
-		<field name="WIDTH_SEMI_CONDENSED" />
-		<field name="WIDTH_SEMI_EXTENDED" />
-	</class>
-	<class name="java/beans/IndexedPropertyChangeEvent" since="3">
-		<extends name="java/beans/PropertyChangeEvent" />
-		<method name="&lt;init>(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;I)V" />
-		<method name="getIndex()I" />
-	</class>
-	<class name="java/beans/PropertyChangeEvent" since="3">
-		<extends name="java/util/EventObject" />
-		<method name="&lt;init>(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V" />
-		<method name="getNewValue()Ljava/lang/Object;" />
-		<method name="getOldValue()Ljava/lang/Object;" />
-		<method name="getPropagationId()Ljava/lang/Object;" />
-		<method name="getPropertyName()Ljava/lang/String;" />
-		<method name="setPropagationId(Ljava/lang/Object;)V" />
-	</class>
-	<class name="java/beans/PropertyChangeListener" since="3">
-		<extends name="java/lang/Object" />
-		<implements name="java/util/EventListener" />
-		<method name="propertyChange(Ljava/beans/PropertyChangeEvent;)V" />
-	</class>
-	<class name="java/beans/PropertyChangeListenerProxy" since="3">
-		<extends name="java/util/EventListenerProxy" />
-		<implements name="java/beans/PropertyChangeListener" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/beans/PropertyChangeListener;)V" />
-		<method name="getPropertyName()Ljava/lang/String;" />
-	</class>
-	<class name="java/beans/PropertyChangeSupport" since="3">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<method name="&lt;init>(Ljava/lang/Object;)V" />
-		<method name="addPropertyChangeListener(Ljava/beans/PropertyChangeListener;)V" />
-		<method name="addPropertyChangeListener(Ljava/lang/String;Ljava/beans/PropertyChangeListener;)V" />
-		<method name="fireIndexedPropertyChange(Ljava/lang/String;III)V" />
-		<method name="fireIndexedPropertyChange(Ljava/lang/String;ILjava/lang/Object;Ljava/lang/Object;)V" />
-		<method name="fireIndexedPropertyChange(Ljava/lang/String;IZZ)V" />
-		<method name="firePropertyChange(Ljava/beans/PropertyChangeEvent;)V" />
-		<method name="firePropertyChange(Ljava/lang/String;II)V" />
-		<method name="firePropertyChange(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V" />
-		<method name="firePropertyChange(Ljava/lang/String;ZZ)V" />
-		<method name="getPropertyChangeListeners()[Ljava/beans/PropertyChangeListener;" />
-		<method name="getPropertyChangeListeners(Ljava/lang/String;)[Ljava/beans/PropertyChangeListener;" />
-		<method name="hasListeners(Ljava/lang/String;)Z" />
-		<method name="removePropertyChangeListener(Ljava/beans/PropertyChangeListener;)V" />
-		<method name="removePropertyChangeListener(Ljava/lang/String;Ljava/beans/PropertyChangeListener;)V" />
-	</class>
-	<class name="java/io/BufferedInputStream" since="1">
-		<extends name="java/io/FilterInputStream" />
-		<method name="&lt;init>(Ljava/io/InputStream;)V" />
-		<method name="&lt;init>(Ljava/io/InputStream;I)V" />
-		<field name="buf" />
-		<field name="count" />
-		<field name="marklimit" />
-		<field name="markpos" />
-		<field name="pos" />
-	</class>
-	<class name="java/io/BufferedOutputStream" since="1">
-		<extends name="java/io/FilterOutputStream" />
-		<method name="&lt;init>(Ljava/io/OutputStream;)V" />
-		<method name="&lt;init>(Ljava/io/OutputStream;I)V" />
-		<field name="buf" />
-		<field name="count" />
-	</class>
-	<class name="java/io/BufferedReader" since="1">
-		<extends name="java/io/Reader" />
-		<method name="&lt;init>(Ljava/io/Reader;)V" />
-		<method name="&lt;init>(Ljava/io/Reader;I)V" />
-		<method name="readLine()Ljava/lang/String;" />
-	</class>
-	<class name="java/io/BufferedWriter" since="1">
-		<extends name="java/io/Writer" />
-		<method name="&lt;init>(Ljava/io/Writer;)V" />
-		<method name="&lt;init>(Ljava/io/Writer;I)V" />
-		<method name="newLine()V" />
-	</class>
-	<class name="java/io/ByteArrayInputStream" since="1">
-		<extends name="java/io/InputStream" />
-		<method name="&lt;init>([B)V" />
-		<method name="&lt;init>([BII)V" />
-		<field name="buf" />
-		<field name="count" />
-		<field name="mark" />
-		<field name="pos" />
-	</class>
-	<class name="java/io/ByteArrayOutputStream" since="1">
-		<extends name="java/io/OutputStream" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(I)V" />
-		<method name="reset()V" />
-		<method name="size()I" />
-		<method name="toByteArray()[B" />
-		<method name="toString(I)Ljava/lang/String;" />
-		<method name="toString(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="writeTo(Ljava/io/OutputStream;)V" />
-		<field name="buf" />
-		<field name="count" />
-	</class>
-	<class name="java/io/CharArrayReader" since="1">
-		<extends name="java/io/Reader" />
-		<method name="&lt;init>([C)V" />
-		<method name="&lt;init>([CII)V" />
-		<field name="buf" />
-		<field name="count" />
-		<field name="markedPos" />
-		<field name="pos" />
-	</class>
-	<class name="java/io/CharArrayWriter" since="1">
-		<extends name="java/io/Writer" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(I)V" />
-		<method name="append(C)Ljava/io/CharArrayWriter;" />
-		<method name="append(Ljava/lang/CharSequence;)Ljava/io/CharArrayWriter;" />
-		<method name="append(Ljava/lang/CharSequence;II)Ljava/io/CharArrayWriter;" />
-		<method name="reset()V" />
-		<method name="size()I" />
-		<method name="toCharArray()[C" />
-		<method name="writeTo(Ljava/io/Writer;)V" />
-		<field name="buf" />
-		<field name="count" />
-	</class>
-	<class name="java/io/CharConversionException" since="1">
-		<extends name="java/io/IOException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/io/Closeable" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/AutoCloseable" since="19" />
-		<method name="close()V" />
-	</class>
-	<class name="java/io/Console" since="9">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Flushable" />
-		<method name="&lt;init>()V" />
-		<method name="format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/Console;" />
-		<method name="printf(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/Console;" />
-		<method name="readLine()Ljava/lang/String;" />
-		<method name="readLine(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;" />
-		<method name="readPassword()[C" />
-		<method name="readPassword(Ljava/lang/String;[Ljava/lang/Object;)[C" />
-		<method name="reader()Ljava/io/Reader;" />
-		<method name="writer()Ljava/io/PrintWriter;" />
-	</class>
-	<class name="java/io/DataInput" since="1">
-		<extends name="java/lang/Object" />
-		<method name="readBoolean()Z" />
-		<method name="readByte()B" />
-		<method name="readChar()C" />
-		<method name="readDouble()D" />
-		<method name="readFloat()F" />
-		<method name="readFully([B)V" />
-		<method name="readFully([BII)V" />
-		<method name="readInt()I" />
-		<method name="readLine()Ljava/lang/String;" />
-		<method name="readLong()J" />
-		<method name="readShort()S" />
-		<method name="readUTF()Ljava/lang/String;" />
-		<method name="readUnsignedByte()I" />
-		<method name="readUnsignedShort()I" />
-		<method name="skipBytes(I)I" />
-	</class>
-	<class name="java/io/DataInputStream" since="1">
-		<extends name="java/io/FilterInputStream" />
-		<implements name="java/io/DataInput" />
-		<method name="&lt;init>(Ljava/io/InputStream;)V" />
-		<method name="readUTF(Ljava/io/DataInput;)Ljava/lang/String;" />
-	</class>
-	<class name="java/io/DataOutput" since="1">
-		<extends name="java/lang/Object" />
-		<method name="write(I)V" />
-		<method name="write([B)V" />
-		<method name="write([BII)V" />
-		<method name="writeBoolean(Z)V" />
-		<method name="writeByte(I)V" />
-		<method name="writeBytes(Ljava/lang/String;)V" />
-		<method name="writeChar(I)V" />
-		<method name="writeChars(Ljava/lang/String;)V" />
-		<method name="writeDouble(D)V" />
-		<method name="writeFloat(F)V" />
-		<method name="writeInt(I)V" />
-		<method name="writeLong(J)V" />
-		<method name="writeShort(I)V" />
-		<method name="writeUTF(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/io/DataOutputStream" since="1">
-		<extends name="java/io/FilterOutputStream" />
-		<implements name="java/io/DataOutput" />
-		<method name="&lt;init>(Ljava/io/OutputStream;)V" />
-		<method name="size()I" />
-		<field name="written" />
-	</class>
-	<class name="java/io/EOFException" since="1">
-		<extends name="java/io/IOException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/io/Externalizable" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<method name="readExternal(Ljava/io/ObjectInput;)V" />
-		<method name="writeExternal(Ljava/io/ObjectOutput;)V" />
-	</class>
-	<class name="java/io/File" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<implements name="java/lang/Comparable" />
-		<method name="&lt;init>(Ljava/io/File;Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/net/URI;)V" />
-		<method name="canExecute()Z" since="9" />
-		<method name="canRead()Z" />
-		<method name="canWrite()Z" />
-		<method name="compareTo(Ljava/io/File;)I" />
-		<method name="createNewFile()Z" />
-		<method name="createTempFile(Ljava/lang/String;Ljava/lang/String;)Ljava/io/File;" />
-		<method name="createTempFile(Ljava/lang/String;Ljava/lang/String;Ljava/io/File;)Ljava/io/File;" />
-		<method name="delete()Z" />
-		<method name="deleteOnExit()V" />
-		<method name="exists()Z" />
-		<method name="getAbsoluteFile()Ljava/io/File;" />
-		<method name="getAbsolutePath()Ljava/lang/String;" />
-		<method name="getCanonicalFile()Ljava/io/File;" />
-		<method name="getCanonicalPath()Ljava/lang/String;" />
-		<method name="getFreeSpace()J" since="9" />
-		<method name="getName()Ljava/lang/String;" />
-		<method name="getParent()Ljava/lang/String;" />
-		<method name="getParentFile()Ljava/io/File;" />
-		<method name="getPath()Ljava/lang/String;" />
-		<method name="getTotalSpace()J" since="9" />
-		<method name="getUsableSpace()J" since="9" />
-		<method name="isAbsolute()Z" />
-		<method name="isDirectory()Z" />
-		<method name="isFile()Z" />
-		<method name="isHidden()Z" />
-		<method name="lastModified()J" />
-		<method name="length()J" />
-		<method name="list()[Ljava/lang/String;" />
-		<method name="list(Ljava/io/FilenameFilter;)[Ljava/lang/String;" />
-		<method name="listFiles()[Ljava/io/File;" />
-		<method name="listFiles(Ljava/io/FileFilter;)[Ljava/io/File;" />
-		<method name="listFiles(Ljava/io/FilenameFilter;)[Ljava/io/File;" />
-		<method name="listRoots()[Ljava/io/File;" />
-		<method name="mkdir()Z" />
-		<method name="mkdirs()Z" />
-		<method name="renameTo(Ljava/io/File;)Z" />
-		<method name="setExecutable(Z)Z" since="9" />
-		<method name="setExecutable(ZZ)Z" since="9" />
-		<method name="setLastModified(J)Z" />
-		<method name="setReadOnly()Z" />
-		<method name="setReadable(Z)Z" since="9" />
-		<method name="setReadable(ZZ)Z" since="9" />
-		<method name="setWritable(Z)Z" since="9" />
-		<method name="setWritable(ZZ)Z" since="9" />
-		<method name="toURI()Ljava/net/URI;" />
-		<method name="toURL()Ljava/net/URL;" />
-		<field name="pathSeparator" />
-		<field name="pathSeparatorChar" />
-		<field name="separator" />
-		<field name="separatorChar" />
-	</class>
-	<class name="java/io/FileDescriptor" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="sync()V" />
-		<method name="valid()Z" />
-		<field name="err" />
-		<field name="in" />
-		<field name="out" />
-	</class>
-	<class name="java/io/FileFilter" since="1">
-		<extends name="java/lang/Object" />
-		<method name="accept(Ljava/io/File;)Z" />
-	</class>
-	<class name="java/io/FileInputStream" since="1">
-		<extends name="java/io/InputStream" />
-		<implements name="java/io/Closeable" />
-		<method name="&lt;init>(Ljava/io/File;)V" />
-		<method name="&lt;init>(Ljava/io/FileDescriptor;)V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="getChannel()Ljava/nio/channels/FileChannel;" />
-		<method name="getFD()Ljava/io/FileDescriptor;" />
-	</class>
-	<class name="java/io/FileNotFoundException" since="1">
-		<extends name="java/io/IOException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/io/FileOutputStream" since="1">
-		<extends name="java/io/OutputStream" />
-		<implements name="java/io/Closeable" />
-		<method name="&lt;init>(Ljava/io/File;)V" />
-		<method name="&lt;init>(Ljava/io/File;Z)V" />
-		<method name="&lt;init>(Ljava/io/FileDescriptor;)V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Z)V" />
-		<method name="getChannel()Ljava/nio/channels/FileChannel;" />
-		<method name="getFD()Ljava/io/FileDescriptor;" />
-	</class>
-	<class name="java/io/FilePermission" since="1">
-		<extends name="java/security/Permission" />
-		<implements name="java/io/Serializable" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
-	</class>
-	<class name="java/io/FileReader" since="1">
-		<extends name="java/io/InputStreamReader" />
-		<method name="&lt;init>(Ljava/io/File;)V" />
-		<method name="&lt;init>(Ljava/io/FileDescriptor;)V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/io/FileWriter" since="1">
-		<extends name="java/io/OutputStreamWriter" />
-		<method name="&lt;init>(Ljava/io/File;)V" />
-		<method name="&lt;init>(Ljava/io/File;Z)V" />
-		<method name="&lt;init>(Ljava/io/FileDescriptor;)V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Z)V" />
-	</class>
-	<class name="java/io/FilenameFilter" since="1">
-		<extends name="java/lang/Object" />
-		<method name="accept(Ljava/io/File;Ljava/lang/String;)Z" />
-	</class>
-	<class name="java/io/FilterInputStream" since="1">
-		<extends name="java/io/InputStream" />
-		<method name="&lt;init>(Ljava/io/InputStream;)V" />
-		<field name="in" />
-	</class>
-	<class name="java/io/FilterOutputStream" since="1">
-		<extends name="java/io/OutputStream" />
-		<method name="&lt;init>(Ljava/io/OutputStream;)V" />
-		<field name="out" />
-	</class>
-	<class name="java/io/FilterReader" since="1">
-		<extends name="java/io/Reader" />
-		<method name="&lt;init>(Ljava/io/Reader;)V" />
-		<field name="in" />
-	</class>
-	<class name="java/io/FilterWriter" since="1">
-		<extends name="java/io/Writer" />
-		<method name="&lt;init>(Ljava/io/Writer;)V" />
-		<field name="out" />
-	</class>
-	<class name="java/io/Flushable" since="1">
-		<extends name="java/lang/Object" />
-		<method name="flush()V" />
-	</class>
-	<class name="java/io/IOError" since="9">
-		<extends name="java/lang/Error" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="java/io/IOException" since="1">
-		<extends name="java/lang/Exception" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" since="9" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" since="9" />
-	</class>
-	<class name="java/io/InputStream" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Closeable" />
-		<method name="&lt;init>()V" />
-		<method name="available()I" />
-		<method name="mark(I)V" />
-		<method name="markSupported()Z" />
-		<method name="read()I" />
-		<method name="read([B)I" />
-		<method name="read([BII)I" />
-		<method name="reset()V" />
-		<method name="skip(J)J" />
-	</class>
-	<class name="java/io/InputStreamReader" since="1">
-		<extends name="java/io/Reader" />
-		<method name="&lt;init>(Ljava/io/InputStream;)V" />
-		<method name="&lt;init>(Ljava/io/InputStream;Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/io/InputStream;Ljava/nio/charset/Charset;)V" />
-		<method name="&lt;init>(Ljava/io/InputStream;Ljava/nio/charset/CharsetDecoder;)V" />
-		<method name="getEncoding()Ljava/lang/String;" />
-	</class>
-	<class name="java/io/InterruptedIOException" since="1">
-		<extends name="java/io/IOException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<field name="bytesTransferred" />
-	</class>
-	<class name="java/io/InvalidClassException" since="1">
-		<extends name="java/io/ObjectStreamException" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
-		<field name="classname" />
-	</class>
-	<class name="java/io/InvalidObjectException" since="1">
-		<extends name="java/io/ObjectStreamException" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/io/LineNumberInputStream" since="1">
-		<extends name="java/io/FilterInputStream" />
-		<method name="&lt;init>(Ljava/io/InputStream;)V" />
-		<method name="getLineNumber()I" />
-		<method name="setLineNumber(I)V" />
-	</class>
-	<class name="java/io/LineNumberReader" since="1">
-		<extends name="java/io/BufferedReader" />
-		<method name="&lt;init>(Ljava/io/Reader;)V" />
-		<method name="&lt;init>(Ljava/io/Reader;I)V" />
-		<method name="getLineNumber()I" />
-		<method name="setLineNumber(I)V" />
-	</class>
-	<class name="java/io/NotActiveException" since="1">
-		<extends name="java/io/ObjectStreamException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/io/NotSerializableException" since="1">
-		<extends name="java/io/ObjectStreamException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/io/ObjectInput" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/DataInput" />
-		<implements name="java/lang/AutoCloseable" since="19" />
-		<method name="available()I" />
-		<method name="close()V" />
-		<method name="read()I" />
-		<method name="read([B)I" />
-		<method name="read([BII)I" />
-		<method name="readObject()Ljava/lang/Object;" />
-		<method name="skip(J)J" />
-	</class>
-	<class name="java/io/ObjectInputStream" since="1">
-		<extends name="java/io/InputStream" />
-		<implements name="java/io/ObjectInput" />
-		<implements name="java/io/ObjectStreamConstants" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/io/InputStream;)V" />
-		<method name="defaultReadObject()V" />
-		<method name="enableResolveObject(Z)Z" />
-		<method name="readClassDescriptor()Ljava/io/ObjectStreamClass;" />
-		<method name="readFields()Ljava/io/ObjectInputStream$GetField;" />
-		<method name="readObjectOverride()Ljava/lang/Object;" />
-		<method name="readStreamHeader()V" />
-		<method name="readUnshared()Ljava/lang/Object;" />
-		<method name="registerValidation(Ljava/io/ObjectInputValidation;I)V" />
-		<method name="resolveClass(Ljava/io/ObjectStreamClass;)Ljava/lang/Class;" />
-		<method name="resolveObject(Ljava/lang/Object;)Ljava/lang/Object;" />
-		<method name="resolveProxyClass([Ljava/lang/String;)Ljava/lang/Class;" />
-	</class>
-	<class name="java/io/ObjectInputStream$GetField" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="defaulted(Ljava/lang/String;)Z" />
-		<method name="get(Ljava/lang/String;B)B" />
-		<method name="get(Ljava/lang/String;C)C" />
-		<method name="get(Ljava/lang/String;D)D" />
-		<method name="get(Ljava/lang/String;F)F" />
-		<method name="get(Ljava/lang/String;I)I" />
-		<method name="get(Ljava/lang/String;J)J" />
-		<method name="get(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;" />
-		<method name="get(Ljava/lang/String;S)S" />
-		<method name="get(Ljava/lang/String;Z)Z" />
-		<method name="getObjectStreamClass()Ljava/io/ObjectStreamClass;" />
-	</class>
-	<class name="java/io/ObjectInputValidation" since="1">
-		<extends name="java/lang/Object" />
-		<method name="validateObject()V" />
-	</class>
-	<class name="java/io/ObjectOutput" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/DataOutput" />
-		<implements name="java/lang/AutoCloseable" since="19" />
-		<method name="close()V" />
-		<method name="flush()V" />
-		<method name="writeObject(Ljava/lang/Object;)V" />
-	</class>
-	<class name="java/io/ObjectOutputStream" since="1">
-		<extends name="java/io/OutputStream" />
-		<implements name="java/io/ObjectOutput" />
-		<implements name="java/io/ObjectStreamConstants" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/io/OutputStream;)V" />
-		<method name="annotateClass(Ljava/lang/Class;)V" />
-		<method name="annotateProxyClass(Ljava/lang/Class;)V" />
-		<method name="defaultWriteObject()V" />
-		<method name="drain()V" />
-		<method name="enableReplaceObject(Z)Z" />
-		<method name="putFields()Ljava/io/ObjectOutputStream$PutField;" />
-		<method name="replaceObject(Ljava/lang/Object;)Ljava/lang/Object;" />
-		<method name="reset()V" />
-		<method name="useProtocolVersion(I)V" />
-		<method name="writeClassDescriptor(Ljava/io/ObjectStreamClass;)V" />
-		<method name="writeFields()V" />
-		<method name="writeObjectOverride(Ljava/lang/Object;)V" />
-		<method name="writeStreamHeader()V" />
-		<method name="writeUnshared(Ljava/lang/Object;)V" />
-	</class>
-	<class name="java/io/ObjectOutputStream$PutField" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="put(Ljava/lang/String;B)V" />
-		<method name="put(Ljava/lang/String;C)V" />
-		<method name="put(Ljava/lang/String;D)V" />
-		<method name="put(Ljava/lang/String;F)V" />
-		<method name="put(Ljava/lang/String;I)V" />
-		<method name="put(Ljava/lang/String;J)V" />
-		<method name="put(Ljava/lang/String;Ljava/lang/Object;)V" />
-		<method name="put(Ljava/lang/String;S)V" />
-		<method name="put(Ljava/lang/String;Z)V" />
-		<method name="write(Ljava/io/ObjectOutput;)V" />
-	</class>
-	<class name="java/io/ObjectStreamClass" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<method name="&lt;init>()V" />
-		<method name="forClass()Ljava/lang/Class;" />
-		<method name="getField(Ljava/lang/String;)Ljava/io/ObjectStreamField;" />
-		<method name="getFields()[Ljava/io/ObjectStreamField;" />
-		<method name="getName()Ljava/lang/String;" />
-		<method name="getSerialVersionUID()J" />
-		<method name="lookup(Ljava/lang/Class;)Ljava/io/ObjectStreamClass;" />
-		<method name="lookupAny(Ljava/lang/Class;)Ljava/io/ObjectStreamClass;" since="9" />
-		<field name="NO_FIELDS" />
-	</class>
-	<class name="java/io/ObjectStreamConstants" since="1">
-		<extends name="java/lang/Object" />
-		<field name="PROTOCOL_VERSION_1" />
-		<field name="PROTOCOL_VERSION_2" />
-		<field name="SC_BLOCK_DATA" />
-		<field name="SC_ENUM" />
-		<field name="SC_EXTERNALIZABLE" />
-		<field name="SC_SERIALIZABLE" />
-		<field name="SC_WRITE_METHOD" />
-		<field name="STREAM_MAGIC" />
-		<field name="STREAM_VERSION" />
-		<field name="SUBCLASS_IMPLEMENTATION_PERMISSION" />
-		<field name="SUBSTITUTION_PERMISSION" />
-		<field name="TC_ARRAY" />
-		<field name="TC_BASE" />
-		<field name="TC_BLOCKDATA" />
-		<field name="TC_BLOCKDATALONG" />
-		<field name="TC_CLASS" />
-		<field name="TC_CLASSDESC" />
-		<field name="TC_ENDBLOCKDATA" />
-		<field name="TC_ENUM" />
-		<field name="TC_EXCEPTION" />
-		<field name="TC_LONGSTRING" />
-		<field name="TC_MAX" />
-		<field name="TC_NULL" />
-		<field name="TC_OBJECT" />
-		<field name="TC_PROXYCLASSDESC" />
-		<field name="TC_REFERENCE" />
-		<field name="TC_RESET" />
-		<field name="TC_STRING" />
-		<field name="baseWireHandle" />
-	</class>
-	<class name="java/io/ObjectStreamException" since="1">
-		<extends name="java/io/IOException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/io/ObjectStreamField" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/Comparable" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Class;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Class;Z)V" />
-		<method name="getName()Ljava/lang/String;" />
-		<method name="getOffset()I" />
-		<method name="getType()Ljava/lang/Class;" />
-		<method name="getTypeCode()C" />
-		<method name="getTypeString()Ljava/lang/String;" />
-		<method name="isPrimitive()Z" />
-		<method name="isUnshared()Z" />
-		<method name="setOffset(I)V" />
-	</class>
-	<class name="java/io/OptionalDataException" since="1">
-		<extends name="java/io/ObjectStreamException" />
-		<method name="&lt;init>()V" />
-		<field name="eof" />
-		<field name="length" />
-	</class>
-	<class name="java/io/OutputStream" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Closeable" />
-		<implements name="java/io/Flushable" />
-		<method name="&lt;init>()V" />
-		<method name="write(I)V" />
-		<method name="write([B)V" />
-		<method name="write([BII)V" />
-	</class>
-	<class name="java/io/OutputStreamWriter" since="1">
-		<extends name="java/io/Writer" />
-		<method name="&lt;init>(Ljava/io/OutputStream;)V" />
-		<method name="&lt;init>(Ljava/io/OutputStream;Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/io/OutputStream;Ljava/nio/charset/Charset;)V" />
-		<method name="&lt;init>(Ljava/io/OutputStream;Ljava/nio/charset/CharsetEncoder;)V" />
-		<method name="getEncoding()Ljava/lang/String;" />
-	</class>
-	<class name="java/io/PipedInputStream" since="1">
-		<extends name="java/io/InputStream" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(I)V" since="9" />
-		<method name="&lt;init>(Ljava/io/PipedOutputStream;)V" />
-		<method name="&lt;init>(Ljava/io/PipedOutputStream;I)V" since="9" />
-		<method name="connect(Ljava/io/PipedOutputStream;)V" />
-		<method name="receive(I)V" />
-		<field name="PIPE_SIZE" />
-		<field name="buffer" />
-		<field name="in" />
-		<field name="out" />
-	</class>
-	<class name="java/io/PipedOutputStream" since="1">
-		<extends name="java/io/OutputStream" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/io/PipedInputStream;)V" />
-		<method name="connect(Ljava/io/PipedInputStream;)V" />
-	</class>
-	<class name="java/io/PipedReader" since="1">
-		<extends name="java/io/Reader" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(I)V" since="9" />
-		<method name="&lt;init>(Ljava/io/PipedWriter;)V" />
-		<method name="&lt;init>(Ljava/io/PipedWriter;I)V" since="9" />
-		<method name="connect(Ljava/io/PipedWriter;)V" />
-	</class>
-	<class name="java/io/PipedWriter" since="1">
-		<extends name="java/io/Writer" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/io/PipedReader;)V" />
-		<method name="connect(Ljava/io/PipedReader;)V" />
-	</class>
-	<class name="java/io/PrintStream" since="1">
-		<extends name="java/io/FilterOutputStream" />
-		<implements name="java/io/Closeable" />
-		<implements name="java/lang/Appendable" />
-		<method name="&lt;init>(Ljava/io/File;)V" />
-		<method name="&lt;init>(Ljava/io/File;Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/io/OutputStream;)V" />
-		<method name="&lt;init>(Ljava/io/OutputStream;Z)V" />
-		<method name="&lt;init>(Ljava/io/OutputStream;ZLjava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="append(C)Ljava/io/PrintStream;" />
-		<method name="append(Ljava/lang/CharSequence;)Ljava/io/PrintStream;" />
-		<method name="append(Ljava/lang/CharSequence;II)Ljava/io/PrintStream;" />
-		<method name="checkError()Z" />
-		<method name="clearError()V" since="9" />
-		<method name="format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;" />
-		<method name="format(Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;" />
-		<method name="print(C)V" />
-		<method name="print(D)V" />
-		<method name="print(F)V" />
-		<method name="print(I)V" />
-		<method name="print(J)V" />
-		<method name="print(Ljava/lang/Object;)V" />
-		<method name="print(Ljava/lang/String;)V" />
-		<method name="print(Z)V" />
-		<method name="print([C)V" />
-		<method name="printf(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;" />
-		<method name="printf(Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;" />
-		<method name="println()V" />
-		<method name="println(C)V" />
-		<method name="println(D)V" />
-		<method name="println(F)V" />
-		<method name="println(I)V" />
-		<method name="println(J)V" />
-		<method name="println(Ljava/lang/Object;)V" />
-		<method name="println(Ljava/lang/String;)V" />
-		<method name="println(Z)V" />
-		<method name="println([C)V" />
-		<method name="setError()V" />
-	</class>
-	<class name="java/io/PrintWriter" since="1">
-		<extends name="java/io/Writer" />
-		<method name="&lt;init>(Ljava/io/File;)V" />
-		<method name="&lt;init>(Ljava/io/File;Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/io/OutputStream;)V" />
-		<method name="&lt;init>(Ljava/io/OutputStream;Z)V" />
-		<method name="&lt;init>(Ljava/io/Writer;)V" />
-		<method name="&lt;init>(Ljava/io/Writer;Z)V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="append(C)Ljava/io/PrintWriter;" />
-		<method name="append(Ljava/lang/CharSequence;)Ljava/io/PrintWriter;" />
-		<method name="append(Ljava/lang/CharSequence;II)Ljava/io/PrintWriter;" />
-		<method name="checkError()Z" />
-		<method name="clearError()V" since="9" />
-		<method name="format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintWriter;" />
-		<method name="format(Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintWriter;" />
-		<method name="print(C)V" />
-		<method name="print(D)V" />
-		<method name="print(F)V" />
-		<method name="print(I)V" />
-		<method name="print(J)V" />
-		<method name="print(Ljava/lang/Object;)V" />
-		<method name="print(Ljava/lang/String;)V" />
-		<method name="print(Z)V" />
-		<method name="print([C)V" />
-		<method name="printf(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintWriter;" />
-		<method name="printf(Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintWriter;" />
-		<method name="println()V" />
-		<method name="println(C)V" />
-		<method name="println(D)V" />
-		<method name="println(F)V" />
-		<method name="println(I)V" />
-		<method name="println(J)V" />
-		<method name="println(Ljava/lang/Object;)V" />
-		<method name="println(Ljava/lang/String;)V" />
-		<method name="println(Z)V" />
-		<method name="println([C)V" />
-		<method name="setError()V" />
-		<field name="out" />
-	</class>
-	<class name="java/io/PushbackInputStream" since="1">
-		<extends name="java/io/FilterInputStream" />
-		<method name="&lt;init>(Ljava/io/InputStream;)V" />
-		<method name="&lt;init>(Ljava/io/InputStream;I)V" />
-		<method name="unread(I)V" />
-		<method name="unread([B)V" />
-		<method name="unread([BII)V" />
-		<field name="buf" />
-		<field name="pos" />
-	</class>
-	<class name="java/io/PushbackReader" since="1">
-		<extends name="java/io/FilterReader" />
-		<method name="&lt;init>(Ljava/io/Reader;)V" />
-		<method name="&lt;init>(Ljava/io/Reader;I)V" />
-		<method name="unread(I)V" />
-		<method name="unread([C)V" />
-		<method name="unread([CII)V" />
-	</class>
-	<class name="java/io/RandomAccessFile" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Closeable" />
-		<implements name="java/io/DataInput" />
-		<implements name="java/io/DataOutput" />
-		<method name="&lt;init>(Ljava/io/File;Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="getChannel()Ljava/nio/channels/FileChannel;" />
-		<method name="getFD()Ljava/io/FileDescriptor;" />
-		<method name="getFilePointer()J" />
-		<method name="length()J" />
-		<method name="read()I" />
-		<method name="read([B)I" />
-		<method name="read([BII)I" />
-		<method name="seek(J)V" />
-		<method name="setLength(J)V" />
-	</class>
-	<class name="java/io/Reader" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Closeable" />
-		<implements name="java/lang/Readable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/Object;)V" />
-		<method name="mark(I)V" />
-		<method name="markSupported()Z" />
-		<method name="read()I" />
-		<method name="read([C)I" />
-		<method name="read([CII)I" />
-		<method name="ready()Z" />
-		<method name="reset()V" />
-		<method name="skip(J)J" />
-		<field name="lock" />
-	</class>
-	<class name="java/io/SequenceInputStream" since="1">
-		<extends name="java/io/InputStream" />
-		<method name="&lt;init>(Ljava/io/InputStream;Ljava/io/InputStream;)V" />
-		<method name="&lt;init>(Ljava/util/Enumeration;)V" />
-	</class>
-	<class name="java/io/Serializable" since="1">
-		<extends name="java/lang/Object" />
-	</class>
-	<class name="java/io/SerializablePermission" since="1">
-		<extends name="java/security/BasicPermission" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
-	</class>
-	<class name="java/io/StreamCorruptedException" since="1">
-		<extends name="java/io/ObjectStreamException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/io/StreamTokenizer" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/io/InputStream;)V" />
-		<method name="&lt;init>(Ljava/io/Reader;)V" />
-		<method name="commentChar(I)V" />
-		<method name="eolIsSignificant(Z)V" />
-		<method name="lineno()I" />
-		<method name="lowerCaseMode(Z)V" />
-		<method name="nextToken()I" />
-		<method name="ordinaryChar(I)V" />
-		<method name="ordinaryChars(II)V" />
-		<method name="parseNumbers()V" />
-		<method name="pushBack()V" />
-		<method name="quoteChar(I)V" />
-		<method name="resetSyntax()V" />
-		<method name="slashSlashComments(Z)V" />
-		<method name="slashStarComments(Z)V" />
-		<method name="whitespaceChars(II)V" />
-		<method name="wordChars(II)V" />
-		<field name="TT_EOF" />
-		<field name="TT_EOL" />
-		<field name="TT_NUMBER" />
-		<field name="TT_WORD" />
-		<field name="nval" />
-		<field name="sval" />
-		<field name="ttype" />
-	</class>
-	<class name="java/io/StringBufferInputStream" since="1">
-		<extends name="java/io/InputStream" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<field name="buffer" />
-		<field name="count" />
-		<field name="pos" />
-	</class>
-	<class name="java/io/StringReader" since="1">
-		<extends name="java/io/Reader" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/io/StringWriter" since="1">
-		<extends name="java/io/Writer" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(I)V" />
-		<method name="append(C)Ljava/io/StringWriter;" />
-		<method name="append(Ljava/lang/CharSequence;)Ljava/io/StringWriter;" />
-		<method name="append(Ljava/lang/CharSequence;II)Ljava/io/StringWriter;" />
-		<method name="getBuffer()Ljava/lang/StringBuffer;" />
-	</class>
-	<class name="java/io/SyncFailedException" since="1">
-		<extends name="java/io/IOException" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/io/UTFDataFormatException" since="1">
-		<extends name="java/io/IOException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/io/UnsupportedEncodingException" since="1">
-		<extends name="java/io/IOException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/io/WriteAbortedException" since="1">
-		<extends name="java/io/ObjectStreamException" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Exception;)V" />
-		<field name="detail" />
-	</class>
-	<class name="java/io/Writer" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Closeable" />
-		<implements name="java/io/Flushable" />
-		<implements name="java/lang/Appendable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/Object;)V" />
-		<method name="append(C)Ljava/io/Writer;" />
-		<method name="append(Ljava/lang/CharSequence;)Ljava/io/Writer;" />
-		<method name="append(Ljava/lang/CharSequence;II)Ljava/io/Writer;" />
-		<method name="write(I)V" />
-		<method name="write(Ljava/lang/String;)V" />
-		<method name="write(Ljava/lang/String;II)V" />
-		<method name="write([C)V" />
-		<method name="write([CII)V" />
-		<field name="lock" />
-	</class>
-	<class name="java/lang/AbstractMethodError" since="1">
-		<extends name="java/lang/IncompatibleClassChangeError" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/lang/AbstractStringBuilder" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="capacity()I" />
-		<method name="charAt(I)C" />
-		<method name="codePointAt(I)I" />
-		<method name="codePointBefore(I)I" />
-		<method name="codePointCount(II)I" />
-		<method name="ensureCapacity(I)V" />
-		<method name="getChars(II[CI)V" />
-		<method name="indexOf(Ljava/lang/String;)I" />
-		<method name="indexOf(Ljava/lang/String;I)I" />
-		<method name="lastIndexOf(Ljava/lang/String;)I" />
-		<method name="lastIndexOf(Ljava/lang/String;I)I" />
-		<method name="length()I" />
-		<method name="offsetByCodePoints(II)I" />
-		<method name="setCharAt(IC)V" />
-		<method name="setLength(I)V" />
-		<method name="subSequence(II)Ljava/lang/CharSequence;" />
-		<method name="substring(I)Ljava/lang/String;" />
-		<method name="substring(II)Ljava/lang/String;" />
-		<method name="trimToSize()V" />
-	</class>
-	<class name="java/lang/Appendable" since="1">
-		<extends name="java/lang/Object" />
-		<method name="append(C)Ljava/lang/Appendable;" />
-		<method name="append(Ljava/lang/CharSequence;)Ljava/lang/Appendable;" />
-		<method name="append(Ljava/lang/CharSequence;II)Ljava/lang/Appendable;" />
-	</class>
-	<class name="java/lang/ArithmeticException" since="1">
-		<extends name="java/lang/RuntimeException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/lang/ArrayIndexOutOfBoundsException" since="1">
-		<extends name="java/lang/IndexOutOfBoundsException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(I)V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/lang/ArrayStoreException" since="1">
-		<extends name="java/lang/RuntimeException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/lang/AssertionError" since="1">
-		<extends name="java/lang/Error" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(C)V" />
-		<method name="&lt;init>(D)V" />
-		<method name="&lt;init>(F)V" />
-		<method name="&lt;init>(I)V" />
-		<method name="&lt;init>(J)V" />
-		<method name="&lt;init>(Ljava/lang/Object;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" since="19" />
-		<method name="&lt;init>(Z)V" />
-	</class>
-	<class name="java/lang/AutoCloseable" since="19">
-		<extends name="java/lang/Object" />
-		<method name="close()V" />
-	</class>
-	<class name="java/lang/Boolean" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<implements name="java/lang/Comparable" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Z)V" />
-		<method name="booleanValue()Z" />
-		<method name="compare(ZZ)I" since="19" />
-		<method name="compareTo(Ljava/lang/Boolean;)I" />
-		<method name="getBoolean(Ljava/lang/String;)Z" />
-		<method name="parseBoolean(Ljava/lang/String;)Z" />
-		<method name="toString(Z)Ljava/lang/String;" />
-		<method name="valueOf(Ljava/lang/String;)Ljava/lang/Boolean;" />
-		<method name="valueOf(Z)Ljava/lang/Boolean;" />
-		<field name="FALSE" />
-		<field name="TRUE" />
-		<field name="TYPE" />
-	</class>
-	<class name="java/lang/Byte" since="1">
-		<extends name="java/lang/Number" />
-		<implements name="java/lang/Comparable" />
-		<method name="&lt;init>(B)V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="compare(BB)I" since="19" />
-		<method name="compareTo(Ljava/lang/Byte;)I" />
-		<method name="decode(Ljava/lang/String;)Ljava/lang/Byte;" />
-		<method name="parseByte(Ljava/lang/String;)B" />
-		<method name="parseByte(Ljava/lang/String;I)B" />
-		<method name="toString(B)Ljava/lang/String;" />
-		<method name="valueOf(B)Ljava/lang/Byte;" />
-		<method name="valueOf(Ljava/lang/String;)Ljava/lang/Byte;" />
-		<method name="valueOf(Ljava/lang/String;I)Ljava/lang/Byte;" />
-		<field name="MAX_VALUE" />
-		<field name="MIN_VALUE" />
-		<field name="SIZE" />
-		<field name="TYPE" />
-	</class>
-	<class name="java/lang/CharSequence" since="1">
-		<extends name="java/lang/Object" />
-		<method name="charAt(I)C" />
-		<method name="length()I" />
-		<method name="subSequence(II)Ljava/lang/CharSequence;" />
-	</class>
-	<class name="java/lang/Character" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<implements name="java/lang/Comparable" />
-		<method name="&lt;init>(C)V" />
-		<method name="charCount(I)I" />
-		<method name="charValue()C" />
-		<method name="codePointAt(Ljava/lang/CharSequence;I)I" />
-		<method name="codePointAt([CI)I" />
-		<method name="codePointAt([CII)I" />
-		<method name="codePointBefore(Ljava/lang/CharSequence;I)I" />
-		<method name="codePointBefore([CI)I" />
-		<method name="codePointBefore([CII)I" />
-		<method name="codePointCount(Ljava/lang/CharSequence;II)I" />
-		<method name="codePointCount([CII)I" />
-		<method name="compare(CC)I" since="19" />
-		<method name="compareTo(Ljava/lang/Character;)I" />
-		<method name="digit(CI)I" />
-		<method name="digit(II)I" />
-		<method name="forDigit(II)C" />
-		<method name="getDirectionality(C)B" />
-		<method name="getDirectionality(I)B" />
-		<method name="getName(I)Ljava/lang/String;" since="19" />
-		<method name="getNumericValue(C)I" />
-		<method name="getNumericValue(I)I" />
-		<method name="getType(C)I" />
-		<method name="getType(I)I" />
-		<method name="highSurrogate(I)C" since="19" />
-		<method name="isAlphabetic(I)Z" since="19" />
-		<method name="isBmpCodePoint(I)Z" since="19" />
-		<method name="isDefined(C)Z" />
-		<method name="isDefined(I)Z" />
-		<method name="isDigit(C)Z" />
-		<method name="isDigit(I)Z" />
-		<method name="isHighSurrogate(C)Z" />
-		<method name="isISOControl(C)Z" />
-		<method name="isISOControl(I)Z" />
-		<method name="isIdentifierIgnorable(C)Z" />
-		<method name="isIdentifierIgnorable(I)Z" />
-		<method name="isIdeographic(I)Z" since="19" />
-		<method name="isJavaIdentifierPart(C)Z" />
-		<method name="isJavaIdentifierPart(I)Z" />
-		<method name="isJavaIdentifierStart(C)Z" />
-		<method name="isJavaIdentifierStart(I)Z" />
-		<method name="isJavaLetter(C)Z" />
-		<method name="isJavaLetterOrDigit(C)Z" />
-		<method name="isLetter(C)Z" />
-		<method name="isLetter(I)Z" />
-		<method name="isLetterOrDigit(C)Z" />
-		<method name="isLetterOrDigit(I)Z" />
-		<method name="isLowSurrogate(C)Z" />
-		<method name="isLowerCase(C)Z" />
-		<method name="isLowerCase(I)Z" />
-		<method name="isMirrored(C)Z" />
-		<method name="isMirrored(I)Z" />
-		<method name="isSpace(C)Z" />
-		<method name="isSpaceChar(C)Z" />
-		<method name="isSpaceChar(I)Z" />
-		<method name="isSupplementaryCodePoint(I)Z" />
-		<method name="isSurrogate(C)Z" since="19" />
-		<method name="isSurrogatePair(CC)Z" />
-		<method name="isTitleCase(C)Z" />
-		<method name="isTitleCase(I)Z" />
-		<method name="isUnicodeIdentifierPart(C)Z" />
-		<method name="isUnicodeIdentifierPart(I)Z" />
-		<method name="isUnicodeIdentifierStart(C)Z" />
-		<method name="isUnicodeIdentifierStart(I)Z" />
-		<method name="isUpperCase(C)Z" />
-		<method name="isUpperCase(I)Z" />
-		<method name="isValidCodePoint(I)Z" />
-		<method name="isWhitespace(C)Z" />
-		<method name="isWhitespace(I)Z" />
-		<method name="lowSurrogate(I)C" since="19" />
-		<method name="offsetByCodePoints(Ljava/lang/CharSequence;II)I" />
-		<method name="offsetByCodePoints([CIIII)I" />
-		<method name="reverseBytes(C)C" />
-		<method name="toChars(I)[C" />
-		<method name="toChars(I[CI)I" />
-		<method name="toCodePoint(CC)I" />
-		<method name="toLowerCase(C)C" />
-		<method name="toLowerCase(I)I" />
-		<method name="toString(C)Ljava/lang/String;" />
-		<method name="toTitleCase(C)C" />
-		<method name="toTitleCase(I)I" />
-		<method name="toUpperCase(C)C" />
-		<method name="toUpperCase(I)I" />
-		<method name="valueOf(C)Ljava/lang/Character;" />
-		<field name="COMBINING_SPACING_MARK" />
-		<field name="CONNECTOR_PUNCTUATION" />
-		<field name="CONTROL" />
-		<field name="CURRENCY_SYMBOL" />
-		<field name="DASH_PUNCTUATION" />
-		<field name="DECIMAL_DIGIT_NUMBER" />
-		<field name="DIRECTIONALITY_ARABIC_NUMBER" />
-		<field name="DIRECTIONALITY_BOUNDARY_NEUTRAL" />
-		<field name="DIRECTIONALITY_COMMON_NUMBER_SEPARATOR" />
-		<field name="DIRECTIONALITY_EUROPEAN_NUMBER" />
-		<field name="DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR" />
-		<field name="DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR" />
-		<field name="DIRECTIONALITY_LEFT_TO_RIGHT" />
-		<field name="DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING" />
-		<field name="DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE" />
-		<field name="DIRECTIONALITY_NONSPACING_MARK" />
-		<field name="DIRECTIONALITY_OTHER_NEUTRALS" />
-		<field name="DIRECTIONALITY_PARAGRAPH_SEPARATOR" />
-		<field name="DIRECTIONALITY_POP_DIRECTIONAL_FORMAT" />
-		<field name="DIRECTIONALITY_RIGHT_TO_LEFT" />
-		<field name="DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC" />
-		<field name="DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING" />
-		<field name="DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE" />
-		<field name="DIRECTIONALITY_SEGMENT_SEPARATOR" />
-		<field name="DIRECTIONALITY_UNDEFINED" />
-		<field name="DIRECTIONALITY_WHITESPACE" />
-		<field name="ENCLOSING_MARK" />
-		<field name="END_PUNCTUATION" />
-		<field name="FINAL_QUOTE_PUNCTUATION" />
-		<field name="FORMAT" />
-		<field name="INITIAL_QUOTE_PUNCTUATION" />
-		<field name="LETTER_NUMBER" />
-		<field name="LINE_SEPARATOR" />
-		<field name="LOWERCASE_LETTER" />
-		<field name="MATH_SYMBOL" />
-		<field name="MAX_CODE_POINT" />
-		<field name="MAX_HIGH_SURROGATE" />
-		<field name="MAX_LOW_SURROGATE" />
-		<field name="MAX_RADIX" />
-		<field name="MAX_SURROGATE" />
-		<field name="MAX_VALUE" />
-		<field name="MIN_CODE_POINT" />
-		<field name="MIN_HIGH_SURROGATE" />
-		<field name="MIN_LOW_SURROGATE" />
-		<field name="MIN_RADIX" />
-		<field name="MIN_SUPPLEMENTARY_CODE_POINT" />
-		<field name="MIN_SURROGATE" />
-		<field name="MIN_VALUE" />
-		<field name="MODIFIER_LETTER" />
-		<field name="MODIFIER_SYMBOL" />
-		<field name="NON_SPACING_MARK" />
-		<field name="OTHER_LETTER" />
-		<field name="OTHER_NUMBER" />
-		<field name="OTHER_PUNCTUATION" />
-		<field name="OTHER_SYMBOL" />
-		<field name="PARAGRAPH_SEPARATOR" />
-		<field name="PRIVATE_USE" />
-		<field name="SIZE" />
-		<field name="SPACE_SEPARATOR" />
-		<field name="START_PUNCTUATION" />
-		<field name="SURROGATE" />
-		<field name="TITLECASE_LETTER" />
-		<field name="TYPE" />
-		<field name="UNASSIGNED" />
-		<field name="UPPERCASE_LETTER" />
-	</class>
-	<class name="java/lang/Character$Subset" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/lang/Character$UnicodeBlock" since="1">
-		<extends name="java/lang/Character$Subset" />
-		<method name="&lt;init>()V" />
-		<method name="forName(Ljava/lang/String;)Ljava/lang/Character$UnicodeBlock;" />
-		<method name="of(C)Ljava/lang/Character$UnicodeBlock;" />
-		<method name="of(I)Ljava/lang/Character$UnicodeBlock;" />
-		<field name="AEGEAN_NUMBERS" />
-		<field name="ALCHEMICAL_SYMBOLS" since="19" />
-		<field name="ALPHABETIC_PRESENTATION_FORMS" />
-		<field name="ANCIENT_GREEK_MUSICAL_NOTATION" since="19" />
-		<field name="ANCIENT_GREEK_NUMBERS" since="19" />
-		<field name="ANCIENT_SYMBOLS" since="19" />
-		<field name="ARABIC" />
-		<field name="ARABIC_PRESENTATION_FORMS_A" />
-		<field name="ARABIC_PRESENTATION_FORMS_B" />
-		<field name="ARABIC_SUPPLEMENT" since="19" />
-		<field name="ARMENIAN" />
-		<field name="ARROWS" />
-		<field name="AVESTAN" since="19" />
-		<field name="BALINESE" since="19" />
-		<field name="BAMUM" since="19" />
-		<field name="BAMUM_SUPPLEMENT" since="19" />
-		<field name="BASIC_LATIN" />
-		<field name="BATAK" since="19" />
-		<field name="BENGALI" />
-		<field name="BLOCK_ELEMENTS" />
-		<field name="BOPOMOFO" />
-		<field name="BOPOMOFO_EXTENDED" />
-		<field name="BOX_DRAWING" />
-		<field name="BRAHMI" since="19" />
-		<field name="BRAILLE_PATTERNS" />
-		<field name="BUGINESE" since="19" />
-		<field name="BUHID" />
-		<field name="BYZANTINE_MUSICAL_SYMBOLS" />
-		<field name="CARIAN" since="19" />
-		<field name="CHAM" since="19" />
-		<field name="CHEROKEE" />
-		<field name="CJK_COMPATIBILITY" />
-		<field name="CJK_COMPATIBILITY_FORMS" />
-		<field name="CJK_COMPATIBILITY_IDEOGRAPHS" />
-		<field name="CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT" />
-		<field name="CJK_RADICALS_SUPPLEMENT" />
-		<field name="CJK_STROKES" since="19" />
-		<field name="CJK_SYMBOLS_AND_PUNCTUATION" />
-		<field name="CJK_UNIFIED_IDEOGRAPHS" />
-		<field name="CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A" />
-		<field name="CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B" />
-		<field name="CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C" since="19" />
-		<field name="CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D" since="19" />
-		<field name="COMBINING_DIACRITICAL_MARKS" />
-		<field name="COMBINING_DIACRITICAL_MARKS_SUPPLEMENT" since="19" />
-		<field name="COMBINING_HALF_MARKS" />
-		<field name="COMBINING_MARKS_FOR_SYMBOLS" />
-		<field name="COMMON_INDIC_NUMBER_FORMS" since="19" />
-		<field name="CONTROL_PICTURES" />
-		<field name="COPTIC" since="19" />
-		<field name="COUNTING_ROD_NUMERALS" since="19" />
-		<field name="CUNEIFORM" since="19" />
-		<field name="CUNEIFORM_NUMBERS_AND_PUNCTUATION" since="19" />
-		<field name="CURRENCY_SYMBOLS" />
-		<field name="CYPRIOT_SYLLABARY" />
-		<field name="CYRILLIC" />
-		<field name="CYRILLIC_EXTENDED_A" since="19" />
-		<field name="CYRILLIC_EXTENDED_B" since="19" />
-		<field name="CYRILLIC_SUPPLEMENTARY" />
-		<field name="DESERET" />
-		<field name="DEVANAGARI" />
-		<field name="DEVANAGARI_EXTENDED" since="19" />
-		<field name="DINGBATS" />
-		<field name="DOMINO_TILES" since="19" />
-		<field name="EGYPTIAN_HIEROGLYPHS" since="19" />
-		<field name="EMOTICONS" since="19" />
-		<field name="ENCLOSED_ALPHANUMERICS" />
-		<field name="ENCLOSED_ALPHANUMERIC_SUPPLEMENT" since="19" />
-		<field name="ENCLOSED_CJK_LETTERS_AND_MONTHS" />
-		<field name="ENCLOSED_IDEOGRAPHIC_SUPPLEMENT" since="19" />
-		<field name="ETHIOPIC" />
-		<field name="ETHIOPIC_EXTENDED" since="19" />
-		<field name="ETHIOPIC_EXTENDED_A" since="19" />
-		<field name="ETHIOPIC_SUPPLEMENT" since="19" />
-		<field name="GENERAL_PUNCTUATION" />
-		<field name="GEOMETRIC_SHAPES" />
-		<field name="GEORGIAN" />
-		<field name="GEORGIAN_SUPPLEMENT" since="19" />
-		<field name="GLAGOLITIC" since="19" />
-		<field name="GOTHIC" />
-		<field name="GREEK" />
-		<field name="GREEK_EXTENDED" />
-		<field name="GUJARATI" />
-		<field name="GURMUKHI" />
-		<field name="HALFWIDTH_AND_FULLWIDTH_FORMS" />
-		<field name="HANGUL_COMPATIBILITY_JAMO" />
-		<field name="HANGUL_JAMO" />
-		<field name="HANGUL_JAMO_EXTENDED_A" since="19" />
-		<field name="HANGUL_JAMO_EXTENDED_B" since="19" />
-		<field name="HANGUL_SYLLABLES" />
-		<field name="HANUNOO" />
-		<field name="HEBREW" />
-		<field name="HIGH_PRIVATE_USE_SURROGATES" />
-		<field name="HIGH_SURROGATES" />
-		<field name="HIRAGANA" />
-		<field name="IDEOGRAPHIC_DESCRIPTION_CHARACTERS" />
-		<field name="IMPERIAL_ARAMAIC" since="19" />
-		<field name="INSCRIPTIONAL_PAHLAVI" since="19" />
-		<field name="INSCRIPTIONAL_PARTHIAN" since="19" />
-		<field name="IPA_EXTENSIONS" />
-		<field name="JAVANESE" since="19" />
-		<field name="KAITHI" since="19" />
-		<field name="KANA_SUPPLEMENT" since="19" />
-		<field name="KANBUN" />
-		<field name="KANGXI_RADICALS" />
-		<field name="KANNADA" />
-		<field name="KATAKANA" />
-		<field name="KATAKANA_PHONETIC_EXTENSIONS" />
-		<field name="KAYAH_LI" since="19" />
-		<field name="KHAROSHTHI" since="19" />
-		<field name="KHMER" />
-		<field name="KHMER_SYMBOLS" />
-		<field name="LAO" />
-		<field name="LATIN_1_SUPPLEMENT" />
-		<field name="LATIN_EXTENDED_A" />
-		<field name="LATIN_EXTENDED_ADDITIONAL" />
-		<field name="LATIN_EXTENDED_B" />
-		<field name="LATIN_EXTENDED_C" since="19" />
-		<field name="LATIN_EXTENDED_D" since="19" />
-		<field name="LEPCHA" since="19" />
-		<field name="LETTERLIKE_SYMBOLS" />
-		<field name="LIMBU" />
-		<field name="LINEAR_B_IDEOGRAMS" />
-		<field name="LINEAR_B_SYLLABARY" />
-		<field name="LISU" since="19" />
-		<field name="LOW_SURROGATES" />
-		<field name="LYCIAN" since="19" />
-		<field name="LYDIAN" since="19" />
-		<field name="MAHJONG_TILES" since="19" />
-		<field name="MALAYALAM" />
-		<field name="MANDAIC" since="19" />
-		<field name="MATHEMATICAL_ALPHANUMERIC_SYMBOLS" />
-		<field name="MATHEMATICAL_OPERATORS" />
-		<field name="MEETEI_MAYEK" since="19" />
-		<field name="MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A" />
-		<field name="MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B" />
-		<field name="MISCELLANEOUS_SYMBOLS" />
-		<field name="MISCELLANEOUS_SYMBOLS_AND_ARROWS" />
-		<field name="MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS" since="19" />
-		<field name="MISCELLANEOUS_TECHNICAL" />
-		<field name="MODIFIER_TONE_LETTERS" since="19" />
-		<field name="MONGOLIAN" />
-		<field name="MUSICAL_SYMBOLS" />
-		<field name="MYANMAR" />
-		<field name="MYANMAR_EXTENDED_A" since="19" />
-		<field name="NEW_TAI_LUE" since="19" />
-		<field name="NKO" since="19" />
-		<field name="NUMBER_FORMS" />
-		<field name="OGHAM" />
-		<field name="OLD_ITALIC" />
-		<field name="OLD_PERSIAN" since="19" />
-		<field name="OLD_SOUTH_ARABIAN" since="19" />
-		<field name="OLD_TURKIC" since="19" />
-		<field name="OL_CHIKI" since="19" />
-		<field name="OPTICAL_CHARACTER_RECOGNITION" />
-		<field name="ORIYA" />
-		<field name="OSMANYA" />
-		<field name="PHAGS_PA" since="19" />
-		<field name="PHAISTOS_DISC" since="19" />
-		<field name="PHOENICIAN" since="19" />
-		<field name="PHONETIC_EXTENSIONS" />
-		<field name="PHONETIC_EXTENSIONS_SUPPLEMENT" since="19" />
-		<field name="PLAYING_CARDS" since="19" />
-		<field name="PRIVATE_USE_AREA" />
-		<field name="REJANG" since="19" />
-		<field name="RUMI_NUMERAL_SYMBOLS" since="19" />
-		<field name="RUNIC" />
-		<field name="SAMARITAN" since="19" />
-		<field name="SAURASHTRA" since="19" />
-		<field name="SHAVIAN" />
-		<field name="SINHALA" />
-		<field name="SMALL_FORM_VARIANTS" />
-		<field name="SPACING_MODIFIER_LETTERS" />
-		<field name="SPECIALS" />
-		<field name="SUNDANESE" since="19" />
-		<field name="SUPERSCRIPTS_AND_SUBSCRIPTS" />
-		<field name="SUPPLEMENTAL_ARROWS_A" />
-		<field name="SUPPLEMENTAL_ARROWS_B" />
-		<field name="SUPPLEMENTAL_MATHEMATICAL_OPERATORS" />
-		<field name="SUPPLEMENTAL_PUNCTUATION" since="19" />
-		<field name="SUPPLEMENTARY_PRIVATE_USE_AREA_A" />
-		<field name="SUPPLEMENTARY_PRIVATE_USE_AREA_B" />
-		<field name="SURROGATES_AREA" />
-		<field name="SYLOTI_NAGRI" since="19" />
-		<field name="SYRIAC" />
-		<field name="TAGALOG" />
-		<field name="TAGBANWA" />
-		<field name="TAGS" />
-		<field name="TAI_LE" />
-		<field name="TAI_THAM" since="19" />
-		<field name="TAI_VIET" since="19" />
-		<field name="TAI_XUAN_JING_SYMBOLS" />
-		<field name="TAMIL" />
-		<field name="TELUGU" />
-		<field name="THAANA" />
-		<field name="THAI" />
-		<field name="TIBETAN" />
-		<field name="TIFINAGH" since="19" />
-		<field name="TRANSPORT_AND_MAP_SYMBOLS" since="19" />
-		<field name="UGARITIC" />
-		<field name="UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS" />
-		<field name="UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED" since="19" />
-		<field name="VAI" since="19" />
-		<field name="VARIATION_SELECTORS" />
-		<field name="VARIATION_SELECTORS_SUPPLEMENT" />
-		<field name="VEDIC_EXTENSIONS" since="19" />
-		<field name="VERTICAL_FORMS" since="19" />
-		<field name="YIJING_HEXAGRAM_SYMBOLS" />
-		<field name="YI_RADICALS" />
-		<field name="YI_SYLLABLES" />
-	</class>
-	<class name="java/lang/Class" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<implements name="java/lang/reflect/AnnotatedElement" />
-		<implements name="java/lang/reflect/GenericDeclaration" />
-		<implements name="java/lang/reflect/Type" />
-		<method name="&lt;init>()V" />
-		<method name="asSubclass(Ljava/lang/Class;)Ljava/lang/Class;" />
-		<method name="cast(Ljava/lang/Object;)Ljava/lang/Object;" />
-		<method name="desiredAssertionStatus()Z" />
-		<method name="forName(Ljava/lang/String;)Ljava/lang/Class;" />
-		<method name="forName(Ljava/lang/String;ZLjava/lang/ClassLoader;)Ljava/lang/Class;" />
-		<method name="getCanonicalName()Ljava/lang/String;" />
-		<method name="getClassLoader()Ljava/lang/ClassLoader;" />
-		<method name="getClasses()[Ljava/lang/Class;" />
-		<method name="getComponentType()Ljava/lang/Class;" />
-		<method name="getConstructor([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;" />
-		<method name="getConstructors()[Ljava/lang/reflect/Constructor;" />
-		<method name="getDeclaredClasses()[Ljava/lang/Class;" />
-		<method name="getDeclaredConstructor([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;" />
-		<method name="getDeclaredConstructors()[Ljava/lang/reflect/Constructor;" />
-		<method name="getDeclaredField(Ljava/lang/String;)Ljava/lang/reflect/Field;" />
-		<method name="getDeclaredFields()[Ljava/lang/reflect/Field;" />
-		<method name="getDeclaredMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;" />
-		<method name="getDeclaredMethods()[Ljava/lang/reflect/Method;" />
-		<method name="getDeclaringClass()Ljava/lang/Class;" />
-		<method name="getEnclosingClass()Ljava/lang/Class;" />
-		<method name="getEnclosingConstructor()Ljava/lang/reflect/Constructor;" />
-		<method name="getEnclosingMethod()Ljava/lang/reflect/Method;" />
-		<method name="getEnumConstants()[Ljava/lang/Object;" />
-		<method name="getField(Ljava/lang/String;)Ljava/lang/reflect/Field;" />
-		<method name="getFields()[Ljava/lang/reflect/Field;" />
-		<method name="getGenericInterfaces()[Ljava/lang/reflect/Type;" />
-		<method name="getGenericSuperclass()Ljava/lang/reflect/Type;" />
-		<method name="getInterfaces()[Ljava/lang/Class;" />
-		<method name="getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;" />
-		<method name="getMethods()[Ljava/lang/reflect/Method;" />
-		<method name="getModifiers()I" />
-		<method name="getName()Ljava/lang/String;" />
-		<method name="getPackage()Ljava/lang/Package;" />
-		<method name="getProtectionDomain()Ljava/security/ProtectionDomain;" />
-		<method name="getResource(Ljava/lang/String;)Ljava/net/URL;" />
-		<method name="getResourceAsStream(Ljava/lang/String;)Ljava/io/InputStream;" />
-		<method name="getSigners()[Ljava/lang/Object;" />
-		<method name="getSimpleName()Ljava/lang/String;" />
-		<method name="getSuperclass()Ljava/lang/Class;" />
-		<method name="isAnnotation()Z" />
-		<method name="isAnonymousClass()Z" />
-		<method name="isArray()Z" />
-		<method name="isAssignableFrom(Ljava/lang/Class;)Z" />
-		<method name="isEnum()Z" />
-		<method name="isInstance(Ljava/lang/Object;)Z" />
-		<method name="isInterface()Z" />
-		<method name="isLocalClass()Z" />
-		<method name="isMemberClass()Z" />
-		<method name="isPrimitive()Z" />
-		<method name="isSynthetic()Z" />
-		<method name="newInstance()Ljava/lang/Object;" />
-	</class>
-	<class name="java/lang/ClassCastException" since="1">
-		<extends name="java/lang/RuntimeException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/lang/ClassCircularityError" since="1">
-		<extends name="java/lang/LinkageError" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/lang/ClassFormatError" since="1">
-		<extends name="java/lang/LinkageError" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/lang/ClassLoader" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/ClassLoader;)V" />
-		<method name="clearAssertionStatus()V" />
-		<method name="defineClass(Ljava/lang/String;Ljava/nio/ByteBuffer;Ljava/security/ProtectionDomain;)Ljava/lang/Class;" />
-		<method name="defineClass(Ljava/lang/String;[BII)Ljava/lang/Class;" />
-		<method name="defineClass(Ljava/lang/String;[BIILjava/security/ProtectionDomain;)Ljava/lang/Class;" />
-		<method name="defineClass([BII)Ljava/lang/Class;" />
-		<method name="definePackage(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/net/URL;)Ljava/lang/Package;" />
-		<method name="findClass(Ljava/lang/String;)Ljava/lang/Class;" />
-		<method name="findLibrary(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="findLoadedClass(Ljava/lang/String;)Ljava/lang/Class;" />
-		<method name="findResource(Ljava/lang/String;)Ljava/net/URL;" />
-		<method name="findResources(Ljava/lang/String;)Ljava/util/Enumeration;" />
-		<method name="findSystemClass(Ljava/lang/String;)Ljava/lang/Class;" />
-		<method name="getPackage(Ljava/lang/String;)Ljava/lang/Package;" />
-		<method name="getPackages()[Ljava/lang/Package;" />
-		<method name="getParent()Ljava/lang/ClassLoader;" />
-		<method name="getResource(Ljava/lang/String;)Ljava/net/URL;" />
-		<method name="getResourceAsStream(Ljava/lang/String;)Ljava/io/InputStream;" />
-		<method name="getResources(Ljava/lang/String;)Ljava/util/Enumeration;" />
-		<method name="getSystemClassLoader()Ljava/lang/ClassLoader;" />
-		<method name="getSystemResource(Ljava/lang/String;)Ljava/net/URL;" />
-		<method name="getSystemResourceAsStream(Ljava/lang/String;)Ljava/io/InputStream;" />
-		<method name="getSystemResources(Ljava/lang/String;)Ljava/util/Enumeration;" />
-		<method name="loadClass(Ljava/lang/String;)Ljava/lang/Class;" />
-		<method name="loadClass(Ljava/lang/String;Z)Ljava/lang/Class;" />
-		<method name="resolveClass(Ljava/lang/Class;)V" />
-		<method name="setClassAssertionStatus(Ljava/lang/String;Z)V" />
-		<method name="setDefaultAssertionStatus(Z)V" />
-		<method name="setPackageAssertionStatus(Ljava/lang/String;Z)V" />
-		<method name="setSigners(Ljava/lang/Class;[Ljava/lang/Object;)V" />
-	</class>
-	<class name="java/lang/ClassNotFoundException" since="1">
-		<extends name="java/lang/Exception" />
-		<extends name="java/lang/ReflectiveOperationException" since="19" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="getException()Ljava/lang/Throwable;" />
-	</class>
-	<class name="java/lang/CloneNotSupportedException" since="1">
-		<extends name="java/lang/Exception" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/lang/Cloneable" since="1">
-		<extends name="java/lang/Object" />
-	</class>
-	<class name="java/lang/Comparable" since="1">
-		<extends name="java/lang/Object" />
-		<method name="compareTo(Ljava/lang/Object;)I" />
-	</class>
-	<class name="java/lang/Compiler" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="command(Ljava/lang/Object;)Ljava/lang/Object;" />
-		<method name="compileClass(Ljava/lang/Class;)Z" />
-		<method name="compileClasses(Ljava/lang/String;)Z" />
-		<method name="disable()V" />
-		<method name="enable()V" />
-	</class>
-	<class name="java/lang/Deprecated" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/annotation/Annotation" />
-	</class>
-	<class name="java/lang/Double" since="1">
-		<extends name="java/lang/Number" />
-		<implements name="java/lang/Comparable" />
-		<method name="&lt;init>(D)V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="compare(DD)I" />
-		<method name="compareTo(Ljava/lang/Double;)I" />
-		<method name="doubleToLongBits(D)J" />
-		<method name="doubleToRawLongBits(D)J" />
-		<method name="isInfinite()Z" />
-		<method name="isInfinite(D)Z" />
-		<method name="isNaN()Z" />
-		<method name="isNaN(D)Z" />
-		<method name="longBitsToDouble(J)D" />
-		<method name="parseDouble(Ljava/lang/String;)D" />
-		<method name="toHexString(D)Ljava/lang/String;" />
-		<method name="toString(D)Ljava/lang/String;" />
-		<method name="valueOf(D)Ljava/lang/Double;" />
-		<method name="valueOf(Ljava/lang/String;)Ljava/lang/Double;" />
-		<field name="MAX_EXPONENT" since="9" />
-		<field name="MAX_VALUE" />
-		<field name="MIN_EXPONENT" since="9" />
-		<field name="MIN_NORMAL" since="9" />
-		<field name="MIN_VALUE" />
-		<field name="NEGATIVE_INFINITY" />
-		<field name="NaN" />
-		<field name="POSITIVE_INFINITY" />
-		<field name="SIZE" />
-		<field name="TYPE" />
-	</class>
-	<class name="java/lang/Enum" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<implements name="java/lang/Comparable" />
-		<method name="&lt;init>(Ljava/lang/String;I)V" />
-		<method name="compareTo(Ljava/lang/Enum;)I" />
-		<method name="getDeclaringClass()Ljava/lang/Class;" />
-		<method name="name()Ljava/lang/String;" />
-		<method name="ordinal()I" />
-		<method name="valueOf(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum;" />
-	</class>
-	<class name="java/lang/EnumConstantNotPresentException" since="1">
-		<extends name="java/lang/RuntimeException" />
-		<method name="&lt;init>(Ljava/lang/Class;Ljava/lang/String;)V" />
-		<method name="constantName()Ljava/lang/String;" />
-		<method name="enumType()Ljava/lang/Class;" />
-	</class>
-	<class name="java/lang/Error" since="1">
-		<extends name="java/lang/Throwable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="java/lang/Exception" since="1">
-		<extends name="java/lang/Throwable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="java/lang/ExceptionInInitializerError" since="1">
-		<extends name="java/lang/LinkageError" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
-		<method name="getException()Ljava/lang/Throwable;" />
-	</class>
-	<class name="java/lang/Float" since="1">
-		<extends name="java/lang/Number" />
-		<implements name="java/lang/Comparable" />
-		<method name="&lt;init>(D)V" />
-		<method name="&lt;init>(F)V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="compare(FF)I" />
-		<method name="compareTo(Ljava/lang/Float;)I" />
-		<method name="floatToIntBits(F)I" />
-		<method name="floatToRawIntBits(F)I" />
-		<method name="intBitsToFloat(I)F" />
-		<method name="isInfinite()Z" />
-		<method name="isInfinite(F)Z" />
-		<method name="isNaN()Z" />
-		<method name="isNaN(F)Z" />
-		<method name="parseFloat(Ljava/lang/String;)F" />
-		<method name="toHexString(F)Ljava/lang/String;" />
-		<method name="toString(F)Ljava/lang/String;" />
-		<method name="valueOf(F)Ljava/lang/Float;" />
-		<method name="valueOf(Ljava/lang/String;)Ljava/lang/Float;" />
-		<field name="MAX_EXPONENT" since="9" />
-		<field name="MAX_VALUE" />
-		<field name="MIN_EXPONENT" since="9" />
-		<field name="MIN_NORMAL" since="9" />
-		<field name="MIN_VALUE" />
-		<field name="NEGATIVE_INFINITY" />
-		<field name="NaN" />
-		<field name="POSITIVE_INFINITY" />
-		<field name="SIZE" />
-		<field name="TYPE" />
-	</class>
-	<class name="java/lang/IllegalAccessError" since="1">
-		<extends name="java/lang/IncompatibleClassChangeError" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/lang/IllegalAccessException" since="1">
-		<extends name="java/lang/Exception" />
-		<extends name="java/lang/ReflectiveOperationException" since="19" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/lang/IllegalArgumentException" since="1">
-		<extends name="java/lang/RuntimeException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="java/lang/IllegalMonitorStateException" since="1">
-		<extends name="java/lang/RuntimeException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/lang/IllegalStateException" since="1">
-		<extends name="java/lang/RuntimeException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="java/lang/IllegalThreadStateException" since="1">
-		<extends name="java/lang/IllegalArgumentException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/lang/IncompatibleClassChangeError" since="1">
-		<extends name="java/lang/LinkageError" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/lang/IndexOutOfBoundsException" since="1">
-		<extends name="java/lang/RuntimeException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/lang/InheritableThreadLocal" since="1">
-		<extends name="java/lang/ThreadLocal" />
-		<method name="&lt;init>()V" />
-		<method name="childValue(Ljava/lang/Object;)Ljava/lang/Object;" />
-	</class>
-	<class name="java/lang/InstantiationError" since="1">
-		<extends name="java/lang/IncompatibleClassChangeError" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/lang/InstantiationException" since="1">
-		<extends name="java/lang/Exception" />
-		<extends name="java/lang/ReflectiveOperationException" since="19" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/lang/Integer" since="1">
-		<extends name="java/lang/Number" />
-		<implements name="java/lang/Comparable" />
-		<method name="&lt;init>(I)V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="bitCount(I)I" />
-		<method name="compare(II)I" since="19" />
-		<method name="compareTo(Ljava/lang/Integer;)I" />
-		<method name="decode(Ljava/lang/String;)Ljava/lang/Integer;" />
-		<method name="getInteger(Ljava/lang/String;)Ljava/lang/Integer;" />
-		<method name="getInteger(Ljava/lang/String;I)Ljava/lang/Integer;" />
-		<method name="getInteger(Ljava/lang/String;Ljava/lang/Integer;)Ljava/lang/Integer;" />
-		<method name="highestOneBit(I)I" />
-		<method name="lowestOneBit(I)I" />
-		<method name="numberOfLeadingZeros(I)I" />
-		<method name="numberOfTrailingZeros(I)I" />
-		<method name="parseInt(Ljava/lang/String;)I" />
-		<method name="parseInt(Ljava/lang/String;I)I" />
-		<method name="reverse(I)I" />
-		<method name="reverseBytes(I)I" />
-		<method name="rotateLeft(II)I" />
-		<method name="rotateRight(II)I" />
-		<method name="signum(I)I" />
-		<method name="toBinaryString(I)Ljava/lang/String;" />
-		<method name="toHexString(I)Ljava/lang/String;" />
-		<method name="toOctalString(I)Ljava/lang/String;" />
-		<method name="toString(I)Ljava/lang/String;" />
-		<method name="toString(II)Ljava/lang/String;" />
-		<method name="valueOf(I)Ljava/lang/Integer;" />
-		<method name="valueOf(Ljava/lang/String;)Ljava/lang/Integer;" />
-		<method name="valueOf(Ljava/lang/String;I)Ljava/lang/Integer;" />
-		<field name="MAX_VALUE" />
-		<field name="MIN_VALUE" />
-		<field name="SIZE" />
-		<field name="TYPE" />
-	</class>
-	<class name="java/lang/InternalError" since="1">
-		<extends name="java/lang/VirtualMachineError" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/lang/InterruptedException" since="1">
-		<extends name="java/lang/Exception" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/lang/Iterable" since="1">
-		<extends name="java/lang/Object" />
-		<method name="iterator()Ljava/util/Iterator;" />
-	</class>
-	<class name="java/lang/LinkageError" since="1">
-		<extends name="java/lang/Error" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" since="19" />
-	</class>
-	<class name="java/lang/Long" since="1">
-		<extends name="java/lang/Number" />
-		<implements name="java/lang/Comparable" />
-		<method name="&lt;init>(J)V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="bitCount(J)I" />
-		<method name="compare(JJ)I" since="19" />
-		<method name="compareTo(Ljava/lang/Long;)I" />
-		<method name="decode(Ljava/lang/String;)Ljava/lang/Long;" />
-		<method name="getLong(Ljava/lang/String;)Ljava/lang/Long;" />
-		<method name="getLong(Ljava/lang/String;J)Ljava/lang/Long;" />
-		<method name="getLong(Ljava/lang/String;Ljava/lang/Long;)Ljava/lang/Long;" />
-		<method name="highestOneBit(J)J" />
-		<method name="lowestOneBit(J)J" />
-		<method name="numberOfLeadingZeros(J)I" />
-		<method name="numberOfTrailingZeros(J)I" />
-		<method name="parseLong(Ljava/lang/String;)J" />
-		<method name="parseLong(Ljava/lang/String;I)J" />
-		<method name="reverse(J)J" />
-		<method name="reverseBytes(J)J" />
-		<method name="rotateLeft(JI)J" />
-		<method name="rotateRight(JI)J" />
-		<method name="signum(J)I" />
-		<method name="toBinaryString(J)Ljava/lang/String;" />
-		<method name="toHexString(J)Ljava/lang/String;" />
-		<method name="toOctalString(J)Ljava/lang/String;" />
-		<method name="toString(J)Ljava/lang/String;" />
-		<method name="toString(JI)Ljava/lang/String;" />
-		<method name="valueOf(J)Ljava/lang/Long;" />
-		<method name="valueOf(Ljava/lang/String;)Ljava/lang/Long;" />
-		<method name="valueOf(Ljava/lang/String;I)Ljava/lang/Long;" />
-		<field name="MAX_VALUE" />
-		<field name="MIN_VALUE" />
-		<field name="SIZE" />
-		<field name="TYPE" />
-	</class>
-	<class name="java/lang/Math" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="IEEEremainder(DD)D" />
-		<method name="abs(D)D" />
-		<method name="abs(F)F" />
-		<method name="abs(I)I" />
-		<method name="abs(J)J" />
-		<method name="acos(D)D" />
-		<method name="asin(D)D" />
-		<method name="atan(D)D" />
-		<method name="atan2(DD)D" />
-		<method name="cbrt(D)D" />
-		<method name="ceil(D)D" />
-		<method name="copySign(DD)D" since="9" />
-		<method name="copySign(FF)F" since="9" />
-		<method name="cos(D)D" />
-		<method name="cosh(D)D" />
-		<method name="exp(D)D" />
-		<method name="expm1(D)D" />
-		<method name="floor(D)D" />
-		<method name="getExponent(D)I" since="9" />
-		<method name="getExponent(F)I" since="9" />
-		<method name="hypot(DD)D" />
-		<method name="log(D)D" />
-		<method name="log10(D)D" />
-		<method name="log1p(D)D" />
-		<method name="max(DD)D" />
-		<method name="max(FF)F" />
-		<method name="max(II)I" />
-		<method name="max(JJ)J" />
-		<method name="min(DD)D" />
-		<method name="min(FF)F" />
-		<method name="min(II)I" />
-		<method name="min(JJ)J" />
-		<method name="nextAfter(DD)D" since="9" />
-		<method name="nextAfter(FD)F" since="9" />
-		<method name="nextUp(D)D" since="9" />
-		<method name="nextUp(F)F" since="9" />
-		<method name="pow(DD)D" />
-		<method name="random()D" />
-		<method name="rint(D)D" />
-		<method name="round(D)J" />
-		<method name="round(F)I" />
-		<method name="scalb(DI)D" since="9" />
-		<method name="scalb(FI)F" since="9" />
-		<method name="signum(D)D" />
-		<method name="signum(F)F" />
-		<method name="sin(D)D" />
-		<method name="sinh(D)D" />
-		<method name="sqrt(D)D" />
-		<method name="tan(D)D" />
-		<method name="tanh(D)D" />
-		<method name="toDegrees(D)D" />
-		<method name="toRadians(D)D" />
-		<method name="ulp(D)D" />
-		<method name="ulp(F)F" />
-		<field name="E" />
-		<field name="PI" />
-	</class>
-	<class name="java/lang/NegativeArraySizeException" since="1">
-		<extends name="java/lang/RuntimeException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/lang/NoClassDefFoundError" since="1">
-		<extends name="java/lang/LinkageError" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/lang/NoSuchFieldError" since="1">
-		<extends name="java/lang/IncompatibleClassChangeError" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/lang/NoSuchFieldException" since="1">
-		<extends name="java/lang/Exception" />
-		<extends name="java/lang/ReflectiveOperationException" since="19" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/lang/NoSuchMethodError" since="1">
-		<extends name="java/lang/IncompatibleClassChangeError" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/lang/NoSuchMethodException" since="1">
-		<extends name="java/lang/Exception" />
-		<extends name="java/lang/ReflectiveOperationException" since="19" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/lang/NullPointerException" since="1">
-		<extends name="java/lang/RuntimeException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/lang/Number" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<method name="&lt;init>()V" />
-		<method name="byteValue()B" />
-		<method name="doubleValue()D" />
-		<method name="floatValue()F" />
-		<method name="intValue()I" />
-		<method name="longValue()J" />
-		<method name="shortValue()S" />
-	</class>
-	<class name="java/lang/NumberFormatException" since="1">
-		<extends name="java/lang/IllegalArgumentException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/lang/Object" since="1">
-		<method name="&lt;init>()V" />
-		<method name="clone()Ljava/lang/Object;" />
-		<method name="equals(Ljava/lang/Object;)Z" />
-		<method name="finalize()V" />
-		<method name="getClass()Ljava/lang/Class;" />
-		<method name="hashCode()I" />
-		<method name="notify()V" />
-		<method name="notifyAll()V" />
-		<method name="toString()Ljava/lang/String;" />
-		<method name="wait()V" />
-		<method name="wait(J)V" />
-		<method name="wait(JI)V" />
-	</class>
-	<class name="java/lang/OutOfMemoryError" since="1">
-		<extends name="java/lang/VirtualMachineError" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/lang/Override" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/annotation/Annotation" />
-	</class>
-	<class name="java/lang/Package" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/reflect/AnnotatedElement" />
-		<method name="&lt;init>()V" />
-		<method name="getImplementationTitle()Ljava/lang/String;" />
-		<method name="getImplementationVendor()Ljava/lang/String;" />
-		<method name="getImplementationVersion()Ljava/lang/String;" />
-		<method name="getName()Ljava/lang/String;" />
-		<method name="getPackage(Ljava/lang/String;)Ljava/lang/Package;" />
-		<method name="getPackages()[Ljava/lang/Package;" />
-		<method name="getSpecificationTitle()Ljava/lang/String;" />
-		<method name="getSpecificationVendor()Ljava/lang/String;" />
-		<method name="getSpecificationVersion()Ljava/lang/String;" />
-		<method name="isCompatibleWith(Ljava/lang/String;)Z" />
-		<method name="isSealed()Z" />
-		<method name="isSealed(Ljava/net/URL;)Z" />
-	</class>
-	<class name="java/lang/Process" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="destroy()V" />
-		<method name="exitValue()I" />
-		<method name="getErrorStream()Ljava/io/InputStream;" />
-		<method name="getInputStream()Ljava/io/InputStream;" />
-		<method name="getOutputStream()Ljava/io/OutputStream;" />
-		<method name="waitFor()I" />
-	</class>
-	<class name="java/lang/ProcessBuilder" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/util/List;)V" />
-		<method name="&lt;init>([Ljava/lang/String;)V" />
-		<method name="command()Ljava/util/List;" />
-		<method name="command(Ljava/util/List;)Ljava/lang/ProcessBuilder;" />
-		<method name="command([Ljava/lang/String;)Ljava/lang/ProcessBuilder;" />
-		<method name="directory()Ljava/io/File;" />
-		<method name="directory(Ljava/io/File;)Ljava/lang/ProcessBuilder;" />
-		<method name="environment()Ljava/util/Map;" />
-		<method name="redirectErrorStream()Z" />
-		<method name="redirectErrorStream(Z)Ljava/lang/ProcessBuilder;" />
-		<method name="start()Ljava/lang/Process;" />
-	</class>
-	<class name="java/lang/Readable" since="1">
-		<extends name="java/lang/Object" />
-		<method name="read(Ljava/nio/CharBuffer;)I" />
-	</class>
-	<class name="java/lang/ReflectiveOperationException" since="19">
-		<extends name="java/lang/Exception" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="java/lang/Runnable" since="1">
-		<extends name="java/lang/Object" />
-		<method name="run()V" />
-	</class>
-	<class name="java/lang/Runtime" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="addShutdownHook(Ljava/lang/Thread;)V" />
-		<method name="availableProcessors()I" />
-		<method name="exec(Ljava/lang/String;)Ljava/lang/Process;" />
-		<method name="exec(Ljava/lang/String;[Ljava/lang/String;)Ljava/lang/Process;" />
-		<method name="exec(Ljava/lang/String;[Ljava/lang/String;Ljava/io/File;)Ljava/lang/Process;" />
-		<method name="exec([Ljava/lang/String;)Ljava/lang/Process;" />
-		<method name="exec([Ljava/lang/String;[Ljava/lang/String;)Ljava/lang/Process;" />
-		<method name="exec([Ljava/lang/String;[Ljava/lang/String;Ljava/io/File;)Ljava/lang/Process;" />
-		<method name="exit(I)V" />
-		<method name="freeMemory()J" />
-		<method name="gc()V" />
-		<method name="getLocalizedInputStream(Ljava/io/InputStream;)Ljava/io/InputStream;" />
-		<method name="getLocalizedOutputStream(Ljava/io/OutputStream;)Ljava/io/OutputStream;" />
-		<method name="getRuntime()Ljava/lang/Runtime;" />
-		<method name="halt(I)V" />
-		<method name="load(Ljava/lang/String;)V" />
-		<method name="loadLibrary(Ljava/lang/String;)V" />
-		<method name="maxMemory()J" />
-		<method name="removeShutdownHook(Ljava/lang/Thread;)Z" />
-		<method name="runFinalization()V" />
-		<method name="runFinalizersOnExit(Z)V" />
-		<method name="totalMemory()J" />
-		<method name="traceInstructions(Z)V" />
-		<method name="traceMethodCalls(Z)V" />
-	</class>
-	<class name="java/lang/RuntimeException" since="1">
-		<extends name="java/lang/Exception" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="java/lang/RuntimePermission" since="1">
-		<extends name="java/security/BasicPermission" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
-	</class>
-	<class name="java/lang/SafeVarargs" since="19">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/annotation/Annotation" />
-	</class>
-	<class name="java/lang/SecurityException" since="1">
-		<extends name="java/lang/RuntimeException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="java/lang/SecurityManager" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="checkAccept(Ljava/lang/String;I)V" />
-		<method name="checkAccess(Ljava/lang/Thread;)V" />
-		<method name="checkAccess(Ljava/lang/ThreadGroup;)V" />
-		<method name="checkAwtEventQueueAccess()V" />
-		<method name="checkConnect(Ljava/lang/String;I)V" />
-		<method name="checkConnect(Ljava/lang/String;ILjava/lang/Object;)V" />
-		<method name="checkCreateClassLoader()V" />
-		<method name="checkDelete(Ljava/lang/String;)V" />
-		<method name="checkExec(Ljava/lang/String;)V" />
-		<method name="checkExit(I)V" />
-		<method name="checkLink(Ljava/lang/String;)V" />
-		<method name="checkListen(I)V" />
-		<method name="checkMemberAccess(Ljava/lang/Class;I)V" />
-		<method name="checkMulticast(Ljava/net/InetAddress;)V" />
-		<method name="checkMulticast(Ljava/net/InetAddress;B)V" />
-		<method name="checkPackageAccess(Ljava/lang/String;)V" />
-		<method name="checkPackageDefinition(Ljava/lang/String;)V" />
-		<method name="checkPermission(Ljava/security/Permission;)V" />
-		<method name="checkPermission(Ljava/security/Permission;Ljava/lang/Object;)V" />
-		<method name="checkPrintJobAccess()V" />
-		<method name="checkPropertiesAccess()V" />
-		<method name="checkPropertyAccess(Ljava/lang/String;)V" />
-		<method name="checkRead(Ljava/io/FileDescriptor;)V" />
-		<method name="checkRead(Ljava/lang/String;)V" />
-		<method name="checkRead(Ljava/lang/String;Ljava/lang/Object;)V" />
-		<method name="checkSecurityAccess(Ljava/lang/String;)V" />
-		<method name="checkSetFactory()V" />
-		<method name="checkSystemClipboardAccess()V" />
-		<method name="checkTopLevelWindow(Ljava/lang/Object;)Z" />
-		<method name="checkWrite(Ljava/io/FileDescriptor;)V" />
-		<method name="checkWrite(Ljava/lang/String;)V" />
-		<method name="classDepth(Ljava/lang/String;)I" />
-		<method name="classLoaderDepth()I" />
-		<method name="currentClassLoader()Ljava/lang/ClassLoader;" />
-		<method name="currentLoadedClass()Ljava/lang/Class;" />
-		<method name="getClassContext()[Ljava/lang/Class;" />
-		<method name="getInCheck()Z" />
-		<method name="getSecurityContext()Ljava/lang/Object;" />
-		<method name="getThreadGroup()Ljava/lang/ThreadGroup;" />
-		<method name="inClass(Ljava/lang/String;)Z" />
-		<method name="inClassLoader()Z" />
-		<field name="inCheck" />
-	</class>
-	<class name="java/lang/Short" since="1">
-		<extends name="java/lang/Number" />
-		<implements name="java/lang/Comparable" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(S)V" />
-		<method name="compare(SS)I" since="19" />
-		<method name="compareTo(Ljava/lang/Short;)I" />
-		<method name="decode(Ljava/lang/String;)Ljava/lang/Short;" />
-		<method name="parseShort(Ljava/lang/String;)S" />
-		<method name="parseShort(Ljava/lang/String;I)S" />
-		<method name="reverseBytes(S)S" />
-		<method name="toString(S)Ljava/lang/String;" />
-		<method name="valueOf(Ljava/lang/String;)Ljava/lang/Short;" />
-		<method name="valueOf(Ljava/lang/String;I)Ljava/lang/Short;" />
-		<method name="valueOf(S)Ljava/lang/Short;" />
-		<field name="MAX_VALUE" />
-		<field name="MIN_VALUE" />
-		<field name="SIZE" />
-		<field name="TYPE" />
-	</class>
-	<class name="java/lang/StackOverflowError" since="1">
-		<extends name="java/lang/VirtualMachineError" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/lang/StackTraceElement" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V" />
-		<method name="getClassName()Ljava/lang/String;" />
-		<method name="getFileName()Ljava/lang/String;" />
-		<method name="getLineNumber()I" />
-		<method name="getMethodName()Ljava/lang/String;" />
-		<method name="isNativeMethod()Z" />
-	</class>
-	<class name="java/lang/StrictMath" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="IEEEremainder(DD)D" />
-		<method name="abs(D)D" />
-		<method name="abs(F)F" />
-		<method name="abs(I)I" />
-		<method name="abs(J)J" />
-		<method name="acos(D)D" />
-		<method name="asin(D)D" />
-		<method name="atan(D)D" />
-		<method name="atan2(DD)D" />
-		<method name="cbrt(D)D" />
-		<method name="ceil(D)D" />
-		<method name="copySign(DD)D" since="9" />
-		<method name="copySign(FF)F" since="9" />
-		<method name="cos(D)D" />
-		<method name="cosh(D)D" />
-		<method name="exp(D)D" />
-		<method name="expm1(D)D" />
-		<method name="floor(D)D" />
-		<method name="getExponent(D)I" since="9" />
-		<method name="getExponent(F)I" since="9" />
-		<method name="hypot(DD)D" />
-		<method name="log(D)D" />
-		<method name="log10(D)D" />
-		<method name="log1p(D)D" />
-		<method name="max(DD)D" />
-		<method name="max(FF)F" />
-		<method name="max(II)I" />
-		<method name="max(JJ)J" />
-		<method name="min(DD)D" />
-		<method name="min(FF)F" />
-		<method name="min(II)I" />
-		<method name="min(JJ)J" />
-		<method name="nextAfter(DD)D" since="9" />
-		<method name="nextAfter(FD)F" since="9" />
-		<method name="nextUp(D)D" since="9" />
-		<method name="nextUp(F)F" since="9" />
-		<method name="pow(DD)D" />
-		<method name="random()D" />
-		<method name="rint(D)D" />
-		<method name="round(D)J" />
-		<method name="round(F)I" />
-		<method name="scalb(DI)D" since="9" />
-		<method name="scalb(FI)F" since="9" />
-		<method name="signum(D)D" />
-		<method name="signum(F)F" />
-		<method name="sin(D)D" />
-		<method name="sinh(D)D" />
-		<method name="sqrt(D)D" />
-		<method name="tan(D)D" />
-		<method name="tanh(D)D" />
-		<method name="toDegrees(D)D" />
-		<method name="toRadians(D)D" />
-		<method name="ulp(D)D" />
-		<method name="ulp(F)F" />
-		<field name="E" />
-		<field name="PI" />
-	</class>
-	<class name="java/lang/String" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<implements name="java/lang/CharSequence" />
-		<implements name="java/lang/Comparable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/StringBuffer;)V" />
-		<method name="&lt;init>(Ljava/lang/StringBuilder;)V" />
-		<method name="&lt;init>([B)V" />
-		<method name="&lt;init>([BI)V" />
-		<method name="&lt;init>([BII)V" />
-		<method name="&lt;init>([BIII)V" />
-		<method name="&lt;init>([BIILjava/lang/String;)V" />
-		<method name="&lt;init>([BIILjava/nio/charset/Charset;)V" since="9" />
-		<method name="&lt;init>([BLjava/lang/String;)V" />
-		<method name="&lt;init>([BLjava/nio/charset/Charset;)V" since="9" />
-		<method name="&lt;init>([C)V" />
-		<method name="&lt;init>([CII)V" />
-		<method name="&lt;init>([III)V" />
-		<method name="codePointAt(I)I" />
-		<method name="codePointBefore(I)I" />
-		<method name="codePointCount(II)I" />
-		<method name="compareTo(Ljava/lang/String;)I" />
-		<method name="compareToIgnoreCase(Ljava/lang/String;)I" />
-		<method name="concat(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="contains(Ljava/lang/CharSequence;)Z" />
-		<method name="contentEquals(Ljava/lang/CharSequence;)Z" />
-		<method name="contentEquals(Ljava/lang/StringBuffer;)Z" />
-		<method name="copyValueOf([C)Ljava/lang/String;" />
-		<method name="copyValueOf([CII)Ljava/lang/String;" />
-		<method name="endsWith(Ljava/lang/String;)Z" />
-		<method name="equalsIgnoreCase(Ljava/lang/String;)Z" />
-		<method name="format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;" />
-		<method name="format(Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;" />
-		<method name="getBytes()[B" />
-		<method name="getBytes(II[BI)V" />
-		<method name="getBytes(Ljava/lang/String;)[B" />
-		<method name="getBytes(Ljava/nio/charset/Charset;)[B" since="9" />
-		<method name="getChars(II[CI)V" />
-		<method name="indexOf(I)I" />
-		<method name="indexOf(II)I" />
-		<method name="indexOf(Ljava/lang/String;)I" />
-		<method name="indexOf(Ljava/lang/String;I)I" />
-		<method name="intern()Ljava/lang/String;" />
-		<method name="isEmpty()Z" since="9" />
-		<method name="lastIndexOf(I)I" />
-		<method name="lastIndexOf(II)I" />
-		<method name="lastIndexOf(Ljava/lang/String;)I" />
-		<method name="lastIndexOf(Ljava/lang/String;I)I" />
-		<method name="matches(Ljava/lang/String;)Z" />
-		<method name="offsetByCodePoints(II)I" />
-		<method name="regionMatches(ILjava/lang/String;II)Z" />
-		<method name="regionMatches(ZILjava/lang/String;II)Z" />
-		<method name="replace(CC)Ljava/lang/String;" />
-		<method name="replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;" />
-		<method name="replaceAll(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="replaceFirst(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="split(Ljava/lang/String;)[Ljava/lang/String;" />
-		<method name="split(Ljava/lang/String;I)[Ljava/lang/String;" />
-		<method name="startsWith(Ljava/lang/String;)Z" />
-		<method name="startsWith(Ljava/lang/String;I)Z" />
-		<method name="substring(I)Ljava/lang/String;" />
-		<method name="substring(II)Ljava/lang/String;" />
-		<method name="toCharArray()[C" />
-		<method name="toLowerCase()Ljava/lang/String;" />
-		<method name="toLowerCase(Ljava/util/Locale;)Ljava/lang/String;" />
-		<method name="toUpperCase()Ljava/lang/String;" />
-		<method name="toUpperCase(Ljava/util/Locale;)Ljava/lang/String;" />
-		<method name="trim()Ljava/lang/String;" />
-		<method name="valueOf(C)Ljava/lang/String;" />
-		<method name="valueOf(D)Ljava/lang/String;" />
-		<method name="valueOf(F)Ljava/lang/String;" />
-		<method name="valueOf(I)Ljava/lang/String;" />
-		<method name="valueOf(J)Ljava/lang/String;" />
-		<method name="valueOf(Ljava/lang/Object;)Ljava/lang/String;" />
-		<method name="valueOf(Z)Ljava/lang/String;" />
-		<method name="valueOf([C)Ljava/lang/String;" />
-		<method name="valueOf([CII)Ljava/lang/String;" />
-		<field name="CASE_INSENSITIVE_ORDER" />
-	</class>
-	<class name="java/lang/StringBuffer" since="1">
-		<extends name="java/lang/AbstractStringBuilder" />
-		<implements name="java/io/Serializable" />
-		<implements name="java/lang/Appendable" />
-		<implements name="java/lang/CharSequence" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(I)V" />
-		<method name="&lt;init>(Ljava/lang/CharSequence;)V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="append(C)Ljava/lang/StringBuffer;" />
-		<method name="append(D)Ljava/lang/StringBuffer;" />
-		<method name="append(F)Ljava/lang/StringBuffer;" />
-		<method name="append(I)Ljava/lang/StringBuffer;" />
-		<method name="append(J)Ljava/lang/StringBuffer;" />
-		<method name="append(Ljava/lang/CharSequence;)Ljava/lang/StringBuffer;" />
-		<method name="append(Ljava/lang/CharSequence;II)Ljava/lang/StringBuffer;" />
-		<method name="append(Ljava/lang/Object;)Ljava/lang/StringBuffer;" />
-		<method name="append(Ljava/lang/String;)Ljava/lang/StringBuffer;" />
-		<method name="append(Ljava/lang/StringBuffer;)Ljava/lang/StringBuffer;" />
-		<method name="append(Z)Ljava/lang/StringBuffer;" />
-		<method name="append([C)Ljava/lang/StringBuffer;" />
-		<method name="append([CII)Ljava/lang/StringBuffer;" />
-		<method name="appendCodePoint(I)Ljava/lang/StringBuffer;" />
-		<method name="delete(II)Ljava/lang/StringBuffer;" />
-		<method name="deleteCharAt(I)Ljava/lang/StringBuffer;" />
-		<method name="insert(IC)Ljava/lang/StringBuffer;" />
-		<method name="insert(ID)Ljava/lang/StringBuffer;" />
-		<method name="insert(IF)Ljava/lang/StringBuffer;" />
-		<method name="insert(II)Ljava/lang/StringBuffer;" />
-		<method name="insert(IJ)Ljava/lang/StringBuffer;" />
-		<method name="insert(ILjava/lang/CharSequence;)Ljava/lang/StringBuffer;" />
-		<method name="insert(ILjava/lang/CharSequence;II)Ljava/lang/StringBuffer;" />
-		<method name="insert(ILjava/lang/Object;)Ljava/lang/StringBuffer;" />
-		<method name="insert(ILjava/lang/String;)Ljava/lang/StringBuffer;" />
-		<method name="insert(IZ)Ljava/lang/StringBuffer;" />
-		<method name="insert(I[C)Ljava/lang/StringBuffer;" />
-		<method name="insert(I[CII)Ljava/lang/StringBuffer;" />
-		<method name="replace(IILjava/lang/String;)Ljava/lang/StringBuffer;" />
-		<method name="reverse()Ljava/lang/StringBuffer;" />
-	</class>
-	<class name="java/lang/StringBuilder" since="1">
-		<extends name="java/lang/AbstractStringBuilder" />
-		<implements name="java/io/Serializable" />
-		<implements name="java/lang/Appendable" />
-		<implements name="java/lang/CharSequence" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(I)V" />
-		<method name="&lt;init>(Ljava/lang/CharSequence;)V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="append(C)Ljava/lang/StringBuilder;" />
-		<method name="append(D)Ljava/lang/StringBuilder;" />
-		<method name="append(F)Ljava/lang/StringBuilder;" />
-		<method name="append(I)Ljava/lang/StringBuilder;" />
-		<method name="append(J)Ljava/lang/StringBuilder;" />
-		<method name="append(Ljava/lang/CharSequence;)Ljava/lang/StringBuilder;" />
-		<method name="append(Ljava/lang/CharSequence;II)Ljava/lang/StringBuilder;" />
-		<method name="append(Ljava/lang/Object;)Ljava/lang/StringBuilder;" />
-		<method name="append(Ljava/lang/String;)Ljava/lang/StringBuilder;" />
-		<method name="append(Ljava/lang/StringBuffer;)Ljava/lang/StringBuilder;" />
-		<method name="append(Z)Ljava/lang/StringBuilder;" />
-		<method name="append([C)Ljava/lang/StringBuilder;" />
-		<method name="append([CII)Ljava/lang/StringBuilder;" />
-		<method name="appendCodePoint(I)Ljava/lang/StringBuilder;" />
-		<method name="delete(II)Ljava/lang/StringBuilder;" />
-		<method name="deleteCharAt(I)Ljava/lang/StringBuilder;" />
-		<method name="insert(IC)Ljava/lang/StringBuilder;" />
-		<method name="insert(ID)Ljava/lang/StringBuilder;" />
-		<method name="insert(IF)Ljava/lang/StringBuilder;" />
-		<method name="insert(II)Ljava/lang/StringBuilder;" />
-		<method name="insert(IJ)Ljava/lang/StringBuilder;" />
-		<method name="insert(ILjava/lang/CharSequence;)Ljava/lang/StringBuilder;" />
-		<method name="insert(ILjava/lang/CharSequence;II)Ljava/lang/StringBuilder;" />
-		<method name="insert(ILjava/lang/Object;)Ljava/lang/StringBuilder;" />
-		<method name="insert(ILjava/lang/String;)Ljava/lang/StringBuilder;" />
-		<method name="insert(IZ)Ljava/lang/StringBuilder;" />
-		<method name="insert(I[C)Ljava/lang/StringBuilder;" />
-		<method name="insert(I[CII)Ljava/lang/StringBuilder;" />
-		<method name="replace(IILjava/lang/String;)Ljava/lang/StringBuilder;" />
-		<method name="reverse()Ljava/lang/StringBuilder;" />
-	</class>
-	<class name="java/lang/StringIndexOutOfBoundsException" since="1">
-		<extends name="java/lang/IndexOutOfBoundsException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(I)V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/lang/SuppressWarnings" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/annotation/Annotation" />
-		<method name="value()[Ljava/lang/String;" />
-	</class>
-	<class name="java/lang/System" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V" />
-		<method name="clearProperty(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="console()Ljava/io/Console;" since="9" />
-		<method name="currentTimeMillis()J" />
-		<method name="exit(I)V" />
-		<method name="gc()V" />
-		<method name="getProperties()Ljava/util/Properties;" />
-		<method name="getProperty(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="getProperty(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="getSecurityManager()Ljava/lang/SecurityManager;" />
-		<method name="getenv()Ljava/util/Map;" />
-		<method name="getenv(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="identityHashCode(Ljava/lang/Object;)I" />
-		<method name="inheritedChannel()Ljava/nio/channels/Channel;" />
-		<method name="lineSeparator()Ljava/lang/String;" since="19" />
-		<method name="load(Ljava/lang/String;)V" />
-		<method name="loadLibrary(Ljava/lang/String;)V" />
-		<method name="mapLibraryName(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="nanoTime()J" />
-		<method name="runFinalization()V" />
-		<method name="runFinalizersOnExit(Z)V" />
-		<method name="setErr(Ljava/io/PrintStream;)V" />
-		<method name="setIn(Ljava/io/InputStream;)V" />
-		<method name="setOut(Ljava/io/PrintStream;)V" />
-		<method name="setProperties(Ljava/util/Properties;)V" />
-		<method name="setProperty(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="setSecurityManager(Ljava/lang/SecurityManager;)V" />
-		<field name="err" />
-		<field name="in" />
-		<field name="out" />
-	</class>
-	<class name="java/lang/Thread" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/Runnable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/Runnable;)V" />
-		<method name="&lt;init>(Ljava/lang/Runnable;Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/ThreadGroup;Ljava/lang/Runnable;)V" />
-		<method name="&lt;init>(Ljava/lang/ThreadGroup;Ljava/lang/Runnable;Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/ThreadGroup;Ljava/lang/Runnable;Ljava/lang/String;J)V" />
-		<method name="&lt;init>(Ljava/lang/ThreadGroup;Ljava/lang/String;)V" />
-		<method name="activeCount()I" />
-		<method name="checkAccess()V" />
-		<method name="countStackFrames()I" />
-		<method name="currentThread()Ljava/lang/Thread;" />
-		<method name="destroy()V" />
-		<method name="dumpStack()V" />
-		<method name="enumerate([Ljava/lang/Thread;)I" />
-		<method name="getAllStackTraces()Ljava/util/Map;" />
-		<method name="getContextClassLoader()Ljava/lang/ClassLoader;" />
-		<method name="getDefaultUncaughtExceptionHandler()Ljava/lang/Thread$UncaughtExceptionHandler;" />
-		<method name="getId()J" />
-		<method name="getName()Ljava/lang/String;" />
-		<method name="getPriority()I" />
-		<method name="getStackTrace()[Ljava/lang/StackTraceElement;" />
-		<method name="getState()Ljava/lang/Thread$State;" />
-		<method name="getThreadGroup()Ljava/lang/ThreadGroup;" />
-		<method name="getUncaughtExceptionHandler()Ljava/lang/Thread$UncaughtExceptionHandler;" />
-		<method name="holdsLock(Ljava/lang/Object;)Z" />
-		<method name="interrupt()V" />
-		<method name="interrupted()Z" />
-		<method name="isAlive()Z" />
-		<method name="isDaemon()Z" />
-		<method name="isInterrupted()Z" />
-		<method name="join()V" />
-		<method name="join(J)V" />
-		<method name="join(JI)V" />
-		<method name="resume()V" />
-		<method name="setContextClassLoader(Ljava/lang/ClassLoader;)V" />
-		<method name="setDaemon(Z)V" />
-		<method name="setDefaultUncaughtExceptionHandler(Ljava/lang/Thread$UncaughtExceptionHandler;)V" />
-		<method name="setName(Ljava/lang/String;)V" />
-		<method name="setPriority(I)V" />
-		<method name="setUncaughtExceptionHandler(Ljava/lang/Thread$UncaughtExceptionHandler;)V" />
-		<method name="sleep(J)V" />
-		<method name="sleep(JI)V" />
-		<method name="start()V" />
-		<method name="stop()V" />
-		<method name="stop(Ljava/lang/Throwable;)V" />
-		<method name="suspend()V" />
-		<method name="yield()V" />
-		<field name="MAX_PRIORITY" />
-		<field name="MIN_PRIORITY" />
-		<field name="NORM_PRIORITY" />
-	</class>
-	<class name="java/lang/Thread$State" since="1">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Ljava/lang/Thread$State;" />
-		<method name="values()[Ljava/lang/Thread$State;" />
-		<field name="BLOCKED" />
-		<field name="NEW" />
-		<field name="RUNNABLE" />
-		<field name="TERMINATED" />
-		<field name="TIMED_WAITING" />
-		<field name="WAITING" />
-	</class>
-	<class name="java/lang/Thread$UncaughtExceptionHandler" since="1">
-		<extends name="java/lang/Object" />
-		<method name="uncaughtException(Ljava/lang/Thread;Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="java/lang/ThreadDeath" since="1">
-		<extends name="java/lang/Error" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="java/lang/ThreadGroup" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/Thread$UncaughtExceptionHandler" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/ThreadGroup;Ljava/lang/String;)V" />
-		<method name="activeCount()I" />
-		<method name="activeGroupCount()I" />
-		<method name="allowThreadSuspension(Z)Z" />
-		<method name="checkAccess()V" />
-		<method name="destroy()V" />
-		<method name="enumerate([Ljava/lang/Thread;)I" />
-		<method name="enumerate([Ljava/lang/Thread;Z)I" />
-		<method name="enumerate([Ljava/lang/ThreadGroup;)I" />
-		<method name="enumerate([Ljava/lang/ThreadGroup;Z)I" />
-		<method name="getMaxPriority()I" />
-		<method name="getName()Ljava/lang/String;" />
-		<method name="getParent()Ljava/lang/ThreadGroup;" />
-		<method name="interrupt()V" />
-		<method name="isDaemon()Z" />
-		<method name="isDestroyed()Z" />
-		<method name="list()V" />
-		<method name="parentOf(Ljava/lang/ThreadGroup;)Z" />
-		<method name="resume()V" />
-		<method name="setDaemon(Z)V" />
-		<method name="setMaxPriority(I)V" />
-		<method name="stop()V" />
-		<method name="suspend()V" />
-	</class>
-	<class name="java/lang/ThreadLocal" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="get()Ljava/lang/Object;" />
-		<method name="initialValue()Ljava/lang/Object;" />
-		<method name="remove()V" />
-		<method name="set(Ljava/lang/Object;)V" />
-	</class>
-	<class name="java/lang/Throwable" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;ZZ)V" since="19" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
-		<method name="addSuppressed(Ljava/lang/Throwable;)V" since="19" />
-		<method name="fillInStackTrace()Ljava/lang/Throwable;" />
-		<method name="getCause()Ljava/lang/Throwable;" />
-		<method name="getLocalizedMessage()Ljava/lang/String;" />
-		<method name="getMessage()Ljava/lang/String;" />
-		<method name="getStackTrace()[Ljava/lang/StackTraceElement;" />
-		<method name="getSuppressed()[Ljava/lang/Throwable;" since="19" />
-		<method name="initCause(Ljava/lang/Throwable;)Ljava/lang/Throwable;" />
-		<method name="printStackTrace()V" />
-		<method name="printStackTrace(Ljava/io/PrintStream;)V" />
-		<method name="printStackTrace(Ljava/io/PrintWriter;)V" />
-		<method name="setStackTrace([Ljava/lang/StackTraceElement;)V" />
-	</class>
-	<class name="java/lang/TypeNotPresentException" since="1">
-		<extends name="java/lang/RuntimeException" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="typeName()Ljava/lang/String;" />
-	</class>
-	<class name="java/lang/UnknownError" since="1">
-		<extends name="java/lang/VirtualMachineError" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/lang/UnsatisfiedLinkError" since="1">
-		<extends name="java/lang/LinkageError" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/lang/UnsupportedClassVersionError" since="1">
-		<extends name="java/lang/ClassFormatError" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/lang/UnsupportedOperationException" since="1">
-		<extends name="java/lang/RuntimeException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="java/lang/VerifyError" since="1">
-		<extends name="java/lang/LinkageError" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/lang/VirtualMachineError" since="1">
-		<extends name="java/lang/Error" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/lang/Void" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="TYPE" />
-	</class>
-	<class name="java/lang/annotation/Annotation" since="1">
-		<extends name="java/lang/Object" />
-		<method name="annotationType()Ljava/lang/Class;" />
-	</class>
-	<class name="java/lang/annotation/AnnotationFormatError" since="1">
-		<extends name="java/lang/Error" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="java/lang/annotation/AnnotationTypeMismatchException" since="1">
-		<extends name="java/lang/RuntimeException" />
-		<method name="&lt;init>(Ljava/lang/reflect/Method;Ljava/lang/String;)V" />
-		<method name="element()Ljava/lang/reflect/Method;" />
-		<method name="foundType()Ljava/lang/String;" />
-	</class>
-	<class name="java/lang/annotation/Documented" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/annotation/Annotation" />
-	</class>
-	<class name="java/lang/annotation/ElementType" since="1">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Ljava/lang/annotation/ElementType;" />
-		<method name="values()[Ljava/lang/annotation/ElementType;" />
-		<field name="ANNOTATION_TYPE" />
-		<field name="CONSTRUCTOR" />
-		<field name="FIELD" />
-		<field name="LOCAL_VARIABLE" />
-		<field name="METHOD" />
-		<field name="PACKAGE" />
-		<field name="PARAMETER" />
-		<field name="TYPE" />
-	</class>
-	<class name="java/lang/annotation/IncompleteAnnotationException" since="1">
-		<extends name="java/lang/RuntimeException" />
-		<method name="&lt;init>(Ljava/lang/Class;Ljava/lang/String;)V" />
-		<method name="annotationType()Ljava/lang/Class;" />
-		<method name="elementName()Ljava/lang/String;" />
-	</class>
-	<class name="java/lang/annotation/Inherited" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/annotation/Annotation" />
-	</class>
-	<class name="java/lang/annotation/Retention" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/annotation/Annotation" />
-		<method name="value()Ljava/lang/annotation/RetentionPolicy;" />
-	</class>
-	<class name="java/lang/annotation/RetentionPolicy" since="1">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Ljava/lang/annotation/RetentionPolicy;" />
-		<method name="values()[Ljava/lang/annotation/RetentionPolicy;" />
-		<field name="CLASS" />
-		<field name="RUNTIME" />
-		<field name="SOURCE" />
-	</class>
-	<class name="java/lang/annotation/Target" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/annotation/Annotation" />
-		<method name="value()[Ljava/lang/annotation/ElementType;" />
-	</class>
-	<class name="java/lang/ref/PhantomReference" since="1">
-		<extends name="java/lang/ref/Reference" />
-		<method name="&lt;init>(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V" />
-	</class>
-	<class name="java/lang/ref/Reference" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="clear()V" />
-		<method name="enqueue()Z" />
-		<method name="get()Ljava/lang/Object;" />
-		<method name="isEnqueued()Z" />
-	</class>
-	<class name="java/lang/ref/ReferenceQueue" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="poll()Ljava/lang/ref/Reference;" />
-		<method name="remove()Ljava/lang/ref/Reference;" />
-		<method name="remove(J)Ljava/lang/ref/Reference;" />
-	</class>
-	<class name="java/lang/ref/SoftReference" since="1">
-		<extends name="java/lang/ref/Reference" />
-		<method name="&lt;init>(Ljava/lang/Object;)V" />
-		<method name="&lt;init>(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V" />
-	</class>
-	<class name="java/lang/ref/WeakReference" since="1">
-		<extends name="java/lang/ref/Reference" />
-		<method name="&lt;init>(Ljava/lang/Object;)V" />
-		<method name="&lt;init>(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V" />
-	</class>
-	<class name="java/lang/reflect/AccessibleObject" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/reflect/AnnotatedElement" />
-		<method name="&lt;init>()V" />
-		<method name="isAccessible()Z" />
-		<method name="setAccessible(Z)V" />
-		<method name="setAccessible([Ljava/lang/reflect/AccessibleObject;Z)V" />
-	</class>
-	<class name="java/lang/reflect/AnnotatedElement" since="1">
-		<extends name="java/lang/Object" />
-		<method name="getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;" />
-		<method name="getAnnotations()[Ljava/lang/annotation/Annotation;" />
-		<method name="getDeclaredAnnotations()[Ljava/lang/annotation/Annotation;" />
-		<method name="isAnnotationPresent(Ljava/lang/Class;)Z" />
-	</class>
-	<class name="java/lang/reflect/Array" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="get(Ljava/lang/Object;I)Ljava/lang/Object;" />
-		<method name="getBoolean(Ljava/lang/Object;I)Z" />
-		<method name="getByte(Ljava/lang/Object;I)B" />
-		<method name="getChar(Ljava/lang/Object;I)C" />
-		<method name="getDouble(Ljava/lang/Object;I)D" />
-		<method name="getFloat(Ljava/lang/Object;I)F" />
-		<method name="getInt(Ljava/lang/Object;I)I" />
-		<method name="getLength(Ljava/lang/Object;)I" />
-		<method name="getLong(Ljava/lang/Object;I)J" />
-		<method name="getShort(Ljava/lang/Object;I)S" />
-		<method name="newInstance(Ljava/lang/Class;I)Ljava/lang/Object;" />
-		<method name="newInstance(Ljava/lang/Class;[I)Ljava/lang/Object;" />
-		<method name="set(Ljava/lang/Object;ILjava/lang/Object;)V" />
-		<method name="setBoolean(Ljava/lang/Object;IZ)V" />
-		<method name="setByte(Ljava/lang/Object;IB)V" />
-		<method name="setChar(Ljava/lang/Object;IC)V" />
-		<method name="setDouble(Ljava/lang/Object;ID)V" />
-		<method name="setFloat(Ljava/lang/Object;IF)V" />
-		<method name="setInt(Ljava/lang/Object;II)V" />
-		<method name="setLong(Ljava/lang/Object;IJ)V" />
-		<method name="setShort(Ljava/lang/Object;IS)V" />
-	</class>
-	<class name="java/lang/reflect/Constructor" since="1">
-		<extends name="java/lang/reflect/AccessibleObject" />
-		<implements name="java/lang/reflect/GenericDeclaration" />
-		<implements name="java/lang/reflect/Member" />
-		<method name="&lt;init>()V" />
-		<method name="getExceptionTypes()[Ljava/lang/Class;" />
-		<method name="getGenericExceptionTypes()[Ljava/lang/reflect/Type;" />
-		<method name="getGenericParameterTypes()[Ljava/lang/reflect/Type;" />
-		<method name="getParameterAnnotations()[[Ljava/lang/annotation/Annotation;" />
-		<method name="getParameterTypes()[Ljava/lang/Class;" />
-		<method name="isVarArgs()Z" />
-		<method name="newInstance([Ljava/lang/Object;)Ljava/lang/Object;" />
-		<method name="toGenericString()Ljava/lang/String;" />
-	</class>
-	<class name="java/lang/reflect/Field" since="1">
-		<extends name="java/lang/reflect/AccessibleObject" />
-		<implements name="java/lang/reflect/Member" />
-		<method name="&lt;init>()V" />
-		<method name="get(Ljava/lang/Object;)Ljava/lang/Object;" />
-		<method name="getBoolean(Ljava/lang/Object;)Z" />
-		<method name="getByte(Ljava/lang/Object;)B" />
-		<method name="getChar(Ljava/lang/Object;)C" />
-		<method name="getDouble(Ljava/lang/Object;)D" />
-		<method name="getFloat(Ljava/lang/Object;)F" />
-		<method name="getGenericType()Ljava/lang/reflect/Type;" />
-		<method name="getInt(Ljava/lang/Object;)I" />
-		<method name="getLong(Ljava/lang/Object;)J" />
-		<method name="getShort(Ljava/lang/Object;)S" />
-		<method name="getType()Ljava/lang/Class;" />
-		<method name="isEnumConstant()Z" />
-		<method name="set(Ljava/lang/Object;Ljava/lang/Object;)V" />
-		<method name="setBoolean(Ljava/lang/Object;Z)V" />
-		<method name="setByte(Ljava/lang/Object;B)V" />
-		<method name="setChar(Ljava/lang/Object;C)V" />
-		<method name="setDouble(Ljava/lang/Object;D)V" />
-		<method name="setFloat(Ljava/lang/Object;F)V" />
-		<method name="setInt(Ljava/lang/Object;I)V" />
-		<method name="setLong(Ljava/lang/Object;J)V" />
-		<method name="setShort(Ljava/lang/Object;S)V" />
-		<method name="toGenericString()Ljava/lang/String;" />
-	</class>
-	<class name="java/lang/reflect/GenericArrayType" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/reflect/Type" />
-		<method name="getGenericComponentType()Ljava/lang/reflect/Type;" />
-	</class>
-	<class name="java/lang/reflect/GenericDeclaration" since="1">
-		<extends name="java/lang/Object" />
-		<method name="getTypeParameters()[Ljava/lang/reflect/TypeVariable;" />
-	</class>
-	<class name="java/lang/reflect/GenericSignatureFormatError" since="1">
-		<extends name="java/lang/ClassFormatError" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="java/lang/reflect/InvocationHandler" since="1">
-		<extends name="java/lang/Object" />
-		<method name="invoke(Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object;" />
-	</class>
-	<class name="java/lang/reflect/InvocationTargetException" since="1">
-		<extends name="java/lang/Exception" />
-		<extends name="java/lang/ReflectiveOperationException" since="19" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/Throwable;Ljava/lang/String;)V" />
-		<method name="getTargetException()Ljava/lang/Throwable;" />
-	</class>
-	<class name="java/lang/reflect/MalformedParameterizedTypeException" since="1">
-		<extends name="java/lang/RuntimeException" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="java/lang/reflect/Member" since="1">
-		<extends name="java/lang/Object" />
-		<method name="getDeclaringClass()Ljava/lang/Class;" />
-		<method name="getModifiers()I" />
-		<method name="getName()Ljava/lang/String;" />
-		<method name="isSynthetic()Z" />
-		<field name="DECLARED" />
-		<field name="PUBLIC" />
-	</class>
-	<class name="java/lang/reflect/Method" since="1">
-		<extends name="java/lang/reflect/AccessibleObject" />
-		<implements name="java/lang/reflect/GenericDeclaration" />
-		<implements name="java/lang/reflect/Member" />
-		<method name="&lt;init>()V" />
-		<method name="getDefaultValue()Ljava/lang/Object;" />
-		<method name="getExceptionTypes()[Ljava/lang/Class;" />
-		<method name="getGenericExceptionTypes()[Ljava/lang/reflect/Type;" />
-		<method name="getGenericParameterTypes()[Ljava/lang/reflect/Type;" />
-		<method name="getGenericReturnType()Ljava/lang/reflect/Type;" />
-		<method name="getParameterAnnotations()[[Ljava/lang/annotation/Annotation;" />
-		<method name="getParameterTypes()[Ljava/lang/Class;" />
-		<method name="getReturnType()Ljava/lang/Class;" />
-		<method name="invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;" />
-		<method name="isBridge()Z" />
-		<method name="isVarArgs()Z" />
-		<method name="toGenericString()Ljava/lang/String;" />
-	</class>
-	<class name="java/lang/reflect/Modifier" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="classModifiers()I" since="19" />
-		<method name="constructorModifiers()I" since="19" />
-		<method name="fieldModifiers()I" since="19" />
-		<method name="interfaceModifiers()I" since="19" />
-		<method name="isAbstract(I)Z" />
-		<method name="isFinal(I)Z" />
-		<method name="isInterface(I)Z" />
-		<method name="isNative(I)Z" />
-		<method name="isPrivate(I)Z" />
-		<method name="isProtected(I)Z" />
-		<method name="isPublic(I)Z" />
-		<method name="isStatic(I)Z" />
-		<method name="isStrict(I)Z" />
-		<method name="isSynchronized(I)Z" />
-		<method name="isTransient(I)Z" />
-		<method name="isVolatile(I)Z" />
-		<method name="methodModifiers()I" since="19" />
-		<method name="toString(I)Ljava/lang/String;" />
-		<field name="ABSTRACT" />
-		<field name="FINAL" />
-		<field name="INTERFACE" />
-		<field name="NATIVE" />
-		<field name="PRIVATE" />
-		<field name="PROTECTED" />
-		<field name="PUBLIC" />
-		<field name="STATIC" />
-		<field name="STRICT" />
-		<field name="SYNCHRONIZED" />
-		<field name="TRANSIENT" />
-		<field name="VOLATILE" />
-	</class>
-	<class name="java/lang/reflect/ParameterizedType" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/reflect/Type" />
-		<method name="getActualTypeArguments()[Ljava/lang/reflect/Type;" />
-		<method name="getOwnerType()Ljava/lang/reflect/Type;" />
-		<method name="getRawType()Ljava/lang/reflect/Type;" />
-	</class>
-	<class name="java/lang/reflect/Proxy" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<method name="&lt;init>(Ljava/lang/reflect/InvocationHandler;)V" />
-		<method name="getInvocationHandler(Ljava/lang/Object;)Ljava/lang/reflect/InvocationHandler;" />
-		<method name="getProxyClass(Ljava/lang/ClassLoader;[Ljava/lang/Class;)Ljava/lang/Class;" />
-		<method name="isProxyClass(Ljava/lang/Class;)Z" />
-		<method name="newProxyInstance(Ljava/lang/ClassLoader;[Ljava/lang/Class;Ljava/lang/reflect/InvocationHandler;)Ljava/lang/Object;" />
-		<field name="h" />
-	</class>
-	<class name="java/lang/reflect/ReflectPermission" since="1">
-		<extends name="java/security/BasicPermission" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
-	</class>
-	<class name="java/lang/reflect/Type" since="1">
-		<extends name="java/lang/Object" />
-	</class>
-	<class name="java/lang/reflect/TypeVariable" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/reflect/Type" />
-		<method name="getBounds()[Ljava/lang/reflect/Type;" />
-		<method name="getGenericDeclaration()Ljava/lang/reflect/GenericDeclaration;" />
-		<method name="getName()Ljava/lang/String;" />
-	</class>
-	<class name="java/lang/reflect/UndeclaredThrowableException" since="1">
-		<extends name="java/lang/RuntimeException" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/Throwable;Ljava/lang/String;)V" />
-		<method name="getUndeclaredThrowable()Ljava/lang/Throwable;" />
-	</class>
-	<class name="java/lang/reflect/WildcardType" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/reflect/Type" />
-		<method name="getLowerBounds()[Ljava/lang/reflect/Type;" />
-		<method name="getUpperBounds()[Ljava/lang/reflect/Type;" />
-	</class>
-	<class name="java/math/BigDecimal" since="1">
-		<extends name="java/lang/Number" />
-		<implements name="java/io/Serializable" />
-		<implements name="java/lang/Comparable" />
-		<method name="&lt;init>(D)V" />
-		<method name="&lt;init>(DLjava/math/MathContext;)V" />
-		<method name="&lt;init>(I)V" />
-		<method name="&lt;init>(ILjava/math/MathContext;)V" />
-		<method name="&lt;init>(J)V" />
-		<method name="&lt;init>(JLjava/math/MathContext;)V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/math/MathContext;)V" />
-		<method name="&lt;init>(Ljava/math/BigInteger;)V" />
-		<method name="&lt;init>(Ljava/math/BigInteger;I)V" />
-		<method name="&lt;init>(Ljava/math/BigInteger;ILjava/math/MathContext;)V" />
-		<method name="&lt;init>(Ljava/math/BigInteger;Ljava/math/MathContext;)V" />
-		<method name="&lt;init>([C)V" />
-		<method name="&lt;init>([CII)V" />
-		<method name="&lt;init>([CIILjava/math/MathContext;)V" />
-		<method name="&lt;init>([CLjava/math/MathContext;)V" />
-		<method name="abs()Ljava/math/BigDecimal;" />
-		<method name="abs(Ljava/math/MathContext;)Ljava/math/BigDecimal;" />
-		<method name="add(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;" />
-		<method name="add(Ljava/math/BigDecimal;Ljava/math/MathContext;)Ljava/math/BigDecimal;" />
-		<method name="byteValueExact()B" />
-		<method name="compareTo(Ljava/math/BigDecimal;)I" />
-		<method name="divide(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;" />
-		<method name="divide(Ljava/math/BigDecimal;I)Ljava/math/BigDecimal;" />
-		<method name="divide(Ljava/math/BigDecimal;II)Ljava/math/BigDecimal;" />
-		<method name="divide(Ljava/math/BigDecimal;ILjava/math/RoundingMode;)Ljava/math/BigDecimal;" />
-		<method name="divide(Ljava/math/BigDecimal;Ljava/math/MathContext;)Ljava/math/BigDecimal;" />
-		<method name="divide(Ljava/math/BigDecimal;Ljava/math/RoundingMode;)Ljava/math/BigDecimal;" />
-		<method name="divideAndRemainder(Ljava/math/BigDecimal;)[Ljava/math/BigDecimal;" />
-		<method name="divideAndRemainder(Ljava/math/BigDecimal;Ljava/math/MathContext;)[Ljava/math/BigDecimal;" />
-		<method name="divideToIntegralValue(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;" />
-		<method name="divideToIntegralValue(Ljava/math/BigDecimal;Ljava/math/MathContext;)Ljava/math/BigDecimal;" />
-		<method name="intValueExact()I" />
-		<method name="longValueExact()J" />
-		<method name="max(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;" />
-		<method name="min(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;" />
-		<method name="movePointLeft(I)Ljava/math/BigDecimal;" />
-		<method name="movePointRight(I)Ljava/math/BigDecimal;" />
-		<method name="multiply(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;" />
-		<method name="multiply(Ljava/math/BigDecimal;Ljava/math/MathContext;)Ljava/math/BigDecimal;" />
-		<method name="negate()Ljava/math/BigDecimal;" />
-		<method name="negate(Ljava/math/MathContext;)Ljava/math/BigDecimal;" />
-		<method name="plus()Ljava/math/BigDecimal;" />
-		<method name="plus(Ljava/math/MathContext;)Ljava/math/BigDecimal;" />
-		<method name="pow(I)Ljava/math/BigDecimal;" />
-		<method name="pow(ILjava/math/MathContext;)Ljava/math/BigDecimal;" />
-		<method name="precision()I" />
-		<method name="remainder(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;" />
-		<method name="remainder(Ljava/math/BigDecimal;Ljava/math/MathContext;)Ljava/math/BigDecimal;" />
-		<method name="round(Ljava/math/MathContext;)Ljava/math/BigDecimal;" />
-		<method name="scale()I" />
-		<method name="scaleByPowerOfTen(I)Ljava/math/BigDecimal;" />
-		<method name="setScale(I)Ljava/math/BigDecimal;" />
-		<method name="setScale(II)Ljava/math/BigDecimal;" />
-		<method name="setScale(ILjava/math/RoundingMode;)Ljava/math/BigDecimal;" />
-		<method name="shortValueExact()S" />
-		<method name="signum()I" />
-		<method name="stripTrailingZeros()Ljava/math/BigDecimal;" />
-		<method name="subtract(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;" />
-		<method name="subtract(Ljava/math/BigDecimal;Ljava/math/MathContext;)Ljava/math/BigDecimal;" />
-		<method name="toBigInteger()Ljava/math/BigInteger;" />
-		<method name="toBigIntegerExact()Ljava/math/BigInteger;" />
-		<method name="toEngineeringString()Ljava/lang/String;" />
-		<method name="toPlainString()Ljava/lang/String;" />
-		<method name="ulp()Ljava/math/BigDecimal;" />
-		<method name="unscaledValue()Ljava/math/BigInteger;" />
-		<method name="valueOf(D)Ljava/math/BigDecimal;" />
-		<method name="valueOf(J)Ljava/math/BigDecimal;" />
-		<method name="valueOf(JI)Ljava/math/BigDecimal;" />
-		<field name="ONE" />
-		<field name="ROUND_CEILING" />
-		<field name="ROUND_DOWN" />
-		<field name="ROUND_FLOOR" />
-		<field name="ROUND_HALF_DOWN" />
-		<field name="ROUND_HALF_EVEN" />
-		<field name="ROUND_HALF_UP" />
-		<field name="ROUND_UNNECESSARY" />
-		<field name="ROUND_UP" />
-		<field name="TEN" />
-		<field name="ZERO" />
-	</class>
-	<class name="java/math/BigInteger" since="1">
-		<extends name="java/lang/Number" />
-		<implements name="java/io/Serializable" />
-		<implements name="java/lang/Comparable" />
-		<method name="&lt;init>(IILjava/util/Random;)V" />
-		<method name="&lt;init>(ILjava/util/Random;)V" />
-		<method name="&lt;init>(I[B)V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;I)V" />
-		<method name="&lt;init>([B)V" />
-		<method name="abs()Ljava/math/BigInteger;" />
-		<method name="add(Ljava/math/BigInteger;)Ljava/math/BigInteger;" />
-		<method name="and(Ljava/math/BigInteger;)Ljava/math/BigInteger;" />
-		<method name="andNot(Ljava/math/BigInteger;)Ljava/math/BigInteger;" />
-		<method name="bitCount()I" />
-		<method name="bitLength()I" />
-		<method name="clearBit(I)Ljava/math/BigInteger;" />
-		<method name="compareTo(Ljava/math/BigInteger;)I" />
-		<method name="divide(Ljava/math/BigInteger;)Ljava/math/BigInteger;" />
-		<method name="divideAndRemainder(Ljava/math/BigInteger;)[Ljava/math/BigInteger;" />
-		<method name="flipBit(I)Ljava/math/BigInteger;" />
-		<method name="gcd(Ljava/math/BigInteger;)Ljava/math/BigInteger;" />
-		<method name="getLowestSetBit()I" />
-		<method name="isProbablePrime(I)Z" />
-		<method name="max(Ljava/math/BigInteger;)Ljava/math/BigInteger;" />
-		<method name="min(Ljava/math/BigInteger;)Ljava/math/BigInteger;" />
-		<method name="mod(Ljava/math/BigInteger;)Ljava/math/BigInteger;" />
-		<method name="modInverse(Ljava/math/BigInteger;)Ljava/math/BigInteger;" />
-		<method name="modPow(Ljava/math/BigInteger;Ljava/math/BigInteger;)Ljava/math/BigInteger;" />
-		<method name="multiply(Ljava/math/BigInteger;)Ljava/math/BigInteger;" />
-		<method name="negate()Ljava/math/BigInteger;" />
-		<method name="nextProbablePrime()Ljava/math/BigInteger;" />
-		<method name="not()Ljava/math/BigInteger;" />
-		<method name="or(Ljava/math/BigInteger;)Ljava/math/BigInteger;" />
-		<method name="pow(I)Ljava/math/BigInteger;" />
-		<method name="probablePrime(ILjava/util/Random;)Ljava/math/BigInteger;" />
-		<method name="remainder(Ljava/math/BigInteger;)Ljava/math/BigInteger;" />
-		<method name="setBit(I)Ljava/math/BigInteger;" />
-		<method name="shiftLeft(I)Ljava/math/BigInteger;" />
-		<method name="shiftRight(I)Ljava/math/BigInteger;" />
-		<method name="signum()I" />
-		<method name="subtract(Ljava/math/BigInteger;)Ljava/math/BigInteger;" />
-		<method name="testBit(I)Z" />
-		<method name="toByteArray()[B" />
-		<method name="toString(I)Ljava/lang/String;" />
-		<method name="valueOf(J)Ljava/math/BigInteger;" />
-		<method name="xor(Ljava/math/BigInteger;)Ljava/math/BigInteger;" />
-		<field name="ONE" />
-		<field name="TEN" />
-		<field name="ZERO" />
-	</class>
-	<class name="java/math/MathContext" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<method name="&lt;init>(I)V" />
-		<method name="&lt;init>(ILjava/math/RoundingMode;)V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="getPrecision()I" />
-		<method name="getRoundingMode()Ljava/math/RoundingMode;" />
-		<field name="DECIMAL128" />
-		<field name="DECIMAL32" />
-		<field name="DECIMAL64" />
-		<field name="UNLIMITED" />
-	</class>
-	<class name="java/math/RoundingMode" since="1">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(I)Ljava/math/RoundingMode;" />
-		<method name="valueOf(Ljava/lang/String;)Ljava/math/RoundingMode;" />
-		<method name="values()[Ljava/math/RoundingMode;" />
-		<field name="CEILING" />
-		<field name="DOWN" />
-		<field name="FLOOR" />
-		<field name="HALF_DOWN" />
-		<field name="HALF_EVEN" />
-		<field name="HALF_UP" />
-		<field name="UNNECESSARY" />
-		<field name="UP" />
-	</class>
-	<class name="java/net/Authenticator" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getPasswordAuthentication()Ljava/net/PasswordAuthentication;" />
-		<method name="getRequestingHost()Ljava/lang/String;" />
-		<method name="getRequestingPort()I" />
-		<method name="getRequestingPrompt()Ljava/lang/String;" />
-		<method name="getRequestingProtocol()Ljava/lang/String;" />
-		<method name="getRequestingScheme()Ljava/lang/String;" />
-		<method name="getRequestingSite()Ljava/net/InetAddress;" />
-		<method name="getRequestingURL()Ljava/net/URL;" />
-		<method name="getRequestorType()Ljava/net/Authenticator$RequestorType;" />
-		<method name="requestPasswordAuthentication(Ljava/lang/String;Ljava/net/InetAddress;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/net/PasswordAuthentication;" />
-		<method name="requestPasswordAuthentication(Ljava/lang/String;Ljava/net/InetAddress;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/net/URL;Ljava/net/Authenticator$RequestorType;)Ljava/net/PasswordAuthentication;" />
-		<method name="requestPasswordAuthentication(Ljava/net/InetAddress;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/net/PasswordAuthentication;" />
-		<method name="setDefault(Ljava/net/Authenticator;)V" />
-	</class>
-	<class name="java/net/Authenticator$RequestorType" since="1">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Ljava/net/Authenticator$RequestorType;" />
-		<method name="values()[Ljava/net/Authenticator$RequestorType;" />
-		<field name="PROXY" />
-		<field name="SERVER" />
-	</class>
-	<class name="java/net/BindException" since="1">
-		<extends name="java/net/SocketException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/net/CacheRequest" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="abort()V" />
-		<method name="getBody()Ljava/io/OutputStream;" />
-	</class>
-	<class name="java/net/CacheResponse" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getBody()Ljava/io/InputStream;" />
-		<method name="getHeaders()Ljava/util/Map;" />
-	</class>
-	<class name="java/net/ConnectException" since="1">
-		<extends name="java/net/SocketException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/net/ContentHandler" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getContent(Ljava/net/URLConnection;)Ljava/lang/Object;" />
-		<method name="getContent(Ljava/net/URLConnection;[Ljava/lang/Class;)Ljava/lang/Object;" />
-	</class>
-	<class name="java/net/ContentHandlerFactory" since="1">
-		<extends name="java/lang/Object" />
-		<method name="createContentHandler(Ljava/lang/String;)Ljava/net/ContentHandler;" />
-	</class>
-	<class name="java/net/CookieHandler" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="get(Ljava/net/URI;Ljava/util/Map;)Ljava/util/Map;" />
-		<method name="getDefault()Ljava/net/CookieHandler;" />
-		<method name="put(Ljava/net/URI;Ljava/util/Map;)V" />
-		<method name="setDefault(Ljava/net/CookieHandler;)V" />
-	</class>
-	<class name="java/net/CookieManager" since="9">
-		<extends name="java/net/CookieHandler" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/net/CookieStore;Ljava/net/CookiePolicy;)V" />
-		<method name="getCookieStore()Ljava/net/CookieStore;" />
-		<method name="setCookiePolicy(Ljava/net/CookiePolicy;)V" />
-	</class>
-	<class name="java/net/CookiePolicy" since="9">
-		<extends name="java/lang/Object" />
-		<method name="shouldAccept(Ljava/net/URI;Ljava/net/HttpCookie;)Z" />
-		<field name="ACCEPT_ALL" />
-		<field name="ACCEPT_NONE" />
-		<field name="ACCEPT_ORIGINAL_SERVER" />
-	</class>
-	<class name="java/net/CookieStore" since="9">
-		<extends name="java/lang/Object" />
-		<method name="add(Ljava/net/URI;Ljava/net/HttpCookie;)V" />
-		<method name="get(Ljava/net/URI;)Ljava/util/List;" />
-		<method name="getCookies()Ljava/util/List;" />
-		<method name="getURIs()Ljava/util/List;" />
-		<method name="remove(Ljava/net/URI;Ljava/net/HttpCookie;)Z" />
-		<method name="removeAll()Z" />
-	</class>
-	<class name="java/net/DatagramPacket" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>([BI)V" />
-		<method name="&lt;init>([BII)V" />
-		<method name="&lt;init>([BIILjava/net/InetAddress;I)V" />
-		<method name="&lt;init>([BIILjava/net/SocketAddress;)V" />
-		<method name="&lt;init>([BILjava/net/InetAddress;I)V" />
-		<method name="&lt;init>([BILjava/net/SocketAddress;)V" />
-		<method name="getAddress()Ljava/net/InetAddress;" />
-		<method name="getData()[B" />
-		<method name="getLength()I" />
-		<method name="getOffset()I" />
-		<method name="getPort()I" />
-		<method name="getSocketAddress()Ljava/net/SocketAddress;" />
-		<method name="setAddress(Ljava/net/InetAddress;)V" />
-		<method name="setData([B)V" />
-		<method name="setData([BII)V" />
-		<method name="setLength(I)V" />
-		<method name="setPort(I)V" />
-		<method name="setSocketAddress(Ljava/net/SocketAddress;)V" />
-	</class>
-	<class name="java/net/DatagramSocket" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Closeable" since="19" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(I)V" />
-		<method name="&lt;init>(ILjava/net/InetAddress;)V" />
-		<method name="&lt;init>(Ljava/net/DatagramSocketImpl;)V" />
-		<method name="&lt;init>(Ljava/net/SocketAddress;)V" />
-		<method name="bind(Ljava/net/SocketAddress;)V" />
-		<method name="close()V" />
-		<method name="connect(Ljava/net/InetAddress;I)V" />
-		<method name="connect(Ljava/net/SocketAddress;)V" />
-		<method name="disconnect()V" />
-		<method name="getBroadcast()Z" />
-		<method name="getChannel()Ljava/nio/channels/DatagramChannel;" />
-		<method name="getInetAddress()Ljava/net/InetAddress;" />
-		<method name="getLocalAddress()Ljava/net/InetAddress;" />
-		<method name="getLocalPort()I" />
-		<method name="getLocalSocketAddress()Ljava/net/SocketAddress;" />
-		<method name="getPort()I" />
-		<method name="getReceiveBufferSize()I" />
-		<method name="getRemoteSocketAddress()Ljava/net/SocketAddress;" />
-		<method name="getReuseAddress()Z" />
-		<method name="getSendBufferSize()I" />
-		<method name="getSoTimeout()I" />
-		<method name="getTrafficClass()I" />
-		<method name="isBound()Z" />
-		<method name="isClosed()Z" />
-		<method name="isConnected()Z" />
-		<method name="receive(Ljava/net/DatagramPacket;)V" />
-		<method name="send(Ljava/net/DatagramPacket;)V" />
-		<method name="setBroadcast(Z)V" />
-		<method name="setDatagramSocketImplFactory(Ljava/net/DatagramSocketImplFactory;)V" />
-		<method name="setReceiveBufferSize(I)V" />
-		<method name="setReuseAddress(Z)V" />
-		<method name="setSendBufferSize(I)V" />
-		<method name="setSoTimeout(I)V" />
-		<method name="setTrafficClass(I)V" />
-	</class>
-	<class name="java/net/DatagramSocketImpl" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/net/SocketOptions" />
-		<method name="&lt;init>()V" />
-		<method name="bind(ILjava/net/InetAddress;)V" />
-		<method name="close()V" />
-		<method name="connect(Ljava/net/InetAddress;I)V" />
-		<method name="create()V" />
-		<method name="disconnect()V" />
-		<method name="getFileDescriptor()Ljava/io/FileDescriptor;" />
-		<method name="getLocalPort()I" />
-		<method name="getTTL()B" />
-		<method name="getTimeToLive()I" />
-		<method name="join(Ljava/net/InetAddress;)V" />
-		<method name="joinGroup(Ljava/net/SocketAddress;Ljava/net/NetworkInterface;)V" />
-		<method name="leave(Ljava/net/InetAddress;)V" />
-		<method name="leaveGroup(Ljava/net/SocketAddress;Ljava/net/NetworkInterface;)V" />
-		<method name="peek(Ljava/net/InetAddress;)I" />
-		<method name="peekData(Ljava/net/DatagramPacket;)I" />
-		<method name="receive(Ljava/net/DatagramPacket;)V" />
-		<method name="send(Ljava/net/DatagramPacket;)V" />
-		<method name="setTTL(B)V" />
-		<method name="setTimeToLive(I)V" />
-		<field name="fd" />
-		<field name="localPort" />
-	</class>
-	<class name="java/net/DatagramSocketImplFactory" since="1">
-		<extends name="java/lang/Object" />
-		<method name="createDatagramSocketImpl()Ljava/net/DatagramSocketImpl;" />
-	</class>
-	<class name="java/net/FileNameMap" since="1">
-		<extends name="java/lang/Object" />
-		<method name="getContentTypeFor(Ljava/lang/String;)Ljava/lang/String;" />
-	</class>
-	<class name="java/net/HttpCookie" since="9">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/Cloneable" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="domainMatches(Ljava/lang/String;Ljava/lang/String;)Z" />
-		<method name="getComment()Ljava/lang/String;" />
-		<method name="getCommentURL()Ljava/lang/String;" />
-		<method name="getDiscard()Z" />
-		<method name="getDomain()Ljava/lang/String;" />
-		<method name="getMaxAge()J" />
-		<method name="getName()Ljava/lang/String;" />
-		<method name="getPath()Ljava/lang/String;" />
-		<method name="getPortlist()Ljava/lang/String;" />
-		<method name="getSecure()Z" />
-		<method name="getValue()Ljava/lang/String;" />
-		<method name="getVersion()I" />
-		<method name="hasExpired()Z" />
-		<method name="parse(Ljava/lang/String;)Ljava/util/List;" />
-		<method name="setComment(Ljava/lang/String;)V" />
-		<method name="setCommentURL(Ljava/lang/String;)V" />
-		<method name="setDiscard(Z)V" />
-		<method name="setDomain(Ljava/lang/String;)V" />
-		<method name="setMaxAge(J)V" />
-		<method name="setPath(Ljava/lang/String;)V" />
-		<method name="setPortlist(Ljava/lang/String;)V" />
-		<method name="setSecure(Z)V" />
-		<method name="setValue(Ljava/lang/String;)V" />
-		<method name="setVersion(I)V" />
-	</class>
-	<class name="java/net/HttpRetryException" since="1">
-		<extends name="java/io/IOException" />
-		<method name="&lt;init>(Ljava/lang/String;I)V" />
-		<method name="&lt;init>(Ljava/lang/String;ILjava/lang/String;)V" />
-		<method name="getLocation()Ljava/lang/String;" />
-		<method name="getReason()Ljava/lang/String;" />
-		<method name="responseCode()I" />
-	</class>
-	<class name="java/net/HttpURLConnection" since="1">
-		<extends name="java/net/URLConnection" />
-		<method name="&lt;init>(Ljava/net/URL;)V" />
-		<method name="disconnect()V" />
-		<method name="getErrorStream()Ljava/io/InputStream;" />
-		<method name="getFollowRedirects()Z" />
-		<method name="getInstanceFollowRedirects()Z" />
-		<method name="getRequestMethod()Ljava/lang/String;" />
-		<method name="getResponseCode()I" />
-		<method name="getResponseMessage()Ljava/lang/String;" />
-		<method name="setChunkedStreamingMode(I)V" />
-		<method name="setFixedLengthStreamingMode(I)V" />
-		<method name="setFixedLengthStreamingMode(J)V" since="19" />
-		<method name="setFollowRedirects(Z)V" />
-		<method name="setInstanceFollowRedirects(Z)V" />
-		<method name="setRequestMethod(Ljava/lang/String;)V" />
-		<method name="usingProxy()Z" />
-		<field name="HTTP_ACCEPTED" />
-		<field name="HTTP_BAD_GATEWAY" />
-		<field name="HTTP_BAD_METHOD" />
-		<field name="HTTP_BAD_REQUEST" />
-		<field name="HTTP_CLIENT_TIMEOUT" />
-		<field name="HTTP_CONFLICT" />
-		<field name="HTTP_CREATED" />
-		<field name="HTTP_ENTITY_TOO_LARGE" />
-		<field name="HTTP_FORBIDDEN" />
-		<field name="HTTP_GATEWAY_TIMEOUT" />
-		<field name="HTTP_GONE" />
-		<field name="HTTP_INTERNAL_ERROR" />
-		<field name="HTTP_LENGTH_REQUIRED" />
-		<field name="HTTP_MOVED_PERM" />
-		<field name="HTTP_MOVED_TEMP" />
-		<field name="HTTP_MULT_CHOICE" />
-		<field name="HTTP_NOT_ACCEPTABLE" />
-		<field name="HTTP_NOT_AUTHORITATIVE" />
-		<field name="HTTP_NOT_FOUND" />
-		<field name="HTTP_NOT_IMPLEMENTED" />
-		<field name="HTTP_NOT_MODIFIED" />
-		<field name="HTTP_NO_CONTENT" />
-		<field name="HTTP_OK" />
-		<field name="HTTP_PARTIAL" />
-		<field name="HTTP_PAYMENT_REQUIRED" />
-		<field name="HTTP_PRECON_FAILED" />
-		<field name="HTTP_PROXY_AUTH" />
-		<field name="HTTP_REQ_TOO_LONG" />
-		<field name="HTTP_RESET" />
-		<field name="HTTP_SEE_OTHER" />
-		<field name="HTTP_SERVER_ERROR" />
-		<field name="HTTP_UNAUTHORIZED" />
-		<field name="HTTP_UNAVAILABLE" />
-		<field name="HTTP_UNSUPPORTED_TYPE" />
-		<field name="HTTP_USE_PROXY" />
-		<field name="HTTP_VERSION" />
-		<field name="chunkLength" />
-		<field name="fixedContentLength" />
-		<field name="fixedContentLengthLong" since="19" />
-		<field name="instanceFollowRedirects" />
-		<field name="method" />
-		<field name="responseCode" />
-		<field name="responseMessage" />
-	</class>
-	<class name="java/net/IDN" since="9">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="toASCII(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="toASCII(Ljava/lang/String;I)Ljava/lang/String;" />
-		<method name="toUnicode(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="toUnicode(Ljava/lang/String;I)Ljava/lang/String;" />
-		<field name="ALLOW_UNASSIGNED" />
-		<field name="USE_STD3_ASCII_RULES" />
-	</class>
-	<class name="java/net/Inet4Address" since="1">
-		<extends name="java/net/InetAddress" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="java/net/Inet6Address" since="1">
-		<extends name="java/net/InetAddress" />
-		<method name="&lt;init>()V" />
-		<method name="getByAddress(Ljava/lang/String;[BI)Ljava/net/Inet6Address;" />
-		<method name="getByAddress(Ljava/lang/String;[BLjava/net/NetworkInterface;)Ljava/net/Inet6Address;" />
-		<method name="getScopeId()I" />
-		<method name="getScopedInterface()Ljava/net/NetworkInterface;" />
-		<method name="isIPv4CompatibleAddress()Z" />
-	</class>
-	<class name="java/net/InetAddress" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<method name="&lt;init>()V" />
-		<method name="getAddress()[B" />
-		<method name="getAllByName(Ljava/lang/String;)[Ljava/net/InetAddress;" />
-		<method name="getByAddress(Ljava/lang/String;[B)Ljava/net/InetAddress;" />
-		<method name="getByAddress([B)Ljava/net/InetAddress;" />
-		<method name="getByName(Ljava/lang/String;)Ljava/net/InetAddress;" />
-		<method name="getCanonicalHostName()Ljava/lang/String;" />
-		<method name="getHostAddress()Ljava/lang/String;" />
-		<method name="getHostName()Ljava/lang/String;" />
-		<method name="getLocalHost()Ljava/net/InetAddress;" />
-		<method name="getLoopbackAddress()Ljava/net/InetAddress;" since="19" />
-		<method name="isAnyLocalAddress()Z" />
-		<method name="isLinkLocalAddress()Z" />
-		<method name="isLoopbackAddress()Z" />
-		<method name="isMCGlobal()Z" />
-		<method name="isMCLinkLocal()Z" />
-		<method name="isMCNodeLocal()Z" />
-		<method name="isMCOrgLocal()Z" />
-		<method name="isMCSiteLocal()Z" />
-		<method name="isMulticastAddress()Z" />
-		<method name="isReachable(I)Z" />
-		<method name="isReachable(Ljava/net/NetworkInterface;II)Z" />
-		<method name="isSiteLocalAddress()Z" />
-	</class>
-	<class name="java/net/InetSocketAddress" since="1">
-		<extends name="java/net/SocketAddress" />
-		<method name="&lt;init>(I)V" />
-		<method name="&lt;init>(Ljava/lang/String;I)V" />
-		<method name="&lt;init>(Ljava/net/InetAddress;I)V" />
-		<method name="createUnresolved(Ljava/lang/String;I)Ljava/net/InetSocketAddress;" />
-		<method name="getAddress()Ljava/net/InetAddress;" />
-		<method name="getHostName()Ljava/lang/String;" />
-		<method name="getHostString()Ljava/lang/String;" since="19" />
-		<method name="getPort()I" />
-		<method name="isUnresolved()Z" />
-	</class>
-	<class name="java/net/InterfaceAddress" since="9">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getAddress()Ljava/net/InetAddress;" />
-		<method name="getBroadcast()Ljava/net/InetAddress;" />
-		<method name="getNetworkPrefixLength()S" />
-	</class>
-	<class name="java/net/JarURLConnection" since="1">
-		<extends name="java/net/URLConnection" />
-		<method name="&lt;init>(Ljava/net/URL;)V" />
-		<method name="getAttributes()Ljava/util/jar/Attributes;" />
-		<method name="getCertificates()[Ljava/security/cert/Certificate;" />
-		<method name="getEntryName()Ljava/lang/String;" />
-		<method name="getJarEntry()Ljava/util/jar/JarEntry;" />
-		<method name="getJarFile()Ljava/util/jar/JarFile;" />
-		<method name="getJarFileURL()Ljava/net/URL;" />
-		<method name="getMainAttributes()Ljava/util/jar/Attributes;" />
-		<method name="getManifest()Ljava/util/jar/Manifest;" />
-		<field name="jarFileURLConnection" />
-	</class>
-	<class name="java/net/MalformedURLException" since="1">
-		<extends name="java/io/IOException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/net/MulticastSocket" since="1">
-		<extends name="java/net/DatagramSocket" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(I)V" />
-		<method name="&lt;init>(Ljava/net/SocketAddress;)V" />
-		<method name="getInterface()Ljava/net/InetAddress;" />
-		<method name="getLoopbackMode()Z" />
-		<method name="getNetworkInterface()Ljava/net/NetworkInterface;" />
-		<method name="getTTL()B" />
-		<method name="getTimeToLive()I" />
-		<method name="joinGroup(Ljava/net/InetAddress;)V" />
-		<method name="joinGroup(Ljava/net/SocketAddress;Ljava/net/NetworkInterface;)V" />
-		<method name="leaveGroup(Ljava/net/InetAddress;)V" />
-		<method name="leaveGroup(Ljava/net/SocketAddress;Ljava/net/NetworkInterface;)V" />
-		<method name="send(Ljava/net/DatagramPacket;B)V" />
-		<method name="setInterface(Ljava/net/InetAddress;)V" />
-		<method name="setLoopbackMode(Z)V" />
-		<method name="setNetworkInterface(Ljava/net/NetworkInterface;)V" />
-		<method name="setTTL(B)V" />
-		<method name="setTimeToLive(I)V" />
-	</class>
-	<class name="java/net/NetPermission" since="1">
-		<extends name="java/security/BasicPermission" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
-	</class>
-	<class name="java/net/NetworkInterface" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getByIndex(I)Ljava/net/NetworkInterface;" since="19" />
-		<method name="getByInetAddress(Ljava/net/InetAddress;)Ljava/net/NetworkInterface;" />
-		<method name="getByName(Ljava/lang/String;)Ljava/net/NetworkInterface;" />
-		<method name="getDisplayName()Ljava/lang/String;" />
-		<method name="getHardwareAddress()[B" since="9" />
-		<method name="getIndex()I" since="19" />
-		<method name="getInetAddresses()Ljava/util/Enumeration;" />
-		<method name="getInterfaceAddresses()Ljava/util/List;" since="9" />
-		<method name="getMTU()I" since="9" />
-		<method name="getName()Ljava/lang/String;" />
-		<method name="getNetworkInterfaces()Ljava/util/Enumeration;" />
-		<method name="getParent()Ljava/net/NetworkInterface;" since="9" />
-		<method name="getSubInterfaces()Ljava/util/Enumeration;" since="9" />
-		<method name="isLoopback()Z" since="9" />
-		<method name="isPointToPoint()Z" since="9" />
-		<method name="isUp()Z" since="9" />
-		<method name="isVirtual()Z" since="9" />
-		<method name="supportsMulticast()Z" since="9" />
-	</class>
-	<class name="java/net/NoRouteToHostException" since="1">
-		<extends name="java/net/SocketException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/net/PasswordAuthentication" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/lang/String;[C)V" />
-		<method name="getPassword()[C" />
-		<method name="getUserName()Ljava/lang/String;" />
-	</class>
-	<class name="java/net/PortUnreachableException" since="1">
-		<extends name="java/net/SocketException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/net/ProtocolException" since="1">
-		<extends name="java/io/IOException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/net/Proxy" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/net/Proxy$Type;Ljava/net/SocketAddress;)V" />
-		<method name="address()Ljava/net/SocketAddress;" />
-		<method name="type()Ljava/net/Proxy$Type;" />
-		<field name="NO_PROXY" />
-	</class>
-	<class name="java/net/Proxy$Type" since="1">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Ljava/net/Proxy$Type;" />
-		<method name="values()[Ljava/net/Proxy$Type;" />
-		<field name="DIRECT" />
-		<field name="HTTP" />
-		<field name="SOCKS" />
-	</class>
-	<class name="java/net/ProxySelector" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="connectFailed(Ljava/net/URI;Ljava/net/SocketAddress;Ljava/io/IOException;)V" />
-		<method name="getDefault()Ljava/net/ProxySelector;" />
-		<method name="select(Ljava/net/URI;)Ljava/util/List;" />
-		<method name="setDefault(Ljava/net/ProxySelector;)V" />
-	</class>
-	<class name="java/net/ResponseCache" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="get(Ljava/net/URI;Ljava/lang/String;Ljava/util/Map;)Ljava/net/CacheResponse;" />
-		<method name="getDefault()Ljava/net/ResponseCache;" />
-		<method name="put(Ljava/net/URI;Ljava/net/URLConnection;)Ljava/net/CacheRequest;" />
-		<method name="setDefault(Ljava/net/ResponseCache;)V" />
-	</class>
-	<class name="java/net/SecureCacheResponse" since="1">
-		<extends name="java/net/CacheResponse" />
-		<method name="&lt;init>()V" />
-		<method name="getCipherSuite()Ljava/lang/String;" />
-		<method name="getLocalCertificateChain()Ljava/util/List;" />
-		<method name="getLocalPrincipal()Ljava/security/Principal;" />
-		<method name="getPeerPrincipal()Ljava/security/Principal;" />
-		<method name="getServerCertificateChain()Ljava/util/List;" />
-	</class>
-	<class name="java/net/ServerSocket" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Closeable" since="19" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(I)V" />
-		<method name="&lt;init>(II)V" />
-		<method name="&lt;init>(IILjava/net/InetAddress;)V" />
-		<method name="&lt;init>(Ljava/net/SocketImpl;)V" />
-		<method name="accept()Ljava/net/Socket;" />
-		<method name="bind(Ljava/net/SocketAddress;)V" />
-		<method name="bind(Ljava/net/SocketAddress;I)V" />
-		<method name="close()V" />
-		<method name="getChannel()Ljava/nio/channels/ServerSocketChannel;" />
-		<method name="getInetAddress()Ljava/net/InetAddress;" />
-		<method name="getLocalPort()I" />
-		<method name="getLocalSocketAddress()Ljava/net/SocketAddress;" />
-		<method name="getReceiveBufferSize()I" />
-		<method name="getReuseAddress()Z" />
-		<method name="getSoTimeout()I" />
-		<method name="implAccept(Ljava/net/Socket;)V" />
-		<method name="isBound()Z" />
-		<method name="isClosed()Z" />
-		<method name="setPerformancePreferences(III)V" />
-		<method name="setReceiveBufferSize(I)V" />
-		<method name="setReuseAddress(Z)V" />
-		<method name="setSoTimeout(I)V" />
-		<method name="setSocketFactory(Ljava/net/SocketImplFactory;)V" />
-	</class>
-	<class name="java/net/Socket" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Closeable" since="19" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;I)V" />
-		<method name="&lt;init>(Ljava/lang/String;ILjava/net/InetAddress;I)V" />
-		<method name="&lt;init>(Ljava/lang/String;IZ)V" />
-		<method name="&lt;init>(Ljava/net/InetAddress;I)V" />
-		<method name="&lt;init>(Ljava/net/InetAddress;ILjava/net/InetAddress;I)V" />
-		<method name="&lt;init>(Ljava/net/InetAddress;IZ)V" />
-		<method name="&lt;init>(Ljava/net/Proxy;)V" />
-		<method name="&lt;init>(Ljava/net/SocketImpl;)V" />
-		<method name="bind(Ljava/net/SocketAddress;)V" />
-		<method name="close()V" />
-		<method name="connect(Ljava/net/SocketAddress;)V" />
-		<method name="connect(Ljava/net/SocketAddress;I)V" />
-		<method name="getChannel()Ljava/nio/channels/SocketChannel;" />
-		<method name="getInetAddress()Ljava/net/InetAddress;" />
-		<method name="getInputStream()Ljava/io/InputStream;" />
-		<method name="getKeepAlive()Z" />
-		<method name="getLocalAddress()Ljava/net/InetAddress;" />
-		<method name="getLocalPort()I" />
-		<method name="getLocalSocketAddress()Ljava/net/SocketAddress;" />
-		<method name="getOOBInline()Z" />
-		<method name="getOutputStream()Ljava/io/OutputStream;" />
-		<method name="getPort()I" />
-		<method name="getReceiveBufferSize()I" />
-		<method name="getRemoteSocketAddress()Ljava/net/SocketAddress;" />
-		<method name="getReuseAddress()Z" />
-		<method name="getSendBufferSize()I" />
-		<method name="getSoLinger()I" />
-		<method name="getSoTimeout()I" />
-		<method name="getTcpNoDelay()Z" />
-		<method name="getTrafficClass()I" />
-		<method name="isBound()Z" />
-		<method name="isClosed()Z" />
-		<method name="isConnected()Z" />
-		<method name="isInputShutdown()Z" />
-		<method name="isOutputShutdown()Z" />
-		<method name="sendUrgentData(I)V" />
-		<method name="setKeepAlive(Z)V" />
-		<method name="setOOBInline(Z)V" />
-		<method name="setPerformancePreferences(III)V" />
-		<method name="setReceiveBufferSize(I)V" />
-		<method name="setReuseAddress(Z)V" />
-		<method name="setSendBufferSize(I)V" />
-		<method name="setSoLinger(ZI)V" />
-		<method name="setSoTimeout(I)V" />
-		<method name="setSocketImplFactory(Ljava/net/SocketImplFactory;)V" />
-		<method name="setTcpNoDelay(Z)V" />
-		<method name="setTrafficClass(I)V" />
-		<method name="shutdownInput()V" />
-		<method name="shutdownOutput()V" />
-	</class>
-	<class name="java/net/SocketAddress" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="java/net/SocketException" since="1">
-		<extends name="java/io/IOException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/net/SocketImpl" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/net/SocketOptions" />
-		<method name="&lt;init>()V" />
-		<method name="accept(Ljava/net/SocketImpl;)V" />
-		<method name="available()I" />
-		<method name="bind(Ljava/net/InetAddress;I)V" />
-		<method name="close()V" />
-		<method name="connect(Ljava/lang/String;I)V" />
-		<method name="connect(Ljava/net/InetAddress;I)V" />
-		<method name="connect(Ljava/net/SocketAddress;I)V" />
-		<method name="create(Z)V" />
-		<method name="getFileDescriptor()Ljava/io/FileDescriptor;" />
-		<method name="getInetAddress()Ljava/net/InetAddress;" />
-		<method name="getInputStream()Ljava/io/InputStream;" />
-		<method name="getLocalPort()I" />
-		<method name="getOutputStream()Ljava/io/OutputStream;" />
-		<method name="getPort()I" />
-		<method name="listen(I)V" />
-		<method name="sendUrgentData(I)V" />
-		<method name="setPerformancePreferences(III)V" />
-		<method name="shutdownInput()V" />
-		<method name="shutdownOutput()V" />
-		<method name="supportsUrgentData()Z" />
-		<field name="address" />
-		<field name="fd" />
-		<field name="localport" />
-		<field name="port" />
-	</class>
-	<class name="java/net/SocketImplFactory" since="1">
-		<extends name="java/lang/Object" />
-		<method name="createSocketImpl()Ljava/net/SocketImpl;" />
-	</class>
-	<class name="java/net/SocketOptions" since="1">
-		<extends name="java/lang/Object" />
-		<method name="getOption(I)Ljava/lang/Object;" />
-		<method name="setOption(ILjava/lang/Object;)V" />
-		<field name="IP_MULTICAST_IF" />
-		<field name="IP_MULTICAST_IF2" />
-		<field name="IP_MULTICAST_LOOP" />
-		<field name="IP_TOS" />
-		<field name="SO_BINDADDR" />
-		<field name="SO_BROADCAST" />
-		<field name="SO_KEEPALIVE" />
-		<field name="SO_LINGER" />
-		<field name="SO_OOBINLINE" />
-		<field name="SO_RCVBUF" />
-		<field name="SO_REUSEADDR" />
-		<field name="SO_SNDBUF" />
-		<field name="SO_TIMEOUT" />
-		<field name="TCP_NODELAY" />
-	</class>
-	<class name="java/net/SocketPermission" since="1">
-		<extends name="java/security/Permission" />
-		<implements name="java/io/Serializable" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
-	</class>
-	<class name="java/net/SocketTimeoutException" since="1">
-		<extends name="java/io/InterruptedIOException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/net/URI" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<implements name="java/lang/Comparable" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="compareTo(Ljava/net/URI;)I" />
-		<method name="create(Ljava/lang/String;)Ljava/net/URI;" />
-		<method name="getAuthority()Ljava/lang/String;" />
-		<method name="getFragment()Ljava/lang/String;" />
-		<method name="getHost()Ljava/lang/String;" />
-		<method name="getPath()Ljava/lang/String;" />
-		<method name="getPort()I" />
-		<method name="getQuery()Ljava/lang/String;" />
-		<method name="getRawAuthority()Ljava/lang/String;" />
-		<method name="getRawFragment()Ljava/lang/String;" />
-		<method name="getRawPath()Ljava/lang/String;" />
-		<method name="getRawQuery()Ljava/lang/String;" />
-		<method name="getRawSchemeSpecificPart()Ljava/lang/String;" />
-		<method name="getRawUserInfo()Ljava/lang/String;" />
-		<method name="getScheme()Ljava/lang/String;" />
-		<method name="getSchemeSpecificPart()Ljava/lang/String;" />
-		<method name="getUserInfo()Ljava/lang/String;" />
-		<method name="isAbsolute()Z" />
-		<method name="isOpaque()Z" />
-		<method name="normalize()Ljava/net/URI;" />
-		<method name="parseServerAuthority()Ljava/net/URI;" />
-		<method name="relativize(Ljava/net/URI;)Ljava/net/URI;" />
-		<method name="resolve(Ljava/lang/String;)Ljava/net/URI;" />
-		<method name="resolve(Ljava/net/URI;)Ljava/net/URI;" />
-		<method name="toASCIIString()Ljava/lang/String;" />
-		<method name="toURL()Ljava/net/URL;" />
-	</class>
-	<class name="java/net/URISyntaxException" since="1">
-		<extends name="java/lang/Exception" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;I)V" />
-		<method name="getIndex()I" />
-		<method name="getInput()Ljava/lang/String;" />
-		<method name="getReason()Ljava/lang/String;" />
-	</class>
-	<class name="java/net/URL" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/net/URLStreamHandler;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/net/URL;Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/net/URL;Ljava/lang/String;Ljava/net/URLStreamHandler;)V" />
-		<method name="getAuthority()Ljava/lang/String;" />
-		<method name="getContent()Ljava/lang/Object;" />
-		<method name="getContent([Ljava/lang/Class;)Ljava/lang/Object;" />
-		<method name="getDefaultPort()I" />
-		<method name="getFile()Ljava/lang/String;" />
-		<method name="getHost()Ljava/lang/String;" />
-		<method name="getPath()Ljava/lang/String;" />
-		<method name="getPort()I" />
-		<method name="getProtocol()Ljava/lang/String;" />
-		<method name="getQuery()Ljava/lang/String;" />
-		<method name="getRef()Ljava/lang/String;" />
-		<method name="getUserInfo()Ljava/lang/String;" />
-		<method name="openConnection()Ljava/net/URLConnection;" />
-		<method name="openConnection(Ljava/net/Proxy;)Ljava/net/URLConnection;" />
-		<method name="openStream()Ljava/io/InputStream;" />
-		<method name="sameFile(Ljava/net/URL;)Z" />
-		<method name="set(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V" />
-		<method name="set(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="setURLStreamHandlerFactory(Ljava/net/URLStreamHandlerFactory;)V" />
-		<method name="toExternalForm()Ljava/lang/String;" />
-		<method name="toURI()Ljava/net/URI;" />
-	</class>
-	<class name="java/net/URLClassLoader" since="1">
-		<extends name="java/security/SecureClassLoader" />
-		<method name="&lt;init>([Ljava/net/URL;)V" />
-		<method name="&lt;init>([Ljava/net/URL;Ljava/lang/ClassLoader;)V" />
-		<method name="&lt;init>([Ljava/net/URL;Ljava/lang/ClassLoader;Ljava/net/URLStreamHandlerFactory;)V" />
-		<method name="addURL(Ljava/net/URL;)V" />
-		<method name="definePackage(Ljava/lang/String;Ljava/util/jar/Manifest;Ljava/net/URL;)Ljava/lang/Package;" />
-		<method name="getURLs()[Ljava/net/URL;" />
-		<method name="newInstance([Ljava/net/URL;)Ljava/net/URLClassLoader;" />
-		<method name="newInstance([Ljava/net/URL;Ljava/lang/ClassLoader;)Ljava/net/URLClassLoader;" />
-	</class>
-	<class name="java/net/URLConnection" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/net/URL;)V" />
-		<method name="addRequestProperty(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="connect()V" />
-		<method name="getAllowUserInteraction()Z" />
-		<method name="getConnectTimeout()I" />
-		<method name="getContent()Ljava/lang/Object;" />
-		<method name="getContent([Ljava/lang/Class;)Ljava/lang/Object;" />
-		<method name="getContentEncoding()Ljava/lang/String;" />
-		<method name="getContentLength()I" />
-		<method name="getContentType()Ljava/lang/String;" />
-		<method name="getDate()J" />
-		<method name="getDefaultAllowUserInteraction()Z" />
-		<method name="getDefaultRequestProperty(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="getDefaultUseCaches()Z" />
-		<method name="getDoInput()Z" />
-		<method name="getDoOutput()Z" />
-		<method name="getExpiration()J" />
-		<method name="getFileNameMap()Ljava/net/FileNameMap;" />
-		<method name="getHeaderField(I)Ljava/lang/String;" />
-		<method name="getHeaderField(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="getHeaderFieldDate(Ljava/lang/String;J)J" />
-		<method name="getHeaderFieldInt(Ljava/lang/String;I)I" />
-		<method name="getHeaderFieldKey(I)Ljava/lang/String;" />
-		<method name="getHeaderFields()Ljava/util/Map;" />
-		<method name="getIfModifiedSince()J" />
-		<method name="getInputStream()Ljava/io/InputStream;" />
-		<method name="getLastModified()J" />
-		<method name="getOutputStream()Ljava/io/OutputStream;" />
-		<method name="getPermission()Ljava/security/Permission;" />
-		<method name="getReadTimeout()I" />
-		<method name="getRequestProperties()Ljava/util/Map;" />
-		<method name="getRequestProperty(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="getURL()Ljava/net/URL;" />
-		<method name="getUseCaches()Z" />
-		<method name="guessContentTypeFromName(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="guessContentTypeFromStream(Ljava/io/InputStream;)Ljava/lang/String;" />
-		<method name="setAllowUserInteraction(Z)V" />
-		<method name="setConnectTimeout(I)V" />
-		<method name="setContentHandlerFactory(Ljava/net/ContentHandlerFactory;)V" />
-		<method name="setDefaultAllowUserInteraction(Z)V" />
-		<method name="setDefaultRequestProperty(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="setDefaultUseCaches(Z)V" />
-		<method name="setDoInput(Z)V" />
-		<method name="setDoOutput(Z)V" />
-		<method name="setFileNameMap(Ljava/net/FileNameMap;)V" />
-		<method name="setIfModifiedSince(J)V" />
-		<method name="setReadTimeout(I)V" />
-		<method name="setRequestProperty(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="setUseCaches(Z)V" />
-		<field name="allowUserInteraction" />
-		<field name="connected" />
-		<field name="doInput" />
-		<field name="doOutput" />
-		<field name="ifModifiedSince" />
-		<field name="url" />
-		<field name="useCaches" />
-	</class>
-	<class name="java/net/URLDecoder" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="decode(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="decode(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
-	</class>
-	<class name="java/net/URLEncoder" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="encode(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="encode(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
-	</class>
-	<class name="java/net/URLStreamHandler" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="equals(Ljava/net/URL;Ljava/net/URL;)Z" />
-		<method name="getDefaultPort()I" />
-		<method name="getHostAddress(Ljava/net/URL;)Ljava/net/InetAddress;" />
-		<method name="hashCode(Ljava/net/URL;)I" />
-		<method name="hostsEqual(Ljava/net/URL;Ljava/net/URL;)Z" />
-		<method name="openConnection(Ljava/net/URL;)Ljava/net/URLConnection;" />
-		<method name="openConnection(Ljava/net/URL;Ljava/net/Proxy;)Ljava/net/URLConnection;" />
-		<method name="parseURL(Ljava/net/URL;Ljava/lang/String;II)V" />
-		<method name="sameFile(Ljava/net/URL;Ljava/net/URL;)Z" />
-		<method name="setURL(Ljava/net/URL;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V" />
-		<method name="setURL(Ljava/net/URL;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="toExternalForm(Ljava/net/URL;)Ljava/lang/String;" />
-	</class>
-	<class name="java/net/URLStreamHandlerFactory" since="1">
-		<extends name="java/lang/Object" />
-		<method name="createURLStreamHandler(Ljava/lang/String;)Ljava/net/URLStreamHandler;" />
-	</class>
-	<class name="java/net/UnknownHostException" since="1">
-		<extends name="java/io/IOException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/net/UnknownServiceException" since="1">
-		<extends name="java/io/IOException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/nio/Buffer" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="array()Ljava/lang/Object;" since="9" />
-		<method name="arrayOffset()I" since="9" />
-		<method name="capacity()I" />
-		<method name="clear()Ljava/nio/Buffer;" />
-		<method name="flip()Ljava/nio/Buffer;" />
-		<method name="hasArray()Z" since="9" />
-		<method name="hasRemaining()Z" />
-		<method name="isDirect()Z" since="9" />
-		<method name="isReadOnly()Z" />
-		<method name="limit()I" />
-		<method name="limit(I)Ljava/nio/Buffer;" />
-		<method name="mark()Ljava/nio/Buffer;" />
-		<method name="position()I" />
-		<method name="position(I)Ljava/nio/Buffer;" />
-		<method name="remaining()I" />
-		<method name="reset()Ljava/nio/Buffer;" />
-		<method name="rewind()Ljava/nio/Buffer;" />
-	</class>
-	<class name="java/nio/BufferOverflowException" since="1">
-		<extends name="java/lang/RuntimeException" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="java/nio/BufferUnderflowException" since="1">
-		<extends name="java/lang/RuntimeException" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="java/nio/ByteBuffer" since="1">
-		<extends name="java/nio/Buffer" />
-		<implements name="java/lang/Comparable" />
-		<method name="&lt;init>()V" />
-		<method name="allocate(I)Ljava/nio/ByteBuffer;" />
-		<method name="allocateDirect(I)Ljava/nio/ByteBuffer;" />
-		<method name="array()[B" />
-		<method name="arrayOffset()I" />
-		<method name="asCharBuffer()Ljava/nio/CharBuffer;" />
-		<method name="asDoubleBuffer()Ljava/nio/DoubleBuffer;" />
-		<method name="asFloatBuffer()Ljava/nio/FloatBuffer;" />
-		<method name="asIntBuffer()Ljava/nio/IntBuffer;" />
-		<method name="asLongBuffer()Ljava/nio/LongBuffer;" />
-		<method name="asReadOnlyBuffer()Ljava/nio/ByteBuffer;" />
-		<method name="asShortBuffer()Ljava/nio/ShortBuffer;" />
-		<method name="compact()Ljava/nio/ByteBuffer;" />
-		<method name="compareTo(Ljava/nio/ByteBuffer;)I" />
-		<method name="duplicate()Ljava/nio/ByteBuffer;" />
-		<method name="get()B" />
-		<method name="get(I)B" />
-		<method name="get([B)Ljava/nio/ByteBuffer;" />
-		<method name="get([BII)Ljava/nio/ByteBuffer;" />
-		<method name="getChar()C" />
-		<method name="getChar(I)C" />
-		<method name="getDouble()D" />
-		<method name="getDouble(I)D" />
-		<method name="getFloat()F" />
-		<method name="getFloat(I)F" />
-		<method name="getInt()I" />
-		<method name="getInt(I)I" />
-		<method name="getLong()J" />
-		<method name="getLong(I)J" />
-		<method name="getShort()S" />
-		<method name="getShort(I)S" />
-		<method name="hasArray()Z" />
-		<method name="isDirect()Z" />
-		<method name="order()Ljava/nio/ByteOrder;" />
-		<method name="order(Ljava/nio/ByteOrder;)Ljava/nio/ByteBuffer;" />
-		<method name="put(B)Ljava/nio/ByteBuffer;" />
-		<method name="put(IB)Ljava/nio/ByteBuffer;" />
-		<method name="put(Ljava/nio/ByteBuffer;)Ljava/nio/ByteBuffer;" />
-		<method name="put([B)Ljava/nio/ByteBuffer;" />
-		<method name="put([BII)Ljava/nio/ByteBuffer;" />
-		<method name="putChar(C)Ljava/nio/ByteBuffer;" />
-		<method name="putChar(IC)Ljava/nio/ByteBuffer;" />
-		<method name="putDouble(D)Ljava/nio/ByteBuffer;" />
-		<method name="putDouble(ID)Ljava/nio/ByteBuffer;" />
-		<method name="putFloat(F)Ljava/nio/ByteBuffer;" />
-		<method name="putFloat(IF)Ljava/nio/ByteBuffer;" />
-		<method name="putInt(I)Ljava/nio/ByteBuffer;" />
-		<method name="putInt(II)Ljava/nio/ByteBuffer;" />
-		<method name="putLong(IJ)Ljava/nio/ByteBuffer;" />
-		<method name="putLong(J)Ljava/nio/ByteBuffer;" />
-		<method name="putShort(IS)Ljava/nio/ByteBuffer;" />
-		<method name="putShort(S)Ljava/nio/ByteBuffer;" />
-		<method name="slice()Ljava/nio/ByteBuffer;" />
-		<method name="wrap([B)Ljava/nio/ByteBuffer;" />
-		<method name="wrap([BII)Ljava/nio/ByteBuffer;" />
-	</class>
-	<class name="java/nio/ByteOrder" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="nativeOrder()Ljava/nio/ByteOrder;" />
-		<field name="BIG_ENDIAN" />
-		<field name="LITTLE_ENDIAN" />
-	</class>
-	<class name="java/nio/CharBuffer" since="1">
-		<extends name="java/nio/Buffer" />
-		<implements name="java/lang/Appendable" />
-		<implements name="java/lang/CharSequence" />
-		<implements name="java/lang/Comparable" />
-		<implements name="java/lang/Readable" />
-		<method name="&lt;init>()V" />
-		<method name="allocate(I)Ljava/nio/CharBuffer;" />
-		<method name="append(C)Ljava/nio/CharBuffer;" />
-		<method name="append(Ljava/lang/CharSequence;)Ljava/nio/CharBuffer;" />
-		<method name="append(Ljava/lang/CharSequence;II)Ljava/nio/CharBuffer;" />
-		<method name="array()[C" />
-		<method name="arrayOffset()I" />
-		<method name="asReadOnlyBuffer()Ljava/nio/CharBuffer;" />
-		<method name="compact()Ljava/nio/CharBuffer;" />
-		<method name="compareTo(Ljava/nio/CharBuffer;)I" />
-		<method name="duplicate()Ljava/nio/CharBuffer;" />
-		<method name="get()C" />
-		<method name="get(I)C" />
-		<method name="get([C)Ljava/nio/CharBuffer;" />
-		<method name="get([CII)Ljava/nio/CharBuffer;" />
-		<method name="hasArray()Z" />
-		<method name="isDirect()Z" />
-		<method name="order()Ljava/nio/ByteOrder;" />
-		<method name="put(C)Ljava/nio/CharBuffer;" />
-		<method name="put(IC)Ljava/nio/CharBuffer;" />
-		<method name="put(Ljava/lang/String;)Ljava/nio/CharBuffer;" />
-		<method name="put(Ljava/lang/String;II)Ljava/nio/CharBuffer;" />
-		<method name="put(Ljava/nio/CharBuffer;)Ljava/nio/CharBuffer;" />
-		<method name="put([C)Ljava/nio/CharBuffer;" />
-		<method name="put([CII)Ljava/nio/CharBuffer;" />
-		<method name="slice()Ljava/nio/CharBuffer;" />
-		<method name="subSequence(II)Ljava/nio/CharBuffer;" since="19" />
-		<method name="wrap(Ljava/lang/CharSequence;)Ljava/nio/CharBuffer;" />
-		<method name="wrap(Ljava/lang/CharSequence;II)Ljava/nio/CharBuffer;" />
-		<method name="wrap([C)Ljava/nio/CharBuffer;" />
-		<method name="wrap([CII)Ljava/nio/CharBuffer;" />
-	</class>
-	<class name="java/nio/DoubleBuffer" since="1">
-		<extends name="java/nio/Buffer" />
-		<implements name="java/lang/Comparable" />
-		<method name="&lt;init>()V" />
-		<method name="allocate(I)Ljava/nio/DoubleBuffer;" />
-		<method name="array()[D" />
-		<method name="arrayOffset()I" />
-		<method name="asReadOnlyBuffer()Ljava/nio/DoubleBuffer;" />
-		<method name="compact()Ljava/nio/DoubleBuffer;" />
-		<method name="compareTo(Ljava/nio/DoubleBuffer;)I" />
-		<method name="duplicate()Ljava/nio/DoubleBuffer;" />
-		<method name="get()D" />
-		<method name="get(I)D" />
-		<method name="get([D)Ljava/nio/DoubleBuffer;" />
-		<method name="get([DII)Ljava/nio/DoubleBuffer;" />
-		<method name="hasArray()Z" />
-		<method name="isDirect()Z" />
-		<method name="order()Ljava/nio/ByteOrder;" />
-		<method name="put(D)Ljava/nio/DoubleBuffer;" />
-		<method name="put(ID)Ljava/nio/DoubleBuffer;" />
-		<method name="put(Ljava/nio/DoubleBuffer;)Ljava/nio/DoubleBuffer;" />
-		<method name="put([D)Ljava/nio/DoubleBuffer;" />
-		<method name="put([DII)Ljava/nio/DoubleBuffer;" />
-		<method name="slice()Ljava/nio/DoubleBuffer;" />
-		<method name="wrap([D)Ljava/nio/DoubleBuffer;" />
-		<method name="wrap([DII)Ljava/nio/DoubleBuffer;" />
-	</class>
-	<class name="java/nio/FloatBuffer" since="1">
-		<extends name="java/nio/Buffer" />
-		<implements name="java/lang/Comparable" />
-		<method name="&lt;init>()V" />
-		<method name="allocate(I)Ljava/nio/FloatBuffer;" />
-		<method name="array()[F" />
-		<method name="arrayOffset()I" />
-		<method name="asReadOnlyBuffer()Ljava/nio/FloatBuffer;" />
-		<method name="compact()Ljava/nio/FloatBuffer;" />
-		<method name="compareTo(Ljava/nio/FloatBuffer;)I" />
-		<method name="duplicate()Ljava/nio/FloatBuffer;" />
-		<method name="get()F" />
-		<method name="get(I)F" />
-		<method name="get([F)Ljava/nio/FloatBuffer;" />
-		<method name="get([FII)Ljava/nio/FloatBuffer;" />
-		<method name="hasArray()Z" />
-		<method name="isDirect()Z" />
-		<method name="order()Ljava/nio/ByteOrder;" />
-		<method name="put(F)Ljava/nio/FloatBuffer;" />
-		<method name="put(IF)Ljava/nio/FloatBuffer;" />
-		<method name="put(Ljava/nio/FloatBuffer;)Ljava/nio/FloatBuffer;" />
-		<method name="put([F)Ljava/nio/FloatBuffer;" />
-		<method name="put([FII)Ljava/nio/FloatBuffer;" />
-		<method name="slice()Ljava/nio/FloatBuffer;" />
-		<method name="wrap([F)Ljava/nio/FloatBuffer;" />
-		<method name="wrap([FII)Ljava/nio/FloatBuffer;" />
-	</class>
-	<class name="java/nio/IntBuffer" since="1">
-		<extends name="java/nio/Buffer" />
-		<implements name="java/lang/Comparable" />
-		<method name="&lt;init>()V" />
-		<method name="allocate(I)Ljava/nio/IntBuffer;" />
-		<method name="array()[I" />
-		<method name="arrayOffset()I" />
-		<method name="asReadOnlyBuffer()Ljava/nio/IntBuffer;" />
-		<method name="compact()Ljava/nio/IntBuffer;" />
-		<method name="compareTo(Ljava/nio/IntBuffer;)I" />
-		<method name="duplicate()Ljava/nio/IntBuffer;" />
-		<method name="get()I" />
-		<method name="get(I)I" />
-		<method name="get([I)Ljava/nio/IntBuffer;" />
-		<method name="get([III)Ljava/nio/IntBuffer;" />
-		<method name="hasArray()Z" />
-		<method name="isDirect()Z" />
-		<method name="order()Ljava/nio/ByteOrder;" />
-		<method name="put(I)Ljava/nio/IntBuffer;" />
-		<method name="put(II)Ljava/nio/IntBuffer;" />
-		<method name="put(Ljava/nio/IntBuffer;)Ljava/nio/IntBuffer;" />
-		<method name="put([I)Ljava/nio/IntBuffer;" />
-		<method name="put([III)Ljava/nio/IntBuffer;" />
-		<method name="slice()Ljava/nio/IntBuffer;" />
-		<method name="wrap([I)Ljava/nio/IntBuffer;" />
-		<method name="wrap([III)Ljava/nio/IntBuffer;" />
-	</class>
-	<class name="java/nio/InvalidMarkException" since="1">
-		<extends name="java/lang/IllegalStateException" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="java/nio/LongBuffer" since="1">
-		<extends name="java/nio/Buffer" />
-		<implements name="java/lang/Comparable" />
-		<method name="&lt;init>()V" />
-		<method name="allocate(I)Ljava/nio/LongBuffer;" />
-		<method name="array()[J" />
-		<method name="arrayOffset()I" />
-		<method name="asReadOnlyBuffer()Ljava/nio/LongBuffer;" />
-		<method name="compact()Ljava/nio/LongBuffer;" />
-		<method name="compareTo(Ljava/nio/LongBuffer;)I" />
-		<method name="duplicate()Ljava/nio/LongBuffer;" />
-		<method name="get()J" />
-		<method name="get(I)J" />
-		<method name="get([J)Ljava/nio/LongBuffer;" />
-		<method name="get([JII)Ljava/nio/LongBuffer;" />
-		<method name="hasArray()Z" />
-		<method name="isDirect()Z" />
-		<method name="order()Ljava/nio/ByteOrder;" />
-		<method name="put(IJ)Ljava/nio/LongBuffer;" />
-		<method name="put(J)Ljava/nio/LongBuffer;" />
-		<method name="put(Ljava/nio/LongBuffer;)Ljava/nio/LongBuffer;" />
-		<method name="put([J)Ljava/nio/LongBuffer;" />
-		<method name="put([JII)Ljava/nio/LongBuffer;" />
-		<method name="slice()Ljava/nio/LongBuffer;" />
-		<method name="wrap([J)Ljava/nio/LongBuffer;" />
-		<method name="wrap([JII)Ljava/nio/LongBuffer;" />
-	</class>
-	<class name="java/nio/MappedByteBuffer" since="1">
-		<extends name="java/nio/ByteBuffer" />
-		<method name="&lt;init>()V" />
-		<method name="force()Ljava/nio/MappedByteBuffer;" />
-		<method name="isLoaded()Z" />
-		<method name="load()Ljava/nio/MappedByteBuffer;" />
-	</class>
-	<class name="java/nio/ReadOnlyBufferException" since="1">
-		<extends name="java/lang/UnsupportedOperationException" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="java/nio/ShortBuffer" since="1">
-		<extends name="java/nio/Buffer" />
-		<implements name="java/lang/Comparable" />
-		<method name="&lt;init>()V" />
-		<method name="allocate(I)Ljava/nio/ShortBuffer;" />
-		<method name="array()[S" />
-		<method name="arrayOffset()I" />
-		<method name="asReadOnlyBuffer()Ljava/nio/ShortBuffer;" />
-		<method name="compact()Ljava/nio/ShortBuffer;" />
-		<method name="compareTo(Ljava/nio/ShortBuffer;)I" />
-		<method name="duplicate()Ljava/nio/ShortBuffer;" />
-		<method name="get()S" />
-		<method name="get(I)S" />
-		<method name="get([S)Ljava/nio/ShortBuffer;" />
-		<method name="get([SII)Ljava/nio/ShortBuffer;" />
-		<method name="hasArray()Z" />
-		<method name="isDirect()Z" />
-		<method name="order()Ljava/nio/ByteOrder;" />
-		<method name="put(IS)Ljava/nio/ShortBuffer;" />
-		<method name="put(Ljava/nio/ShortBuffer;)Ljava/nio/ShortBuffer;" />
-		<method name="put(S)Ljava/nio/ShortBuffer;" />
-		<method name="put([S)Ljava/nio/ShortBuffer;" />
-		<method name="put([SII)Ljava/nio/ShortBuffer;" />
-		<method name="slice()Ljava/nio/ShortBuffer;" />
-		<method name="wrap([S)Ljava/nio/ShortBuffer;" />
-		<method name="wrap([SII)Ljava/nio/ShortBuffer;" />
-	</class>
-	<class name="java/nio/channels/AlreadyConnectedException" since="1">
-		<extends name="java/lang/IllegalStateException" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="java/nio/channels/AsynchronousCloseException" since="1">
-		<extends name="java/nio/channels/ClosedChannelException" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="java/nio/channels/ByteChannel" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/nio/channels/ReadableByteChannel" />
-		<implements name="java/nio/channels/WritableByteChannel" />
-	</class>
-	<class name="java/nio/channels/CancelledKeyException" since="1">
-		<extends name="java/lang/IllegalStateException" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="java/nio/channels/Channel" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Closeable" />
-		<method name="isOpen()Z" />
-	</class>
-	<class name="java/nio/channels/Channels" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="newChannel(Ljava/io/InputStream;)Ljava/nio/channels/ReadableByteChannel;" />
-		<method name="newChannel(Ljava/io/OutputStream;)Ljava/nio/channels/WritableByteChannel;" />
-		<method name="newInputStream(Ljava/nio/channels/ReadableByteChannel;)Ljava/io/InputStream;" />
-		<method name="newOutputStream(Ljava/nio/channels/WritableByteChannel;)Ljava/io/OutputStream;" />
-		<method name="newReader(Ljava/nio/channels/ReadableByteChannel;Ljava/lang/String;)Ljava/io/Reader;" />
-		<method name="newReader(Ljava/nio/channels/ReadableByteChannel;Ljava/nio/charset/CharsetDecoder;I)Ljava/io/Reader;" />
-		<method name="newWriter(Ljava/nio/channels/WritableByteChannel;Ljava/lang/String;)Ljava/io/Writer;" />
-		<method name="newWriter(Ljava/nio/channels/WritableByteChannel;Ljava/nio/charset/CharsetEncoder;I)Ljava/io/Writer;" />
-	</class>
-	<class name="java/nio/channels/ClosedByInterruptException" since="1">
-		<extends name="java/nio/channels/AsynchronousCloseException" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="java/nio/channels/ClosedChannelException" since="1">
-		<extends name="java/io/IOException" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="java/nio/channels/ClosedSelectorException" since="1">
-		<extends name="java/lang/IllegalStateException" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="java/nio/channels/ConnectionPendingException" since="1">
-		<extends name="java/lang/IllegalStateException" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="java/nio/channels/DatagramChannel" since="1">
-		<extends name="java/nio/channels/spi/AbstractSelectableChannel" />
-		<implements name="java/nio/channels/ByteChannel" />
-		<implements name="java/nio/channels/GatheringByteChannel" />
-		<implements name="java/nio/channels/ScatteringByteChannel" />
-		<method name="&lt;init>(Ljava/nio/channels/spi/SelectorProvider;)V" />
-		<method name="connect(Ljava/net/SocketAddress;)Ljava/nio/channels/DatagramChannel;" />
-		<method name="disconnect()Ljava/nio/channels/DatagramChannel;" />
-		<method name="isConnected()Z" />
-		<method name="open()Ljava/nio/channels/DatagramChannel;" />
-		<method name="receive(Ljava/nio/ByteBuffer;)Ljava/net/SocketAddress;" />
-		<method name="send(Ljava/nio/ByteBuffer;Ljava/net/SocketAddress;)I" />
-		<method name="socket()Ljava/net/DatagramSocket;" />
-	</class>
-	<class name="java/nio/channels/FileChannel" since="1">
-		<extends name="java/nio/channels/spi/AbstractInterruptibleChannel" />
-		<implements name="java/nio/channels/ByteChannel" />
-		<implements name="java/nio/channels/GatheringByteChannel" />
-		<implements name="java/nio/channels/ScatteringByteChannel" />
-		<method name="&lt;init>()V" />
-		<method name="force(Z)V" />
-		<method name="lock()Ljava/nio/channels/FileLock;" />
-		<method name="lock(JJZ)Ljava/nio/channels/FileLock;" />
-		<method name="map(Ljava/nio/channels/FileChannel$MapMode;JJ)Ljava/nio/MappedByteBuffer;" />
-		<method name="position()J" />
-		<method name="position(J)Ljava/nio/channels/FileChannel;" />
-		<method name="read(Ljava/nio/ByteBuffer;J)I" />
-		<method name="size()J" />
-		<method name="transferFrom(Ljava/nio/channels/ReadableByteChannel;JJ)J" />
-		<method name="transferTo(JJLjava/nio/channels/WritableByteChannel;)J" />
-		<method name="truncate(J)Ljava/nio/channels/FileChannel;" />
-		<method name="tryLock()Ljava/nio/channels/FileLock;" />
-		<method name="tryLock(JJZ)Ljava/nio/channels/FileLock;" />
-		<method name="write(Ljava/nio/ByteBuffer;J)I" />
-	</class>
-	<class name="java/nio/channels/FileChannel$MapMode" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="PRIVATE" />
-		<field name="READ_ONLY" />
-		<field name="READ_WRITE" />
-	</class>
-	<class name="java/nio/channels/FileLock" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/AutoCloseable" since="19" />
-		<method name="&lt;init>(Ljava/nio/channels/FileChannel;JJZ)V" />
-		<method name="channel()Ljava/nio/channels/FileChannel;" />
-		<method name="isShared()Z" />
-		<method name="isValid()Z" />
-		<method name="overlaps(JJ)Z" />
-		<method name="position()J" />
-		<method name="release()V" />
-		<method name="size()J" />
-	</class>
-	<class name="java/nio/channels/FileLockInterruptionException" since="1">
-		<extends name="java/io/IOException" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="java/nio/channels/GatheringByteChannel" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/nio/channels/WritableByteChannel" />
-		<method name="write([Ljava/nio/ByteBuffer;)J" />
-		<method name="write([Ljava/nio/ByteBuffer;II)J" />
-	</class>
-	<class name="java/nio/channels/IllegalBlockingModeException" since="1">
-		<extends name="java/lang/IllegalStateException" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="java/nio/channels/IllegalSelectorException" since="1">
-		<extends name="java/lang/IllegalArgumentException" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="java/nio/channels/InterruptibleChannel" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/nio/channels/Channel" />
-	</class>
-	<class name="java/nio/channels/NoConnectionPendingException" since="1">
-		<extends name="java/lang/IllegalStateException" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="java/nio/channels/NonReadableChannelException" since="1">
-		<extends name="java/lang/IllegalStateException" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="java/nio/channels/NonWritableChannelException" since="1">
-		<extends name="java/lang/IllegalStateException" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="java/nio/channels/NotYetBoundException" since="1">
-		<extends name="java/lang/IllegalStateException" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="java/nio/channels/NotYetConnectedException" since="1">
-		<extends name="java/lang/IllegalStateException" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="java/nio/channels/OverlappingFileLockException" since="1">
-		<extends name="java/lang/IllegalStateException" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="java/nio/channels/Pipe" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="open()Ljava/nio/channels/Pipe;" />
-		<method name="sink()Ljava/nio/channels/Pipe$SinkChannel;" />
-		<method name="source()Ljava/nio/channels/Pipe$SourceChannel;" />
-	</class>
-	<class name="java/nio/channels/Pipe$SinkChannel" since="1">
-		<extends name="java/nio/channels/spi/AbstractSelectableChannel" />
-		<implements name="java/nio/channels/GatheringByteChannel" />
-		<implements name="java/nio/channels/WritableByteChannel" />
-		<method name="&lt;init>(Ljava/nio/channels/spi/SelectorProvider;)V" />
-	</class>
-	<class name="java/nio/channels/Pipe$SourceChannel" since="1">
-		<extends name="java/nio/channels/spi/AbstractSelectableChannel" />
-		<implements name="java/nio/channels/ReadableByteChannel" />
-		<implements name="java/nio/channels/ScatteringByteChannel" />
-		<method name="&lt;init>(Ljava/nio/channels/spi/SelectorProvider;)V" />
-	</class>
-	<class name="java/nio/channels/ReadableByteChannel" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/nio/channels/Channel" />
-		<method name="read(Ljava/nio/ByteBuffer;)I" />
-	</class>
-	<class name="java/nio/channels/ScatteringByteChannel" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/nio/channels/ReadableByteChannel" />
-		<method name="read([Ljava/nio/ByteBuffer;)J" />
-		<method name="read([Ljava/nio/ByteBuffer;II)J" />
-	</class>
-	<class name="java/nio/channels/SelectableChannel" since="1">
-		<extends name="java/nio/channels/spi/AbstractInterruptibleChannel" />
-		<implements name="java/nio/channels/Channel" />
-		<method name="&lt;init>()V" />
-		<method name="blockingLock()Ljava/lang/Object;" />
-		<method name="configureBlocking(Z)Ljava/nio/channels/SelectableChannel;" />
-		<method name="isBlocking()Z" />
-		<method name="isRegistered()Z" />
-		<method name="keyFor(Ljava/nio/channels/Selector;)Ljava/nio/channels/SelectionKey;" />
-		<method name="provider()Ljava/nio/channels/spi/SelectorProvider;" />
-		<method name="register(Ljava/nio/channels/Selector;I)Ljava/nio/channels/SelectionKey;" />
-		<method name="register(Ljava/nio/channels/Selector;ILjava/lang/Object;)Ljava/nio/channels/SelectionKey;" />
-		<method name="validOps()I" />
-	</class>
-	<class name="java/nio/channels/SelectionKey" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="attach(Ljava/lang/Object;)Ljava/lang/Object;" />
-		<method name="attachment()Ljava/lang/Object;" />
-		<method name="cancel()V" />
-		<method name="channel()Ljava/nio/channels/SelectableChannel;" />
-		<method name="interestOps()I" />
-		<method name="interestOps(I)Ljava/nio/channels/SelectionKey;" />
-		<method name="isAcceptable()Z" />
-		<method name="isConnectable()Z" />
-		<method name="isReadable()Z" />
-		<method name="isValid()Z" />
-		<method name="isWritable()Z" />
-		<method name="readyOps()I" />
-		<method name="selector()Ljava/nio/channels/Selector;" />
-		<field name="OP_ACCEPT" />
-		<field name="OP_CONNECT" />
-		<field name="OP_READ" />
-		<field name="OP_WRITE" />
-	</class>
-	<class name="java/nio/channels/Selector" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Closeable" since="19" />
-		<method name="&lt;init>()V" />
-		<method name="close()V" />
-		<method name="isOpen()Z" />
-		<method name="keys()Ljava/util/Set;" />
-		<method name="open()Ljava/nio/channels/Selector;" />
-		<method name="provider()Ljava/nio/channels/spi/SelectorProvider;" />
-		<method name="select()I" />
-		<method name="select(J)I" />
-		<method name="selectNow()I" />
-		<method name="selectedKeys()Ljava/util/Set;" />
-		<method name="wakeup()Ljava/nio/channels/Selector;" />
-	</class>
-	<class name="java/nio/channels/ServerSocketChannel" since="1">
-		<extends name="java/nio/channels/spi/AbstractSelectableChannel" />
-		<method name="&lt;init>(Ljava/nio/channels/spi/SelectorProvider;)V" />
-		<method name="accept()Ljava/nio/channels/SocketChannel;" />
-		<method name="open()Ljava/nio/channels/ServerSocketChannel;" />
-		<method name="socket()Ljava/net/ServerSocket;" />
-	</class>
-	<class name="java/nio/channels/SocketChannel" since="1">
-		<extends name="java/nio/channels/spi/AbstractSelectableChannel" />
-		<implements name="java/nio/channels/ByteChannel" />
-		<implements name="java/nio/channels/GatheringByteChannel" />
-		<implements name="java/nio/channels/ScatteringByteChannel" />
-		<method name="&lt;init>(Ljava/nio/channels/spi/SelectorProvider;)V" />
-		<method name="connect(Ljava/net/SocketAddress;)Z" />
-		<method name="finishConnect()Z" />
-		<method name="isConnected()Z" />
-		<method name="isConnectionPending()Z" />
-		<method name="open()Ljava/nio/channels/SocketChannel;" />
-		<method name="open(Ljava/net/SocketAddress;)Ljava/nio/channels/SocketChannel;" />
-		<method name="socket()Ljava/net/Socket;" />
-	</class>
-	<class name="java/nio/channels/UnresolvedAddressException" since="1">
-		<extends name="java/lang/IllegalArgumentException" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="java/nio/channels/UnsupportedAddressTypeException" since="1">
-		<extends name="java/lang/IllegalArgumentException" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="java/nio/channels/WritableByteChannel" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/nio/channels/Channel" />
-		<method name="write(Ljava/nio/ByteBuffer;)I" />
-	</class>
-	<class name="java/nio/channels/spi/AbstractInterruptibleChannel" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/nio/channels/Channel" />
-		<implements name="java/nio/channels/InterruptibleChannel" />
-		<method name="&lt;init>()V" />
-		<method name="begin()V" />
-		<method name="end(Z)V" />
-		<method name="implCloseChannel()V" />
-	</class>
-	<class name="java/nio/channels/spi/AbstractSelectableChannel" since="1">
-		<extends name="java/nio/channels/SelectableChannel" />
-		<method name="&lt;init>(Ljava/nio/channels/spi/SelectorProvider;)V" />
-		<method name="implCloseSelectableChannel()V" />
-		<method name="implConfigureBlocking(Z)V" />
-	</class>
-	<class name="java/nio/channels/spi/AbstractSelectionKey" since="1">
-		<extends name="java/nio/channels/SelectionKey" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="java/nio/channels/spi/AbstractSelector" since="1">
-		<extends name="java/nio/channels/Selector" />
-		<method name="&lt;init>(Ljava/nio/channels/spi/SelectorProvider;)V" />
-		<method name="begin()V" />
-		<method name="cancelledKeys()Ljava/util/Set;" />
-		<method name="deregister(Ljava/nio/channels/spi/AbstractSelectionKey;)V" />
-		<method name="end()V" />
-		<method name="implCloseSelector()V" />
-		<method name="register(Ljava/nio/channels/spi/AbstractSelectableChannel;ILjava/lang/Object;)Ljava/nio/channels/SelectionKey;" />
-	</class>
-	<class name="java/nio/channels/spi/SelectorProvider" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="inheritedChannel()Ljava/nio/channels/Channel;" />
-		<method name="openDatagramChannel()Ljava/nio/channels/DatagramChannel;" />
-		<method name="openPipe()Ljava/nio/channels/Pipe;" />
-		<method name="openSelector()Ljava/nio/channels/spi/AbstractSelector;" />
-		<method name="openServerSocketChannel()Ljava/nio/channels/ServerSocketChannel;" />
-		<method name="openSocketChannel()Ljava/nio/channels/SocketChannel;" />
-		<method name="provider()Ljava/nio/channels/spi/SelectorProvider;" />
-	</class>
-	<class name="java/nio/charset/CharacterCodingException" since="1">
-		<extends name="java/io/IOException" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="java/nio/charset/Charset" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/Comparable" />
-		<method name="&lt;init>(Ljava/lang/String;[Ljava/lang/String;)V" />
-		<method name="aliases()Ljava/util/Set;" />
-		<method name="availableCharsets()Ljava/util/SortedMap;" />
-		<method name="canEncode()Z" />
-		<method name="compareTo(Ljava/nio/charset/Charset;)I" />
-		<method name="contains(Ljava/nio/charset/Charset;)Z" />
-		<method name="decode(Ljava/nio/ByteBuffer;)Ljava/nio/CharBuffer;" />
-		<method name="defaultCharset()Ljava/nio/charset/Charset;" />
-		<method name="displayName()Ljava/lang/String;" />
-		<method name="displayName(Ljava/util/Locale;)Ljava/lang/String;" />
-		<method name="encode(Ljava/lang/String;)Ljava/nio/ByteBuffer;" />
-		<method name="encode(Ljava/nio/CharBuffer;)Ljava/nio/ByteBuffer;" />
-		<method name="forName(Ljava/lang/String;)Ljava/nio/charset/Charset;" />
-		<method name="isRegistered()Z" />
-		<method name="isSupported(Ljava/lang/String;)Z" />
-		<method name="name()Ljava/lang/String;" />
-		<method name="newDecoder()Ljava/nio/charset/CharsetDecoder;" />
-		<method name="newEncoder()Ljava/nio/charset/CharsetEncoder;" />
-	</class>
-	<class name="java/nio/charset/CharsetDecoder" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/nio/charset/Charset;FF)V" />
-		<method name="averageCharsPerByte()F" />
-		<method name="charset()Ljava/nio/charset/Charset;" />
-		<method name="decode(Ljava/nio/ByteBuffer;)Ljava/nio/CharBuffer;" />
-		<method name="decode(Ljava/nio/ByteBuffer;Ljava/nio/CharBuffer;Z)Ljava/nio/charset/CoderResult;" />
-		<method name="decodeLoop(Ljava/nio/ByteBuffer;Ljava/nio/CharBuffer;)Ljava/nio/charset/CoderResult;" />
-		<method name="detectedCharset()Ljava/nio/charset/Charset;" />
-		<method name="flush(Ljava/nio/CharBuffer;)Ljava/nio/charset/CoderResult;" />
-		<method name="implFlush(Ljava/nio/CharBuffer;)Ljava/nio/charset/CoderResult;" />
-		<method name="implOnMalformedInput(Ljava/nio/charset/CodingErrorAction;)V" />
-		<method name="implOnUnmappableCharacter(Ljava/nio/charset/CodingErrorAction;)V" />
-		<method name="implReplaceWith(Ljava/lang/String;)V" />
-		<method name="implReset()V" />
-		<method name="isAutoDetecting()Z" />
-		<method name="isCharsetDetected()Z" />
-		<method name="malformedInputAction()Ljava/nio/charset/CodingErrorAction;" />
-		<method name="maxCharsPerByte()F" />
-		<method name="onMalformedInput(Ljava/nio/charset/CodingErrorAction;)Ljava/nio/charset/CharsetDecoder;" />
-		<method name="onUnmappableCharacter(Ljava/nio/charset/CodingErrorAction;)Ljava/nio/charset/CharsetDecoder;" />
-		<method name="replaceWith(Ljava/lang/String;)Ljava/nio/charset/CharsetDecoder;" />
-		<method name="replacement()Ljava/lang/String;" />
-		<method name="reset()Ljava/nio/charset/CharsetDecoder;" />
-		<method name="unmappableCharacterAction()Ljava/nio/charset/CodingErrorAction;" />
-	</class>
-	<class name="java/nio/charset/CharsetEncoder" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/nio/charset/Charset;FF)V" />
-		<method name="&lt;init>(Ljava/nio/charset/Charset;FF[B)V" />
-		<method name="averageBytesPerChar()F" />
-		<method name="canEncode(C)Z" />
-		<method name="canEncode(Ljava/lang/CharSequence;)Z" />
-		<method name="charset()Ljava/nio/charset/Charset;" />
-		<method name="encode(Ljava/nio/CharBuffer;)Ljava/nio/ByteBuffer;" />
-		<method name="encode(Ljava/nio/CharBuffer;Ljava/nio/ByteBuffer;Z)Ljava/nio/charset/CoderResult;" />
-		<method name="encodeLoop(Ljava/nio/CharBuffer;Ljava/nio/ByteBuffer;)Ljava/nio/charset/CoderResult;" />
-		<method name="flush(Ljava/nio/ByteBuffer;)Ljava/nio/charset/CoderResult;" />
-		<method name="implFlush(Ljava/nio/ByteBuffer;)Ljava/nio/charset/CoderResult;" />
-		<method name="implOnMalformedInput(Ljava/nio/charset/CodingErrorAction;)V" />
-		<method name="implOnUnmappableCharacter(Ljava/nio/charset/CodingErrorAction;)V" />
-		<method name="implReplaceWith([B)V" />
-		<method name="implReset()V" />
-		<method name="isLegalReplacement([B)Z" />
-		<method name="malformedInputAction()Ljava/nio/charset/CodingErrorAction;" />
-		<method name="maxBytesPerChar()F" />
-		<method name="onMalformedInput(Ljava/nio/charset/CodingErrorAction;)Ljava/nio/charset/CharsetEncoder;" />
-		<method name="onUnmappableCharacter(Ljava/nio/charset/CodingErrorAction;)Ljava/nio/charset/CharsetEncoder;" />
-		<method name="replaceWith([B)Ljava/nio/charset/CharsetEncoder;" />
-		<method name="replacement()[B" />
-		<method name="reset()Ljava/nio/charset/CharsetEncoder;" />
-		<method name="unmappableCharacterAction()Ljava/nio/charset/CodingErrorAction;" />
-	</class>
-	<class name="java/nio/charset/CoderMalfunctionError" since="1">
-		<extends name="java/lang/Error" />
-		<method name="&lt;init>(Ljava/lang/Exception;)V" />
-	</class>
-	<class name="java/nio/charset/CoderResult" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="isError()Z" />
-		<method name="isMalformed()Z" />
-		<method name="isOverflow()Z" />
-		<method name="isUnderflow()Z" />
-		<method name="isUnmappable()Z" />
-		<method name="length()I" />
-		<method name="malformedForLength(I)Ljava/nio/charset/CoderResult;" />
-		<method name="throwException()V" />
-		<method name="unmappableForLength(I)Ljava/nio/charset/CoderResult;" />
-		<field name="OVERFLOW" />
-		<field name="UNDERFLOW" />
-	</class>
-	<class name="java/nio/charset/CodingErrorAction" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="IGNORE" />
-		<field name="REPLACE" />
-		<field name="REPORT" />
-	</class>
-	<class name="java/nio/charset/IllegalCharsetNameException" since="1">
-		<extends name="java/lang/IllegalArgumentException" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="getCharsetName()Ljava/lang/String;" />
-	</class>
-	<class name="java/nio/charset/MalformedInputException" since="1">
-		<extends name="java/nio/charset/CharacterCodingException" />
-		<method name="&lt;init>(I)V" />
-		<method name="getInputLength()I" />
-	</class>
-	<class name="java/nio/charset/StandardCharsets" since="19">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="ISO_8859_1" />
-		<field name="US_ASCII" />
-		<field name="UTF_16" />
-		<field name="UTF_16BE" />
-		<field name="UTF_16LE" />
-		<field name="UTF_8" />
-	</class>
-	<class name="java/nio/charset/UnmappableCharacterException" since="1">
-		<extends name="java/nio/charset/CharacterCodingException" />
-		<method name="&lt;init>(I)V" />
-		<method name="getInputLength()I" />
-	</class>
-	<class name="java/nio/charset/UnsupportedCharsetException" since="1">
-		<extends name="java/lang/IllegalArgumentException" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="getCharsetName()Ljava/lang/String;" />
-	</class>
-	<class name="java/nio/charset/spi/CharsetProvider" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="charsetForName(Ljava/lang/String;)Ljava/nio/charset/Charset;" />
-		<method name="charsets()Ljava/util/Iterator;" />
-	</class>
-	<class name="java/security/AccessControlContext" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/security/AccessControlContext;Ljava/security/DomainCombiner;)V" />
-		<method name="&lt;init>([Ljava/security/ProtectionDomain;)V" />
-		<method name="checkPermission(Ljava/security/Permission;)V" />
-		<method name="getDomainCombiner()Ljava/security/DomainCombiner;" />
-	</class>
-	<class name="java/security/AccessControlException" since="1">
-		<extends name="java/lang/SecurityException" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/security/Permission;)V" />
-		<method name="getPermission()Ljava/security/Permission;" />
-	</class>
-	<class name="java/security/AccessController" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="checkPermission(Ljava/security/Permission;)V" />
-		<method name="doPrivileged(Ljava/security/PrivilegedAction;)Ljava/lang/Object;" />
-		<method name="doPrivileged(Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;)Ljava/lang/Object;" />
-		<method name="doPrivileged(Ljava/security/PrivilegedExceptionAction;)Ljava/lang/Object;" />
-		<method name="doPrivileged(Ljava/security/PrivilegedExceptionAction;Ljava/security/AccessControlContext;)Ljava/lang/Object;" />
-		<method name="doPrivilegedWithCombiner(Ljava/security/PrivilegedAction;)Ljava/lang/Object;" since="9" />
-		<method name="doPrivilegedWithCombiner(Ljava/security/PrivilegedExceptionAction;)Ljava/lang/Object;" since="9" />
-		<method name="getContext()Ljava/security/AccessControlContext;" />
-	</class>
-	<class name="java/security/AlgorithmParameterGenerator" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/security/AlgorithmParameterGeneratorSpi;Ljava/security/Provider;Ljava/lang/String;)V" />
-		<method name="generateParameters()Ljava/security/AlgorithmParameters;" />
-		<method name="getAlgorithm()Ljava/lang/String;" />
-		<method name="getInstance(Ljava/lang/String;)Ljava/security/AlgorithmParameterGenerator;" />
-		<method name="getInstance(Ljava/lang/String;Ljava/lang/String;)Ljava/security/AlgorithmParameterGenerator;" />
-		<method name="getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljava/security/AlgorithmParameterGenerator;" />
-		<method name="getProvider()Ljava/security/Provider;" />
-		<method name="init(I)V" />
-		<method name="init(ILjava/security/SecureRandom;)V" />
-		<method name="init(Ljava/security/spec/AlgorithmParameterSpec;)V" />
-		<method name="init(Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V" />
-	</class>
-	<class name="java/security/AlgorithmParameterGeneratorSpi" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="engineGenerateParameters()Ljava/security/AlgorithmParameters;" />
-		<method name="engineInit(ILjava/security/SecureRandom;)V" />
-		<method name="engineInit(Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V" />
-	</class>
-	<class name="java/security/AlgorithmParameters" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/security/AlgorithmParametersSpi;Ljava/security/Provider;Ljava/lang/String;)V" />
-		<method name="getAlgorithm()Ljava/lang/String;" />
-		<method name="getEncoded()[B" />
-		<method name="getEncoded(Ljava/lang/String;)[B" />
-		<method name="getInstance(Ljava/lang/String;)Ljava/security/AlgorithmParameters;" />
-		<method name="getInstance(Ljava/lang/String;Ljava/lang/String;)Ljava/security/AlgorithmParameters;" />
-		<method name="getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljava/security/AlgorithmParameters;" />
-		<method name="getParameterSpec(Ljava/lang/Class;)Ljava/security/spec/AlgorithmParameterSpec;" />
-		<method name="getProvider()Ljava/security/Provider;" />
-		<method name="init(Ljava/security/spec/AlgorithmParameterSpec;)V" />
-		<method name="init([B)V" />
-		<method name="init([BLjava/lang/String;)V" />
-	</class>
-	<class name="java/security/AlgorithmParametersSpi" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="engineGetEncoded()[B" />
-		<method name="engineGetEncoded(Ljava/lang/String;)[B" />
-		<method name="engineGetParameterSpec(Ljava/lang/Class;)Ljava/security/spec/AlgorithmParameterSpec;" />
-		<method name="engineInit(Ljava/security/spec/AlgorithmParameterSpec;)V" />
-		<method name="engineInit([B)V" />
-		<method name="engineInit([BLjava/lang/String;)V" />
-		<method name="engineToString()Ljava/lang/String;" />
-	</class>
-	<class name="java/security/AllPermission" since="1">
-		<extends name="java/security/Permission" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
-	</class>
-	<class name="java/security/AuthProvider" since="1">
-		<extends name="java/security/Provider" />
-		<method name="&lt;init>(Ljava/lang/String;DLjava/lang/String;)V" />
-		<method name="login(Ljavax/security/auth/Subject;Ljavax/security/auth/callback/CallbackHandler;)V" />
-		<method name="logout()V" />
-		<method name="setCallbackHandler(Ljavax/security/auth/callback/CallbackHandler;)V" />
-	</class>
-	<class name="java/security/BasicPermission" since="1">
-		<extends name="java/security/Permission" />
-		<implements name="java/io/Serializable" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
-	</class>
-	<class name="java/security/Certificate" since="1">
-		<extends name="java/lang/Object" />
-		<method name="decode(Ljava/io/InputStream;)V" />
-		<method name="encode(Ljava/io/OutputStream;)V" />
-		<method name="getFormat()Ljava/lang/String;" />
-		<method name="getGuarantor()Ljava/security/Principal;" />
-		<method name="getPrincipal()Ljava/security/Principal;" />
-		<method name="getPublicKey()Ljava/security/PublicKey;" />
-		<method name="toString(Z)Ljava/lang/String;" />
-	</class>
-	<class name="java/security/CodeSigner" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<method name="&lt;init>(Ljava/security/cert/CertPath;Ljava/security/Timestamp;)V" />
-		<method name="getSignerCertPath()Ljava/security/cert/CertPath;" />
-		<method name="getTimestamp()Ljava/security/Timestamp;" />
-	</class>
-	<class name="java/security/CodeSource" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<method name="&lt;init>(Ljava/net/URL;[Ljava/security/CodeSigner;)V" />
-		<method name="&lt;init>(Ljava/net/URL;[Ljava/security/cert/Certificate;)V" />
-		<method name="getCertificates()[Ljava/security/cert/Certificate;" />
-		<method name="getCodeSigners()[Ljava/security/CodeSigner;" />
-		<method name="getLocation()Ljava/net/URL;" />
-		<method name="implies(Ljava/security/CodeSource;)Z" />
-	</class>
-	<class name="java/security/DigestException" since="1">
-		<extends name="java/security/GeneralSecurityException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="java/security/DigestInputStream" since="1">
-		<extends name="java/io/FilterInputStream" />
-		<method name="&lt;init>(Ljava/io/InputStream;Ljava/security/MessageDigest;)V" />
-		<method name="getMessageDigest()Ljava/security/MessageDigest;" />
-		<method name="on(Z)V" />
-		<method name="setMessageDigest(Ljava/security/MessageDigest;)V" />
-		<field name="digest" />
-	</class>
-	<class name="java/security/DigestOutputStream" since="1">
-		<extends name="java/io/FilterOutputStream" />
-		<method name="&lt;init>(Ljava/io/OutputStream;Ljava/security/MessageDigest;)V" />
-		<method name="getMessageDigest()Ljava/security/MessageDigest;" />
-		<method name="on(Z)V" />
-		<method name="setMessageDigest(Ljava/security/MessageDigest;)V" />
-		<field name="digest" />
-	</class>
-	<class name="java/security/DomainCombiner" since="1">
-		<extends name="java/lang/Object" />
-		<method name="combine([Ljava/security/ProtectionDomain;[Ljava/security/ProtectionDomain;)[Ljava/security/ProtectionDomain;" />
-	</class>
-	<class name="java/security/GeneralSecurityException" since="1">
-		<extends name="java/lang/Exception" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="java/security/Guard" since="1">
-		<extends name="java/lang/Object" />
-		<method name="checkGuard(Ljava/lang/Object;)V" />
-	</class>
-	<class name="java/security/GuardedObject" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<method name="&lt;init>(Ljava/lang/Object;Ljava/security/Guard;)V" />
-		<method name="getObject()Ljava/lang/Object;" />
-	</class>
-	<class name="java/security/Identity" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<implements name="java/security/Principal" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/security/IdentityScope;)V" />
-		<method name="addCertificate(Ljava/security/Certificate;)V" />
-		<method name="certificates()[Ljava/security/Certificate;" />
-		<method name="getInfo()Ljava/lang/String;" />
-		<method name="getPublicKey()Ljava/security/PublicKey;" />
-		<method name="getScope()Ljava/security/IdentityScope;" />
-		<method name="identityEquals(Ljava/security/Identity;)Z" />
-		<method name="removeCertificate(Ljava/security/Certificate;)V" />
-		<method name="setInfo(Ljava/lang/String;)V" />
-		<method name="setPublicKey(Ljava/security/PublicKey;)V" />
-		<method name="toString(Z)Ljava/lang/String;" />
-	</class>
-	<class name="java/security/IdentityScope" since="1">
-		<extends name="java/security/Identity" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/security/IdentityScope;)V" />
-		<method name="addIdentity(Ljava/security/Identity;)V" />
-		<method name="getIdentity(Ljava/lang/String;)Ljava/security/Identity;" />
-		<method name="getIdentity(Ljava/security/Principal;)Ljava/security/Identity;" />
-		<method name="getIdentity(Ljava/security/PublicKey;)Ljava/security/Identity;" />
-		<method name="getSystemScope()Ljava/security/IdentityScope;" />
-		<method name="identities()Ljava/util/Enumeration;" />
-		<method name="removeIdentity(Ljava/security/Identity;)V" />
-		<method name="setSystemScope(Ljava/security/IdentityScope;)V" />
-		<method name="size()I" />
-	</class>
-	<class name="java/security/InvalidAlgorithmParameterException" since="1">
-		<extends name="java/security/GeneralSecurityException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="java/security/InvalidKeyException" since="1">
-		<extends name="java/security/KeyException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="java/security/InvalidParameterException" since="1">
-		<extends name="java/lang/IllegalArgumentException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/security/Key" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<method name="getAlgorithm()Ljava/lang/String;" />
-		<method name="getEncoded()[B" />
-		<method name="getFormat()Ljava/lang/String;" />
-		<field name="serialVersionUID" />
-	</class>
-	<class name="java/security/KeyException" since="1">
-		<extends name="java/security/GeneralSecurityException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="java/security/KeyFactory" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/security/KeyFactorySpi;Ljava/security/Provider;Ljava/lang/String;)V" />
-		<method name="generatePrivate(Ljava/security/spec/KeySpec;)Ljava/security/PrivateKey;" />
-		<method name="generatePublic(Ljava/security/spec/KeySpec;)Ljava/security/PublicKey;" />
-		<method name="getAlgorithm()Ljava/lang/String;" />
-		<method name="getInstance(Ljava/lang/String;)Ljava/security/KeyFactory;" />
-		<method name="getInstance(Ljava/lang/String;Ljava/lang/String;)Ljava/security/KeyFactory;" />
-		<method name="getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljava/security/KeyFactory;" />
-		<method name="getKeySpec(Ljava/security/Key;Ljava/lang/Class;)Ljava/security/spec/KeySpec;" />
-		<method name="getProvider()Ljava/security/Provider;" />
-		<method name="translateKey(Ljava/security/Key;)Ljava/security/Key;" />
-	</class>
-	<class name="java/security/KeyFactorySpi" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="engineGeneratePrivate(Ljava/security/spec/KeySpec;)Ljava/security/PrivateKey;" />
-		<method name="engineGeneratePublic(Ljava/security/spec/KeySpec;)Ljava/security/PublicKey;" />
-		<method name="engineGetKeySpec(Ljava/security/Key;Ljava/lang/Class;)Ljava/security/spec/KeySpec;" />
-		<method name="engineTranslateKey(Ljava/security/Key;)Ljava/security/Key;" />
-	</class>
-	<class name="java/security/KeyManagementException" since="1">
-		<extends name="java/security/KeyException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="java/security/KeyPair" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<method name="&lt;init>(Ljava/security/PublicKey;Ljava/security/PrivateKey;)V" />
-		<method name="getPrivate()Ljava/security/PrivateKey;" />
-		<method name="getPublic()Ljava/security/PublicKey;" />
-	</class>
-	<class name="java/security/KeyPairGenerator" since="1">
-		<extends name="java/security/KeyPairGeneratorSpi" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="genKeyPair()Ljava/security/KeyPair;" />
-		<method name="getAlgorithm()Ljava/lang/String;" />
-		<method name="getInstance(Ljava/lang/String;)Ljava/security/KeyPairGenerator;" />
-		<method name="getInstance(Ljava/lang/String;Ljava/lang/String;)Ljava/security/KeyPairGenerator;" />
-		<method name="getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljava/security/KeyPairGenerator;" />
-		<method name="getProvider()Ljava/security/Provider;" />
-		<method name="initialize(I)V" />
-		<method name="initialize(Ljava/security/spec/AlgorithmParameterSpec;)V" />
-	</class>
-	<class name="java/security/KeyPairGeneratorSpi" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="generateKeyPair()Ljava/security/KeyPair;" />
-		<method name="initialize(ILjava/security/SecureRandom;)V" />
-		<method name="initialize(Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V" />
-	</class>
-	<class name="java/security/KeyRep" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<method name="&lt;init>(Ljava/security/KeyRep$Type;Ljava/lang/String;Ljava/lang/String;[B)V" />
-		<method name="readResolve()Ljava/lang/Object;" />
-	</class>
-	<class name="java/security/KeyRep$Type" since="1">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Ljava/security/KeyRep$Type;" />
-		<method name="values()[Ljava/security/KeyRep$Type;" />
-		<field name="PRIVATE" />
-		<field name="PUBLIC" />
-		<field name="SECRET" />
-	</class>
-	<class name="java/security/KeyStore" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/security/KeyStoreSpi;Ljava/security/Provider;Ljava/lang/String;)V" />
-		<method name="aliases()Ljava/util/Enumeration;" />
-		<method name="containsAlias(Ljava/lang/String;)Z" />
-		<method name="deleteEntry(Ljava/lang/String;)V" />
-		<method name="entryInstanceOf(Ljava/lang/String;Ljava/lang/Class;)Z" />
-		<method name="getCertificate(Ljava/lang/String;)Ljava/security/cert/Certificate;" />
-		<method name="getCertificateAlias(Ljava/security/cert/Certificate;)Ljava/lang/String;" />
-		<method name="getCertificateChain(Ljava/lang/String;)[Ljava/security/cert/Certificate;" />
-		<method name="getCreationDate(Ljava/lang/String;)Ljava/util/Date;" />
-		<method name="getDefaultType()Ljava/lang/String;" />
-		<method name="getEntry(Ljava/lang/String;Ljava/security/KeyStore$ProtectionParameter;)Ljava/security/KeyStore$Entry;" />
-		<method name="getInstance(Ljava/lang/String;)Ljava/security/KeyStore;" />
-		<method name="getInstance(Ljava/lang/String;Ljava/lang/String;)Ljava/security/KeyStore;" />
-		<method name="getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljava/security/KeyStore;" />
-		<method name="getKey(Ljava/lang/String;[C)Ljava/security/Key;" />
-		<method name="getProvider()Ljava/security/Provider;" />
-		<method name="getType()Ljava/lang/String;" />
-		<method name="isCertificateEntry(Ljava/lang/String;)Z" />
-		<method name="isKeyEntry(Ljava/lang/String;)Z" />
-		<method name="load(Ljava/io/InputStream;[C)V" />
-		<method name="load(Ljava/security/KeyStore$LoadStoreParameter;)V" />
-		<method name="setCertificateEntry(Ljava/lang/String;Ljava/security/cert/Certificate;)V" />
-		<method name="setEntry(Ljava/lang/String;Ljava/security/KeyStore$Entry;Ljava/security/KeyStore$ProtectionParameter;)V" />
-		<method name="setKeyEntry(Ljava/lang/String;Ljava/security/Key;[C[Ljava/security/cert/Certificate;)V" />
-		<method name="setKeyEntry(Ljava/lang/String;[B[Ljava/security/cert/Certificate;)V" />
-		<method name="size()I" />
-		<method name="store(Ljava/io/OutputStream;[C)V" />
-		<method name="store(Ljava/security/KeyStore$LoadStoreParameter;)V" />
-	</class>
-	<class name="java/security/KeyStore$Builder" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getKeyStore()Ljava/security/KeyStore;" />
-		<method name="getProtectionParameter(Ljava/lang/String;)Ljava/security/KeyStore$ProtectionParameter;" />
-		<method name="newInstance(Ljava/lang/String;Ljava/security/Provider;Ljava/io/File;Ljava/security/KeyStore$ProtectionParameter;)Ljava/security/KeyStore$Builder;" />
-		<method name="newInstance(Ljava/lang/String;Ljava/security/Provider;Ljava/security/KeyStore$ProtectionParameter;)Ljava/security/KeyStore$Builder;" />
-		<method name="newInstance(Ljava/security/KeyStore;Ljava/security/KeyStore$ProtectionParameter;)Ljava/security/KeyStore$Builder;" />
-	</class>
-	<class name="java/security/KeyStore$CallbackHandlerProtection" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/security/KeyStore$ProtectionParameter" />
-		<method name="&lt;init>(Ljavax/security/auth/callback/CallbackHandler;)V" />
-		<method name="getCallbackHandler()Ljavax/security/auth/callback/CallbackHandler;" />
-	</class>
-	<class name="java/security/KeyStore$Entry" since="1">
-		<extends name="java/lang/Object" />
-	</class>
-	<class name="java/security/KeyStore$LoadStoreParameter" since="1">
-		<extends name="java/lang/Object" />
-		<method name="getProtectionParameter()Ljava/security/KeyStore$ProtectionParameter;" />
-	</class>
-	<class name="java/security/KeyStore$PasswordProtection" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/security/KeyStore$ProtectionParameter" />
-		<implements name="javax/security/auth/Destroyable" />
-		<method name="&lt;init>([C)V" />
-		<method name="getPassword()[C" />
-	</class>
-	<class name="java/security/KeyStore$PrivateKeyEntry" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/security/KeyStore$Entry" />
-		<method name="&lt;init>(Ljava/security/PrivateKey;[Ljava/security/cert/Certificate;)V" />
-		<method name="getCertificate()Ljava/security/cert/Certificate;" />
-		<method name="getCertificateChain()[Ljava/security/cert/Certificate;" />
-		<method name="getPrivateKey()Ljava/security/PrivateKey;" />
-	</class>
-	<class name="java/security/KeyStore$ProtectionParameter" since="1">
-		<extends name="java/lang/Object" />
-	</class>
-	<class name="java/security/KeyStore$SecretKeyEntry" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/security/KeyStore$Entry" />
-		<method name="&lt;init>(Ljavax/crypto/SecretKey;)V" />
-		<method name="getSecretKey()Ljavax/crypto/SecretKey;" />
-	</class>
-	<class name="java/security/KeyStore$TrustedCertificateEntry" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/security/KeyStore$Entry" />
-		<method name="&lt;init>(Ljava/security/cert/Certificate;)V" />
-		<method name="getTrustedCertificate()Ljava/security/cert/Certificate;" />
-	</class>
-	<class name="java/security/KeyStoreException" since="1">
-		<extends name="java/security/GeneralSecurityException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="java/security/KeyStoreSpi" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="engineAliases()Ljava/util/Enumeration;" />
-		<method name="engineContainsAlias(Ljava/lang/String;)Z" />
-		<method name="engineDeleteEntry(Ljava/lang/String;)V" />
-		<method name="engineEntryInstanceOf(Ljava/lang/String;Ljava/lang/Class;)Z" />
-		<method name="engineGetCertificate(Ljava/lang/String;)Ljava/security/cert/Certificate;" />
-		<method name="engineGetCertificateAlias(Ljava/security/cert/Certificate;)Ljava/lang/String;" />
-		<method name="engineGetCertificateChain(Ljava/lang/String;)[Ljava/security/cert/Certificate;" />
-		<method name="engineGetCreationDate(Ljava/lang/String;)Ljava/util/Date;" />
-		<method name="engineGetEntry(Ljava/lang/String;Ljava/security/KeyStore$ProtectionParameter;)Ljava/security/KeyStore$Entry;" />
-		<method name="engineGetKey(Ljava/lang/String;[C)Ljava/security/Key;" />
-		<method name="engineIsCertificateEntry(Ljava/lang/String;)Z" />
-		<method name="engineIsKeyEntry(Ljava/lang/String;)Z" />
-		<method name="engineLoad(Ljava/io/InputStream;[C)V" />
-		<method name="engineLoad(Ljava/security/KeyStore$LoadStoreParameter;)V" />
-		<method name="engineSetCertificateEntry(Ljava/lang/String;Ljava/security/cert/Certificate;)V" />
-		<method name="engineSetEntry(Ljava/lang/String;Ljava/security/KeyStore$Entry;Ljava/security/KeyStore$ProtectionParameter;)V" />
-		<method name="engineSetKeyEntry(Ljava/lang/String;Ljava/security/Key;[C[Ljava/security/cert/Certificate;)V" />
-		<method name="engineSetKeyEntry(Ljava/lang/String;[B[Ljava/security/cert/Certificate;)V" />
-		<method name="engineSize()I" />
-		<method name="engineStore(Ljava/io/OutputStream;[C)V" />
-		<method name="engineStore(Ljava/security/KeyStore$LoadStoreParameter;)V" />
-	</class>
-	<class name="java/security/MessageDigest" since="1">
-		<extends name="java/security/MessageDigestSpi" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="digest()[B" />
-		<method name="digest([B)[B" />
-		<method name="digest([BII)I" />
-		<method name="getAlgorithm()Ljava/lang/String;" />
-		<method name="getDigestLength()I" />
-		<method name="getInstance(Ljava/lang/String;)Ljava/security/MessageDigest;" />
-		<method name="getInstance(Ljava/lang/String;Ljava/lang/String;)Ljava/security/MessageDigest;" />
-		<method name="getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljava/security/MessageDigest;" />
-		<method name="getProvider()Ljava/security/Provider;" />
-		<method name="isEqual([B[B)Z" />
-		<method name="reset()V" />
-		<method name="update(B)V" />
-		<method name="update(Ljava/nio/ByteBuffer;)V" />
-		<method name="update([B)V" />
-		<method name="update([BII)V" />
-	</class>
-	<class name="java/security/MessageDigestSpi" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="engineDigest()[B" />
-		<method name="engineDigest([BII)I" />
-		<method name="engineGetDigestLength()I" />
-		<method name="engineReset()V" />
-		<method name="engineUpdate(B)V" />
-		<method name="engineUpdate(Ljava/nio/ByteBuffer;)V" />
-		<method name="engineUpdate([BII)V" />
-	</class>
-	<class name="java/security/NoSuchAlgorithmException" since="1">
-		<extends name="java/security/GeneralSecurityException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="java/security/NoSuchProviderException" since="1">
-		<extends name="java/security/GeneralSecurityException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/security/Permission" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<implements name="java/security/Guard" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="getActions()Ljava/lang/String;" />
-		<method name="getName()Ljava/lang/String;" />
-		<method name="implies(Ljava/security/Permission;)Z" />
-		<method name="newPermissionCollection()Ljava/security/PermissionCollection;" />
-	</class>
-	<class name="java/security/PermissionCollection" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<method name="&lt;init>()V" />
-		<method name="add(Ljava/security/Permission;)V" />
-		<method name="elements()Ljava/util/Enumeration;" />
-		<method name="implies(Ljava/security/Permission;)Z" />
-		<method name="isReadOnly()Z" />
-		<method name="setReadOnly()V" />
-	</class>
-	<class name="java/security/Permissions" since="1">
-		<extends name="java/security/PermissionCollection" />
-		<implements name="java/io/Serializable" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="java/security/Policy" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getInstance(Ljava/lang/String;Ljava/security/Policy$Parameters;)Ljava/security/Policy;" since="9" />
-		<method name="getInstance(Ljava/lang/String;Ljava/security/Policy$Parameters;Ljava/lang/String;)Ljava/security/Policy;" since="9" />
-		<method name="getInstance(Ljava/lang/String;Ljava/security/Policy$Parameters;Ljava/security/Provider;)Ljava/security/Policy;" since="9" />
-		<method name="getParameters()Ljava/security/Policy$Parameters;" since="9" />
-		<method name="getPermissions(Ljava/security/CodeSource;)Ljava/security/PermissionCollection;" />
-		<method name="getPermissions(Ljava/security/ProtectionDomain;)Ljava/security/PermissionCollection;" />
-		<method name="getPolicy()Ljava/security/Policy;" />
-		<method name="getProvider()Ljava/security/Provider;" since="9" />
-		<method name="getType()Ljava/lang/String;" since="9" />
-		<method name="implies(Ljava/security/ProtectionDomain;Ljava/security/Permission;)Z" />
-		<method name="refresh()V" />
-		<method name="setPolicy(Ljava/security/Policy;)V" />
-		<field name="UNSUPPORTED_EMPTY_COLLECTION" since="9" />
-	</class>
-	<class name="java/security/Policy$Parameters" since="9">
-		<extends name="java/lang/Object" />
-	</class>
-	<class name="java/security/PolicySpi" since="9">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="engineGetPermissions(Ljava/security/CodeSource;)Ljava/security/PermissionCollection;" />
-		<method name="engineGetPermissions(Ljava/security/ProtectionDomain;)Ljava/security/PermissionCollection;" />
-		<method name="engineImplies(Ljava/security/ProtectionDomain;Ljava/security/Permission;)Z" />
-		<method name="engineRefresh()V" />
-	</class>
-	<class name="java/security/Principal" since="1">
-		<extends name="java/lang/Object" />
-		<method name="getName()Ljava/lang/String;" />
-	</class>
-	<class name="java/security/PrivateKey" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/security/Key" />
-		<field name="serialVersionUID" />
-	</class>
-	<class name="java/security/PrivilegedAction" since="1">
-		<extends name="java/lang/Object" />
-		<method name="run()Ljava/lang/Object;" />
-	</class>
-	<class name="java/security/PrivilegedActionException" since="1">
-		<extends name="java/lang/Exception" />
-		<method name="&lt;init>(Ljava/lang/Exception;)V" />
-		<method name="getException()Ljava/lang/Exception;" />
-	</class>
-	<class name="java/security/PrivilegedExceptionAction" since="1">
-		<extends name="java/lang/Object" />
-		<method name="run()Ljava/lang/Object;" />
-	</class>
-	<class name="java/security/ProtectionDomain" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/security/CodeSource;Ljava/security/PermissionCollection;)V" />
-		<method name="&lt;init>(Ljava/security/CodeSource;Ljava/security/PermissionCollection;Ljava/lang/ClassLoader;[Ljava/security/Principal;)V" />
-		<method name="getClassLoader()Ljava/lang/ClassLoader;" />
-		<method name="getCodeSource()Ljava/security/CodeSource;" />
-		<method name="getPermissions()Ljava/security/PermissionCollection;" />
-		<method name="getPrincipals()[Ljava/security/Principal;" />
-		<method name="implies(Ljava/security/Permission;)Z" />
-	</class>
-	<class name="java/security/Provider" since="1">
-		<extends name="java/util/Properties" />
-		<method name="&lt;init>(Ljava/lang/String;DLjava/lang/String;)V" />
-		<method name="getInfo()Ljava/lang/String;" />
-		<method name="getName()Ljava/lang/String;" />
-		<method name="getService(Ljava/lang/String;Ljava/lang/String;)Ljava/security/Provider$Service;" />
-		<method name="getServices()Ljava/util/Set;" />
-		<method name="getVersion()D" />
-		<method name="putService(Ljava/security/Provider$Service;)V" />
-		<method name="removeService(Ljava/security/Provider$Service;)V" />
-	</class>
-	<class name="java/security/Provider$Service" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/security/Provider;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/util/Map;)V" />
-		<method name="getAlgorithm()Ljava/lang/String;" />
-		<method name="getAttribute(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="getClassName()Ljava/lang/String;" />
-		<method name="getProvider()Ljava/security/Provider;" />
-		<method name="getType()Ljava/lang/String;" />
-		<method name="newInstance(Ljava/lang/Object;)Ljava/lang/Object;" />
-		<method name="supportsParameter(Ljava/lang/Object;)Z" />
-	</class>
-	<class name="java/security/ProviderException" since="1">
-		<extends name="java/lang/RuntimeException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="java/security/PublicKey" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/security/Key" />
-		<field name="serialVersionUID" />
-	</class>
-	<class name="java/security/SecureClassLoader" since="1">
-		<extends name="java/lang/ClassLoader" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/ClassLoader;)V" />
-		<method name="defineClass(Ljava/lang/String;Ljava/nio/ByteBuffer;Ljava/security/CodeSource;)Ljava/lang/Class;" />
-		<method name="defineClass(Ljava/lang/String;[BIILjava/security/CodeSource;)Ljava/lang/Class;" />
-		<method name="getPermissions(Ljava/security/CodeSource;)Ljava/security/PermissionCollection;" />
-	</class>
-	<class name="java/security/SecureRandom" since="1">
-		<extends name="java/util/Random" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/security/SecureRandomSpi;Ljava/security/Provider;)V" />
-		<method name="&lt;init>([B)V" />
-		<method name="generateSeed(I)[B" />
-		<method name="getAlgorithm()Ljava/lang/String;" />
-		<method name="getInstance(Ljava/lang/String;)Ljava/security/SecureRandom;" />
-		<method name="getInstance(Ljava/lang/String;Ljava/lang/String;)Ljava/security/SecureRandom;" />
-		<method name="getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljava/security/SecureRandom;" />
-		<method name="getProvider()Ljava/security/Provider;" />
-		<method name="getSeed(I)[B" />
-		<method name="setSeed([B)V" />
-	</class>
-	<class name="java/security/SecureRandomSpi" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<method name="&lt;init>()V" />
-		<method name="engineGenerateSeed(I)[B" />
-		<method name="engineNextBytes([B)V" />
-		<method name="engineSetSeed([B)V" />
-	</class>
-	<class name="java/security/Security" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="addProvider(Ljava/security/Provider;)I" />
-		<method name="getAlgorithmProperty(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="getAlgorithms(Ljava/lang/String;)Ljava/util/Set;" />
-		<method name="getProperty(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="getProvider(Ljava/lang/String;)Ljava/security/Provider;" />
-		<method name="getProviders()[Ljava/security/Provider;" />
-		<method name="getProviders(Ljava/lang/String;)[Ljava/security/Provider;" />
-		<method name="getProviders(Ljava/util/Map;)[Ljava/security/Provider;" />
-		<method name="insertProviderAt(Ljava/security/Provider;I)I" />
-		<method name="removeProvider(Ljava/lang/String;)V" />
-		<method name="setProperty(Ljava/lang/String;Ljava/lang/String;)V" />
-	</class>
-	<class name="java/security/SecurityPermission" since="1">
-		<extends name="java/security/BasicPermission" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
-	</class>
-	<class name="java/security/Signature" since="1">
-		<extends name="java/security/SignatureSpi" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="getAlgorithm()Ljava/lang/String;" />
-		<method name="getInstance(Ljava/lang/String;)Ljava/security/Signature;" />
-		<method name="getInstance(Ljava/lang/String;Ljava/lang/String;)Ljava/security/Signature;" />
-		<method name="getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljava/security/Signature;" />
-		<method name="getParameter(Ljava/lang/String;)Ljava/lang/Object;" />
-		<method name="getParameters()Ljava/security/AlgorithmParameters;" />
-		<method name="getProvider()Ljava/security/Provider;" />
-		<method name="initSign(Ljava/security/PrivateKey;)V" />
-		<method name="initSign(Ljava/security/PrivateKey;Ljava/security/SecureRandom;)V" />
-		<method name="initVerify(Ljava/security/PublicKey;)V" />
-		<method name="initVerify(Ljava/security/cert/Certificate;)V" />
-		<method name="setParameter(Ljava/lang/String;Ljava/lang/Object;)V" />
-		<method name="setParameter(Ljava/security/spec/AlgorithmParameterSpec;)V" />
-		<method name="sign()[B" />
-		<method name="sign([BII)I" />
-		<method name="update(B)V" />
-		<method name="update(Ljava/nio/ByteBuffer;)V" />
-		<method name="update([B)V" />
-		<method name="update([BII)V" />
-		<method name="verify([B)Z" />
-		<method name="verify([BII)Z" />
-		<field name="SIGN" />
-		<field name="UNINITIALIZED" />
-		<field name="VERIFY" />
-		<field name="state" />
-	</class>
-	<class name="java/security/SignatureException" since="1">
-		<extends name="java/security/GeneralSecurityException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="java/security/SignatureSpi" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="engineGetParameter(Ljava/lang/String;)Ljava/lang/Object;" />
-		<method name="engineGetParameters()Ljava/security/AlgorithmParameters;" />
-		<method name="engineInitSign(Ljava/security/PrivateKey;)V" />
-		<method name="engineInitSign(Ljava/security/PrivateKey;Ljava/security/SecureRandom;)V" />
-		<method name="engineInitVerify(Ljava/security/PublicKey;)V" />
-		<method name="engineSetParameter(Ljava/lang/String;Ljava/lang/Object;)V" />
-		<method name="engineSetParameter(Ljava/security/spec/AlgorithmParameterSpec;)V" />
-		<method name="engineSign()[B" />
-		<method name="engineSign([BII)I" />
-		<method name="engineUpdate(B)V" />
-		<method name="engineUpdate(Ljava/nio/ByteBuffer;)V" />
-		<method name="engineUpdate([BII)V" />
-		<method name="engineVerify([B)Z" />
-		<method name="engineVerify([BII)Z" />
-		<field name="appRandom" />
-	</class>
-	<class name="java/security/SignedObject" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<method name="&lt;init>(Ljava/io/Serializable;Ljava/security/PrivateKey;Ljava/security/Signature;)V" />
-		<method name="getAlgorithm()Ljava/lang/String;" />
-		<method name="getObject()Ljava/lang/Object;" />
-		<method name="getSignature()[B" />
-		<method name="verify(Ljava/security/PublicKey;Ljava/security/Signature;)Z" />
-	</class>
-	<class name="java/security/Signer" since="1">
-		<extends name="java/security/Identity" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/security/IdentityScope;)V" />
-		<method name="getPrivateKey()Ljava/security/PrivateKey;" />
-		<method name="setKeyPair(Ljava/security/KeyPair;)V" />
-	</class>
-	<class name="java/security/Timestamp" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<method name="&lt;init>(Ljava/util/Date;Ljava/security/cert/CertPath;)V" />
-		<method name="getSignerCertPath()Ljava/security/cert/CertPath;" />
-		<method name="getTimestamp()Ljava/util/Date;" />
-	</class>
-	<class name="java/security/UnrecoverableEntryException" since="1">
-		<extends name="java/security/GeneralSecurityException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/security/UnrecoverableKeyException" since="1">
-		<extends name="java/security/GeneralSecurityException" />
-		<extends name="java/security/UnrecoverableEntryException" since="9" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/security/UnresolvedPermission" since="1">
-		<extends name="java/security/Permission" />
-		<implements name="java/io/Serializable" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/security/cert/Certificate;)V" />
-		<method name="getUnresolvedActions()Ljava/lang/String;" />
-		<method name="getUnresolvedCerts()[Ljava/security/cert/Certificate;" />
-		<method name="getUnresolvedName()Ljava/lang/String;" />
-		<method name="getUnresolvedType()Ljava/lang/String;" />
-	</class>
-	<class name="java/security/acl/Acl" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/security/acl/Owner" />
-		<method name="addEntry(Ljava/security/Principal;Ljava/security/acl/AclEntry;)Z" />
-		<method name="checkPermission(Ljava/security/Principal;Ljava/security/acl/Permission;)Z" />
-		<method name="entries()Ljava/util/Enumeration;" />
-		<method name="getName()Ljava/lang/String;" />
-		<method name="getPermissions(Ljava/security/Principal;)Ljava/util/Enumeration;" />
-		<method name="removeEntry(Ljava/security/Principal;Ljava/security/acl/AclEntry;)Z" />
-		<method name="setName(Ljava/security/Principal;Ljava/lang/String;)V" />
-	</class>
-	<class name="java/security/acl/AclEntry" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/Cloneable" />
-		<method name="addPermission(Ljava/security/acl/Permission;)Z" />
-		<method name="checkPermission(Ljava/security/acl/Permission;)Z" />
-		<method name="getPrincipal()Ljava/security/Principal;" />
-		<method name="isNegative()Z" />
-		<method name="permissions()Ljava/util/Enumeration;" />
-		<method name="removePermission(Ljava/security/acl/Permission;)Z" />
-		<method name="setNegativePermissions()V" />
-		<method name="setPrincipal(Ljava/security/Principal;)Z" />
-	</class>
-	<class name="java/security/acl/AclNotFoundException" since="1">
-		<extends name="java/lang/Exception" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="java/security/acl/Group" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/security/Principal" />
-		<method name="addMember(Ljava/security/Principal;)Z" />
-		<method name="isMember(Ljava/security/Principal;)Z" />
-		<method name="members()Ljava/util/Enumeration;" />
-		<method name="removeMember(Ljava/security/Principal;)Z" />
-	</class>
-	<class name="java/security/acl/LastOwnerException" since="1">
-		<extends name="java/lang/Exception" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="java/security/acl/NotOwnerException" since="1">
-		<extends name="java/lang/Exception" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="java/security/acl/Owner" since="1">
-		<extends name="java/lang/Object" />
-		<method name="addOwner(Ljava/security/Principal;Ljava/security/Principal;)Z" />
-		<method name="deleteOwner(Ljava/security/Principal;Ljava/security/Principal;)Z" />
-		<method name="isOwner(Ljava/security/Principal;)Z" />
-	</class>
-	<class name="java/security/acl/Permission" since="1">
-		<extends name="java/lang/Object" />
-	</class>
-	<class name="java/security/cert/CRL" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="getType()Ljava/lang/String;" />
-		<method name="isRevoked(Ljava/security/cert/Certificate;)Z" />
-	</class>
-	<class name="java/security/cert/CRLException" since="1">
-		<extends name="java/security/GeneralSecurityException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="java/security/cert/CRLSelector" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/Cloneable" />
-		<method name="match(Ljava/security/cert/CRL;)Z" />
-	</class>
-	<class name="java/security/cert/CertPath" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="getCertificates()Ljava/util/List;" />
-		<method name="getEncoded()[B" />
-		<method name="getEncoded(Ljava/lang/String;)[B" />
-		<method name="getEncodings()Ljava/util/Iterator;" />
-		<method name="getType()Ljava/lang/String;" />
-		<method name="writeReplace()Ljava/lang/Object;" />
-	</class>
-	<class name="java/security/cert/CertPath$CertPathRep" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<method name="&lt;init>(Ljava/lang/String;[B)V" />
-		<method name="readResolve()Ljava/lang/Object;" />
-	</class>
-	<class name="java/security/cert/CertPathBuilder" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/security/cert/CertPathBuilderSpi;Ljava/security/Provider;Ljava/lang/String;)V" />
-		<method name="build(Ljava/security/cert/CertPathParameters;)Ljava/security/cert/CertPathBuilderResult;" />
-		<method name="getAlgorithm()Ljava/lang/String;" />
-		<method name="getDefaultType()Ljava/lang/String;" />
-		<method name="getInstance(Ljava/lang/String;)Ljava/security/cert/CertPathBuilder;" />
-		<method name="getInstance(Ljava/lang/String;Ljava/lang/String;)Ljava/security/cert/CertPathBuilder;" />
-		<method name="getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljava/security/cert/CertPathBuilder;" />
-		<method name="getProvider()Ljava/security/Provider;" />
-	</class>
-	<class name="java/security/cert/CertPathBuilderException" since="1">
-		<extends name="java/security/GeneralSecurityException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="java/security/cert/CertPathBuilderResult" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/Cloneable" />
-		<method name="getCertPath()Ljava/security/cert/CertPath;" />
-	</class>
-	<class name="java/security/cert/CertPathBuilderSpi" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="engineBuild(Ljava/security/cert/CertPathParameters;)Ljava/security/cert/CertPathBuilderResult;" />
-	</class>
-	<class name="java/security/cert/CertPathParameters" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/Cloneable" />
-	</class>
-	<class name="java/security/cert/CertPathValidator" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/security/cert/CertPathValidatorSpi;Ljava/security/Provider;Ljava/lang/String;)V" />
-		<method name="getAlgorithm()Ljava/lang/String;" />
-		<method name="getDefaultType()Ljava/lang/String;" />
-		<method name="getInstance(Ljava/lang/String;)Ljava/security/cert/CertPathValidator;" />
-		<method name="getInstance(Ljava/lang/String;Ljava/lang/String;)Ljava/security/cert/CertPathValidator;" />
-		<method name="getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljava/security/cert/CertPathValidator;" />
-		<method name="getProvider()Ljava/security/Provider;" />
-		<method name="validate(Ljava/security/cert/CertPath;Ljava/security/cert/CertPathParameters;)Ljava/security/cert/CertPathValidatorResult;" />
-	</class>
-	<class name="java/security/cert/CertPathValidatorException" since="1">
-		<extends name="java/security/GeneralSecurityException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;Ljava/security/cert/CertPath;I)V" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
-		<method name="getCertPath()Ljava/security/cert/CertPath;" />
-		<method name="getIndex()I" />
-	</class>
-	<class name="java/security/cert/CertPathValidatorResult" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/Cloneable" />
-	</class>
-	<class name="java/security/cert/CertPathValidatorSpi" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="engineValidate(Ljava/security/cert/CertPath;Ljava/security/cert/CertPathParameters;)Ljava/security/cert/CertPathValidatorResult;" />
-	</class>
-	<class name="java/security/cert/CertSelector" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/Cloneable" />
-		<method name="match(Ljava/security/cert/Certificate;)Z" />
-	</class>
-	<class name="java/security/cert/CertStore" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/security/cert/CertStoreSpi;Ljava/security/Provider;Ljava/lang/String;Ljava/security/cert/CertStoreParameters;)V" />
-		<method name="getCRLs(Ljava/security/cert/CRLSelector;)Ljava/util/Collection;" />
-		<method name="getCertStoreParameters()Ljava/security/cert/CertStoreParameters;" />
-		<method name="getCertificates(Ljava/security/cert/CertSelector;)Ljava/util/Collection;" />
-		<method name="getDefaultType()Ljava/lang/String;" />
-		<method name="getInstance(Ljava/lang/String;Ljava/security/cert/CertStoreParameters;)Ljava/security/cert/CertStore;" />
-		<method name="getInstance(Ljava/lang/String;Ljava/security/cert/CertStoreParameters;Ljava/lang/String;)Ljava/security/cert/CertStore;" />
-		<method name="getInstance(Ljava/lang/String;Ljava/security/cert/CertStoreParameters;Ljava/security/Provider;)Ljava/security/cert/CertStore;" />
-		<method name="getProvider()Ljava/security/Provider;" />
-		<method name="getType()Ljava/lang/String;" />
-	</class>
-	<class name="java/security/cert/CertStoreException" since="1">
-		<extends name="java/security/GeneralSecurityException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="java/security/cert/CertStoreParameters" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/Cloneable" />
-	</class>
-	<class name="java/security/cert/CertStoreSpi" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/security/cert/CertStoreParameters;)V" />
-		<method name="engineGetCRLs(Ljava/security/cert/CRLSelector;)Ljava/util/Collection;" />
-		<method name="engineGetCertificates(Ljava/security/cert/CertSelector;)Ljava/util/Collection;" />
-	</class>
-	<class name="java/security/cert/Certificate" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="getEncoded()[B" />
-		<method name="getPublicKey()Ljava/security/PublicKey;" />
-		<method name="getType()Ljava/lang/String;" />
-		<method name="verify(Ljava/security/PublicKey;)V" />
-		<method name="verify(Ljava/security/PublicKey;Ljava/lang/String;)V" />
-		<method name="writeReplace()Ljava/lang/Object;" />
-	</class>
-	<class name="java/security/cert/Certificate$CertificateRep" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<method name="&lt;init>(Ljava/lang/String;[B)V" />
-		<method name="readResolve()Ljava/lang/Object;" />
-	</class>
-	<class name="java/security/cert/CertificateEncodingException" since="1">
-		<extends name="java/security/cert/CertificateException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="java/security/cert/CertificateException" since="1">
-		<extends name="java/security/GeneralSecurityException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="java/security/cert/CertificateExpiredException" since="1">
-		<extends name="java/security/cert/CertificateException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/security/cert/CertificateFactory" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/security/cert/CertificateFactorySpi;Ljava/security/Provider;Ljava/lang/String;)V" />
-		<method name="generateCRL(Ljava/io/InputStream;)Ljava/security/cert/CRL;" />
-		<method name="generateCRLs(Ljava/io/InputStream;)Ljava/util/Collection;" />
-		<method name="generateCertPath(Ljava/io/InputStream;)Ljava/security/cert/CertPath;" />
-		<method name="generateCertPath(Ljava/io/InputStream;Ljava/lang/String;)Ljava/security/cert/CertPath;" />
-		<method name="generateCertPath(Ljava/util/List;)Ljava/security/cert/CertPath;" />
-		<method name="generateCertificate(Ljava/io/InputStream;)Ljava/security/cert/Certificate;" />
-		<method name="generateCertificates(Ljava/io/InputStream;)Ljava/util/Collection;" />
-		<method name="getCertPathEncodings()Ljava/util/Iterator;" />
-		<method name="getInstance(Ljava/lang/String;)Ljava/security/cert/CertificateFactory;" />
-		<method name="getInstance(Ljava/lang/String;Ljava/lang/String;)Ljava/security/cert/CertificateFactory;" />
-		<method name="getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljava/security/cert/CertificateFactory;" />
-		<method name="getProvider()Ljava/security/Provider;" />
-		<method name="getType()Ljava/lang/String;" />
-	</class>
-	<class name="java/security/cert/CertificateFactorySpi" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="engineGenerateCRL(Ljava/io/InputStream;)Ljava/security/cert/CRL;" />
-		<method name="engineGenerateCRLs(Ljava/io/InputStream;)Ljava/util/Collection;" />
-		<method name="engineGenerateCertPath(Ljava/io/InputStream;)Ljava/security/cert/CertPath;" />
-		<method name="engineGenerateCertPath(Ljava/io/InputStream;Ljava/lang/String;)Ljava/security/cert/CertPath;" />
-		<method name="engineGenerateCertPath(Ljava/util/List;)Ljava/security/cert/CertPath;" />
-		<method name="engineGenerateCertificate(Ljava/io/InputStream;)Ljava/security/cert/Certificate;" />
-		<method name="engineGenerateCertificates(Ljava/io/InputStream;)Ljava/util/Collection;" />
-		<method name="engineGetCertPathEncodings()Ljava/util/Iterator;" />
-	</class>
-	<class name="java/security/cert/CertificateNotYetValidException" since="1">
-		<extends name="java/security/cert/CertificateException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/security/cert/CertificateParsingException" since="1">
-		<extends name="java/security/cert/CertificateException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="java/security/cert/CollectionCertStoreParameters" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/security/cert/CertStoreParameters" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/util/Collection;)V" />
-		<method name="getCollection()Ljava/util/Collection;" />
-	</class>
-	<class name="java/security/cert/LDAPCertStoreParameters" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/security/cert/CertStoreParameters" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;I)V" />
-		<method name="getPort()I" />
-		<method name="getServerName()Ljava/lang/String;" />
-	</class>
-	<class name="java/security/cert/PKIXBuilderParameters" since="1">
-		<extends name="java/security/cert/PKIXParameters" />
-		<method name="&lt;init>(Ljava/security/KeyStore;Ljava/security/cert/CertSelector;)V" />
-		<method name="&lt;init>(Ljava/util/Set;Ljava/security/cert/CertSelector;)V" />
-		<method name="getMaxPathLength()I" />
-		<method name="setMaxPathLength(I)V" />
-	</class>
-	<class name="java/security/cert/PKIXCertPathBuilderResult" since="1">
-		<extends name="java/security/cert/PKIXCertPathValidatorResult" />
-		<implements name="java/security/cert/CertPathBuilderResult" />
-		<method name="&lt;init>(Ljava/security/cert/CertPath;Ljava/security/cert/TrustAnchor;Ljava/security/cert/PolicyNode;Ljava/security/PublicKey;)V" />
-	</class>
-	<class name="java/security/cert/PKIXCertPathChecker" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/Cloneable" />
-		<method name="&lt;init>()V" />
-		<method name="check(Ljava/security/cert/Certificate;Ljava/util/Collection;)V" />
-		<method name="getSupportedExtensions()Ljava/util/Set;" />
-		<method name="init(Z)V" />
-		<method name="isForwardCheckingSupported()Z" />
-	</class>
-	<class name="java/security/cert/PKIXCertPathValidatorResult" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/security/cert/CertPathValidatorResult" />
-		<method name="&lt;init>(Ljava/security/cert/TrustAnchor;Ljava/security/cert/PolicyNode;Ljava/security/PublicKey;)V" />
-		<method name="getPolicyTree()Ljava/security/cert/PolicyNode;" />
-		<method name="getPublicKey()Ljava/security/PublicKey;" />
-		<method name="getTrustAnchor()Ljava/security/cert/TrustAnchor;" />
-	</class>
-	<class name="java/security/cert/PKIXParameters" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/security/cert/CertPathParameters" />
-		<method name="&lt;init>(Ljava/security/KeyStore;)V" />
-		<method name="&lt;init>(Ljava/util/Set;)V" />
-		<method name="addCertPathChecker(Ljava/security/cert/PKIXCertPathChecker;)V" />
-		<method name="addCertStore(Ljava/security/cert/CertStore;)V" />
-		<method name="getCertPathCheckers()Ljava/util/List;" />
-		<method name="getCertStores()Ljava/util/List;" />
-		<method name="getDate()Ljava/util/Date;" />
-		<method name="getInitialPolicies()Ljava/util/Set;" />
-		<method name="getPolicyQualifiersRejected()Z" />
-		<method name="getSigProvider()Ljava/lang/String;" />
-		<method name="getTargetCertConstraints()Ljava/security/cert/CertSelector;" />
-		<method name="getTrustAnchors()Ljava/util/Set;" />
-		<method name="isAnyPolicyInhibited()Z" />
-		<method name="isExplicitPolicyRequired()Z" />
-		<method name="isPolicyMappingInhibited()Z" />
-		<method name="isRevocationEnabled()Z" />
-		<method name="setAnyPolicyInhibited(Z)V" />
-		<method name="setCertPathCheckers(Ljava/util/List;)V" />
-		<method name="setCertStores(Ljava/util/List;)V" />
-		<method name="setDate(Ljava/util/Date;)V" />
-		<method name="setExplicitPolicyRequired(Z)V" />
-		<method name="setInitialPolicies(Ljava/util/Set;)V" />
-		<method name="setPolicyMappingInhibited(Z)V" />
-		<method name="setPolicyQualifiersRejected(Z)V" />
-		<method name="setRevocationEnabled(Z)V" />
-		<method name="setSigProvider(Ljava/lang/String;)V" />
-		<method name="setTargetCertConstraints(Ljava/security/cert/CertSelector;)V" />
-		<method name="setTrustAnchors(Ljava/util/Set;)V" />
-	</class>
-	<class name="java/security/cert/PolicyNode" since="1">
-		<extends name="java/lang/Object" />
-		<method name="getChildren()Ljava/util/Iterator;" />
-		<method name="getDepth()I" />
-		<method name="getExpectedPolicies()Ljava/util/Set;" />
-		<method name="getParent()Ljava/security/cert/PolicyNode;" />
-		<method name="getPolicyQualifiers()Ljava/util/Set;" />
-		<method name="getValidPolicy()Ljava/lang/String;" />
-		<method name="isCritical()Z" />
-	</class>
-	<class name="java/security/cert/PolicyQualifierInfo" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>([B)V" />
-		<method name="getEncoded()[B" />
-		<method name="getPolicyQualifier()[B" />
-		<method name="getPolicyQualifierId()Ljava/lang/String;" />
-	</class>
-	<class name="java/security/cert/TrustAnchor" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/security/PublicKey;[B)V" />
-		<method name="&lt;init>(Ljava/security/cert/X509Certificate;[B)V" />
-		<method name="&lt;init>(Ljavax/security/auth/x500/X500Principal;Ljava/security/PublicKey;[B)V" />
-		<method name="getCA()Ljavax/security/auth/x500/X500Principal;" />
-		<method name="getCAName()Ljava/lang/String;" />
-		<method name="getCAPublicKey()Ljava/security/PublicKey;" />
-		<method name="getNameConstraints()[B" />
-		<method name="getTrustedCert()Ljava/security/cert/X509Certificate;" />
-	</class>
-	<class name="java/security/cert/X509CRL" since="1">
-		<extends name="java/security/cert/CRL" />
-		<implements name="java/security/cert/X509Extension" />
-		<method name="&lt;init>()V" />
-		<method name="getEncoded()[B" />
-		<method name="getIssuerDN()Ljava/security/Principal;" />
-		<method name="getIssuerX500Principal()Ljavax/security/auth/x500/X500Principal;" />
-		<method name="getNextUpdate()Ljava/util/Date;" />
-		<method name="getRevokedCertificate(Ljava/math/BigInteger;)Ljava/security/cert/X509CRLEntry;" />
-		<method name="getRevokedCertificate(Ljava/security/cert/X509Certificate;)Ljava/security/cert/X509CRLEntry;" />
-		<method name="getRevokedCertificates()Ljava/util/Set;" />
-		<method name="getSigAlgName()Ljava/lang/String;" />
-		<method name="getSigAlgOID()Ljava/lang/String;" />
-		<method name="getSigAlgParams()[B" />
-		<method name="getSignature()[B" />
-		<method name="getTBSCertList()[B" />
-		<method name="getThisUpdate()Ljava/util/Date;" />
-		<method name="getVersion()I" />
-		<method name="verify(Ljava/security/PublicKey;)V" />
-		<method name="verify(Ljava/security/PublicKey;Ljava/lang/String;)V" />
-	</class>
-	<class name="java/security/cert/X509CRLEntry" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/security/cert/X509Extension" />
-		<method name="&lt;init>()V" />
-		<method name="getCertificateIssuer()Ljavax/security/auth/x500/X500Principal;" />
-		<method name="getEncoded()[B" />
-		<method name="getRevocationDate()Ljava/util/Date;" />
-		<method name="getSerialNumber()Ljava/math/BigInteger;" />
-		<method name="hasExtensions()Z" />
-	</class>
-	<class name="java/security/cert/X509CRLSelector" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/security/cert/CRLSelector" />
-		<method name="&lt;init>()V" />
-		<method name="addIssuer(Ljavax/security/auth/x500/X500Principal;)V" />
-		<method name="addIssuerName(Ljava/lang/String;)V" />
-		<method name="addIssuerName([B)V" />
-		<method name="getCertificateChecking()Ljava/security/cert/X509Certificate;" />
-		<method name="getDateAndTime()Ljava/util/Date;" />
-		<method name="getIssuerNames()Ljava/util/Collection;" />
-		<method name="getIssuers()Ljava/util/Collection;" />
-		<method name="getMaxCRL()Ljava/math/BigInteger;" />
-		<method name="getMinCRL()Ljava/math/BigInteger;" />
-		<method name="setCertificateChecking(Ljava/security/cert/X509Certificate;)V" />
-		<method name="setDateAndTime(Ljava/util/Date;)V" />
-		<method name="setIssuerNames(Ljava/util/Collection;)V" />
-		<method name="setIssuers(Ljava/util/Collection;)V" />
-		<method name="setMaxCRLNumber(Ljava/math/BigInteger;)V" />
-		<method name="setMinCRLNumber(Ljava/math/BigInteger;)V" />
-	</class>
-	<class name="java/security/cert/X509CertSelector" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/security/cert/CertSelector" />
-		<method name="&lt;init>()V" />
-		<method name="addPathToName(ILjava/lang/String;)V" />
-		<method name="addPathToName(I[B)V" />
-		<method name="addSubjectAlternativeName(ILjava/lang/String;)V" />
-		<method name="addSubjectAlternativeName(I[B)V" />
-		<method name="getAuthorityKeyIdentifier()[B" />
-		<method name="getBasicConstraints()I" />
-		<method name="getCertificate()Ljava/security/cert/X509Certificate;" />
-		<method name="getCertificateValid()Ljava/util/Date;" />
-		<method name="getExtendedKeyUsage()Ljava/util/Set;" />
-		<method name="getIssuer()Ljavax/security/auth/x500/X500Principal;" />
-		<method name="getIssuerAsBytes()[B" />
-		<method name="getIssuerAsString()Ljava/lang/String;" />
-		<method name="getKeyUsage()[Z" />
-		<method name="getMatchAllSubjectAltNames()Z" />
-		<method name="getNameConstraints()[B" />
-		<method name="getPathToNames()Ljava/util/Collection;" />
-		<method name="getPolicy()Ljava/util/Set;" />
-		<method name="getPrivateKeyValid()Ljava/util/Date;" />
-		<method name="getSerialNumber()Ljava/math/BigInteger;" />
-		<method name="getSubject()Ljavax/security/auth/x500/X500Principal;" />
-		<method name="getSubjectAlternativeNames()Ljava/util/Collection;" />
-		<method name="getSubjectAsBytes()[B" />
-		<method name="getSubjectAsString()Ljava/lang/String;" />
-		<method name="getSubjectKeyIdentifier()[B" />
-		<method name="getSubjectPublicKey()Ljava/security/PublicKey;" />
-		<method name="getSubjectPublicKeyAlgID()Ljava/lang/String;" />
-		<method name="setAuthorityKeyIdentifier([B)V" />
-		<method name="setBasicConstraints(I)V" />
-		<method name="setCertificate(Ljava/security/cert/X509Certificate;)V" />
-		<method name="setCertificateValid(Ljava/util/Date;)V" />
-		<method name="setExtendedKeyUsage(Ljava/util/Set;)V" />
-		<method name="setIssuer(Ljava/lang/String;)V" />
-		<method name="setIssuer(Ljavax/security/auth/x500/X500Principal;)V" />
-		<method name="setIssuer([B)V" />
-		<method name="setKeyUsage([Z)V" />
-		<method name="setMatchAllSubjectAltNames(Z)V" />
-		<method name="setNameConstraints([B)V" />
-		<method name="setPathToNames(Ljava/util/Collection;)V" />
-		<method name="setPolicy(Ljava/util/Set;)V" />
-		<method name="setPrivateKeyValid(Ljava/util/Date;)V" />
-		<method name="setSerialNumber(Ljava/math/BigInteger;)V" />
-		<method name="setSubject(Ljava/lang/String;)V" />
-		<method name="setSubject(Ljavax/security/auth/x500/X500Principal;)V" />
-		<method name="setSubject([B)V" />
-		<method name="setSubjectAlternativeNames(Ljava/util/Collection;)V" />
-		<method name="setSubjectKeyIdentifier([B)V" />
-		<method name="setSubjectPublicKey(Ljava/security/PublicKey;)V" />
-		<method name="setSubjectPublicKey([B)V" />
-		<method name="setSubjectPublicKeyAlgID(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/security/cert/X509Certificate" since="1">
-		<extends name="java/security/cert/Certificate" />
-		<implements name="java/security/cert/X509Extension" />
-		<method name="&lt;init>()V" />
-		<method name="checkValidity()V" />
-		<method name="checkValidity(Ljava/util/Date;)V" />
-		<method name="getBasicConstraints()I" />
-		<method name="getExtendedKeyUsage()Ljava/util/List;" />
-		<method name="getIssuerAlternativeNames()Ljava/util/Collection;" />
-		<method name="getIssuerDN()Ljava/security/Principal;" />
-		<method name="getIssuerUniqueID()[Z" />
-		<method name="getIssuerX500Principal()Ljavax/security/auth/x500/X500Principal;" />
-		<method name="getKeyUsage()[Z" />
-		<method name="getNotAfter()Ljava/util/Date;" />
-		<method name="getNotBefore()Ljava/util/Date;" />
-		<method name="getSerialNumber()Ljava/math/BigInteger;" />
-		<method name="getSigAlgName()Ljava/lang/String;" />
-		<method name="getSigAlgOID()Ljava/lang/String;" />
-		<method name="getSigAlgParams()[B" />
-		<method name="getSignature()[B" />
-		<method name="getSubjectAlternativeNames()Ljava/util/Collection;" />
-		<method name="getSubjectDN()Ljava/security/Principal;" />
-		<method name="getSubjectUniqueID()[Z" />
-		<method name="getSubjectX500Principal()Ljavax/security/auth/x500/X500Principal;" />
-		<method name="getTBSCertificate()[B" />
-		<method name="getVersion()I" />
-	</class>
-	<class name="java/security/cert/X509Extension" since="1">
-		<extends name="java/lang/Object" />
-		<method name="getCriticalExtensionOIDs()Ljava/util/Set;" />
-		<method name="getExtensionValue(Ljava/lang/String;)[B" />
-		<method name="getNonCriticalExtensionOIDs()Ljava/util/Set;" />
-		<method name="hasUnsupportedCriticalExtension()Z" />
-	</class>
-	<class name="java/security/interfaces/DSAKey" since="1">
-		<extends name="java/lang/Object" />
-		<method name="getParams()Ljava/security/interfaces/DSAParams;" />
-	</class>
-	<class name="java/security/interfaces/DSAKeyPairGenerator" since="1">
-		<extends name="java/lang/Object" />
-		<method name="initialize(IZLjava/security/SecureRandom;)V" />
-		<method name="initialize(Ljava/security/interfaces/DSAParams;Ljava/security/SecureRandom;)V" />
-	</class>
-	<class name="java/security/interfaces/DSAParams" since="1">
-		<extends name="java/lang/Object" />
-		<method name="getG()Ljava/math/BigInteger;" />
-		<method name="getP()Ljava/math/BigInteger;" />
-		<method name="getQ()Ljava/math/BigInteger;" />
-	</class>
-	<class name="java/security/interfaces/DSAPrivateKey" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/security/PrivateKey" />
-		<implements name="java/security/interfaces/DSAKey" />
-		<method name="getX()Ljava/math/BigInteger;" />
-		<field name="serialVersionUID" />
-	</class>
-	<class name="java/security/interfaces/DSAPublicKey" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/security/PublicKey" />
-		<implements name="java/security/interfaces/DSAKey" />
-		<method name="getY()Ljava/math/BigInteger;" />
-		<field name="serialVersionUID" />
-	</class>
-	<class name="java/security/interfaces/ECKey" since="1">
-		<extends name="java/lang/Object" />
-		<method name="getParams()Ljava/security/spec/ECParameterSpec;" />
-	</class>
-	<class name="java/security/interfaces/ECPrivateKey" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/security/PrivateKey" />
-		<implements name="java/security/interfaces/ECKey" />
-		<method name="getS()Ljava/math/BigInteger;" />
-		<field name="serialVersionUID" />
-	</class>
-	<class name="java/security/interfaces/ECPublicKey" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/security/PublicKey" />
-		<implements name="java/security/interfaces/ECKey" />
-		<method name="getW()Ljava/security/spec/ECPoint;" />
-		<field name="serialVersionUID" />
-	</class>
-	<class name="java/security/interfaces/RSAKey" since="1">
-		<extends name="java/lang/Object" />
-		<method name="getModulus()Ljava/math/BigInteger;" />
-	</class>
-	<class name="java/security/interfaces/RSAMultiPrimePrivateCrtKey" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/security/interfaces/RSAPrivateKey" />
-		<method name="getCrtCoefficient()Ljava/math/BigInteger;" />
-		<method name="getOtherPrimeInfo()[Ljava/security/spec/RSAOtherPrimeInfo;" />
-		<method name="getPrimeExponentP()Ljava/math/BigInteger;" />
-		<method name="getPrimeExponentQ()Ljava/math/BigInteger;" />
-		<method name="getPrimeP()Ljava/math/BigInteger;" />
-		<method name="getPrimeQ()Ljava/math/BigInteger;" />
-		<method name="getPublicExponent()Ljava/math/BigInteger;" />
-		<field name="serialVersionUID" />
-	</class>
-	<class name="java/security/interfaces/RSAPrivateCrtKey" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/security/interfaces/RSAPrivateKey" />
-		<method name="getCrtCoefficient()Ljava/math/BigInteger;" />
-		<method name="getPrimeExponentP()Ljava/math/BigInteger;" />
-		<method name="getPrimeExponentQ()Ljava/math/BigInteger;" />
-		<method name="getPrimeP()Ljava/math/BigInteger;" />
-		<method name="getPrimeQ()Ljava/math/BigInteger;" />
-		<method name="getPublicExponent()Ljava/math/BigInteger;" />
-		<field name="serialVersionUID" />
-	</class>
-	<class name="java/security/interfaces/RSAPrivateKey" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/security/PrivateKey" />
-		<implements name="java/security/interfaces/RSAKey" />
-		<method name="getPrivateExponent()Ljava/math/BigInteger;" />
-		<field name="serialVersionUID" />
-	</class>
-	<class name="java/security/interfaces/RSAPublicKey" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/security/PublicKey" />
-		<implements name="java/security/interfaces/RSAKey" />
-		<method name="getPublicExponent()Ljava/math/BigInteger;" />
-		<field name="serialVersionUID" />
-	</class>
-	<class name="java/security/spec/AlgorithmParameterSpec" since="1">
-		<extends name="java/lang/Object" />
-	</class>
-	<class name="java/security/spec/DSAParameterSpec" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/security/interfaces/DSAParams" />
-		<implements name="java/security/spec/AlgorithmParameterSpec" />
-		<method name="&lt;init>(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;)V" />
-	</class>
-	<class name="java/security/spec/DSAPrivateKeySpec" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/security/spec/KeySpec" />
-		<method name="&lt;init>(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;)V" />
-		<method name="getG()Ljava/math/BigInteger;" />
-		<method name="getP()Ljava/math/BigInteger;" />
-		<method name="getQ()Ljava/math/BigInteger;" />
-		<method name="getX()Ljava/math/BigInteger;" />
-	</class>
-	<class name="java/security/spec/DSAPublicKeySpec" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/security/spec/KeySpec" />
-		<method name="&lt;init>(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;)V" />
-		<method name="getG()Ljava/math/BigInteger;" />
-		<method name="getP()Ljava/math/BigInteger;" />
-		<method name="getQ()Ljava/math/BigInteger;" />
-		<method name="getY()Ljava/math/BigInteger;" />
-	</class>
-	<class name="java/security/spec/ECField" since="1">
-		<extends name="java/lang/Object" />
-		<method name="getFieldSize()I" />
-	</class>
-	<class name="java/security/spec/ECFieldF2m" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/security/spec/ECField" />
-		<method name="&lt;init>(I)V" />
-		<method name="&lt;init>(ILjava/math/BigInteger;)V" />
-		<method name="&lt;init>(I[I)V" />
-		<method name="getM()I" />
-		<method name="getMidTermsOfReductionPolynomial()[I" />
-		<method name="getReductionPolynomial()Ljava/math/BigInteger;" />
-	</class>
-	<class name="java/security/spec/ECFieldFp" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/security/spec/ECField" />
-		<method name="&lt;init>(Ljava/math/BigInteger;)V" />
-		<method name="getP()Ljava/math/BigInteger;" />
-	</class>
-	<class name="java/security/spec/ECGenParameterSpec" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/security/spec/AlgorithmParameterSpec" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="getName()Ljava/lang/String;" />
-	</class>
-	<class name="java/security/spec/ECParameterSpec" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/security/spec/AlgorithmParameterSpec" />
-		<method name="&lt;init>(Ljava/security/spec/EllipticCurve;Ljava/security/spec/ECPoint;Ljava/math/BigInteger;I)V" />
-		<method name="getCofactor()I" />
-		<method name="getCurve()Ljava/security/spec/EllipticCurve;" />
-		<method name="getGenerator()Ljava/security/spec/ECPoint;" />
-		<method name="getOrder()Ljava/math/BigInteger;" />
-	</class>
-	<class name="java/security/spec/ECPoint" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/math/BigInteger;Ljava/math/BigInteger;)V" />
-		<method name="getAffineX()Ljava/math/BigInteger;" />
-		<method name="getAffineY()Ljava/math/BigInteger;" />
-		<field name="POINT_INFINITY" />
-	</class>
-	<class name="java/security/spec/ECPrivateKeySpec" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/security/spec/KeySpec" />
-		<method name="&lt;init>(Ljava/math/BigInteger;Ljava/security/spec/ECParameterSpec;)V" />
-		<method name="getParams()Ljava/security/spec/ECParameterSpec;" />
-		<method name="getS()Ljava/math/BigInteger;" />
-	</class>
-	<class name="java/security/spec/ECPublicKeySpec" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/security/spec/KeySpec" />
-		<method name="&lt;init>(Ljava/security/spec/ECPoint;Ljava/security/spec/ECParameterSpec;)V" />
-		<method name="getParams()Ljava/security/spec/ECParameterSpec;" />
-		<method name="getW()Ljava/security/spec/ECPoint;" />
-	</class>
-	<class name="java/security/spec/EllipticCurve" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/security/spec/ECField;Ljava/math/BigInteger;Ljava/math/BigInteger;)V" />
-		<method name="&lt;init>(Ljava/security/spec/ECField;Ljava/math/BigInteger;Ljava/math/BigInteger;[B)V" />
-		<method name="getA()Ljava/math/BigInteger;" />
-		<method name="getB()Ljava/math/BigInteger;" />
-		<method name="getField()Ljava/security/spec/ECField;" />
-		<method name="getSeed()[B" />
-	</class>
-	<class name="java/security/spec/EncodedKeySpec" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/security/spec/KeySpec" />
-		<method name="&lt;init>([B)V" />
-		<method name="getEncoded()[B" />
-		<method name="getFormat()Ljava/lang/String;" />
-	</class>
-	<class name="java/security/spec/InvalidKeySpecException" since="1">
-		<extends name="java/security/GeneralSecurityException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="java/security/spec/InvalidParameterSpecException" since="1">
-		<extends name="java/security/GeneralSecurityException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/security/spec/KeySpec" since="1">
-		<extends name="java/lang/Object" />
-	</class>
-	<class name="java/security/spec/MGF1ParameterSpec" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/security/spec/AlgorithmParameterSpec" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="getDigestAlgorithm()Ljava/lang/String;" />
-		<field name="SHA1" />
-		<field name="SHA256" />
-		<field name="SHA384" />
-		<field name="SHA512" />
-	</class>
-	<class name="java/security/spec/PKCS8EncodedKeySpec" since="1">
-		<extends name="java/security/spec/EncodedKeySpec" />
-		<method name="&lt;init>([B)V" />
-	</class>
-	<class name="java/security/spec/PSSParameterSpec" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/security/spec/AlgorithmParameterSpec" />
-		<method name="&lt;init>(I)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/security/spec/AlgorithmParameterSpec;II)V" />
-		<method name="getDigestAlgorithm()Ljava/lang/String;" />
-		<method name="getMGFAlgorithm()Ljava/lang/String;" />
-		<method name="getMGFParameters()Ljava/security/spec/AlgorithmParameterSpec;" />
-		<method name="getSaltLength()I" />
-		<method name="getTrailerField()I" />
-		<field name="DEFAULT" />
-	</class>
-	<class name="java/security/spec/RSAKeyGenParameterSpec" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/security/spec/AlgorithmParameterSpec" />
-		<method name="&lt;init>(ILjava/math/BigInteger;)V" />
-		<method name="getKeysize()I" />
-		<method name="getPublicExponent()Ljava/math/BigInteger;" />
-		<field name="F0" />
-		<field name="F4" />
-	</class>
-	<class name="java/security/spec/RSAMultiPrimePrivateCrtKeySpec" since="1">
-		<extends name="java/security/spec/RSAPrivateKeySpec" />
-		<method name="&lt;init>(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;[Ljava/security/spec/RSAOtherPrimeInfo;)V" />
-		<method name="getCrtCoefficient()Ljava/math/BigInteger;" />
-		<method name="getOtherPrimeInfo()[Ljava/security/spec/RSAOtherPrimeInfo;" />
-		<method name="getPrimeExponentP()Ljava/math/BigInteger;" />
-		<method name="getPrimeExponentQ()Ljava/math/BigInteger;" />
-		<method name="getPrimeP()Ljava/math/BigInteger;" />
-		<method name="getPrimeQ()Ljava/math/BigInteger;" />
-		<method name="getPublicExponent()Ljava/math/BigInteger;" />
-	</class>
-	<class name="java/security/spec/RSAOtherPrimeInfo" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;)V" />
-		<method name="getCrtCoefficient()Ljava/math/BigInteger;" />
-		<method name="getExponent()Ljava/math/BigInteger;" />
-		<method name="getPrime()Ljava/math/BigInteger;" />
-	</class>
-	<class name="java/security/spec/RSAPrivateCrtKeySpec" since="1">
-		<extends name="java/security/spec/RSAPrivateKeySpec" />
-		<method name="&lt;init>(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;)V" />
-		<method name="getCrtCoefficient()Ljava/math/BigInteger;" />
-		<method name="getPrimeExponentP()Ljava/math/BigInteger;" />
-		<method name="getPrimeExponentQ()Ljava/math/BigInteger;" />
-		<method name="getPrimeP()Ljava/math/BigInteger;" />
-		<method name="getPrimeQ()Ljava/math/BigInteger;" />
-		<method name="getPublicExponent()Ljava/math/BigInteger;" />
-	</class>
-	<class name="java/security/spec/RSAPrivateKeySpec" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/security/spec/KeySpec" />
-		<method name="&lt;init>(Ljava/math/BigInteger;Ljava/math/BigInteger;)V" />
-		<method name="getModulus()Ljava/math/BigInteger;" />
-		<method name="getPrivateExponent()Ljava/math/BigInteger;" />
-	</class>
-	<class name="java/security/spec/RSAPublicKeySpec" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/security/spec/KeySpec" />
-		<method name="&lt;init>(Ljava/math/BigInteger;Ljava/math/BigInteger;)V" />
-		<method name="getModulus()Ljava/math/BigInteger;" />
-		<method name="getPublicExponent()Ljava/math/BigInteger;" />
-	</class>
-	<class name="java/security/spec/X509EncodedKeySpec" since="1">
-		<extends name="java/security/spec/EncodedKeySpec" />
-		<method name="&lt;init>([B)V" />
-	</class>
-	<class name="java/sql/Array" since="1">
-		<extends name="java/lang/Object" />
-		<method name="free()V" since="9" />
-		<method name="getArray()Ljava/lang/Object;" />
-		<method name="getArray(JI)Ljava/lang/Object;" />
-		<method name="getArray(JILjava/util/Map;)Ljava/lang/Object;" />
-		<method name="getArray(Ljava/util/Map;)Ljava/lang/Object;" />
-		<method name="getBaseType()I" />
-		<method name="getBaseTypeName()Ljava/lang/String;" />
-		<method name="getResultSet()Ljava/sql/ResultSet;" />
-		<method name="getResultSet(JI)Ljava/sql/ResultSet;" />
-		<method name="getResultSet(JILjava/util/Map;)Ljava/sql/ResultSet;" />
-		<method name="getResultSet(Ljava/util/Map;)Ljava/sql/ResultSet;" />
-	</class>
-	<class name="java/sql/BatchUpdateException" since="1">
-		<extends name="java/sql/SQLException" />
-		<implements name="java/io/Serializable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;I[I)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;I[ILjava/lang/Throwable;)V" since="9" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;[I)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;[ILjava/lang/Throwable;)V" since="9" />
-		<method name="&lt;init>(Ljava/lang/String;[I)V" />
-		<method name="&lt;init>(Ljava/lang/String;[ILjava/lang/Throwable;)V" since="9" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" since="9" />
-		<method name="&lt;init>([I)V" />
-		<method name="&lt;init>([ILjava/lang/Throwable;)V" since="9" />
-		<method name="getUpdateCounts()[I" />
-	</class>
-	<class name="java/sql/Blob" since="1">
-		<extends name="java/lang/Object" />
-		<method name="free()V" since="9" />
-		<method name="getBinaryStream()Ljava/io/InputStream;" />
-		<method name="getBinaryStream(JJ)Ljava/io/InputStream;" since="9" />
-		<method name="getBytes(JI)[B" />
-		<method name="length()J" />
-		<method name="position(Ljava/sql/Blob;J)J" />
-		<method name="position([BJ)J" />
-		<method name="setBinaryStream(J)Ljava/io/OutputStream;" />
-		<method name="setBytes(J[B)I" />
-		<method name="setBytes(J[BII)I" />
-		<method name="truncate(J)V" />
-	</class>
-	<class name="java/sql/CallableStatement" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/sql/PreparedStatement" />
-		<method name="getArray(I)Ljava/sql/Array;" />
-		<method name="getArray(Ljava/lang/String;)Ljava/sql/Array;" />
-		<method name="getBigDecimal(I)Ljava/math/BigDecimal;" />
-		<method name="getBigDecimal(II)Ljava/math/BigDecimal;" />
-		<method name="getBigDecimal(Ljava/lang/String;)Ljava/math/BigDecimal;" />
-		<method name="getBlob(I)Ljava/sql/Blob;" />
-		<method name="getBlob(Ljava/lang/String;)Ljava/sql/Blob;" />
-		<method name="getBoolean(I)Z" />
-		<method name="getBoolean(Ljava/lang/String;)Z" />
-		<method name="getByte(I)B" />
-		<method name="getByte(Ljava/lang/String;)B" />
-		<method name="getBytes(I)[B" />
-		<method name="getBytes(Ljava/lang/String;)[B" />
-		<method name="getCharacterStream(I)Ljava/io/Reader;" since="9" />
-		<method name="getCharacterStream(Ljava/lang/String;)Ljava/io/Reader;" since="9" />
-		<method name="getClob(I)Ljava/sql/Clob;" />
-		<method name="getClob(Ljava/lang/String;)Ljava/sql/Clob;" />
-		<method name="getDate(I)Ljava/sql/Date;" />
-		<method name="getDate(ILjava/util/Calendar;)Ljava/sql/Date;" />
-		<method name="getDate(Ljava/lang/String;)Ljava/sql/Date;" />
-		<method name="getDate(Ljava/lang/String;Ljava/util/Calendar;)Ljava/sql/Date;" />
-		<method name="getDouble(I)D" />
-		<method name="getDouble(Ljava/lang/String;)D" />
-		<method name="getFloat(I)F" />
-		<method name="getFloat(Ljava/lang/String;)F" />
-		<method name="getInt(I)I" />
-		<method name="getInt(Ljava/lang/String;)I" />
-		<method name="getLong(I)J" />
-		<method name="getLong(Ljava/lang/String;)J" />
-		<method name="getNCharacterStream(I)Ljava/io/Reader;" since="9" />
-		<method name="getNCharacterStream(Ljava/lang/String;)Ljava/io/Reader;" since="9" />
-		<method name="getNClob(I)Ljava/sql/NClob;" since="9" />
-		<method name="getNClob(Ljava/lang/String;)Ljava/sql/NClob;" since="9" />
-		<method name="getNString(I)Ljava/lang/String;" since="9" />
-		<method name="getNString(Ljava/lang/String;)Ljava/lang/String;" since="9" />
-		<method name="getObject(I)Ljava/lang/Object;" />
-		<method name="getObject(ILjava/util/Map;)Ljava/lang/Object;" />
-		<method name="getObject(Ljava/lang/String;)Ljava/lang/Object;" />
-		<method name="getObject(Ljava/lang/String;Ljava/util/Map;)Ljava/lang/Object;" />
-		<method name="getRef(I)Ljava/sql/Ref;" />
-		<method name="getRef(Ljava/lang/String;)Ljava/sql/Ref;" />
-		<method name="getRowId(I)Ljava/sql/RowId;" since="9" />
-		<method name="getRowId(Ljava/lang/String;)Ljava/sql/RowId;" since="9" />
-		<method name="getSQLXML(I)Ljava/sql/SQLXML;" since="9" />
-		<method name="getSQLXML(Ljava/lang/String;)Ljava/sql/SQLXML;" since="9" />
-		<method name="getShort(I)S" />
-		<method name="getShort(Ljava/lang/String;)S" />
-		<method name="getString(I)Ljava/lang/String;" />
-		<method name="getString(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="getTime(I)Ljava/sql/Time;" />
-		<method name="getTime(ILjava/util/Calendar;)Ljava/sql/Time;" />
-		<method name="getTime(Ljava/lang/String;)Ljava/sql/Time;" />
-		<method name="getTime(Ljava/lang/String;Ljava/util/Calendar;)Ljava/sql/Time;" />
-		<method name="getTimestamp(I)Ljava/sql/Timestamp;" />
-		<method name="getTimestamp(ILjava/util/Calendar;)Ljava/sql/Timestamp;" />
-		<method name="getTimestamp(Ljava/lang/String;)Ljava/sql/Timestamp;" />
-		<method name="getTimestamp(Ljava/lang/String;Ljava/util/Calendar;)Ljava/sql/Timestamp;" />
-		<method name="getURL(I)Ljava/net/URL;" />
-		<method name="getURL(Ljava/lang/String;)Ljava/net/URL;" />
-		<method name="registerOutParameter(II)V" />
-		<method name="registerOutParameter(III)V" />
-		<method name="registerOutParameter(IILjava/lang/String;)V" />
-		<method name="registerOutParameter(Ljava/lang/String;I)V" />
-		<method name="registerOutParameter(Ljava/lang/String;II)V" />
-		<method name="registerOutParameter(Ljava/lang/String;ILjava/lang/String;)V" />
-		<method name="setAsciiStream(Ljava/lang/String;Ljava/io/InputStream;)V" since="9" />
-		<method name="setAsciiStream(Ljava/lang/String;Ljava/io/InputStream;I)V" />
-		<method name="setAsciiStream(Ljava/lang/String;Ljava/io/InputStream;J)V" since="9" />
-		<method name="setBigDecimal(Ljava/lang/String;Ljava/math/BigDecimal;)V" />
-		<method name="setBinaryStream(Ljava/lang/String;Ljava/io/InputStream;)V" since="9" />
-		<method name="setBinaryStream(Ljava/lang/String;Ljava/io/InputStream;I)V" />
-		<method name="setBinaryStream(Ljava/lang/String;Ljava/io/InputStream;J)V" since="9" />
-		<method name="setBlob(Ljava/lang/String;Ljava/io/InputStream;)V" since="9" />
-		<method name="setBlob(Ljava/lang/String;Ljava/io/InputStream;J)V" since="9" />
-		<method name="setBlob(Ljava/lang/String;Ljava/sql/Blob;)V" since="9" />
-		<method name="setBoolean(Ljava/lang/String;Z)V" />
-		<method name="setByte(Ljava/lang/String;B)V" />
-		<method name="setBytes(Ljava/lang/String;[B)V" />
-		<method name="setCharacterStream(Ljava/lang/String;Ljava/io/Reader;)V" since="9" />
-		<method name="setCharacterStream(Ljava/lang/String;Ljava/io/Reader;I)V" />
-		<method name="setCharacterStream(Ljava/lang/String;Ljava/io/Reader;J)V" since="9" />
-		<method name="setClob(Ljava/lang/String;Ljava/io/Reader;)V" since="9" />
-		<method name="setClob(Ljava/lang/String;Ljava/io/Reader;J)V" since="9" />
-		<method name="setClob(Ljava/lang/String;Ljava/sql/Clob;)V" since="9" />
-		<method name="setDate(Ljava/lang/String;Ljava/sql/Date;)V" />
-		<method name="setDate(Ljava/lang/String;Ljava/sql/Date;Ljava/util/Calendar;)V" />
-		<method name="setDouble(Ljava/lang/String;D)V" />
-		<method name="setFloat(Ljava/lang/String;F)V" />
-		<method name="setInt(Ljava/lang/String;I)V" />
-		<method name="setLong(Ljava/lang/String;J)V" />
-		<method name="setNCharacterStream(Ljava/lang/String;Ljava/io/Reader;)V" since="9" />
-		<method name="setNCharacterStream(Ljava/lang/String;Ljava/io/Reader;J)V" since="9" />
-		<method name="setNClob(Ljava/lang/String;Ljava/io/Reader;)V" since="9" />
-		<method name="setNClob(Ljava/lang/String;Ljava/io/Reader;J)V" since="9" />
-		<method name="setNClob(Ljava/lang/String;Ljava/sql/NClob;)V" since="9" />
-		<method name="setNString(Ljava/lang/String;Ljava/lang/String;)V" since="9" />
-		<method name="setNull(Ljava/lang/String;I)V" />
-		<method name="setNull(Ljava/lang/String;ILjava/lang/String;)V" />
-		<method name="setObject(Ljava/lang/String;Ljava/lang/Object;)V" />
-		<method name="setObject(Ljava/lang/String;Ljava/lang/Object;I)V" />
-		<method name="setObject(Ljava/lang/String;Ljava/lang/Object;II)V" />
-		<method name="setRowId(Ljava/lang/String;Ljava/sql/RowId;)V" since="9" />
-		<method name="setSQLXML(Ljava/lang/String;Ljava/sql/SQLXML;)V" since="9" />
-		<method name="setShort(Ljava/lang/String;S)V" />
-		<method name="setString(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="setTime(Ljava/lang/String;Ljava/sql/Time;)V" />
-		<method name="setTime(Ljava/lang/String;Ljava/sql/Time;Ljava/util/Calendar;)V" />
-		<method name="setTimestamp(Ljava/lang/String;Ljava/sql/Timestamp;)V" />
-		<method name="setTimestamp(Ljava/lang/String;Ljava/sql/Timestamp;Ljava/util/Calendar;)V" />
-		<method name="setURL(Ljava/lang/String;Ljava/net/URL;)V" />
-		<method name="wasNull()Z" />
-	</class>
-	<class name="java/sql/ClientInfoStatus" since="9">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Ljava/sql/ClientInfoStatus;" />
-		<method name="values()[Ljava/sql/ClientInfoStatus;" />
-		<field name="REASON_UNKNOWN" />
-		<field name="REASON_UNKNOWN_PROPERTY" />
-		<field name="REASON_VALUE_INVALID" />
-		<field name="REASON_VALUE_TRUNCATED" />
-	</class>
-	<class name="java/sql/Clob" since="1">
-		<extends name="java/lang/Object" />
-		<method name="free()V" since="9" />
-		<method name="getAsciiStream()Ljava/io/InputStream;" />
-		<method name="getCharacterStream()Ljava/io/Reader;" />
-		<method name="getCharacterStream(JJ)Ljava/io/Reader;" since="9" />
-		<method name="getSubString(JI)Ljava/lang/String;" />
-		<method name="length()J" />
-		<method name="position(Ljava/lang/String;J)J" />
-		<method name="position(Ljava/sql/Clob;J)J" />
-		<method name="setAsciiStream(J)Ljava/io/OutputStream;" />
-		<method name="setCharacterStream(J)Ljava/io/Writer;" />
-		<method name="setString(JLjava/lang/String;)I" />
-		<method name="setString(JLjava/lang/String;II)I" />
-		<method name="truncate(J)V" />
-	</class>
-	<class name="java/sql/Connection" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/AutoCloseable" since="19" />
-		<implements name="java/sql/Wrapper" since="9" />
-		<method name="clearWarnings()V" />
-		<method name="close()V" />
-		<method name="commit()V" />
-		<method name="createArrayOf(Ljava/lang/String;[Ljava/lang/Object;)Ljava/sql/Array;" since="9" />
-		<method name="createBlob()Ljava/sql/Blob;" since="9" />
-		<method name="createClob()Ljava/sql/Clob;" since="9" />
-		<method name="createNClob()Ljava/sql/NClob;" since="9" />
-		<method name="createSQLXML()Ljava/sql/SQLXML;" since="9" />
-		<method name="createStatement()Ljava/sql/Statement;" />
-		<method name="createStatement(II)Ljava/sql/Statement;" />
-		<method name="createStatement(III)Ljava/sql/Statement;" />
-		<method name="createStruct(Ljava/lang/String;[Ljava/lang/Object;)Ljava/sql/Struct;" since="9" />
-		<method name="getAutoCommit()Z" />
-		<method name="getCatalog()Ljava/lang/String;" />
-		<method name="getClientInfo()Ljava/util/Properties;" since="9" />
-		<method name="getClientInfo(Ljava/lang/String;)Ljava/lang/String;" since="9" />
-		<method name="getHoldability()I" />
-		<method name="getMetaData()Ljava/sql/DatabaseMetaData;" />
-		<method name="getTransactionIsolation()I" />
-		<method name="getTypeMap()Ljava/util/Map;" />
-		<method name="getWarnings()Ljava/sql/SQLWarning;" />
-		<method name="isClosed()Z" />
-		<method name="isReadOnly()Z" />
-		<method name="isValid(I)Z" since="9" />
-		<method name="nativeSQL(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="prepareCall(Ljava/lang/String;)Ljava/sql/CallableStatement;" />
-		<method name="prepareCall(Ljava/lang/String;II)Ljava/sql/CallableStatement;" />
-		<method name="prepareCall(Ljava/lang/String;III)Ljava/sql/CallableStatement;" />
-		<method name="prepareStatement(Ljava/lang/String;)Ljava/sql/PreparedStatement;" />
-		<method name="prepareStatement(Ljava/lang/String;I)Ljava/sql/PreparedStatement;" />
-		<method name="prepareStatement(Ljava/lang/String;II)Ljava/sql/PreparedStatement;" />
-		<method name="prepareStatement(Ljava/lang/String;III)Ljava/sql/PreparedStatement;" />
-		<method name="prepareStatement(Ljava/lang/String;[I)Ljava/sql/PreparedStatement;" />
-		<method name="prepareStatement(Ljava/lang/String;[Ljava/lang/String;)Ljava/sql/PreparedStatement;" />
-		<method name="releaseSavepoint(Ljava/sql/Savepoint;)V" />
-		<method name="rollback()V" />
-		<method name="rollback(Ljava/sql/Savepoint;)V" />
-		<method name="setAutoCommit(Z)V" />
-		<method name="setCatalog(Ljava/lang/String;)V" />
-		<method name="setClientInfo(Ljava/lang/String;Ljava/lang/String;)V" since="9" />
-		<method name="setClientInfo(Ljava/util/Properties;)V" since="9" />
-		<method name="setHoldability(I)V" />
-		<method name="setReadOnly(Z)V" />
-		<method name="setSavepoint()Ljava/sql/Savepoint;" />
-		<method name="setSavepoint(Ljava/lang/String;)Ljava/sql/Savepoint;" />
-		<method name="setTransactionIsolation(I)V" />
-		<method name="setTypeMap(Ljava/util/Map;)V" />
-		<field name="TRANSACTION_NONE" />
-		<field name="TRANSACTION_READ_COMMITTED" />
-		<field name="TRANSACTION_READ_UNCOMMITTED" />
-		<field name="TRANSACTION_REPEATABLE_READ" />
-		<field name="TRANSACTION_SERIALIZABLE" />
-	</class>
-	<class name="java/sql/DataTruncation" since="1">
-		<extends name="java/sql/SQLWarning" />
-		<implements name="java/io/Serializable" />
-		<method name="&lt;init>(IZZII)V" />
-		<method name="&lt;init>(IZZIILjava/lang/Throwable;)V" since="9" />
-		<method name="getDataSize()I" />
-		<method name="getIndex()I" />
-		<method name="getParameter()Z" />
-		<method name="getRead()Z" />
-		<method name="getTransferSize()I" />
-	</class>
-	<class name="java/sql/DatabaseMetaData" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/sql/Wrapper" since="9" />
-		<method name="allProceduresAreCallable()Z" />
-		<method name="allTablesAreSelectable()Z" />
-		<method name="autoCommitFailureClosesAllResultSets()Z" since="9" />
-		<method name="dataDefinitionCausesTransactionCommit()Z" />
-		<method name="dataDefinitionIgnoredInTransactions()Z" />
-		<method name="deletesAreDetected(I)Z" />
-		<method name="doesMaxRowSizeIncludeBlobs()Z" />
-		<method name="getAttributes(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/ResultSet;" />
-		<method name="getBestRowIdentifier(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IZ)Ljava/sql/ResultSet;" />
-		<method name="getCatalogSeparator()Ljava/lang/String;" />
-		<method name="getCatalogTerm()Ljava/lang/String;" />
-		<method name="getCatalogs()Ljava/sql/ResultSet;" />
-		<method name="getClientInfoProperties()Ljava/sql/ResultSet;" since="9" />
-		<method name="getColumnPrivileges(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/ResultSet;" />
-		<method name="getColumns(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/ResultSet;" />
-		<method name="getConnection()Ljava/sql/Connection;" />
-		<method name="getCrossReference(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/ResultSet;" />
-		<method name="getDatabaseMajorVersion()I" />
-		<method name="getDatabaseMinorVersion()I" />
-		<method name="getDatabaseProductName()Ljava/lang/String;" />
-		<method name="getDatabaseProductVersion()Ljava/lang/String;" />
-		<method name="getDefaultTransactionIsolation()I" />
-		<method name="getDriverMajorVersion()I" />
-		<method name="getDriverMinorVersion()I" />
-		<method name="getDriverName()Ljava/lang/String;" />
-		<method name="getDriverVersion()Ljava/lang/String;" />
-		<method name="getExportedKeys(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/ResultSet;" />
-		<method name="getExtraNameCharacters()Ljava/lang/String;" />
-		<method name="getFunctionColumns(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/ResultSet;" since="9" />
-		<method name="getFunctions(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/ResultSet;" since="9" />
-		<method name="getIdentifierQuoteString()Ljava/lang/String;" />
-		<method name="getImportedKeys(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/ResultSet;" />
-		<method name="getIndexInfo(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZZ)Ljava/sql/ResultSet;" />
-		<method name="getJDBCMajorVersion()I" />
-		<method name="getJDBCMinorVersion()I" />
-		<method name="getMaxBinaryLiteralLength()I" />
-		<method name="getMaxCatalogNameLength()I" />
-		<method name="getMaxCharLiteralLength()I" />
-		<method name="getMaxColumnNameLength()I" />
-		<method name="getMaxColumnsInGroupBy()I" />
-		<method name="getMaxColumnsInIndex()I" />
-		<method name="getMaxColumnsInOrderBy()I" />
-		<method name="getMaxColumnsInSelect()I" />
-		<method name="getMaxColumnsInTable()I" />
-		<method name="getMaxConnections()I" />
-		<method name="getMaxCursorNameLength()I" />
-		<method name="getMaxIndexLength()I" />
-		<method name="getMaxProcedureNameLength()I" />
-		<method name="getMaxRowSize()I" />
-		<method name="getMaxSchemaNameLength()I" />
-		<method name="getMaxStatementLength()I" />
-		<method name="getMaxStatements()I" />
-		<method name="getMaxTableNameLength()I" />
-		<method name="getMaxTablesInSelect()I" />
-		<method name="getMaxUserNameLength()I" />
-		<method name="getNumericFunctions()Ljava/lang/String;" />
-		<method name="getPrimaryKeys(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/ResultSet;" />
-		<method name="getProcedureColumns(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/ResultSet;" />
-		<method name="getProcedureTerm()Ljava/lang/String;" />
-		<method name="getProcedures(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/ResultSet;" />
-		<method name="getResultSetHoldability()I" />
-		<method name="getRowIdLifetime()Ljava/sql/RowIdLifetime;" since="9" />
-		<method name="getSQLKeywords()Ljava/lang/String;" />
-		<method name="getSQLStateType()I" />
-		<method name="getSchemaTerm()Ljava/lang/String;" />
-		<method name="getSchemas()Ljava/sql/ResultSet;" />
-		<method name="getSchemas(Ljava/lang/String;Ljava/lang/String;)Ljava/sql/ResultSet;" since="9" />
-		<method name="getSearchStringEscape()Ljava/lang/String;" />
-		<method name="getStringFunctions()Ljava/lang/String;" />
-		<method name="getSuperTables(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/ResultSet;" />
-		<method name="getSuperTypes(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/ResultSet;" />
-		<method name="getSystemFunctions()Ljava/lang/String;" />
-		<method name="getTablePrivileges(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/ResultSet;" />
-		<method name="getTableTypes()Ljava/sql/ResultSet;" />
-		<method name="getTables(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)Ljava/sql/ResultSet;" />
-		<method name="getTimeDateFunctions()Ljava/lang/String;" />
-		<method name="getTypeInfo()Ljava/sql/ResultSet;" />
-		<method name="getUDTs(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[I)Ljava/sql/ResultSet;" />
-		<method name="getURL()Ljava/lang/String;" />
-		<method name="getUserName()Ljava/lang/String;" />
-		<method name="getVersionColumns(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/ResultSet;" />
-		<method name="insertsAreDetected(I)Z" />
-		<method name="isCatalogAtStart()Z" />
-		<method name="isReadOnly()Z" />
-		<method name="locatorsUpdateCopy()Z" />
-		<method name="nullPlusNonNullIsNull()Z" />
-		<method name="nullsAreSortedAtEnd()Z" />
-		<method name="nullsAreSortedAtStart()Z" />
-		<method name="nullsAreSortedHigh()Z" />
-		<method name="nullsAreSortedLow()Z" />
-		<method name="othersDeletesAreVisible(I)Z" />
-		<method name="othersInsertsAreVisible(I)Z" />
-		<method name="othersUpdatesAreVisible(I)Z" />
-		<method name="ownDeletesAreVisible(I)Z" />
-		<method name="ownInsertsAreVisible(I)Z" />
-		<method name="ownUpdatesAreVisible(I)Z" />
-		<method name="storesLowerCaseIdentifiers()Z" />
-		<method name="storesLowerCaseQuotedIdentifiers()Z" />
-		<method name="storesMixedCaseIdentifiers()Z" />
-		<method name="storesMixedCaseQuotedIdentifiers()Z" />
-		<method name="storesUpperCaseIdentifiers()Z" />
-		<method name="storesUpperCaseQuotedIdentifiers()Z" />
-		<method name="supportsANSI92EntryLevelSQL()Z" />
-		<method name="supportsANSI92FullSQL()Z" />
-		<method name="supportsANSI92IntermediateSQL()Z" />
-		<method name="supportsAlterTableWithAddColumn()Z" />
-		<method name="supportsAlterTableWithDropColumn()Z" />
-		<method name="supportsBatchUpdates()Z" />
-		<method name="supportsCatalogsInDataManipulation()Z" />
-		<method name="supportsCatalogsInIndexDefinitions()Z" />
-		<method name="supportsCatalogsInPrivilegeDefinitions()Z" />
-		<method name="supportsCatalogsInProcedureCalls()Z" />
-		<method name="supportsCatalogsInTableDefinitions()Z" />
-		<method name="supportsColumnAliasing()Z" />
-		<method name="supportsConvert()Z" />
-		<method name="supportsConvert(II)Z" />
-		<method name="supportsCoreSQLGrammar()Z" />
-		<method name="supportsCorrelatedSubqueries()Z" />
-		<method name="supportsDataDefinitionAndDataManipulationTransactions()Z" />
-		<method name="supportsDataManipulationTransactionsOnly()Z" />
-		<method name="supportsDifferentTableCorrelationNames()Z" />
-		<method name="supportsExpressionsInOrderBy()Z" />
-		<method name="supportsExtendedSQLGrammar()Z" />
-		<method name="supportsFullOuterJoins()Z" />
-		<method name="supportsGetGeneratedKeys()Z" />
-		<method name="supportsGroupBy()Z" />
-		<method name="supportsGroupByBeyondSelect()Z" />
-		<method name="supportsGroupByUnrelated()Z" />
-		<method name="supportsIntegrityEnhancementFacility()Z" />
-		<method name="supportsLikeEscapeClause()Z" />
-		<method name="supportsLimitedOuterJoins()Z" />
-		<method name="supportsMinimumSQLGrammar()Z" />
-		<method name="supportsMixedCaseIdentifiers()Z" />
-		<method name="supportsMixedCaseQuotedIdentifiers()Z" />
-		<method name="supportsMultipleOpenResults()Z" />
-		<method name="supportsMultipleResultSets()Z" />
-		<method name="supportsMultipleTransactions()Z" />
-		<method name="supportsNamedParameters()Z" />
-		<method name="supportsNonNullableColumns()Z" />
-		<method name="supportsOpenCursorsAcrossCommit()Z" />
-		<method name="supportsOpenCursorsAcrossRollback()Z" />
-		<method name="supportsOpenStatementsAcrossCommit()Z" />
-		<method name="supportsOpenStatementsAcrossRollback()Z" />
-		<method name="supportsOrderByUnrelated()Z" />
-		<method name="supportsOuterJoins()Z" />
-		<method name="supportsPositionedDelete()Z" />
-		<method name="supportsPositionedUpdate()Z" />
-		<method name="supportsResultSetConcurrency(II)Z" />
-		<method name="supportsResultSetHoldability(I)Z" />
-		<method name="supportsResultSetType(I)Z" />
-		<method name="supportsSavepoints()Z" />
-		<method name="supportsSchemasInDataManipulation()Z" />
-		<method name="supportsSchemasInIndexDefinitions()Z" />
-		<method name="supportsSchemasInPrivilegeDefinitions()Z" />
-		<method name="supportsSchemasInProcedureCalls()Z" />
-		<method name="supportsSchemasInTableDefinitions()Z" />
-		<method name="supportsSelectForUpdate()Z" />
-		<method name="supportsStatementPooling()Z" />
-		<method name="supportsStoredFunctionsUsingCallSyntax()Z" since="9" />
-		<method name="supportsStoredProcedures()Z" />
-		<method name="supportsSubqueriesInComparisons()Z" />
-		<method name="supportsSubqueriesInExists()Z" />
-		<method name="supportsSubqueriesInIns()Z" />
-		<method name="supportsSubqueriesInQuantifieds()Z" />
-		<method name="supportsTableCorrelationNames()Z" />
-		<method name="supportsTransactionIsolationLevel(I)Z" />
-		<method name="supportsTransactions()Z" />
-		<method name="supportsUnion()Z" />
-		<method name="supportsUnionAll()Z" />
-		<method name="updatesAreDetected(I)Z" />
-		<method name="usesLocalFilePerTable()Z" />
-		<method name="usesLocalFiles()Z" />
-		<field name="attributeNoNulls" />
-		<field name="attributeNullable" />
-		<field name="attributeNullableUnknown" />
-		<field name="bestRowNotPseudo" />
-		<field name="bestRowPseudo" />
-		<field name="bestRowSession" />
-		<field name="bestRowTemporary" />
-		<field name="bestRowTransaction" />
-		<field name="bestRowUnknown" />
-		<field name="columnNoNulls" />
-		<field name="columnNullable" />
-		<field name="columnNullableUnknown" />
-		<field name="functionColumnIn" since="9" />
-		<field name="functionColumnInOut" since="9" />
-		<field name="functionColumnOut" since="9" />
-		<field name="functionColumnResult" since="9" />
-		<field name="functionColumnUnknown" since="9" />
-		<field name="functionNoNulls" since="9" />
-		<field name="functionNoTable" since="9" />
-		<field name="functionNullable" since="9" />
-		<field name="functionNullableUnknown" since="9" />
-		<field name="functionResultUnknown" since="9" />
-		<field name="functionReturn" since="9" />
-		<field name="functionReturnsTable" since="9" />
-		<field name="importedKeyCascade" />
-		<field name="importedKeyInitiallyDeferred" />
-		<field name="importedKeyInitiallyImmediate" />
-		<field name="importedKeyNoAction" />
-		<field name="importedKeyNotDeferrable" />
-		<field name="importedKeyRestrict" />
-		<field name="importedKeySetDefault" />
-		<field name="importedKeySetNull" />
-		<field name="procedureColumnIn" />
-		<field name="procedureColumnInOut" />
-		<field name="procedureColumnOut" />
-		<field name="procedureColumnResult" />
-		<field name="procedureColumnReturn" />
-		<field name="procedureColumnUnknown" />
-		<field name="procedureNoNulls" />
-		<field name="procedureNoResult" />
-		<field name="procedureNullable" />
-		<field name="procedureNullableUnknown" />
-		<field name="procedureResultUnknown" />
-		<field name="procedureReturnsResult" />
-		<field name="sqlStateSQL" since="9" />
-		<field name="sqlStateSQL99" />
-		<field name="sqlStateXOpen" />
-		<field name="tableIndexClustered" />
-		<field name="tableIndexHashed" />
-		<field name="tableIndexOther" />
-		<field name="tableIndexStatistic" />
-		<field name="typeNoNulls" />
-		<field name="typeNullable" />
-		<field name="typeNullableUnknown" />
-		<field name="typePredBasic" />
-		<field name="typePredChar" />
-		<field name="typePredNone" />
-		<field name="typeSearchable" />
-		<field name="versionColumnNotPseudo" />
-		<field name="versionColumnPseudo" />
-		<field name="versionColumnUnknown" />
-	</class>
-	<class name="java/sql/Date" since="1">
-		<extends name="java/util/Date" />
-		<method name="&lt;init>(III)V" />
-		<method name="&lt;init>(J)V" />
-		<method name="valueOf(Ljava/lang/String;)Ljava/sql/Date;" />
-	</class>
-	<class name="java/sql/Driver" since="1">
-		<extends name="java/lang/Object" />
-		<method name="acceptsURL(Ljava/lang/String;)Z" />
-		<method name="connect(Ljava/lang/String;Ljava/util/Properties;)Ljava/sql/Connection;" />
-		<method name="getMajorVersion()I" />
-		<method name="getMinorVersion()I" />
-		<method name="getPropertyInfo(Ljava/lang/String;Ljava/util/Properties;)[Ljava/sql/DriverPropertyInfo;" />
-		<method name="jdbcCompliant()Z" />
-	</class>
-	<class name="java/sql/DriverManager" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="deregisterDriver(Ljava/sql/Driver;)V" />
-		<method name="getConnection(Ljava/lang/String;)Ljava/sql/Connection;" />
-		<method name="getConnection(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/Connection;" />
-		<method name="getConnection(Ljava/lang/String;Ljava/util/Properties;)Ljava/sql/Connection;" />
-		<method name="getDriver(Ljava/lang/String;)Ljava/sql/Driver;" />
-		<method name="getDrivers()Ljava/util/Enumeration;" />
-		<method name="getLogStream()Ljava/io/PrintStream;" />
-		<method name="getLogWriter()Ljava/io/PrintWriter;" />
-		<method name="getLoginTimeout()I" />
-		<method name="println(Ljava/lang/String;)V" />
-		<method name="registerDriver(Ljava/sql/Driver;)V" />
-		<method name="setLogStream(Ljava/io/PrintStream;)V" />
-		<method name="setLogWriter(Ljava/io/PrintWriter;)V" />
-		<method name="setLoginTimeout(I)V" />
-	</class>
-	<class name="java/sql/DriverPropertyInfo" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
-		<field name="choices" />
-		<field name="description" />
-		<field name="name" />
-		<field name="required" />
-		<field name="value" />
-	</class>
-	<class name="java/sql/NClob" since="9">
-		<extends name="java/lang/Object" />
-		<implements name="java/sql/Clob" />
-	</class>
-	<class name="java/sql/ParameterMetaData" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/sql/Wrapper" since="9" />
-		<method name="getParameterClassName(I)Ljava/lang/String;" />
-		<method name="getParameterCount()I" />
-		<method name="getParameterMode(I)I" />
-		<method name="getParameterType(I)I" />
-		<method name="getParameterTypeName(I)Ljava/lang/String;" />
-		<method name="getPrecision(I)I" />
-		<method name="getScale(I)I" />
-		<method name="isNullable(I)I" />
-		<method name="isSigned(I)Z" />
-		<field name="parameterModeIn" />
-		<field name="parameterModeInOut" />
-		<field name="parameterModeOut" />
-		<field name="parameterModeUnknown" />
-		<field name="parameterNoNulls" />
-		<field name="parameterNullable" />
-		<field name="parameterNullableUnknown" />
-	</class>
-	<class name="java/sql/PreparedStatement" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/sql/Statement" />
-		<method name="addBatch()V" />
-		<method name="clearParameters()V" />
-		<method name="execute()Z" />
-		<method name="executeQuery()Ljava/sql/ResultSet;" />
-		<method name="executeUpdate()I" />
-		<method name="getMetaData()Ljava/sql/ResultSetMetaData;" />
-		<method name="getParameterMetaData()Ljava/sql/ParameterMetaData;" />
-		<method name="setArray(ILjava/sql/Array;)V" />
-		<method name="setAsciiStream(ILjava/io/InputStream;)V" since="9" />
-		<method name="setAsciiStream(ILjava/io/InputStream;I)V" />
-		<method name="setAsciiStream(ILjava/io/InputStream;J)V" since="9" />
-		<method name="setBigDecimal(ILjava/math/BigDecimal;)V" />
-		<method name="setBinaryStream(ILjava/io/InputStream;)V" since="9" />
-		<method name="setBinaryStream(ILjava/io/InputStream;I)V" />
-		<method name="setBinaryStream(ILjava/io/InputStream;J)V" since="9" />
-		<method name="setBlob(ILjava/io/InputStream;)V" since="9" />
-		<method name="setBlob(ILjava/io/InputStream;J)V" since="9" />
-		<method name="setBlob(ILjava/sql/Blob;)V" />
-		<method name="setBoolean(IZ)V" />
-		<method name="setByte(IB)V" />
-		<method name="setBytes(I[B)V" />
-		<method name="setCharacterStream(ILjava/io/Reader;)V" since="9" />
-		<method name="setCharacterStream(ILjava/io/Reader;I)V" />
-		<method name="setCharacterStream(ILjava/io/Reader;J)V" since="9" />
-		<method name="setClob(ILjava/io/Reader;)V" since="9" />
-		<method name="setClob(ILjava/io/Reader;J)V" since="9" />
-		<method name="setClob(ILjava/sql/Clob;)V" />
-		<method name="setDate(ILjava/sql/Date;)V" />
-		<method name="setDate(ILjava/sql/Date;Ljava/util/Calendar;)V" />
-		<method name="setDouble(ID)V" />
-		<method name="setFloat(IF)V" />
-		<method name="setInt(II)V" />
-		<method name="setLong(IJ)V" />
-		<method name="setNCharacterStream(ILjava/io/Reader;)V" since="9" />
-		<method name="setNCharacterStream(ILjava/io/Reader;J)V" since="9" />
-		<method name="setNClob(ILjava/io/Reader;)V" since="9" />
-		<method name="setNClob(ILjava/io/Reader;J)V" since="9" />
-		<method name="setNClob(ILjava/sql/NClob;)V" since="9" />
-		<method name="setNString(ILjava/lang/String;)V" since="9" />
-		<method name="setNull(II)V" />
-		<method name="setNull(IILjava/lang/String;)V" />
-		<method name="setObject(ILjava/lang/Object;)V" />
-		<method name="setObject(ILjava/lang/Object;I)V" />
-		<method name="setObject(ILjava/lang/Object;II)V" />
-		<method name="setRef(ILjava/sql/Ref;)V" />
-		<method name="setRowId(ILjava/sql/RowId;)V" since="9" />
-		<method name="setSQLXML(ILjava/sql/SQLXML;)V" since="9" />
-		<method name="setShort(IS)V" />
-		<method name="setString(ILjava/lang/String;)V" />
-		<method name="setTime(ILjava/sql/Time;)V" />
-		<method name="setTime(ILjava/sql/Time;Ljava/util/Calendar;)V" />
-		<method name="setTimestamp(ILjava/sql/Timestamp;)V" />
-		<method name="setTimestamp(ILjava/sql/Timestamp;Ljava/util/Calendar;)V" />
-		<method name="setURL(ILjava/net/URL;)V" />
-		<method name="setUnicodeStream(ILjava/io/InputStream;I)V" />
-	</class>
-	<class name="java/sql/Ref" since="1">
-		<extends name="java/lang/Object" />
-		<method name="getBaseTypeName()Ljava/lang/String;" />
-		<method name="getObject()Ljava/lang/Object;" />
-		<method name="getObject(Ljava/util/Map;)Ljava/lang/Object;" />
-		<method name="setObject(Ljava/lang/Object;)V" />
-	</class>
-	<class name="java/sql/ResultSet" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/AutoCloseable" since="19" />
-		<implements name="java/sql/Wrapper" since="9" />
-		<method name="absolute(I)Z" />
-		<method name="afterLast()V" />
-		<method name="beforeFirst()V" />
-		<method name="cancelRowUpdates()V" />
-		<method name="clearWarnings()V" />
-		<method name="close()V" />
-		<method name="deleteRow()V" />
-		<method name="findColumn(Ljava/lang/String;)I" />
-		<method name="first()Z" />
-		<method name="getArray(I)Ljava/sql/Array;" />
-		<method name="getArray(Ljava/lang/String;)Ljava/sql/Array;" />
-		<method name="getAsciiStream(I)Ljava/io/InputStream;" />
-		<method name="getAsciiStream(Ljava/lang/String;)Ljava/io/InputStream;" />
-		<method name="getBigDecimal(I)Ljava/math/BigDecimal;" />
-		<method name="getBigDecimal(II)Ljava/math/BigDecimal;" />
-		<method name="getBigDecimal(Ljava/lang/String;)Ljava/math/BigDecimal;" />
-		<method name="getBigDecimal(Ljava/lang/String;I)Ljava/math/BigDecimal;" />
-		<method name="getBinaryStream(I)Ljava/io/InputStream;" />
-		<method name="getBinaryStream(Ljava/lang/String;)Ljava/io/InputStream;" />
-		<method name="getBlob(I)Ljava/sql/Blob;" />
-		<method name="getBlob(Ljava/lang/String;)Ljava/sql/Blob;" />
-		<method name="getBoolean(I)Z" />
-		<method name="getBoolean(Ljava/lang/String;)Z" />
-		<method name="getByte(I)B" />
-		<method name="getByte(Ljava/lang/String;)B" />
-		<method name="getBytes(I)[B" />
-		<method name="getBytes(Ljava/lang/String;)[B" />
-		<method name="getCharacterStream(I)Ljava/io/Reader;" />
-		<method name="getCharacterStream(Ljava/lang/String;)Ljava/io/Reader;" />
-		<method name="getClob(I)Ljava/sql/Clob;" />
-		<method name="getClob(Ljava/lang/String;)Ljava/sql/Clob;" />
-		<method name="getConcurrency()I" />
-		<method name="getCursorName()Ljava/lang/String;" />
-		<method name="getDate(I)Ljava/sql/Date;" />
-		<method name="getDate(ILjava/util/Calendar;)Ljava/sql/Date;" />
-		<method name="getDate(Ljava/lang/String;)Ljava/sql/Date;" />
-		<method name="getDate(Ljava/lang/String;Ljava/util/Calendar;)Ljava/sql/Date;" />
-		<method name="getDouble(I)D" />
-		<method name="getDouble(Ljava/lang/String;)D" />
-		<method name="getFetchDirection()I" />
-		<method name="getFetchSize()I" />
-		<method name="getFloat(I)F" />
-		<method name="getFloat(Ljava/lang/String;)F" />
-		<method name="getHoldability()I" since="9" />
-		<method name="getInt(I)I" />
-		<method name="getInt(Ljava/lang/String;)I" />
-		<method name="getLong(I)J" />
-		<method name="getLong(Ljava/lang/String;)J" />
-		<method name="getMetaData()Ljava/sql/ResultSetMetaData;" />
-		<method name="getNCharacterStream(I)Ljava/io/Reader;" since="9" />
-		<method name="getNCharacterStream(Ljava/lang/String;)Ljava/io/Reader;" since="9" />
-		<method name="getNClob(I)Ljava/sql/NClob;" since="9" />
-		<method name="getNClob(Ljava/lang/String;)Ljava/sql/NClob;" since="9" />
-		<method name="getNString(I)Ljava/lang/String;" since="9" />
-		<method name="getNString(Ljava/lang/String;)Ljava/lang/String;" since="9" />
-		<method name="getObject(I)Ljava/lang/Object;" />
-		<method name="getObject(ILjava/util/Map;)Ljava/lang/Object;" />
-		<method name="getObject(Ljava/lang/String;)Ljava/lang/Object;" />
-		<method name="getObject(Ljava/lang/String;Ljava/util/Map;)Ljava/lang/Object;" />
-		<method name="getRef(I)Ljava/sql/Ref;" />
-		<method name="getRef(Ljava/lang/String;)Ljava/sql/Ref;" />
-		<method name="getRow()I" />
-		<method name="getRowId(I)Ljava/sql/RowId;" since="9" />
-		<method name="getRowId(Ljava/lang/String;)Ljava/sql/RowId;" since="9" />
-		<method name="getSQLXML(I)Ljava/sql/SQLXML;" since="9" />
-		<method name="getSQLXML(Ljava/lang/String;)Ljava/sql/SQLXML;" since="9" />
-		<method name="getShort(I)S" />
-		<method name="getShort(Ljava/lang/String;)S" />
-		<method name="getStatement()Ljava/sql/Statement;" />
-		<method name="getString(I)Ljava/lang/String;" />
-		<method name="getString(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="getTime(I)Ljava/sql/Time;" />
-		<method name="getTime(ILjava/util/Calendar;)Ljava/sql/Time;" />
-		<method name="getTime(Ljava/lang/String;)Ljava/sql/Time;" />
-		<method name="getTime(Ljava/lang/String;Ljava/util/Calendar;)Ljava/sql/Time;" />
-		<method name="getTimestamp(I)Ljava/sql/Timestamp;" />
-		<method name="getTimestamp(ILjava/util/Calendar;)Ljava/sql/Timestamp;" />
-		<method name="getTimestamp(Ljava/lang/String;)Ljava/sql/Timestamp;" />
-		<method name="getTimestamp(Ljava/lang/String;Ljava/util/Calendar;)Ljava/sql/Timestamp;" />
-		<method name="getType()I" />
-		<method name="getURL(I)Ljava/net/URL;" />
-		<method name="getURL(Ljava/lang/String;)Ljava/net/URL;" />
-		<method name="getUnicodeStream(I)Ljava/io/InputStream;" />
-		<method name="getUnicodeStream(Ljava/lang/String;)Ljava/io/InputStream;" />
-		<method name="getWarnings()Ljava/sql/SQLWarning;" />
-		<method name="insertRow()V" />
-		<method name="isAfterLast()Z" />
-		<method name="isBeforeFirst()Z" />
-		<method name="isClosed()Z" since="9" />
-		<method name="isFirst()Z" />
-		<method name="isLast()Z" />
-		<method name="last()Z" />
-		<method name="moveToCurrentRow()V" />
-		<method name="moveToInsertRow()V" />
-		<method name="next()Z" />
-		<method name="previous()Z" />
-		<method name="refreshRow()V" />
-		<method name="relative(I)Z" />
-		<method name="rowDeleted()Z" />
-		<method name="rowInserted()Z" />
-		<method name="rowUpdated()Z" />
-		<method name="setFetchDirection(I)V" />
-		<method name="setFetchSize(I)V" />
-		<method name="updateArray(ILjava/sql/Array;)V" />
-		<method name="updateArray(Ljava/lang/String;Ljava/sql/Array;)V" />
-		<method name="updateAsciiStream(ILjava/io/InputStream;)V" since="9" />
-		<method name="updateAsciiStream(ILjava/io/InputStream;I)V" />
-		<method name="updateAsciiStream(ILjava/io/InputStream;J)V" since="9" />
-		<method name="updateAsciiStream(Ljava/lang/String;Ljava/io/InputStream;)V" since="9" />
-		<method name="updateAsciiStream(Ljava/lang/String;Ljava/io/InputStream;I)V" />
-		<method name="updateAsciiStream(Ljava/lang/String;Ljava/io/InputStream;J)V" since="9" />
-		<method name="updateBigDecimal(ILjava/math/BigDecimal;)V" />
-		<method name="updateBigDecimal(Ljava/lang/String;Ljava/math/BigDecimal;)V" />
-		<method name="updateBinaryStream(ILjava/io/InputStream;)V" since="9" />
-		<method name="updateBinaryStream(ILjava/io/InputStream;I)V" />
-		<method name="updateBinaryStream(ILjava/io/InputStream;J)V" since="9" />
-		<method name="updateBinaryStream(Ljava/lang/String;Ljava/io/InputStream;)V" since="9" />
-		<method name="updateBinaryStream(Ljava/lang/String;Ljava/io/InputStream;I)V" />
-		<method name="updateBinaryStream(Ljava/lang/String;Ljava/io/InputStream;J)V" since="9" />
-		<method name="updateBlob(ILjava/io/InputStream;)V" since="9" />
-		<method name="updateBlob(ILjava/io/InputStream;J)V" since="9" />
-		<method name="updateBlob(ILjava/sql/Blob;)V" />
-		<method name="updateBlob(Ljava/lang/String;Ljava/io/InputStream;)V" since="9" />
-		<method name="updateBlob(Ljava/lang/String;Ljava/io/InputStream;J)V" since="9" />
-		<method name="updateBlob(Ljava/lang/String;Ljava/sql/Blob;)V" />
-		<method name="updateBoolean(IZ)V" />
-		<method name="updateBoolean(Ljava/lang/String;Z)V" />
-		<method name="updateByte(IB)V" />
-		<method name="updateByte(Ljava/lang/String;B)V" />
-		<method name="updateBytes(I[B)V" />
-		<method name="updateBytes(Ljava/lang/String;[B)V" />
-		<method name="updateCharacterStream(ILjava/io/Reader;)V" since="9" />
-		<method name="updateCharacterStream(ILjava/io/Reader;I)V" />
-		<method name="updateCharacterStream(ILjava/io/Reader;J)V" since="9" />
-		<method name="updateCharacterStream(Ljava/lang/String;Ljava/io/Reader;)V" since="9" />
-		<method name="updateCharacterStream(Ljava/lang/String;Ljava/io/Reader;I)V" />
-		<method name="updateCharacterStream(Ljava/lang/String;Ljava/io/Reader;J)V" since="9" />
-		<method name="updateClob(ILjava/io/Reader;)V" since="9" />
-		<method name="updateClob(ILjava/io/Reader;J)V" since="9" />
-		<method name="updateClob(ILjava/sql/Clob;)V" />
-		<method name="updateClob(Ljava/lang/String;Ljava/io/Reader;)V" since="9" />
-		<method name="updateClob(Ljava/lang/String;Ljava/io/Reader;J)V" since="9" />
-		<method name="updateClob(Ljava/lang/String;Ljava/sql/Clob;)V" />
-		<method name="updateDate(ILjava/sql/Date;)V" />
-		<method name="updateDate(Ljava/lang/String;Ljava/sql/Date;)V" />
-		<method name="updateDouble(ID)V" />
-		<method name="updateDouble(Ljava/lang/String;D)V" />
-		<method name="updateFloat(IF)V" />
-		<method name="updateFloat(Ljava/lang/String;F)V" />
-		<method name="updateInt(II)V" />
-		<method name="updateInt(Ljava/lang/String;I)V" />
-		<method name="updateLong(IJ)V" />
-		<method name="updateLong(Ljava/lang/String;J)V" />
-		<method name="updateNCharacterStream(ILjava/io/Reader;)V" since="9" />
-		<method name="updateNCharacterStream(ILjava/io/Reader;J)V" since="9" />
-		<method name="updateNCharacterStream(Ljava/lang/String;Ljava/io/Reader;)V" since="9" />
-		<method name="updateNCharacterStream(Ljava/lang/String;Ljava/io/Reader;J)V" since="9" />
-		<method name="updateNClob(ILjava/io/Reader;)V" since="9" />
-		<method name="updateNClob(ILjava/io/Reader;J)V" since="9" />
-		<method name="updateNClob(ILjava/sql/NClob;)V" since="9" />
-		<method name="updateNClob(Ljava/lang/String;Ljava/io/Reader;)V" since="9" />
-		<method name="updateNClob(Ljava/lang/String;Ljava/io/Reader;J)V" since="9" />
-		<method name="updateNClob(Ljava/lang/String;Ljava/sql/NClob;)V" since="9" />
-		<method name="updateNString(ILjava/lang/String;)V" since="9" />
-		<method name="updateNString(Ljava/lang/String;Ljava/lang/String;)V" since="9" />
-		<method name="updateNull(I)V" />
-		<method name="updateNull(Ljava/lang/String;)V" />
-		<method name="updateObject(ILjava/lang/Object;)V" />
-		<method name="updateObject(ILjava/lang/Object;I)V" />
-		<method name="updateObject(Ljava/lang/String;Ljava/lang/Object;)V" />
-		<method name="updateObject(Ljava/lang/String;Ljava/lang/Object;I)V" />
-		<method name="updateRef(ILjava/sql/Ref;)V" />
-		<method name="updateRef(Ljava/lang/String;Ljava/sql/Ref;)V" />
-		<method name="updateRow()V" />
-		<method name="updateRowId(ILjava/sql/RowId;)V" since="9" />
-		<method name="updateRowId(Ljava/lang/String;Ljava/sql/RowId;)V" since="9" />
-		<method name="updateSQLXML(ILjava/sql/SQLXML;)V" since="9" />
-		<method name="updateSQLXML(Ljava/lang/String;Ljava/sql/SQLXML;)V" since="9" />
-		<method name="updateShort(IS)V" />
-		<method name="updateShort(Ljava/lang/String;S)V" />
-		<method name="updateString(ILjava/lang/String;)V" />
-		<method name="updateString(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="updateTime(ILjava/sql/Time;)V" />
-		<method name="updateTime(Ljava/lang/String;Ljava/sql/Time;)V" />
-		<method name="updateTimestamp(ILjava/sql/Timestamp;)V" />
-		<method name="updateTimestamp(Ljava/lang/String;Ljava/sql/Timestamp;)V" />
-		<method name="wasNull()Z" />
-		<field name="CLOSE_CURSORS_AT_COMMIT" />
-		<field name="CONCUR_READ_ONLY" />
-		<field name="CONCUR_UPDATABLE" />
-		<field name="FETCH_FORWARD" />
-		<field name="FETCH_REVERSE" />
-		<field name="FETCH_UNKNOWN" />
-		<field name="HOLD_CURSORS_OVER_COMMIT" />
-		<field name="TYPE_FORWARD_ONLY" />
-		<field name="TYPE_SCROLL_INSENSITIVE" />
-		<field name="TYPE_SCROLL_SENSITIVE" />
-	</class>
-	<class name="java/sql/ResultSetMetaData" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/sql/Wrapper" since="9" />
-		<method name="getCatalogName(I)Ljava/lang/String;" />
-		<method name="getColumnClassName(I)Ljava/lang/String;" />
-		<method name="getColumnCount()I" />
-		<method name="getColumnDisplaySize(I)I" />
-		<method name="getColumnLabel(I)Ljava/lang/String;" />
-		<method name="getColumnName(I)Ljava/lang/String;" />
-		<method name="getColumnType(I)I" />
-		<method name="getColumnTypeName(I)Ljava/lang/String;" />
-		<method name="getPrecision(I)I" />
-		<method name="getScale(I)I" />
-		<method name="getSchemaName(I)Ljava/lang/String;" />
-		<method name="getTableName(I)Ljava/lang/String;" />
-		<method name="isAutoIncrement(I)Z" />
-		<method name="isCaseSensitive(I)Z" />
-		<method name="isCurrency(I)Z" />
-		<method name="isDefinitelyWritable(I)Z" />
-		<method name="isNullable(I)I" />
-		<method name="isReadOnly(I)Z" />
-		<method name="isSearchable(I)Z" />
-		<method name="isSigned(I)Z" />
-		<method name="isWritable(I)Z" />
-		<field name="columnNoNulls" />
-		<field name="columnNullable" />
-		<field name="columnNullableUnknown" />
-	</class>
-	<class name="java/sql/RowId" since="9">
-		<extends name="java/lang/Object" />
-		<method name="getBytes()[B" />
-	</class>
-	<class name="java/sql/RowIdLifetime" since="9">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Ljava/sql/RowIdLifetime;" />
-		<method name="values()[Ljava/sql/RowIdLifetime;" />
-		<field name="ROWID_UNSUPPORTED" />
-		<field name="ROWID_VALID_FOREVER" />
-		<field name="ROWID_VALID_OTHER" />
-		<field name="ROWID_VALID_SESSION" />
-		<field name="ROWID_VALID_TRANSACTION" />
-	</class>
-	<class name="java/sql/SQLClientInfoException" since="9">
-		<extends name="java/sql/SQLException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;ILjava/util/Map;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;ILjava/util/Map;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/util/Map;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/util/Map;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/util/Map;)V" />
-		<method name="&lt;init>(Ljava/util/Map;Ljava/lang/Throwable;)V" />
-		<method name="getFailedProperties()Ljava/util/Map;" />
-	</class>
-	<class name="java/sql/SQLData" since="1">
-		<extends name="java/lang/Object" />
-		<method name="getSQLTypeName()Ljava/lang/String;" />
-		<method name="readSQL(Ljava/sql/SQLInput;Ljava/lang/String;)V" />
-		<method name="writeSQL(Ljava/sql/SQLOutput;)V" />
-	</class>
-	<class name="java/sql/SQLDataException" since="9">
-		<extends name="java/sql/SQLNonTransientException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;I)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="java/sql/SQLException" since="1">
-		<extends name="java/lang/Exception" />
-		<implements name="java/io/Serializable" />
-		<implements name="java/lang/Iterable" since="9" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;I)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/Throwable;)V" since="9" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V" since="9" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" since="9" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" since="9" />
-		<method name="getErrorCode()I" />
-		<method name="getNextException()Ljava/sql/SQLException;" />
-		<method name="getSQLState()Ljava/lang/String;" />
-		<method name="setNextException(Ljava/sql/SQLException;)V" />
-	</class>
-	<class name="java/sql/SQLFeatureNotSupportedException" since="9">
-		<extends name="java/sql/SQLNonTransientException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;I)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="java/sql/SQLInput" since="1">
-		<extends name="java/lang/Object" />
-		<method name="readArray()Ljava/sql/Array;" />
-		<method name="readAsciiStream()Ljava/io/InputStream;" />
-		<method name="readBigDecimal()Ljava/math/BigDecimal;" />
-		<method name="readBinaryStream()Ljava/io/InputStream;" />
-		<method name="readBlob()Ljava/sql/Blob;" />
-		<method name="readBoolean()Z" />
-		<method name="readByte()B" />
-		<method name="readBytes()[B" />
-		<method name="readCharacterStream()Ljava/io/Reader;" />
-		<method name="readClob()Ljava/sql/Clob;" />
-		<method name="readDate()Ljava/sql/Date;" />
-		<method name="readDouble()D" />
-		<method name="readFloat()F" />
-		<method name="readInt()I" />
-		<method name="readLong()J" />
-		<method name="readNClob()Ljava/sql/NClob;" since="9" />
-		<method name="readNString()Ljava/lang/String;" since="9" />
-		<method name="readObject()Ljava/lang/Object;" />
-		<method name="readRef()Ljava/sql/Ref;" />
-		<method name="readRowId()Ljava/sql/RowId;" since="9" />
-		<method name="readSQLXML()Ljava/sql/SQLXML;" since="9" />
-		<method name="readShort()S" />
-		<method name="readString()Ljava/lang/String;" />
-		<method name="readTime()Ljava/sql/Time;" />
-		<method name="readTimestamp()Ljava/sql/Timestamp;" />
-		<method name="readURL()Ljava/net/URL;" />
-		<method name="wasNull()Z" />
-	</class>
-	<class name="java/sql/SQLIntegrityConstraintViolationException" since="9">
-		<extends name="java/sql/SQLNonTransientException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;I)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="java/sql/SQLInvalidAuthorizationSpecException" since="9">
-		<extends name="java/sql/SQLNonTransientException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;I)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="java/sql/SQLNonTransientConnectionException" since="9">
-		<extends name="java/sql/SQLNonTransientException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;I)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="java/sql/SQLNonTransientException" since="9">
-		<extends name="java/sql/SQLException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;I)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="java/sql/SQLOutput" since="1">
-		<extends name="java/lang/Object" />
-		<method name="writeArray(Ljava/sql/Array;)V" />
-		<method name="writeAsciiStream(Ljava/io/InputStream;)V" />
-		<method name="writeBigDecimal(Ljava/math/BigDecimal;)V" />
-		<method name="writeBinaryStream(Ljava/io/InputStream;)V" />
-		<method name="writeBlob(Ljava/sql/Blob;)V" />
-		<method name="writeBoolean(Z)V" />
-		<method name="writeByte(B)V" />
-		<method name="writeBytes([B)V" />
-		<method name="writeCharacterStream(Ljava/io/Reader;)V" />
-		<method name="writeClob(Ljava/sql/Clob;)V" />
-		<method name="writeDate(Ljava/sql/Date;)V" />
-		<method name="writeDouble(D)V" />
-		<method name="writeFloat(F)V" />
-		<method name="writeInt(I)V" />
-		<method name="writeLong(J)V" />
-		<method name="writeNClob(Ljava/sql/NClob;)V" since="9" />
-		<method name="writeNString(Ljava/lang/String;)V" since="9" />
-		<method name="writeObject(Ljava/sql/SQLData;)V" />
-		<method name="writeRef(Ljava/sql/Ref;)V" />
-		<method name="writeRowId(Ljava/sql/RowId;)V" since="9" />
-		<method name="writeSQLXML(Ljava/sql/SQLXML;)V" since="9" />
-		<method name="writeShort(S)V" />
-		<method name="writeString(Ljava/lang/String;)V" />
-		<method name="writeStruct(Ljava/sql/Struct;)V" />
-		<method name="writeTime(Ljava/sql/Time;)V" />
-		<method name="writeTimestamp(Ljava/sql/Timestamp;)V" />
-		<method name="writeURL(Ljava/net/URL;)V" />
-	</class>
-	<class name="java/sql/SQLPermission" since="1">
-		<extends name="java/security/BasicPermission" />
-		<implements name="java/io/Serializable" />
-		<implements name="java/security/Guard" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
-	</class>
-	<class name="java/sql/SQLRecoverableException" since="9">
-		<extends name="java/sql/SQLException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;I)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="java/sql/SQLSyntaxErrorException" since="9">
-		<extends name="java/sql/SQLNonTransientException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;I)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="java/sql/SQLTimeoutException" since="9">
-		<extends name="java/sql/SQLTransientException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;I)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="java/sql/SQLTransactionRollbackException" since="9">
-		<extends name="java/sql/SQLTransientException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;I)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="java/sql/SQLTransientConnectionException" since="9">
-		<extends name="java/sql/SQLTransientException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;I)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="java/sql/SQLTransientException" since="9">
-		<extends name="java/sql/SQLException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;I)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="java/sql/SQLWarning" since="1">
-		<extends name="java/sql/SQLException" />
-		<implements name="java/io/Serializable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;I)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/Throwable;)V" since="9" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V" since="9" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" since="9" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" since="9" />
-		<method name="getNextWarning()Ljava/sql/SQLWarning;" />
-		<method name="setNextWarning(Ljava/sql/SQLWarning;)V" />
-	</class>
-	<class name="java/sql/SQLXML" since="9">
-		<extends name="java/lang/Object" />
-		<method name="free()V" />
-		<method name="getBinaryStream()Ljava/io/InputStream;" />
-		<method name="getCharacterStream()Ljava/io/Reader;" />
-		<method name="getSource(Ljava/lang/Class;)Ljavax/xml/transform/Source;" />
-		<method name="getString()Ljava/lang/String;" />
-		<method name="setBinaryStream()Ljava/io/OutputStream;" />
-		<method name="setCharacterStream()Ljava/io/Writer;" />
-		<method name="setResult(Ljava/lang/Class;)Ljavax/xml/transform/Result;" />
-		<method name="setString(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/sql/Savepoint" since="1">
-		<extends name="java/lang/Object" />
-		<method name="getSavepointId()I" />
-		<method name="getSavepointName()Ljava/lang/String;" />
-	</class>
-	<class name="java/sql/Statement" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/AutoCloseable" since="19" />
-		<implements name="java/sql/Wrapper" since="9" />
-		<method name="addBatch(Ljava/lang/String;)V" />
-		<method name="cancel()V" />
-		<method name="clearBatch()V" />
-		<method name="clearWarnings()V" />
-		<method name="close()V" />
-		<method name="execute(Ljava/lang/String;)Z" />
-		<method name="execute(Ljava/lang/String;I)Z" />
-		<method name="execute(Ljava/lang/String;[I)Z" />
-		<method name="execute(Ljava/lang/String;[Ljava/lang/String;)Z" />
-		<method name="executeBatch()[I" />
-		<method name="executeQuery(Ljava/lang/String;)Ljava/sql/ResultSet;" />
-		<method name="executeUpdate(Ljava/lang/String;)I" />
-		<method name="executeUpdate(Ljava/lang/String;I)I" />
-		<method name="executeUpdate(Ljava/lang/String;[I)I" />
-		<method name="executeUpdate(Ljava/lang/String;[Ljava/lang/String;)I" />
-		<method name="getConnection()Ljava/sql/Connection;" />
-		<method name="getFetchDirection()I" />
-		<method name="getFetchSize()I" />
-		<method name="getGeneratedKeys()Ljava/sql/ResultSet;" />
-		<method name="getMaxFieldSize()I" />
-		<method name="getMaxRows()I" />
-		<method name="getMoreResults()Z" />
-		<method name="getMoreResults(I)Z" />
-		<method name="getQueryTimeout()I" />
-		<method name="getResultSet()Ljava/sql/ResultSet;" />
-		<method name="getResultSetConcurrency()I" />
-		<method name="getResultSetHoldability()I" />
-		<method name="getResultSetType()I" />
-		<method name="getUpdateCount()I" />
-		<method name="getWarnings()Ljava/sql/SQLWarning;" />
-		<method name="isClosed()Z" since="9" />
-		<method name="isPoolable()Z" since="9" />
-		<method name="setCursorName(Ljava/lang/String;)V" />
-		<method name="setEscapeProcessing(Z)V" />
-		<method name="setFetchDirection(I)V" />
-		<method name="setFetchSize(I)V" />
-		<method name="setMaxFieldSize(I)V" />
-		<method name="setMaxRows(I)V" />
-		<method name="setPoolable(Z)V" since="9" />
-		<method name="setQueryTimeout(I)V" />
-		<field name="CLOSE_ALL_RESULTS" />
-		<field name="CLOSE_CURRENT_RESULT" />
-		<field name="EXECUTE_FAILED" />
-		<field name="KEEP_CURRENT_RESULT" />
-		<field name="NO_GENERATED_KEYS" />
-		<field name="RETURN_GENERATED_KEYS" />
-		<field name="SUCCESS_NO_INFO" />
-	</class>
-	<class name="java/sql/Struct" since="1">
-		<extends name="java/lang/Object" />
-		<method name="getAttributes()[Ljava/lang/Object;" />
-		<method name="getAttributes(Ljava/util/Map;)[Ljava/lang/Object;" />
-		<method name="getSQLTypeName()Ljava/lang/String;" />
-	</class>
-	<class name="java/sql/Time" since="1">
-		<extends name="java/util/Date" />
-		<method name="&lt;init>(III)V" />
-		<method name="&lt;init>(J)V" />
-		<method name="valueOf(Ljava/lang/String;)Ljava/sql/Time;" />
-	</class>
-	<class name="java/sql/Timestamp" since="1">
-		<extends name="java/util/Date" />
-		<method name="&lt;init>(IIIIIII)V" />
-		<method name="&lt;init>(J)V" />
-		<method name="after(Ljava/sql/Timestamp;)Z" />
-		<method name="before(Ljava/sql/Timestamp;)Z" />
-		<method name="compareTo(Ljava/sql/Timestamp;)I" />
-		<method name="equals(Ljava/sql/Timestamp;)Z" />
-		<method name="getNanos()I" />
-		<method name="setNanos(I)V" />
-		<method name="valueOf(Ljava/lang/String;)Ljava/sql/Timestamp;" />
-	</class>
-	<class name="java/sql/Types" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="ARRAY" />
-		<field name="BIGINT" />
-		<field name="BINARY" />
-		<field name="BIT" />
-		<field name="BLOB" />
-		<field name="BOOLEAN" />
-		<field name="CHAR" />
-		<field name="CLOB" />
-		<field name="DATALINK" />
-		<field name="DATE" />
-		<field name="DECIMAL" />
-		<field name="DISTINCT" />
-		<field name="DOUBLE" />
-		<field name="FLOAT" />
-		<field name="INTEGER" />
-		<field name="JAVA_OBJECT" />
-		<field name="LONGNVARCHAR" since="9" />
-		<field name="LONGVARBINARY" />
-		<field name="LONGVARCHAR" />
-		<field name="NCHAR" since="9" />
-		<field name="NCLOB" since="9" />
-		<field name="NULL" />
-		<field name="NUMERIC" />
-		<field name="NVARCHAR" since="9" />
-		<field name="OTHER" />
-		<field name="REAL" />
-		<field name="REF" />
-		<field name="ROWID" since="9" />
-		<field name="SMALLINT" />
-		<field name="SQLXML" since="9" />
-		<field name="STRUCT" />
-		<field name="TIME" />
-		<field name="TIMESTAMP" />
-		<field name="TINYINT" />
-		<field name="VARBINARY" />
-		<field name="VARCHAR" />
-	</class>
-	<class name="java/sql/Wrapper" since="9">
-		<extends name="java/lang/Object" />
-		<method name="isWrapperFor(Ljava/lang/Class;)Z" />
-		<method name="unwrap(Ljava/lang/Class;)Ljava/lang/Object;" />
-	</class>
-	<class name="java/text/Annotation" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/lang/Object;)V" />
-		<method name="getValue()Ljava/lang/Object;" />
-	</class>
-	<class name="java/text/AttributedCharacterIterator" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/text/CharacterIterator" />
-		<method name="getAllAttributeKeys()Ljava/util/Set;" />
-		<method name="getAttribute(Ljava/text/AttributedCharacterIterator$Attribute;)Ljava/lang/Object;" />
-		<method name="getAttributes()Ljava/util/Map;" />
-		<method name="getRunLimit()I" />
-		<method name="getRunLimit(Ljava/text/AttributedCharacterIterator$Attribute;)I" />
-		<method name="getRunLimit(Ljava/util/Set;)I" />
-		<method name="getRunStart()I" />
-		<method name="getRunStart(Ljava/text/AttributedCharacterIterator$Attribute;)I" />
-		<method name="getRunStart(Ljava/util/Set;)I" />
-	</class>
-	<class name="java/text/AttributedCharacterIterator$Attribute" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="getName()Ljava/lang/String;" />
-		<method name="readResolve()Ljava/lang/Object;" />
-		<field name="INPUT_METHOD_SEGMENT" />
-		<field name="LANGUAGE" />
-		<field name="READING" />
-	</class>
-	<class name="java/text/AttributedString" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/util/Map;)V" />
-		<method name="&lt;init>(Ljava/text/AttributedCharacterIterator;)V" />
-		<method name="&lt;init>(Ljava/text/AttributedCharacterIterator;II)V" />
-		<method name="&lt;init>(Ljava/text/AttributedCharacterIterator;II[Ljava/text/AttributedCharacterIterator$Attribute;)V" />
-		<method name="addAttribute(Ljava/text/AttributedCharacterIterator$Attribute;Ljava/lang/Object;)V" />
-		<method name="addAttribute(Ljava/text/AttributedCharacterIterator$Attribute;Ljava/lang/Object;II)V" />
-		<method name="addAttributes(Ljava/util/Map;II)V" />
-		<method name="getIterator()Ljava/text/AttributedCharacterIterator;" />
-		<method name="getIterator([Ljava/text/AttributedCharacterIterator$Attribute;)Ljava/text/AttributedCharacterIterator;" />
-		<method name="getIterator([Ljava/text/AttributedCharacterIterator$Attribute;II)Ljava/text/AttributedCharacterIterator;" />
-	</class>
-	<class name="java/text/Bidi" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/lang/String;I)V" />
-		<method name="&lt;init>(Ljava/text/AttributedCharacterIterator;)V" />
-		<method name="&lt;init>([CI[BIII)V" />
-		<method name="baseIsLeftToRight()Z" />
-		<method name="createLineBidi(II)Ljava/text/Bidi;" />
-		<method name="getBaseLevel()I" />
-		<method name="getLength()I" />
-		<method name="getLevelAt(I)I" />
-		<method name="getRunCount()I" />
-		<method name="getRunLevel(I)I" />
-		<method name="getRunLimit(I)I" />
-		<method name="getRunStart(I)I" />
-		<method name="isLeftToRight()Z" />
-		<method name="isMixed()Z" />
-		<method name="isRightToLeft()Z" />
-		<method name="reorderVisually([BI[Ljava/lang/Object;II)V" />
-		<method name="requiresBidi([CII)Z" />
-		<field name="DIRECTION_DEFAULT_LEFT_TO_RIGHT" />
-		<field name="DIRECTION_DEFAULT_RIGHT_TO_LEFT" />
-		<field name="DIRECTION_LEFT_TO_RIGHT" />
-		<field name="DIRECTION_RIGHT_TO_LEFT" />
-	</class>
-	<class name="java/text/BreakIterator" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/Cloneable" />
-		<method name="&lt;init>()V" />
-		<method name="current()I" />
-		<method name="first()I" />
-		<method name="following(I)I" />
-		<method name="getAvailableLocales()[Ljava/util/Locale;" />
-		<method name="getCharacterInstance()Ljava/text/BreakIterator;" />
-		<method name="getCharacterInstance(Ljava/util/Locale;)Ljava/text/BreakIterator;" />
-		<method name="getInt([BI)I" />
-		<method name="getLineInstance()Ljava/text/BreakIterator;" />
-		<method name="getLineInstance(Ljava/util/Locale;)Ljava/text/BreakIterator;" />
-		<method name="getLong([BI)J" />
-		<method name="getSentenceInstance()Ljava/text/BreakIterator;" />
-		<method name="getSentenceInstance(Ljava/util/Locale;)Ljava/text/BreakIterator;" />
-		<method name="getShort([BI)S" />
-		<method name="getText()Ljava/text/CharacterIterator;" />
-		<method name="getWordInstance()Ljava/text/BreakIterator;" />
-		<method name="getWordInstance(Ljava/util/Locale;)Ljava/text/BreakIterator;" />
-		<method name="isBoundary(I)Z" />
-		<method name="last()I" />
-		<method name="next()I" />
-		<method name="next(I)I" />
-		<method name="preceding(I)I" />
-		<method name="previous()I" />
-		<method name="setText(Ljava/lang/String;)V" />
-		<method name="setText(Ljava/text/CharacterIterator;)V" />
-		<field name="DONE" />
-	</class>
-	<class name="java/text/CharacterIterator" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/Cloneable" />
-		<method name="current()C" />
-		<method name="first()C" />
-		<method name="getBeginIndex()I" />
-		<method name="getEndIndex()I" />
-		<method name="getIndex()I" />
-		<method name="last()C" />
-		<method name="next()C" />
-		<method name="previous()C" />
-		<method name="setIndex(I)C" />
-		<field name="DONE" />
-	</class>
-	<class name="java/text/ChoiceFormat" since="1">
-		<extends name="java/text/NumberFormat" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>([D[Ljava/lang/String;)V" />
-		<method name="applyPattern(Ljava/lang/String;)V" />
-		<method name="getFormats()[Ljava/lang/Object;" />
-		<method name="getLimits()[D" />
-		<method name="nextDouble(D)D" />
-		<method name="nextDouble(DZ)D" />
-		<method name="previousDouble(D)D" />
-		<method name="setChoices([D[Ljava/lang/String;)V" />
-		<method name="toPattern()Ljava/lang/String;" />
-	</class>
-	<class name="java/text/CollationElementIterator" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getMaxExpansion(I)I" />
-		<method name="getOffset()I" />
-		<method name="next()I" />
-		<method name="previous()I" />
-		<method name="primaryOrder(I)I" />
-		<method name="reset()V" />
-		<method name="secondaryOrder(I)S" />
-		<method name="setOffset(I)V" />
-		<method name="setText(Ljava/lang/String;)V" />
-		<method name="setText(Ljava/text/CharacterIterator;)V" />
-		<method name="tertiaryOrder(I)S" />
-		<field name="NULLORDER" />
-	</class>
-	<class name="java/text/CollationKey" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/Comparable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" since="9" />
-		<method name="compareTo(Ljava/text/CollationKey;)I" />
-		<method name="getSourceString()Ljava/lang/String;" />
-		<method name="toByteArray()[B" />
-	</class>
-	<class name="java/text/Collator" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/Cloneable" />
-		<implements name="java/util/Comparator" />
-		<method name="&lt;init>()V" />
-		<method name="compare(Ljava/lang/String;Ljava/lang/String;)I" />
-		<method name="equals(Ljava/lang/String;Ljava/lang/String;)Z" />
-		<method name="getAvailableLocales()[Ljava/util/Locale;" />
-		<method name="getCollationKey(Ljava/lang/String;)Ljava/text/CollationKey;" />
-		<method name="getDecomposition()I" />
-		<method name="getInstance()Ljava/text/Collator;" />
-		<method name="getInstance(Ljava/util/Locale;)Ljava/text/Collator;" />
-		<method name="getStrength()I" />
-		<method name="setDecomposition(I)V" />
-		<method name="setStrength(I)V" />
-		<field name="CANONICAL_DECOMPOSITION" />
-		<field name="FULL_DECOMPOSITION" />
-		<field name="IDENTICAL" />
-		<field name="NO_DECOMPOSITION" />
-		<field name="PRIMARY" />
-		<field name="SECONDARY" />
-		<field name="TERTIARY" />
-	</class>
-	<class name="java/text/DateFormat" since="1">
-		<extends name="java/text/Format" />
-		<method name="&lt;init>()V" />
-		<method name="format(Ljava/util/Date;)Ljava/lang/String;" />
-		<method name="format(Ljava/util/Date;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;" />
-		<method name="getAvailableLocales()[Ljava/util/Locale;" />
-		<method name="getCalendar()Ljava/util/Calendar;" />
-		<method name="getDateInstance()Ljava/text/DateFormat;" />
-		<method name="getDateInstance(I)Ljava/text/DateFormat;" />
-		<method name="getDateInstance(ILjava/util/Locale;)Ljava/text/DateFormat;" />
-		<method name="getDateTimeInstance()Ljava/text/DateFormat;" />
-		<method name="getDateTimeInstance(II)Ljava/text/DateFormat;" />
-		<method name="getDateTimeInstance(IILjava/util/Locale;)Ljava/text/DateFormat;" />
-		<method name="getInstance()Ljava/text/DateFormat;" />
-		<method name="getNumberFormat()Ljava/text/NumberFormat;" />
-		<method name="getTimeInstance()Ljava/text/DateFormat;" />
-		<method name="getTimeInstance(I)Ljava/text/DateFormat;" />
-		<method name="getTimeInstance(ILjava/util/Locale;)Ljava/text/DateFormat;" />
-		<method name="getTimeZone()Ljava/util/TimeZone;" />
-		<method name="isLenient()Z" />
-		<method name="parse(Ljava/lang/String;)Ljava/util/Date;" />
-		<method name="parse(Ljava/lang/String;Ljava/text/ParsePosition;)Ljava/util/Date;" />
-		<method name="setCalendar(Ljava/util/Calendar;)V" />
-		<method name="setLenient(Z)V" />
-		<method name="setNumberFormat(Ljava/text/NumberFormat;)V" />
-		<method name="setTimeZone(Ljava/util/TimeZone;)V" />
-		<field name="AM_PM_FIELD" />
-		<field name="DATE_FIELD" />
-		<field name="DAY_OF_WEEK_FIELD" />
-		<field name="DAY_OF_WEEK_IN_MONTH_FIELD" />
-		<field name="DAY_OF_YEAR_FIELD" />
-		<field name="DEFAULT" />
-		<field name="ERA_FIELD" />
-		<field name="FULL" />
-		<field name="HOUR0_FIELD" />
-		<field name="HOUR1_FIELD" />
-		<field name="HOUR_OF_DAY0_FIELD" />
-		<field name="HOUR_OF_DAY1_FIELD" />
-		<field name="LONG" />
-		<field name="MEDIUM" />
-		<field name="MILLISECOND_FIELD" />
-		<field name="MINUTE_FIELD" />
-		<field name="MONTH_FIELD" />
-		<field name="SECOND_FIELD" />
-		<field name="SHORT" />
-		<field name="TIMEZONE_FIELD" />
-		<field name="WEEK_OF_MONTH_FIELD" />
-		<field name="WEEK_OF_YEAR_FIELD" />
-		<field name="YEAR_FIELD" />
-		<field name="calendar" />
-		<field name="numberFormat" />
-	</class>
-	<class name="java/text/DateFormat$Field" since="1">
-		<extends name="java/text/Format$Field" />
-		<method name="&lt;init>(Ljava/lang/String;I)V" />
-		<method name="getCalendarField()I" />
-		<method name="ofCalendarField(I)Ljava/text/DateFormat$Field;" />
-		<field name="AM_PM" />
-		<field name="DAY_OF_MONTH" />
-		<field name="DAY_OF_WEEK" />
-		<field name="DAY_OF_WEEK_IN_MONTH" />
-		<field name="DAY_OF_YEAR" />
-		<field name="ERA" />
-		<field name="HOUR0" />
-		<field name="HOUR1" />
-		<field name="HOUR_OF_DAY0" />
-		<field name="HOUR_OF_DAY1" />
-		<field name="MILLISECOND" />
-		<field name="MINUTE" />
-		<field name="MONTH" />
-		<field name="SECOND" />
-		<field name="TIME_ZONE" />
-		<field name="WEEK_OF_MONTH" />
-		<field name="WEEK_OF_YEAR" />
-		<field name="YEAR" />
-	</class>
-	<class name="java/text/DateFormatSymbols" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<implements name="java/lang/Cloneable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/util/Locale;)V" />
-		<method name="getAmPmStrings()[Ljava/lang/String;" />
-		<method name="getAvailableLocales()[Ljava/util/Locale;" since="9" />
-		<method name="getEras()[Ljava/lang/String;" />
-		<method name="getInstance()Ljava/text/DateFormatSymbols;" since="9" />
-		<method name="getInstance(Ljava/util/Locale;)Ljava/text/DateFormatSymbols;" since="9" />
-		<method name="getLocalPatternChars()Ljava/lang/String;" />
-		<method name="getMonths()[Ljava/lang/String;" />
-		<method name="getShortMonths()[Ljava/lang/String;" />
-		<method name="getShortWeekdays()[Ljava/lang/String;" />
-		<method name="getWeekdays()[Ljava/lang/String;" />
-		<method name="getZoneStrings()[[Ljava/lang/String;" />
-		<method name="setAmPmStrings([Ljava/lang/String;)V" />
-		<method name="setEras([Ljava/lang/String;)V" />
-		<method name="setLocalPatternChars(Ljava/lang/String;)V" />
-		<method name="setMonths([Ljava/lang/String;)V" />
-		<method name="setShortMonths([Ljava/lang/String;)V" />
-		<method name="setShortWeekdays([Ljava/lang/String;)V" />
-		<method name="setWeekdays([Ljava/lang/String;)V" />
-		<method name="setZoneStrings([[Ljava/lang/String;)V" />
-	</class>
-	<class name="java/text/DecimalFormat" since="1">
-		<extends name="java/text/NumberFormat" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/text/DecimalFormatSymbols;)V" />
-		<method name="applyLocalizedPattern(Ljava/lang/String;)V" />
-		<method name="applyPattern(Ljava/lang/String;)V" />
-		<method name="getDecimalFormatSymbols()Ljava/text/DecimalFormatSymbols;" />
-		<method name="getGroupingSize()I" />
-		<method name="getMultiplier()I" />
-		<method name="getNegativePrefix()Ljava/lang/String;" />
-		<method name="getNegativeSuffix()Ljava/lang/String;" />
-		<method name="getPositivePrefix()Ljava/lang/String;" />
-		<method name="getPositiveSuffix()Ljava/lang/String;" />
-		<method name="isDecimalSeparatorAlwaysShown()Z" />
-		<method name="isParseBigDecimal()Z" />
-		<method name="setDecimalFormatSymbols(Ljava/text/DecimalFormatSymbols;)V" />
-		<method name="setDecimalSeparatorAlwaysShown(Z)V" />
-		<method name="setGroupingSize(I)V" />
-		<method name="setMultiplier(I)V" />
-		<method name="setNegativePrefix(Ljava/lang/String;)V" />
-		<method name="setNegativeSuffix(Ljava/lang/String;)V" />
-		<method name="setParseBigDecimal(Z)V" />
-		<method name="setPositivePrefix(Ljava/lang/String;)V" />
-		<method name="setPositiveSuffix(Ljava/lang/String;)V" />
-		<method name="toLocalizedPattern()Ljava/lang/String;" />
-		<method name="toPattern()Ljava/lang/String;" />
-	</class>
-	<class name="java/text/DecimalFormatSymbols" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<implements name="java/lang/Cloneable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/util/Locale;)V" />
-		<method name="getAvailableLocales()[Ljava/util/Locale;" since="9" />
-		<method name="getCurrency()Ljava/util/Currency;" />
-		<method name="getCurrencySymbol()Ljava/lang/String;" />
-		<method name="getDecimalSeparator()C" />
-		<method name="getDigit()C" />
-		<method name="getExponentSeparator()Ljava/lang/String;" since="9" />
-		<method name="getGroupingSeparator()C" />
-		<method name="getInfinity()Ljava/lang/String;" />
-		<method name="getInstance()Ljava/text/DecimalFormatSymbols;" since="9" />
-		<method name="getInstance(Ljava/util/Locale;)Ljava/text/DecimalFormatSymbols;" since="9" />
-		<method name="getInternationalCurrencySymbol()Ljava/lang/String;" />
-		<method name="getMinusSign()C" />
-		<method name="getMonetaryDecimalSeparator()C" />
-		<method name="getNaN()Ljava/lang/String;" />
-		<method name="getPatternSeparator()C" />
-		<method name="getPerMill()C" />
-		<method name="getPercent()C" />
-		<method name="getZeroDigit()C" />
-		<method name="setCurrency(Ljava/util/Currency;)V" />
-		<method name="setCurrencySymbol(Ljava/lang/String;)V" />
-		<method name="setDecimalSeparator(C)V" />
-		<method name="setDigit(C)V" />
-		<method name="setExponentSeparator(Ljava/lang/String;)V" since="9" />
-		<method name="setGroupingSeparator(C)V" />
-		<method name="setInfinity(Ljava/lang/String;)V" />
-		<method name="setInternationalCurrencySymbol(Ljava/lang/String;)V" />
-		<method name="setMinusSign(C)V" />
-		<method name="setMonetaryDecimalSeparator(C)V" />
-		<method name="setNaN(Ljava/lang/String;)V" />
-		<method name="setPatternSeparator(C)V" />
-		<method name="setPerMill(C)V" />
-		<method name="setPercent(C)V" />
-		<method name="setZeroDigit(C)V" />
-	</class>
-	<class name="java/text/FieldPosition" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(I)V" />
-		<method name="&lt;init>(Ljava/text/Format$Field;)V" />
-		<method name="&lt;init>(Ljava/text/Format$Field;I)V" />
-		<method name="getBeginIndex()I" />
-		<method name="getEndIndex()I" />
-		<method name="getField()I" />
-		<method name="getFieldAttribute()Ljava/text/Format$Field;" />
-		<method name="setBeginIndex(I)V" />
-		<method name="setEndIndex(I)V" />
-	</class>
-	<class name="java/text/Format" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<implements name="java/lang/Cloneable" />
-		<method name="&lt;init>()V" />
-		<method name="format(Ljava/lang/Object;)Ljava/lang/String;" />
-		<method name="format(Ljava/lang/Object;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;" />
-		<method name="formatToCharacterIterator(Ljava/lang/Object;)Ljava/text/AttributedCharacterIterator;" />
-		<method name="parseObject(Ljava/lang/String;)Ljava/lang/Object;" />
-		<method name="parseObject(Ljava/lang/String;Ljava/text/ParsePosition;)Ljava/lang/Object;" />
-	</class>
-	<class name="java/text/Format$Field" since="1">
-		<extends name="java/text/AttributedCharacterIterator$Attribute" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/text/MessageFormat" since="1">
-		<extends name="java/text/Format" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/util/Locale;)V" />
-		<method name="applyPattern(Ljava/lang/String;)V" />
-		<method name="format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;" />
-		<method name="format([Ljava/lang/Object;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;" />
-		<method name="getFormats()[Ljava/text/Format;" />
-		<method name="getFormatsByArgumentIndex()[Ljava/text/Format;" />
-		<method name="getLocale()Ljava/util/Locale;" />
-		<method name="parse(Ljava/lang/String;)[Ljava/lang/Object;" />
-		<method name="parse(Ljava/lang/String;Ljava/text/ParsePosition;)[Ljava/lang/Object;" />
-		<method name="setFormat(ILjava/text/Format;)V" />
-		<method name="setFormatByArgumentIndex(ILjava/text/Format;)V" />
-		<method name="setFormats([Ljava/text/Format;)V" />
-		<method name="setFormatsByArgumentIndex([Ljava/text/Format;)V" />
-		<method name="setLocale(Ljava/util/Locale;)V" />
-		<method name="toPattern()Ljava/lang/String;" />
-	</class>
-	<class name="java/text/MessageFormat$Field" since="1">
-		<extends name="java/text/Format$Field" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<field name="ARGUMENT" />
-	</class>
-	<class name="java/text/Normalizer" since="9">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="isNormalized(Ljava/lang/CharSequence;Ljava/text/Normalizer$Form;)Z" />
-		<method name="normalize(Ljava/lang/CharSequence;Ljava/text/Normalizer$Form;)Ljava/lang/String;" />
-	</class>
-	<class name="java/text/Normalizer$Form" since="9">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Ljava/text/Normalizer$Form;" />
-		<method name="values()[Ljava/text/Normalizer$Form;" />
-		<field name="NFC" />
-		<field name="NFD" />
-		<field name="NFKC" />
-		<field name="NFKD" />
-	</class>
-	<class name="java/text/NumberFormat" since="1">
-		<extends name="java/text/Format" />
-		<method name="&lt;init>()V" />
-		<method name="format(D)Ljava/lang/String;" />
-		<method name="format(DLjava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;" />
-		<method name="format(J)Ljava/lang/String;" />
-		<method name="format(JLjava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;" />
-		<method name="getAvailableLocales()[Ljava/util/Locale;" />
-		<method name="getCurrency()Ljava/util/Currency;" />
-		<method name="getCurrencyInstance()Ljava/text/NumberFormat;" />
-		<method name="getCurrencyInstance(Ljava/util/Locale;)Ljava/text/NumberFormat;" />
-		<method name="getInstance()Ljava/text/NumberFormat;" />
-		<method name="getInstance(Ljava/util/Locale;)Ljava/text/NumberFormat;" />
-		<method name="getIntegerInstance()Ljava/text/NumberFormat;" />
-		<method name="getIntegerInstance(Ljava/util/Locale;)Ljava/text/NumberFormat;" />
-		<method name="getMaximumFractionDigits()I" />
-		<method name="getMaximumIntegerDigits()I" />
-		<method name="getMinimumFractionDigits()I" />
-		<method name="getMinimumIntegerDigits()I" />
-		<method name="getNumberInstance()Ljava/text/NumberFormat;" />
-		<method name="getNumberInstance(Ljava/util/Locale;)Ljava/text/NumberFormat;" />
-		<method name="getPercentInstance()Ljava/text/NumberFormat;" />
-		<method name="getPercentInstance(Ljava/util/Locale;)Ljava/text/NumberFormat;" />
-		<method name="getRoundingMode()Ljava/math/RoundingMode;" since="9" />
-		<method name="isGroupingUsed()Z" />
-		<method name="isParseIntegerOnly()Z" />
-		<method name="parse(Ljava/lang/String;)Ljava/lang/Number;" />
-		<method name="parse(Ljava/lang/String;Ljava/text/ParsePosition;)Ljava/lang/Number;" />
-		<method name="setCurrency(Ljava/util/Currency;)V" />
-		<method name="setGroupingUsed(Z)V" />
-		<method name="setMaximumFractionDigits(I)V" />
-		<method name="setMaximumIntegerDigits(I)V" />
-		<method name="setMinimumFractionDigits(I)V" />
-		<method name="setMinimumIntegerDigits(I)V" />
-		<method name="setParseIntegerOnly(Z)V" />
-		<method name="setRoundingMode(Ljava/math/RoundingMode;)V" since="9" />
-		<field name="FRACTION_FIELD" />
-		<field name="INTEGER_FIELD" />
-	</class>
-	<class name="java/text/NumberFormat$Field" since="1">
-		<extends name="java/text/Format$Field" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<field name="CURRENCY" />
-		<field name="DECIMAL_SEPARATOR" />
-		<field name="EXPONENT" />
-		<field name="EXPONENT_SIGN" />
-		<field name="EXPONENT_SYMBOL" />
-		<field name="FRACTION" />
-		<field name="GROUPING_SEPARATOR" />
-		<field name="INTEGER" />
-		<field name="PERCENT" />
-		<field name="PERMILLE" />
-		<field name="SIGN" />
-	</class>
-	<class name="java/text/ParseException" since="1">
-		<extends name="java/lang/Exception" />
-		<method name="&lt;init>(Ljava/lang/String;I)V" />
-		<method name="getErrorOffset()I" />
-	</class>
-	<class name="java/text/ParsePosition" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(I)V" />
-		<method name="getErrorIndex()I" />
-		<method name="getIndex()I" />
-		<method name="setErrorIndex(I)V" />
-		<method name="setIndex(I)V" />
-	</class>
-	<class name="java/text/RuleBasedCollator" since="1">
-		<extends name="java/text/Collator" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="getCollationElementIterator(Ljava/lang/String;)Ljava/text/CollationElementIterator;" />
-		<method name="getCollationElementIterator(Ljava/text/CharacterIterator;)Ljava/text/CollationElementIterator;" />
-		<method name="getRules()Ljava/lang/String;" />
-	</class>
-	<class name="java/text/SimpleDateFormat" since="1">
-		<extends name="java/text/DateFormat" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/text/DateFormatSymbols;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/util/Locale;)V" />
-		<method name="applyLocalizedPattern(Ljava/lang/String;)V" />
-		<method name="applyPattern(Ljava/lang/String;)V" />
-		<method name="get2DigitYearStart()Ljava/util/Date;" />
-		<method name="getDateFormatSymbols()Ljava/text/DateFormatSymbols;" />
-		<method name="set2DigitYearStart(Ljava/util/Date;)V" />
-		<method name="setDateFormatSymbols(Ljava/text/DateFormatSymbols;)V" />
-		<method name="toLocalizedPattern()Ljava/lang/String;" />
-		<method name="toPattern()Ljava/lang/String;" />
-	</class>
-	<class name="java/text/StringCharacterIterator" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/text/CharacterIterator" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;I)V" />
-		<method name="&lt;init>(Ljava/lang/String;III)V" />
-		<method name="setText(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/util/AbstractCollection" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/util/Collection" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="java/util/AbstractList" since="1">
-		<extends name="java/util/AbstractCollection" />
-		<implements name="java/util/List" />
-		<method name="&lt;init>()V" />
-		<method name="removeRange(II)V" />
-		<field name="modCount" />
-	</class>
-	<class name="java/util/AbstractMap" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/util/Map" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="java/util/AbstractMap$SimpleEntry" since="9">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<implements name="java/util/Map$Entry" />
-		<method name="&lt;init>(Ljava/lang/Object;Ljava/lang/Object;)V" />
-		<method name="&lt;init>(Ljava/util/Map$Entry;)V" />
-	</class>
-	<class name="java/util/AbstractMap$SimpleImmutableEntry" since="9">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<implements name="java/util/Map$Entry" />
-		<method name="&lt;init>(Ljava/lang/Object;Ljava/lang/Object;)V" />
-		<method name="&lt;init>(Ljava/util/Map$Entry;)V" />
-	</class>
-	<class name="java/util/AbstractQueue" since="1">
-		<extends name="java/util/AbstractCollection" />
-		<implements name="java/util/Queue" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="java/util/AbstractSequentialList" since="1">
-		<extends name="java/util/AbstractList" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="java/util/AbstractSet" since="1">
-		<extends name="java/util/AbstractCollection" />
-		<implements name="java/util/Set" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="java/util/ArrayDeque" since="9">
-		<extends name="java/util/AbstractCollection" />
-		<implements name="java/io/Serializable" />
-		<implements name="java/lang/Cloneable" />
-		<implements name="java/util/Deque" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(I)V" />
-		<method name="&lt;init>(Ljava/util/Collection;)V" />
-		<method name="clone()Ljava/util/ArrayDeque;" />
-	</class>
-	<class name="java/util/ArrayList" since="1">
-		<extends name="java/util/AbstractList" />
-		<implements name="java/io/Serializable" />
-		<implements name="java/lang/Cloneable" />
-		<implements name="java/util/List" />
-		<implements name="java/util/RandomAccess" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(I)V" />
-		<method name="&lt;init>(Ljava/util/Collection;)V" />
-		<method name="ensureCapacity(I)V" />
-		<method name="trimToSize()V" />
-	</class>
-	<class name="java/util/Arrays" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="asList([Ljava/lang/Object;)Ljava/util/List;" />
-		<method name="binarySearch([BB)I" />
-		<method name="binarySearch([BIIB)I" since="9" />
-		<method name="binarySearch([CC)I" />
-		<method name="binarySearch([CIIC)I" since="9" />
-		<method name="binarySearch([DD)I" />
-		<method name="binarySearch([DIID)I" since="9" />
-		<method name="binarySearch([FF)I" />
-		<method name="binarySearch([FIIF)I" since="9" />
-		<method name="binarySearch([II)I" />
-		<method name="binarySearch([IIII)I" since="9" />
-		<method name="binarySearch([JIIJ)I" since="9" />
-		<method name="binarySearch([JJ)I" />
-		<method name="binarySearch([Ljava/lang/Object;IILjava/lang/Object;)I" since="9" />
-		<method name="binarySearch([Ljava/lang/Object;IILjava/lang/Object;Ljava/util/Comparator;)I" since="9" />
-		<method name="binarySearch([Ljava/lang/Object;Ljava/lang/Object;)I" />
-		<method name="binarySearch([Ljava/lang/Object;Ljava/lang/Object;Ljava/util/Comparator;)I" />
-		<method name="binarySearch([SIIS)I" since="9" />
-		<method name="binarySearch([SS)I" />
-		<method name="copyOf([BI)[B" since="9" />
-		<method name="copyOf([CI)[C" since="9" />
-		<method name="copyOf([DI)[D" since="9" />
-		<method name="copyOf([FI)[F" since="9" />
-		<method name="copyOf([II)[I" since="9" />
-		<method name="copyOf([JI)[J" since="9" />
-		<method name="copyOf([Ljava/lang/Object;I)[Ljava/lang/Object;" since="9" />
-		<method name="copyOf([Ljava/lang/Object;ILjava/lang/Class;)[Ljava/lang/Object;" since="9" />
-		<method name="copyOf([SI)[S" since="9" />
-		<method name="copyOf([ZI)[Z" since="9" />
-		<method name="copyOfRange([BII)[B" since="9" />
-		<method name="copyOfRange([CII)[C" since="9" />
-		<method name="copyOfRange([DII)[D" since="9" />
-		<method name="copyOfRange([FII)[F" since="9" />
-		<method name="copyOfRange([III)[I" since="9" />
-		<method name="copyOfRange([JII)[J" since="9" />
-		<method name="copyOfRange([Ljava/lang/Object;II)[Ljava/lang/Object;" since="9" />
-		<method name="copyOfRange([Ljava/lang/Object;IILjava/lang/Class;)[Ljava/lang/Object;" since="9" />
-		<method name="copyOfRange([SII)[S" since="9" />
-		<method name="copyOfRange([ZII)[Z" since="9" />
-		<method name="deepEquals([Ljava/lang/Object;[Ljava/lang/Object;)Z" />
-		<method name="deepHashCode([Ljava/lang/Object;)I" />
-		<method name="deepToString([Ljava/lang/Object;)Ljava/lang/String;" />
-		<method name="equals([B[B)Z" />
-		<method name="equals([C[C)Z" />
-		<method name="equals([D[D)Z" />
-		<method name="equals([F[F)Z" />
-		<method name="equals([I[I)Z" />
-		<method name="equals([J[J)Z" />
-		<method name="equals([Ljava/lang/Object;[Ljava/lang/Object;)Z" />
-		<method name="equals([S[S)Z" />
-		<method name="equals([Z[Z)Z" />
-		<method name="fill([BB)V" />
-		<method name="fill([BIIB)V" />
-		<method name="fill([CC)V" />
-		<method name="fill([CIIC)V" />
-		<method name="fill([DD)V" />
-		<method name="fill([DIID)V" />
-		<method name="fill([FF)V" />
-		<method name="fill([FIIF)V" />
-		<method name="fill([II)V" />
-		<method name="fill([IIII)V" />
-		<method name="fill([JIIJ)V" />
-		<method name="fill([JJ)V" />
-		<method name="fill([Ljava/lang/Object;IILjava/lang/Object;)V" />
-		<method name="fill([Ljava/lang/Object;Ljava/lang/Object;)V" />
-		<method name="fill([SIIS)V" />
-		<method name="fill([SS)V" />
-		<method name="fill([ZIIZ)V" />
-		<method name="fill([ZZ)V" />
-		<method name="hashCode([B)I" />
-		<method name="hashCode([C)I" />
-		<method name="hashCode([D)I" />
-		<method name="hashCode([F)I" />
-		<method name="hashCode([I)I" />
-		<method name="hashCode([J)I" />
-		<method name="hashCode([Ljava/lang/Object;)I" />
-		<method name="hashCode([S)I" />
-		<method name="hashCode([Z)I" />
-		<method name="sort([B)V" />
-		<method name="sort([BII)V" />
-		<method name="sort([C)V" />
-		<method name="sort([CII)V" />
-		<method name="sort([D)V" />
-		<method name="sort([DII)V" />
-		<method name="sort([F)V" />
-		<method name="sort([FII)V" />
-		<method name="sort([I)V" />
-		<method name="sort([III)V" />
-		<method name="sort([J)V" />
-		<method name="sort([JII)V" />
-		<method name="sort([Ljava/lang/Object;)V" />
-		<method name="sort([Ljava/lang/Object;II)V" />
-		<method name="sort([Ljava/lang/Object;IILjava/util/Comparator;)V" />
-		<method name="sort([Ljava/lang/Object;Ljava/util/Comparator;)V" />
-		<method name="sort([S)V" />
-		<method name="sort([SII)V" />
-		<method name="toString([B)Ljava/lang/String;" />
-		<method name="toString([C)Ljava/lang/String;" />
-		<method name="toString([D)Ljava/lang/String;" />
-		<method name="toString([F)Ljava/lang/String;" />
-		<method name="toString([I)Ljava/lang/String;" />
-		<method name="toString([J)Ljava/lang/String;" />
-		<method name="toString([Ljava/lang/Object;)Ljava/lang/String;" />
-		<method name="toString([S)Ljava/lang/String;" />
-		<method name="toString([Z)Ljava/lang/String;" />
-	</class>
-	<class name="java/util/BitSet" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<implements name="java/lang/Cloneable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(I)V" />
-		<method name="and(Ljava/util/BitSet;)V" />
-		<method name="andNot(Ljava/util/BitSet;)V" />
-		<method name="cardinality()I" />
-		<method name="clear()V" />
-		<method name="clear(I)V" />
-		<method name="clear(II)V" />
-		<method name="flip(I)V" />
-		<method name="flip(II)V" />
-		<method name="get(I)Z" />
-		<method name="get(II)Ljava/util/BitSet;" />
-		<method name="intersects(Ljava/util/BitSet;)Z" />
-		<method name="isEmpty()Z" />
-		<method name="length()I" />
-		<method name="nextClearBit(I)I" />
-		<method name="nextSetBit(I)I" />
-		<method name="or(Ljava/util/BitSet;)V" />
-		<method name="previousClearBit(I)I" since="19" />
-		<method name="previousSetBit(I)I" since="19" />
-		<method name="set(I)V" />
-		<method name="set(II)V" />
-		<method name="set(IIZ)V" />
-		<method name="set(IZ)V" />
-		<method name="size()I" />
-		<method name="toByteArray()[B" since="19" />
-		<method name="toLongArray()[J" since="19" />
-		<method name="valueOf(Ljava/nio/ByteBuffer;)Ljava/util/BitSet;" since="19" />
-		<method name="valueOf(Ljava/nio/LongBuffer;)Ljava/util/BitSet;" since="19" />
-		<method name="valueOf([B)Ljava/util/BitSet;" since="19" />
-		<method name="valueOf([J)Ljava/util/BitSet;" since="19" />
-		<method name="xor(Ljava/util/BitSet;)V" />
-	</class>
-	<class name="java/util/Calendar" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<implements name="java/lang/Cloneable" />
-		<implements name="java/lang/Comparable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/util/TimeZone;Ljava/util/Locale;)V" />
-		<method name="add(II)V" />
-		<method name="after(Ljava/lang/Object;)Z" />
-		<method name="before(Ljava/lang/Object;)Z" />
-		<method name="clear()V" />
-		<method name="clear(I)V" />
-		<method name="compareTo(Ljava/util/Calendar;)I" />
-		<method name="complete()V" />
-		<method name="computeFields()V" />
-		<method name="computeTime()V" />
-		<method name="get(I)I" />
-		<method name="getActualMaximum(I)I" />
-		<method name="getActualMinimum(I)I" />
-		<method name="getAvailableLocales()[Ljava/util/Locale;" />
-		<method name="getDisplayName(IILjava/util/Locale;)Ljava/lang/String;" since="9" />
-		<method name="getDisplayNames(IILjava/util/Locale;)Ljava/util/Map;" since="9" />
-		<method name="getFirstDayOfWeek()I" />
-		<method name="getGreatestMinimum(I)I" />
-		<method name="getInstance()Ljava/util/Calendar;" />
-		<method name="getInstance(Ljava/util/Locale;)Ljava/util/Calendar;" />
-		<method name="getInstance(Ljava/util/TimeZone;)Ljava/util/Calendar;" />
-		<method name="getInstance(Ljava/util/TimeZone;Ljava/util/Locale;)Ljava/util/Calendar;" />
-		<method name="getLeastMaximum(I)I" />
-		<method name="getMaximum(I)I" />
-		<method name="getMinimalDaysInFirstWeek()I" />
-		<method name="getMinimum(I)I" />
-		<method name="getTime()Ljava/util/Date;" />
-		<method name="getTimeInMillis()J" />
-		<method name="getTimeZone()Ljava/util/TimeZone;" />
-		<method name="internalGet(I)I" />
-		<method name="isLenient()Z" />
-		<method name="isSet(I)Z" />
-		<method name="roll(II)V" />
-		<method name="roll(IZ)V" />
-		<method name="set(II)V" />
-		<method name="set(III)V" />
-		<method name="set(IIIII)V" />
-		<method name="set(IIIIII)V" />
-		<method name="setFirstDayOfWeek(I)V" />
-		<method name="setLenient(Z)V" />
-		<method name="setMinimalDaysInFirstWeek(I)V" />
-		<method name="setTime(Ljava/util/Date;)V" />
-		<method name="setTimeInMillis(J)V" />
-		<method name="setTimeZone(Ljava/util/TimeZone;)V" />
-		<field name="ALL_STYLES" since="9" />
-		<field name="AM" />
-		<field name="AM_PM" />
-		<field name="APRIL" />
-		<field name="AUGUST" />
-		<field name="DATE" />
-		<field name="DAY_OF_MONTH" />
-		<field name="DAY_OF_WEEK" />
-		<field name="DAY_OF_WEEK_IN_MONTH" />
-		<field name="DAY_OF_YEAR" />
-		<field name="DECEMBER" />
-		<field name="DST_OFFSET" />
-		<field name="ERA" />
-		<field name="FEBRUARY" />
-		<field name="FIELD_COUNT" />
-		<field name="FRIDAY" />
-		<field name="HOUR" />
-		<field name="HOUR_OF_DAY" />
-		<field name="JANUARY" />
-		<field name="JULY" />
-		<field name="JUNE" />
-		<field name="LONG" since="9" />
-		<field name="MARCH" />
-		<field name="MAY" />
-		<field name="MILLISECOND" />
-		<field name="MINUTE" />
-		<field name="MONDAY" />
-		<field name="MONTH" />
-		<field name="NOVEMBER" />
-		<field name="OCTOBER" />
-		<field name="PM" />
-		<field name="SATURDAY" />
-		<field name="SECOND" />
-		<field name="SEPTEMBER" />
-		<field name="SHORT" since="9" />
-		<field name="SUNDAY" />
-		<field name="THURSDAY" />
-		<field name="TUESDAY" />
-		<field name="UNDECIMBER" />
-		<field name="WEDNESDAY" />
-		<field name="WEEK_OF_MONTH" />
-		<field name="WEEK_OF_YEAR" />
-		<field name="YEAR" />
-		<field name="ZONE_OFFSET" />
-		<field name="areFieldsSet" />
-		<field name="fields" />
-		<field name="isSet" />
-		<field name="isTimeSet" />
-		<field name="time" />
-	</class>
-	<class name="java/util/Collection" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/Iterable" />
-		<method name="add(Ljava/lang/Object;)Z" />
-		<method name="addAll(Ljava/util/Collection;)Z" />
-		<method name="clear()V" />
-		<method name="contains(Ljava/lang/Object;)Z" />
-		<method name="containsAll(Ljava/util/Collection;)Z" />
-		<method name="isEmpty()Z" />
-		<method name="remove(Ljava/lang/Object;)Z" />
-		<method name="removeAll(Ljava/util/Collection;)Z" />
-		<method name="retainAll(Ljava/util/Collection;)Z" />
-		<method name="size()I" />
-		<method name="toArray()[Ljava/lang/Object;" />
-		<method name="toArray([Ljava/lang/Object;)[Ljava/lang/Object;" />
-	</class>
-	<class name="java/util/Collections" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="addAll(Ljava/util/Collection;[Ljava/lang/Object;)Z" />
-		<method name="asLifoQueue(Ljava/util/Deque;)Ljava/util/Queue;" since="9" />
-		<method name="binarySearch(Ljava/util/List;Ljava/lang/Object;)I" />
-		<method name="binarySearch(Ljava/util/List;Ljava/lang/Object;Ljava/util/Comparator;)I" />
-		<method name="checkedCollection(Ljava/util/Collection;Ljava/lang/Class;)Ljava/util/Collection;" />
-		<method name="checkedList(Ljava/util/List;Ljava/lang/Class;)Ljava/util/List;" />
-		<method name="checkedMap(Ljava/util/Map;Ljava/lang/Class;Ljava/lang/Class;)Ljava/util/Map;" />
-		<method name="checkedSet(Ljava/util/Set;Ljava/lang/Class;)Ljava/util/Set;" />
-		<method name="checkedSortedMap(Ljava/util/SortedMap;Ljava/lang/Class;Ljava/lang/Class;)Ljava/util/SortedMap;" />
-		<method name="checkedSortedSet(Ljava/util/SortedSet;Ljava/lang/Class;)Ljava/util/SortedSet;" />
-		<method name="copy(Ljava/util/List;Ljava/util/List;)V" />
-		<method name="disjoint(Ljava/util/Collection;Ljava/util/Collection;)Z" />
-		<method name="emptyEnumeration()Ljava/util/Enumeration;" since="19" />
-		<method name="emptyIterator()Ljava/util/Iterator;" since="19" />
-		<method name="emptyList()Ljava/util/List;" />
-		<method name="emptyListIterator()Ljava/util/ListIterator;" since="19" />
-		<method name="emptyMap()Ljava/util/Map;" />
-		<method name="emptySet()Ljava/util/Set;" />
-		<method name="enumeration(Ljava/util/Collection;)Ljava/util/Enumeration;" />
-		<method name="fill(Ljava/util/List;Ljava/lang/Object;)V" />
-		<method name="frequency(Ljava/util/Collection;Ljava/lang/Object;)I" />
-		<method name="indexOfSubList(Ljava/util/List;Ljava/util/List;)I" />
-		<method name="lastIndexOfSubList(Ljava/util/List;Ljava/util/List;)I" />
-		<method name="list(Ljava/util/Enumeration;)Ljava/util/ArrayList;" />
-		<method name="max(Ljava/util/Collection;)Ljava/lang/Object;" />
-		<method name="max(Ljava/util/Collection;Ljava/util/Comparator;)Ljava/lang/Object;" />
-		<method name="min(Ljava/util/Collection;)Ljava/lang/Object;" />
-		<method name="min(Ljava/util/Collection;Ljava/util/Comparator;)Ljava/lang/Object;" />
-		<method name="nCopies(ILjava/lang/Object;)Ljava/util/List;" />
-		<method name="newSetFromMap(Ljava/util/Map;)Ljava/util/Set;" since="9" />
-		<method name="replaceAll(Ljava/util/List;Ljava/lang/Object;Ljava/lang/Object;)Z" />
-		<method name="reverse(Ljava/util/List;)V" />
-		<method name="reverseOrder()Ljava/util/Comparator;" />
-		<method name="reverseOrder(Ljava/util/Comparator;)Ljava/util/Comparator;" />
-		<method name="rotate(Ljava/util/List;I)V" />
-		<method name="shuffle(Ljava/util/List;)V" />
-		<method name="shuffle(Ljava/util/List;Ljava/util/Random;)V" />
-		<method name="singleton(Ljava/lang/Object;)Ljava/util/Set;" />
-		<method name="singletonList(Ljava/lang/Object;)Ljava/util/List;" />
-		<method name="singletonMap(Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/Map;" />
-		<method name="sort(Ljava/util/List;)V" />
-		<method name="sort(Ljava/util/List;Ljava/util/Comparator;)V" />
-		<method name="swap(Ljava/util/List;II)V" />
-		<method name="synchronizedCollection(Ljava/util/Collection;)Ljava/util/Collection;" />
-		<method name="synchronizedList(Ljava/util/List;)Ljava/util/List;" />
-		<method name="synchronizedMap(Ljava/util/Map;)Ljava/util/Map;" />
-		<method name="synchronizedSet(Ljava/util/Set;)Ljava/util/Set;" />
-		<method name="synchronizedSortedMap(Ljava/util/SortedMap;)Ljava/util/SortedMap;" />
-		<method name="synchronizedSortedSet(Ljava/util/SortedSet;)Ljava/util/SortedSet;" />
-		<method name="unmodifiableCollection(Ljava/util/Collection;)Ljava/util/Collection;" />
-		<method name="unmodifiableList(Ljava/util/List;)Ljava/util/List;" />
-		<method name="unmodifiableMap(Ljava/util/Map;)Ljava/util/Map;" />
-		<method name="unmodifiableSet(Ljava/util/Set;)Ljava/util/Set;" />
-		<method name="unmodifiableSortedMap(Ljava/util/SortedMap;)Ljava/util/SortedMap;" />
-		<method name="unmodifiableSortedSet(Ljava/util/SortedSet;)Ljava/util/SortedSet;" />
-		<field name="EMPTY_LIST" />
-		<field name="EMPTY_MAP" />
-		<field name="EMPTY_SET" />
-	</class>
-	<class name="java/util/Comparator" since="1">
-		<extends name="java/lang/Object" />
-		<method name="compare(Ljava/lang/Object;Ljava/lang/Object;)I" />
-	</class>
-	<class name="java/util/ConcurrentModificationException" since="1">
-		<extends name="java/lang/RuntimeException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" since="19" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" since="19" />
-	</class>
-	<class name="java/util/Currency" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<method name="&lt;init>()V" />
-		<method name="getAvailableCurrencies()Ljava/util/Set;" since="19" />
-		<method name="getCurrencyCode()Ljava/lang/String;" />
-		<method name="getDefaultFractionDigits()I" />
-		<method name="getDisplayName()Ljava/lang/String;" since="19" />
-		<method name="getDisplayName(Ljava/util/Locale;)Ljava/lang/String;" since="19" />
-		<method name="getInstance(Ljava/lang/String;)Ljava/util/Currency;" />
-		<method name="getInstance(Ljava/util/Locale;)Ljava/util/Currency;" />
-		<method name="getSymbol()Ljava/lang/String;" />
-		<method name="getSymbol(Ljava/util/Locale;)Ljava/lang/String;" />
-	</class>
-	<class name="java/util/Date" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<implements name="java/lang/Cloneable" />
-		<implements name="java/lang/Comparable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(III)V" />
-		<method name="&lt;init>(IIIII)V" />
-		<method name="&lt;init>(IIIIII)V" />
-		<method name="&lt;init>(J)V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="UTC(IIIIII)J" />
-		<method name="after(Ljava/util/Date;)Z" />
-		<method name="before(Ljava/util/Date;)Z" />
-		<method name="compareTo(Ljava/util/Date;)I" />
-		<method name="getDate()I" />
-		<method name="getDay()I" />
-		<method name="getHours()I" />
-		<method name="getMinutes()I" />
-		<method name="getMonth()I" />
-		<method name="getSeconds()I" />
-		<method name="getTime()J" />
-		<method name="getTimezoneOffset()I" />
-		<method name="getYear()I" />
-		<method name="parse(Ljava/lang/String;)J" />
-		<method name="setDate(I)V" />
-		<method name="setHours(I)V" />
-		<method name="setMinutes(I)V" />
-		<method name="setMonth(I)V" />
-		<method name="setSeconds(I)V" />
-		<method name="setTime(J)V" />
-		<method name="setYear(I)V" />
-		<method name="toGMTString()Ljava/lang/String;" />
-		<method name="toLocaleString()Ljava/lang/String;" />
-	</class>
-	<class name="java/util/Deque" since="9">
-		<extends name="java/lang/Object" />
-		<implements name="java/util/Queue" />
-		<method name="addFirst(Ljava/lang/Object;)V" />
-		<method name="addLast(Ljava/lang/Object;)V" />
-		<method name="descendingIterator()Ljava/util/Iterator;" />
-		<method name="getFirst()Ljava/lang/Object;" />
-		<method name="getLast()Ljava/lang/Object;" />
-		<method name="offerFirst(Ljava/lang/Object;)Z" />
-		<method name="offerLast(Ljava/lang/Object;)Z" />
-		<method name="peekFirst()Ljava/lang/Object;" />
-		<method name="peekLast()Ljava/lang/Object;" />
-		<method name="pollFirst()Ljava/lang/Object;" />
-		<method name="pollLast()Ljava/lang/Object;" />
-		<method name="pop()Ljava/lang/Object;" />
-		<method name="push(Ljava/lang/Object;)V" />
-		<method name="removeFirst()Ljava/lang/Object;" />
-		<method name="removeFirstOccurrence(Ljava/lang/Object;)Z" />
-		<method name="removeLast()Ljava/lang/Object;" />
-		<method name="removeLastOccurrence(Ljava/lang/Object;)Z" />
-	</class>
-	<class name="java/util/Dictionary" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="elements()Ljava/util/Enumeration;" />
-		<method name="get(Ljava/lang/Object;)Ljava/lang/Object;" />
-		<method name="isEmpty()Z" />
-		<method name="keys()Ljava/util/Enumeration;" />
-		<method name="put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;" />
-		<method name="remove(Ljava/lang/Object;)Ljava/lang/Object;" />
-		<method name="size()I" />
-	</class>
-	<class name="java/util/DuplicateFormatFlagsException" since="1">
-		<extends name="java/util/IllegalFormatException" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="getFlags()Ljava/lang/String;" />
-	</class>
-	<class name="java/util/EmptyStackException" since="1">
-		<extends name="java/lang/RuntimeException" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="java/util/EnumMap" since="1">
-		<extends name="java/util/AbstractMap" />
-		<implements name="java/io/Serializable" />
-		<implements name="java/lang/Cloneable" />
-		<implements name="java/util/Map" />
-		<method name="&lt;init>(Ljava/lang/Class;)V" />
-		<method name="&lt;init>(Ljava/util/EnumMap;)V" />
-		<method name="&lt;init>(Ljava/util/Map;)V" />
-		<method name="clone()Ljava/util/EnumMap;" />
-		<method name="put(Ljava/lang/Enum;Ljava/lang/Object;)Ljava/lang/Object;" />
-	</class>
-	<class name="java/util/EnumSet" since="1">
-		<extends name="java/util/AbstractSet" />
-		<implements name="java/io/Serializable" />
-		<implements name="java/lang/Cloneable" />
-		<method name="&lt;init>()V" />
-		<method name="allOf(Ljava/lang/Class;)Ljava/util/EnumSet;" />
-		<method name="clone()Ljava/util/EnumSet;" />
-		<method name="complementOf(Ljava/util/EnumSet;)Ljava/util/EnumSet;" />
-		<method name="copyOf(Ljava/util/Collection;)Ljava/util/EnumSet;" />
-		<method name="copyOf(Ljava/util/EnumSet;)Ljava/util/EnumSet;" />
-		<method name="noneOf(Ljava/lang/Class;)Ljava/util/EnumSet;" />
-		<method name="of(Ljava/lang/Enum;)Ljava/util/EnumSet;" />
-		<method name="of(Ljava/lang/Enum;Ljava/lang/Enum;)Ljava/util/EnumSet;" />
-		<method name="of(Ljava/lang/Enum;Ljava/lang/Enum;Ljava/lang/Enum;)Ljava/util/EnumSet;" />
-		<method name="of(Ljava/lang/Enum;Ljava/lang/Enum;Ljava/lang/Enum;Ljava/lang/Enum;)Ljava/util/EnumSet;" />
-		<method name="of(Ljava/lang/Enum;Ljava/lang/Enum;Ljava/lang/Enum;Ljava/lang/Enum;Ljava/lang/Enum;)Ljava/util/EnumSet;" />
-		<method name="of(Ljava/lang/Enum;[Ljava/lang/Enum;)Ljava/util/EnumSet;" />
-		<method name="range(Ljava/lang/Enum;Ljava/lang/Enum;)Ljava/util/EnumSet;" />
-	</class>
-	<class name="java/util/Enumeration" since="1">
-		<extends name="java/lang/Object" />
-		<method name="hasMoreElements()Z" />
-		<method name="nextElement()Ljava/lang/Object;" />
-	</class>
-	<class name="java/util/EventListener" since="1">
-		<extends name="java/lang/Object" />
-	</class>
-	<class name="java/util/EventListenerProxy" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/util/EventListener" />
-		<method name="&lt;init>(Ljava/util/EventListener;)V" />
-		<method name="getListener()Ljava/util/EventListener;" />
-	</class>
-	<class name="java/util/EventObject" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<method name="&lt;init>(Ljava/lang/Object;)V" />
-		<method name="getSource()Ljava/lang/Object;" />
-		<field name="source" />
-	</class>
-	<class name="java/util/FormatFlagsConversionMismatchException" since="1">
-		<extends name="java/util/IllegalFormatException" />
-		<implements name="java/io/Serializable" />
-		<method name="&lt;init>(Ljava/lang/String;C)V" />
-		<method name="getConversion()C" />
-		<method name="getFlags()Ljava/lang/String;" />
-	</class>
-	<class name="java/util/Formattable" since="1">
-		<extends name="java/lang/Object" />
-		<method name="formatTo(Ljava/util/Formatter;III)V" />
-	</class>
-	<class name="java/util/FormattableFlags" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="ALTERNATE" />
-		<field name="LEFT_JUSTIFY" />
-		<field name="UPPERCASE" />
-	</class>
-	<class name="java/util/Formatter" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Closeable" />
-		<implements name="java/io/Flushable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/io/File;)V" />
-		<method name="&lt;init>(Ljava/io/File;Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/io/File;Ljava/lang/String;Ljava/util/Locale;)V" />
-		<method name="&lt;init>(Ljava/io/OutputStream;)V" />
-		<method name="&lt;init>(Ljava/io/OutputStream;Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/io/OutputStream;Ljava/lang/String;Ljava/util/Locale;)V" />
-		<method name="&lt;init>(Ljava/io/PrintStream;)V" />
-		<method name="&lt;init>(Ljava/lang/Appendable;)V" />
-		<method name="&lt;init>(Ljava/lang/Appendable;Ljava/util/Locale;)V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/util/Locale;)V" />
-		<method name="&lt;init>(Ljava/util/Locale;)V" />
-		<method name="format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/util/Formatter;" />
-		<method name="format(Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/util/Formatter;" />
-		<method name="ioException()Ljava/io/IOException;" />
-		<method name="locale()Ljava/util/Locale;" />
-		<method name="out()Ljava/lang/Appendable;" />
-	</class>
-	<class name="java/util/Formatter$BigDecimalLayoutForm" since="1">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Ljava/util/Formatter$BigDecimalLayoutForm;" />
-		<method name="values()[Ljava/util/Formatter$BigDecimalLayoutForm;" />
-		<field name="DECIMAL_FLOAT" />
-		<field name="SCIENTIFIC" />
-	</class>
-	<class name="java/util/FormatterClosedException" since="1">
-		<extends name="java/lang/IllegalStateException" />
-		<implements name="java/io/Serializable" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="java/util/GregorianCalendar" since="1">
-		<extends name="java/util/Calendar" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(III)V" />
-		<method name="&lt;init>(IIIII)V" />
-		<method name="&lt;init>(IIIIII)V" />
-		<method name="&lt;init>(Ljava/util/Locale;)V" />
-		<method name="&lt;init>(Ljava/util/TimeZone;)V" />
-		<method name="&lt;init>(Ljava/util/TimeZone;Ljava/util/Locale;)V" />
-		<method name="getGregorianChange()Ljava/util/Date;" />
-		<method name="isLeapYear(I)Z" />
-		<method name="setGregorianChange(Ljava/util/Date;)V" />
-		<field name="AD" />
-		<field name="BC" />
-	</class>
-	<class name="java/util/HashMap" since="1">
-		<extends name="java/util/AbstractMap" />
-		<implements name="java/io/Serializable" />
-		<implements name="java/lang/Cloneable" />
-		<implements name="java/util/Map" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(I)V" />
-		<method name="&lt;init>(IF)V" />
-		<method name="&lt;init>(Ljava/util/Map;)V" />
-	</class>
-	<class name="java/util/HashSet" since="1">
-		<extends name="java/util/AbstractSet" />
-		<implements name="java/io/Serializable" />
-		<implements name="java/lang/Cloneable" />
-		<implements name="java/util/Set" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(I)V" />
-		<method name="&lt;init>(IF)V" />
-		<method name="&lt;init>(Ljava/util/Collection;)V" />
-	</class>
-	<class name="java/util/Hashtable" since="1">
-		<extends name="java/util/Dictionary" />
-		<implements name="java/io/Serializable" />
-		<implements name="java/lang/Cloneable" />
-		<implements name="java/util/Map" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(I)V" />
-		<method name="&lt;init>(IF)V" />
-		<method name="&lt;init>(Ljava/util/Map;)V" />
-		<method name="contains(Ljava/lang/Object;)Z" />
-		<method name="rehash()V" />
-	</class>
-	<class name="java/util/IdentityHashMap" since="1">
-		<extends name="java/util/AbstractMap" />
-		<implements name="java/io/Serializable" />
-		<implements name="java/lang/Cloneable" />
-		<implements name="java/util/Map" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(I)V" />
-		<method name="&lt;init>(Ljava/util/Map;)V" />
-	</class>
-	<class name="java/util/IllegalFormatCodePointException" since="1">
-		<extends name="java/util/IllegalFormatException" />
-		<implements name="java/io/Serializable" />
-		<method name="&lt;init>(I)V" />
-		<method name="getCodePoint()I" />
-	</class>
-	<class name="java/util/IllegalFormatConversionException" since="1">
-		<extends name="java/util/IllegalFormatException" />
-		<implements name="java/io/Serializable" />
-		<method name="&lt;init>(CLjava/lang/Class;)V" />
-		<method name="getArgumentClass()Ljava/lang/Class;" />
-		<method name="getConversion()C" />
-	</class>
-	<class name="java/util/IllegalFormatException" since="1">
-		<extends name="java/lang/IllegalArgumentException" />
-		<implements name="java/io/Serializable" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="java/util/IllegalFormatFlagsException" since="1">
-		<extends name="java/util/IllegalFormatException" />
-		<implements name="java/io/Serializable" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="getFlags()Ljava/lang/String;" />
-	</class>
-	<class name="java/util/IllegalFormatPrecisionException" since="1">
-		<extends name="java/util/IllegalFormatException" />
-		<method name="&lt;init>(I)V" />
-		<method name="getPrecision()I" />
-	</class>
-	<class name="java/util/IllegalFormatWidthException" since="1">
-		<extends name="java/util/IllegalFormatException" />
-		<method name="&lt;init>(I)V" />
-		<method name="getWidth()I" />
-	</class>
-	<class name="java/util/InputMismatchException" since="1">
-		<extends name="java/util/NoSuchElementException" />
-		<implements name="java/io/Serializable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/util/InvalidPropertiesFormatException" since="1">
-		<extends name="java/io/IOException" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="java/util/Iterator" since="1">
-		<extends name="java/lang/Object" />
-		<method name="hasNext()Z" />
-		<method name="next()Ljava/lang/Object;" />
-		<method name="remove()V" />
-	</class>
-	<class name="java/util/LinkedHashMap" since="1">
-		<extends name="java/util/HashMap" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(I)V" />
-		<method name="&lt;init>(IF)V" />
-		<method name="&lt;init>(IFZ)V" />
-		<method name="&lt;init>(Ljava/util/Map;)V" />
-		<method name="removeEldestEntry(Ljava/util/Map$Entry;)Z" />
-	</class>
-	<class name="java/util/LinkedHashSet" since="1">
-		<extends name="java/util/HashSet" />
-		<implements name="java/io/Serializable" />
-		<implements name="java/lang/Cloneable" />
-		<implements name="java/util/Set" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(I)V" />
-		<method name="&lt;init>(IF)V" />
-		<method name="&lt;init>(Ljava/util/Collection;)V" />
-	</class>
-	<class name="java/util/LinkedList" since="1">
-		<extends name="java/util/AbstractSequentialList" />
-		<implements name="java/io/Serializable" />
-		<implements name="java/lang/Cloneable" />
-		<implements name="java/util/Deque" since="9" />
-		<implements name="java/util/List" />
-		<implements name="java/util/Queue" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/util/Collection;)V" />
-		<method name="addFirst(Ljava/lang/Object;)V" />
-		<method name="addLast(Ljava/lang/Object;)V" />
-		<method name="getFirst()Ljava/lang/Object;" />
-		<method name="getLast()Ljava/lang/Object;" />
-		<method name="removeFirst()Ljava/lang/Object;" />
-		<method name="removeLast()Ljava/lang/Object;" />
-	</class>
-	<class name="java/util/List" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/util/Collection" />
-		<method name="add(ILjava/lang/Object;)V" />
-		<method name="addAll(ILjava/util/Collection;)Z" />
-		<method name="get(I)Ljava/lang/Object;" />
-		<method name="indexOf(Ljava/lang/Object;)I" />
-		<method name="lastIndexOf(Ljava/lang/Object;)I" />
-		<method name="listIterator()Ljava/util/ListIterator;" />
-		<method name="listIterator(I)Ljava/util/ListIterator;" />
-		<method name="remove(I)Ljava/lang/Object;" />
-		<method name="set(ILjava/lang/Object;)Ljava/lang/Object;" />
-		<method name="subList(II)Ljava/util/List;" />
-	</class>
-	<class name="java/util/ListIterator" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/util/Iterator" />
-		<method name="add(Ljava/lang/Object;)V" />
-		<method name="hasPrevious()Z" />
-		<method name="nextIndex()I" />
-		<method name="previous()Ljava/lang/Object;" />
-		<method name="previousIndex()I" />
-		<method name="set(Ljava/lang/Object;)V" />
-	</class>
-	<class name="java/util/ListResourceBundle" since="1">
-		<extends name="java/util/ResourceBundle" />
-		<method name="&lt;init>()V" />
-		<method name="getContents()[[Ljava/lang/Object;" />
-	</class>
-	<class name="java/util/Locale" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<implements name="java/lang/Cloneable" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="getAvailableLocales()[Ljava/util/Locale;" />
-		<method name="getCountry()Ljava/lang/String;" />
-		<method name="getDefault()Ljava/util/Locale;" />
-		<method name="getDisplayCountry()Ljava/lang/String;" />
-		<method name="getDisplayCountry(Ljava/util/Locale;)Ljava/lang/String;" />
-		<method name="getDisplayLanguage()Ljava/lang/String;" />
-		<method name="getDisplayLanguage(Ljava/util/Locale;)Ljava/lang/String;" />
-		<method name="getDisplayName()Ljava/lang/String;" />
-		<method name="getDisplayName(Ljava/util/Locale;)Ljava/lang/String;" />
-		<method name="getDisplayVariant()Ljava/lang/String;" />
-		<method name="getDisplayVariant(Ljava/util/Locale;)Ljava/lang/String;" />
-		<method name="getISO3Country()Ljava/lang/String;" />
-		<method name="getISO3Language()Ljava/lang/String;" />
-		<method name="getISOCountries()[Ljava/lang/String;" />
-		<method name="getISOLanguages()[Ljava/lang/String;" />
-		<method name="getLanguage()Ljava/lang/String;" />
-		<method name="getVariant()Ljava/lang/String;" />
-		<method name="setDefault(Ljava/util/Locale;)V" />
-		<field name="CANADA" />
-		<field name="CANADA_FRENCH" />
-		<field name="CHINA" />
-		<field name="CHINESE" />
-		<field name="ENGLISH" />
-		<field name="FRANCE" />
-		<field name="FRENCH" />
-		<field name="GERMAN" />
-		<field name="GERMANY" />
-		<field name="ITALIAN" />
-		<field name="ITALY" />
-		<field name="JAPAN" />
-		<field name="JAPANESE" />
-		<field name="KOREA" />
-		<field name="KOREAN" />
-		<field name="PRC" />
-		<field name="ROOT" since="9" />
-		<field name="SIMPLIFIED_CHINESE" />
-		<field name="TAIWAN" />
-		<field name="TRADITIONAL_CHINESE" />
-		<field name="UK" />
-		<field name="US" />
-	</class>
-	<class name="java/util/Map" since="1">
-		<extends name="java/lang/Object" />
-		<method name="clear()V" />
-		<method name="containsKey(Ljava/lang/Object;)Z" />
-		<method name="containsValue(Ljava/lang/Object;)Z" />
-		<method name="entrySet()Ljava/util/Set;" />
-		<method name="get(Ljava/lang/Object;)Ljava/lang/Object;" />
-		<method name="isEmpty()Z" />
-		<method name="keySet()Ljava/util/Set;" />
-		<method name="put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;" />
-		<method name="putAll(Ljava/util/Map;)V" />
-		<method name="remove(Ljava/lang/Object;)Ljava/lang/Object;" />
-		<method name="size()I" />
-		<method name="values()Ljava/util/Collection;" />
-	</class>
-	<class name="java/util/Map$Entry" since="1">
-		<extends name="java/lang/Object" />
-		<method name="getKey()Ljava/lang/Object;" />
-		<method name="getValue()Ljava/lang/Object;" />
-		<method name="setValue(Ljava/lang/Object;)Ljava/lang/Object;" />
-	</class>
-	<class name="java/util/MissingFormatArgumentException" since="1">
-		<extends name="java/util/IllegalFormatException" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="getFormatSpecifier()Ljava/lang/String;" />
-	</class>
-	<class name="java/util/MissingFormatWidthException" since="1">
-		<extends name="java/util/IllegalFormatException" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="getFormatSpecifier()Ljava/lang/String;" />
-	</class>
-	<class name="java/util/MissingResourceException" since="1">
-		<extends name="java/lang/RuntimeException" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="getClassName()Ljava/lang/String;" />
-		<method name="getKey()Ljava/lang/String;" />
-	</class>
-	<class name="java/util/NavigableMap" since="9">
-		<extends name="java/lang/Object" />
-		<implements name="java/util/SortedMap" />
-		<method name="ceilingEntry(Ljava/lang/Object;)Ljava/util/Map$Entry;" />
-		<method name="ceilingKey(Ljava/lang/Object;)Ljava/lang/Object;" />
-		<method name="descendingKeySet()Ljava/util/NavigableSet;" />
-		<method name="descendingMap()Ljava/util/NavigableMap;" />
-		<method name="firstEntry()Ljava/util/Map$Entry;" />
-		<method name="floorEntry(Ljava/lang/Object;)Ljava/util/Map$Entry;" />
-		<method name="floorKey(Ljava/lang/Object;)Ljava/lang/Object;" />
-		<method name="headMap(Ljava/lang/Object;Z)Ljava/util/NavigableMap;" />
-		<method name="higherEntry(Ljava/lang/Object;)Ljava/util/Map$Entry;" />
-		<method name="higherKey(Ljava/lang/Object;)Ljava/lang/Object;" />
-		<method name="lastEntry()Ljava/util/Map$Entry;" />
-		<method name="lowerEntry(Ljava/lang/Object;)Ljava/util/Map$Entry;" />
-		<method name="lowerKey(Ljava/lang/Object;)Ljava/lang/Object;" />
-		<method name="navigableKeySet()Ljava/util/NavigableSet;" />
-		<method name="pollFirstEntry()Ljava/util/Map$Entry;" />
-		<method name="pollLastEntry()Ljava/util/Map$Entry;" />
-		<method name="subMap(Ljava/lang/Object;ZLjava/lang/Object;Z)Ljava/util/NavigableMap;" />
-		<method name="tailMap(Ljava/lang/Object;Z)Ljava/util/NavigableMap;" />
-	</class>
-	<class name="java/util/NavigableSet" since="9">
-		<extends name="java/lang/Object" />
-		<implements name="java/util/SortedSet" />
-		<method name="ceiling(Ljava/lang/Object;)Ljava/lang/Object;" />
-		<method name="descendingIterator()Ljava/util/Iterator;" />
-		<method name="descendingSet()Ljava/util/NavigableSet;" />
-		<method name="floor(Ljava/lang/Object;)Ljava/lang/Object;" />
-		<method name="headSet(Ljava/lang/Object;Z)Ljava/util/NavigableSet;" />
-		<method name="higher(Ljava/lang/Object;)Ljava/lang/Object;" />
-		<method name="lower(Ljava/lang/Object;)Ljava/lang/Object;" />
-		<method name="pollFirst()Ljava/lang/Object;" />
-		<method name="pollLast()Ljava/lang/Object;" />
-		<method name="subSet(Ljava/lang/Object;ZLjava/lang/Object;Z)Ljava/util/NavigableSet;" />
-		<method name="tailSet(Ljava/lang/Object;Z)Ljava/util/NavigableSet;" />
-	</class>
-	<class name="java/util/NoSuchElementException" since="1">
-		<extends name="java/lang/RuntimeException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/util/Objects" since="19">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="compare(Ljava/lang/Object;Ljava/lang/Object;Ljava/util/Comparator;)I" />
-		<method name="deepEquals(Ljava/lang/Object;Ljava/lang/Object;)Z" />
-		<method name="equals(Ljava/lang/Object;Ljava/lang/Object;)Z" />
-		<method name="hash([Ljava/lang/Object;)I" />
-		<method name="hashCode(Ljava/lang/Object;)I" />
-		<method name="requireNonNull(Ljava/lang/Object;)Ljava/lang/Object;" />
-		<method name="requireNonNull(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;" />
-		<method name="toString(Ljava/lang/Object;)Ljava/lang/String;" />
-		<method name="toString(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/String;" />
-	</class>
-	<class name="java/util/Observable" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="addObserver(Ljava/util/Observer;)V" />
-		<method name="clearChanged()V" />
-		<method name="countObservers()I" />
-		<method name="deleteObserver(Ljava/util/Observer;)V" />
-		<method name="deleteObservers()V" />
-		<method name="hasChanged()Z" />
-		<method name="notifyObservers()V" />
-		<method name="notifyObservers(Ljava/lang/Object;)V" />
-		<method name="setChanged()V" />
-	</class>
-	<class name="java/util/Observer" since="1">
-		<extends name="java/lang/Object" />
-		<method name="update(Ljava/util/Observable;Ljava/lang/Object;)V" />
-	</class>
-	<class name="java/util/PriorityQueue" since="1">
-		<extends name="java/util/AbstractQueue" />
-		<implements name="java/io/Serializable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(I)V" />
-		<method name="&lt;init>(ILjava/util/Comparator;)V" />
-		<method name="&lt;init>(Ljava/util/Collection;)V" />
-		<method name="&lt;init>(Ljava/util/PriorityQueue;)V" />
-		<method name="&lt;init>(Ljava/util/SortedSet;)V" />
-		<method name="comparator()Ljava/util/Comparator;" />
-	</class>
-	<class name="java/util/Properties" since="1">
-		<extends name="java/util/Hashtable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/util/Properties;)V" />
-		<method name="getProperty(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="getProperty(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="list(Ljava/io/PrintStream;)V" />
-		<method name="list(Ljava/io/PrintWriter;)V" />
-		<method name="load(Ljava/io/InputStream;)V" />
-		<method name="load(Ljava/io/Reader;)V" since="9" />
-		<method name="loadFromXML(Ljava/io/InputStream;)V" />
-		<method name="propertyNames()Ljava/util/Enumeration;" />
-		<method name="save(Ljava/io/OutputStream;Ljava/lang/String;)V" />
-		<method name="setProperty(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;" />
-		<method name="store(Ljava/io/OutputStream;Ljava/lang/String;)V" />
-		<method name="store(Ljava/io/Writer;Ljava/lang/String;)V" since="9" />
-		<method name="storeToXML(Ljava/io/OutputStream;Ljava/lang/String;)V" />
-		<method name="storeToXML(Ljava/io/OutputStream;Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="stringPropertyNames()Ljava/util/Set;" since="9" />
-		<field name="defaults" />
-	</class>
-	<class name="java/util/PropertyPermission" since="1">
-		<extends name="java/security/BasicPermission" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
-	</class>
-	<class name="java/util/PropertyResourceBundle" since="1">
-		<extends name="java/util/ResourceBundle" />
-		<method name="&lt;init>(Ljava/io/InputStream;)V" />
-		<method name="&lt;init>(Ljava/io/Reader;)V" since="9" />
-	</class>
-	<class name="java/util/Queue" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/util/Collection" />
-		<method name="element()Ljava/lang/Object;" />
-		<method name="offer(Ljava/lang/Object;)Z" />
-		<method name="peek()Ljava/lang/Object;" />
-		<method name="poll()Ljava/lang/Object;" />
-		<method name="remove()Ljava/lang/Object;" />
-	</class>
-	<class name="java/util/Random" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(J)V" />
-		<method name="next(I)I" />
-		<method name="nextBoolean()Z" />
-		<method name="nextBytes([B)V" />
-		<method name="nextDouble()D" />
-		<method name="nextFloat()F" />
-		<method name="nextGaussian()D" />
-		<method name="nextInt()I" />
-		<method name="nextInt(I)I" />
-		<method name="nextLong()J" />
-		<method name="setSeed(J)V" />
-	</class>
-	<class name="java/util/RandomAccess" since="1">
-		<extends name="java/lang/Object" />
-	</class>
-	<class name="java/util/ResourceBundle" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="clearCache()V" since="9" />
-		<method name="clearCache(Ljava/lang/ClassLoader;)V" since="9" />
-		<method name="containsKey(Ljava/lang/String;)Z" since="9" />
-		<method name="getBundle(Ljava/lang/String;)Ljava/util/ResourceBundle;" />
-		<method name="getBundle(Ljava/lang/String;Ljava/util/Locale;)Ljava/util/ResourceBundle;" />
-		<method name="getBundle(Ljava/lang/String;Ljava/util/Locale;Ljava/lang/ClassLoader;)Ljava/util/ResourceBundle;" />
-		<method name="getBundle(Ljava/lang/String;Ljava/util/Locale;Ljava/lang/ClassLoader;Ljava/util/ResourceBundle$Control;)Ljava/util/ResourceBundle;" since="9" />
-		<method name="getBundle(Ljava/lang/String;Ljava/util/Locale;Ljava/util/ResourceBundle$Control;)Ljava/util/ResourceBundle;" since="9" />
-		<method name="getBundle(Ljava/lang/String;Ljava/util/ResourceBundle$Control;)Ljava/util/ResourceBundle;" since="9" />
-		<method name="getKeys()Ljava/util/Enumeration;" />
-		<method name="getLocale()Ljava/util/Locale;" />
-		<method name="getObject(Ljava/lang/String;)Ljava/lang/Object;" />
-		<method name="getString(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="getStringArray(Ljava/lang/String;)[Ljava/lang/String;" />
-		<method name="handleGetObject(Ljava/lang/String;)Ljava/lang/Object;" />
-		<method name="handleKeySet()Ljava/util/Set;" since="9" />
-		<method name="keySet()Ljava/util/Set;" since="9" />
-		<method name="setParent(Ljava/util/ResourceBundle;)V" />
-		<field name="parent" />
-	</class>
-	<class name="java/util/ResourceBundle$Control" since="9">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getCandidateLocales(Ljava/lang/String;Ljava/util/Locale;)Ljava/util/List;" />
-		<method name="getControl(Ljava/util/List;)Ljava/util/ResourceBundle$Control;" />
-		<method name="getFallbackLocale(Ljava/lang/String;Ljava/util/Locale;)Ljava/util/Locale;" />
-		<method name="getFormats(Ljava/lang/String;)Ljava/util/List;" />
-		<method name="getNoFallbackControl(Ljava/util/List;)Ljava/util/ResourceBundle$Control;" />
-		<method name="getTimeToLive(Ljava/lang/String;Ljava/util/Locale;)J" />
-		<method name="needsReload(Ljava/lang/String;Ljava/util/Locale;Ljava/lang/String;Ljava/lang/ClassLoader;Ljava/util/ResourceBundle;J)Z" />
-		<method name="newBundle(Ljava/lang/String;Ljava/util/Locale;Ljava/lang/String;Ljava/lang/ClassLoader;Z)Ljava/util/ResourceBundle;" />
-		<method name="toBundleName(Ljava/lang/String;Ljava/util/Locale;)Ljava/lang/String;" />
-		<method name="toResourceName(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
-		<field name="FORMAT_CLASS" />
-		<field name="FORMAT_DEFAULT" />
-		<field name="FORMAT_PROPERTIES" />
-		<field name="TTL_DONT_CACHE" />
-		<field name="TTL_NO_EXPIRATION_CONTROL" />
-	</class>
-	<class name="java/util/Scanner" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Closeable" since="19" />
-		<implements name="java/util/Iterator" />
-		<method name="&lt;init>(Ljava/io/File;)V" />
-		<method name="&lt;init>(Ljava/io/File;Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/io/InputStream;)V" />
-		<method name="&lt;init>(Ljava/io/InputStream;Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/Readable;)V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/nio/channels/ReadableByteChannel;)V" />
-		<method name="&lt;init>(Ljava/nio/channels/ReadableByteChannel;Ljava/lang/String;)V" />
-		<method name="close()V" />
-		<method name="delimiter()Ljava/util/regex/Pattern;" />
-		<method name="findInLine(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="findInLine(Ljava/util/regex/Pattern;)Ljava/lang/String;" />
-		<method name="findWithinHorizon(Ljava/lang/String;I)Ljava/lang/String;" />
-		<method name="findWithinHorizon(Ljava/util/regex/Pattern;I)Ljava/lang/String;" />
-		<method name="hasNext(Ljava/lang/String;)Z" />
-		<method name="hasNext(Ljava/util/regex/Pattern;)Z" />
-		<method name="hasNextBigDecimal()Z" />
-		<method name="hasNextBigInteger()Z" />
-		<method name="hasNextBigInteger(I)Z" />
-		<method name="hasNextBoolean()Z" />
-		<method name="hasNextByte()Z" />
-		<method name="hasNextByte(I)Z" />
-		<method name="hasNextDouble()Z" />
-		<method name="hasNextFloat()Z" />
-		<method name="hasNextInt()Z" />
-		<method name="hasNextInt(I)Z" />
-		<method name="hasNextLine()Z" />
-		<method name="hasNextLong()Z" />
-		<method name="hasNextLong(I)Z" />
-		<method name="hasNextShort()Z" />
-		<method name="hasNextShort(I)Z" />
-		<method name="ioException()Ljava/io/IOException;" />
-		<method name="locale()Ljava/util/Locale;" />
-		<method name="match()Ljava/util/regex/MatchResult;" />
-		<method name="next()Ljava/lang/String;" />
-		<method name="next(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="next(Ljava/util/regex/Pattern;)Ljava/lang/String;" />
-		<method name="nextBigDecimal()Ljava/math/BigDecimal;" />
-		<method name="nextBigInteger()Ljava/math/BigInteger;" />
-		<method name="nextBigInteger(I)Ljava/math/BigInteger;" />
-		<method name="nextBoolean()Z" />
-		<method name="nextByte()B" />
-		<method name="nextByte(I)B" />
-		<method name="nextDouble()D" />
-		<method name="nextFloat()F" />
-		<method name="nextInt()I" />
-		<method name="nextInt(I)I" />
-		<method name="nextLine()Ljava/lang/String;" />
-		<method name="nextLong()J" />
-		<method name="nextLong(I)J" />
-		<method name="nextShort()S" />
-		<method name="nextShort(I)S" />
-		<method name="radix()I" />
-		<method name="reset()Ljava/util/Scanner;" since="9" />
-		<method name="skip(Ljava/lang/String;)Ljava/util/Scanner;" />
-		<method name="skip(Ljava/util/regex/Pattern;)Ljava/util/Scanner;" />
-		<method name="useDelimiter(Ljava/lang/String;)Ljava/util/Scanner;" />
-		<method name="useDelimiter(Ljava/util/regex/Pattern;)Ljava/util/Scanner;" />
-		<method name="useLocale(Ljava/util/Locale;)Ljava/util/Scanner;" />
-		<method name="useRadix(I)Ljava/util/Scanner;" />
-	</class>
-	<class name="java/util/ServiceConfigurationError" since="9">
-		<extends name="java/lang/Error" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="java/util/ServiceLoader" since="9">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/Iterable" />
-		<method name="&lt;init>()V" />
-		<method name="load(Ljava/lang/Class;)Ljava/util/ServiceLoader;" />
-		<method name="load(Ljava/lang/Class;Ljava/lang/ClassLoader;)Ljava/util/ServiceLoader;" />
-		<method name="loadInstalled(Ljava/lang/Class;)Ljava/util/ServiceLoader;" />
-		<method name="reload()V" />
-	</class>
-	<class name="java/util/Set" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/util/Collection" />
-	</class>
-	<class name="java/util/SimpleTimeZone" since="1">
-		<extends name="java/util/TimeZone" />
-		<method name="&lt;init>(ILjava/lang/String;)V" />
-		<method name="&lt;init>(ILjava/lang/String;IIIIIIII)V" />
-		<method name="&lt;init>(ILjava/lang/String;IIIIIIIII)V" />
-		<method name="&lt;init>(ILjava/lang/String;IIIIIIIIIII)V" />
-		<method name="setDSTSavings(I)V" />
-		<method name="setEndRule(III)V" />
-		<method name="setEndRule(IIII)V" />
-		<method name="setEndRule(IIIIZ)V" />
-		<method name="setStartRule(III)V" />
-		<method name="setStartRule(IIII)V" />
-		<method name="setStartRule(IIIIZ)V" />
-		<method name="setStartYear(I)V" />
-		<field name="STANDARD_TIME" />
-		<field name="UTC_TIME" />
-		<field name="WALL_TIME" />
-	</class>
-	<class name="java/util/SortedMap" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/util/Map" />
-		<method name="comparator()Ljava/util/Comparator;" />
-		<method name="firstKey()Ljava/lang/Object;" />
-		<method name="headMap(Ljava/lang/Object;)Ljava/util/SortedMap;" />
-		<method name="lastKey()Ljava/lang/Object;" />
-		<method name="subMap(Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/SortedMap;" />
-		<method name="tailMap(Ljava/lang/Object;)Ljava/util/SortedMap;" />
-	</class>
-	<class name="java/util/SortedSet" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/util/Set" />
-		<method name="comparator()Ljava/util/Comparator;" />
-		<method name="first()Ljava/lang/Object;" />
-		<method name="headSet(Ljava/lang/Object;)Ljava/util/SortedSet;" />
-		<method name="last()Ljava/lang/Object;" />
-		<method name="subSet(Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/SortedSet;" />
-		<method name="tailSet(Ljava/lang/Object;)Ljava/util/SortedSet;" />
-	</class>
-	<class name="java/util/Stack" since="1">
-		<extends name="java/util/Vector" />
-		<method name="&lt;init>()V" />
-		<method name="empty()Z" />
-		<method name="peek()Ljava/lang/Object;" />
-		<method name="pop()Ljava/lang/Object;" />
-		<method name="push(Ljava/lang/Object;)Ljava/lang/Object;" />
-		<method name="search(Ljava/lang/Object;)I" />
-	</class>
-	<class name="java/util/StringTokenizer" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/util/Enumeration" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Z)V" />
-		<method name="countTokens()I" />
-		<method name="hasMoreTokens()Z" />
-		<method name="nextToken()Ljava/lang/String;" />
-		<method name="nextToken(Ljava/lang/String;)Ljava/lang/String;" />
-	</class>
-	<class name="java/util/TimeZone" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<implements name="java/lang/Cloneable" />
-		<method name="&lt;init>()V" />
-		<method name="getAvailableIDs()[Ljava/lang/String;" />
-		<method name="getAvailableIDs(I)[Ljava/lang/String;" />
-		<method name="getDSTSavings()I" />
-		<method name="getDefault()Ljava/util/TimeZone;" />
-		<method name="getDisplayName()Ljava/lang/String;" />
-		<method name="getDisplayName(Ljava/util/Locale;)Ljava/lang/String;" />
-		<method name="getDisplayName(ZI)Ljava/lang/String;" />
-		<method name="getDisplayName(ZILjava/util/Locale;)Ljava/lang/String;" />
-		<method name="getID()Ljava/lang/String;" />
-		<method name="getOffset(IIIIII)I" />
-		<method name="getOffset(J)I" />
-		<method name="getRawOffset()I" />
-		<method name="getTimeZone(Ljava/lang/String;)Ljava/util/TimeZone;" />
-		<method name="hasSameRules(Ljava/util/TimeZone;)Z" />
-		<method name="inDaylightTime(Ljava/util/Date;)Z" />
-		<method name="setDefault(Ljava/util/TimeZone;)V" />
-		<method name="setID(Ljava/lang/String;)V" />
-		<method name="setRawOffset(I)V" />
-		<method name="useDaylightTime()Z" />
-		<field name="LONG" />
-		<field name="SHORT" />
-	</class>
-	<class name="java/util/Timer" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Z)V" />
-		<method name="&lt;init>(Z)V" />
-		<method name="cancel()V" />
-		<method name="purge()I" />
-		<method name="schedule(Ljava/util/TimerTask;J)V" />
-		<method name="schedule(Ljava/util/TimerTask;JJ)V" />
-		<method name="schedule(Ljava/util/TimerTask;Ljava/util/Date;)V" />
-		<method name="schedule(Ljava/util/TimerTask;Ljava/util/Date;J)V" />
-		<method name="scheduleAtFixedRate(Ljava/util/TimerTask;JJ)V" />
-		<method name="scheduleAtFixedRate(Ljava/util/TimerTask;Ljava/util/Date;J)V" />
-	</class>
-	<class name="java/util/TimerTask" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/Runnable" />
-		<method name="&lt;init>()V" />
-		<method name="cancel()Z" />
-		<method name="scheduledExecutionTime()J" />
-	</class>
-	<class name="java/util/TooManyListenersException" since="1">
-		<extends name="java/lang/Exception" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/util/TreeMap" since="1">
-		<extends name="java/util/AbstractMap" />
-		<implements name="java/io/Serializable" />
-		<implements name="java/lang/Cloneable" />
-		<implements name="java/util/NavigableMap" since="9" />
-		<implements name="java/util/SortedMap" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/util/Comparator;)V" />
-		<method name="&lt;init>(Ljava/util/Map;)V" />
-		<method name="&lt;init>(Ljava/util/SortedMap;)V" />
-	</class>
-	<class name="java/util/TreeSet" since="1">
-		<extends name="java/util/AbstractSet" />
-		<implements name="java/io/Serializable" />
-		<implements name="java/lang/Cloneable" />
-		<implements name="java/util/NavigableSet" since="9" />
-		<implements name="java/util/SortedSet" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/util/Collection;)V" />
-		<method name="&lt;init>(Ljava/util/Comparator;)V" />
-		<method name="&lt;init>(Ljava/util/SortedSet;)V" />
-	</class>
-	<class name="java/util/UUID" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<implements name="java/lang/Comparable" />
-		<method name="&lt;init>(JJ)V" />
-		<method name="clockSequence()I" />
-		<method name="compareTo(Ljava/util/UUID;)I" />
-		<method name="fromString(Ljava/lang/String;)Ljava/util/UUID;" />
-		<method name="getLeastSignificantBits()J" />
-		<method name="getMostSignificantBits()J" />
-		<method name="nameUUIDFromBytes([B)Ljava/util/UUID;" />
-		<method name="node()J" />
-		<method name="randomUUID()Ljava/util/UUID;" />
-		<method name="timestamp()J" />
-		<method name="variant()I" />
-		<method name="version()I" />
-	</class>
-	<class name="java/util/UnknownFormatConversionException" since="1">
-		<extends name="java/util/IllegalFormatException" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="getConversion()Ljava/lang/String;" />
-	</class>
-	<class name="java/util/UnknownFormatFlagsException" since="1">
-		<extends name="java/util/IllegalFormatException" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="getFlags()Ljava/lang/String;" />
-	</class>
-	<class name="java/util/Vector" since="1">
-		<extends name="java/util/AbstractList" />
-		<implements name="java/io/Serializable" />
-		<implements name="java/lang/Cloneable" />
-		<implements name="java/util/List" />
-		<implements name="java/util/RandomAccess" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(I)V" />
-		<method name="&lt;init>(II)V" />
-		<method name="&lt;init>(Ljava/util/Collection;)V" />
-		<method name="addElement(Ljava/lang/Object;)V" />
-		<method name="capacity()I" />
-		<method name="copyInto([Ljava/lang/Object;)V" />
-		<method name="elementAt(I)Ljava/lang/Object;" />
-		<method name="elements()Ljava/util/Enumeration;" />
-		<method name="ensureCapacity(I)V" />
-		<method name="firstElement()Ljava/lang/Object;" />
-		<method name="indexOf(Ljava/lang/Object;I)I" />
-		<method name="insertElementAt(Ljava/lang/Object;I)V" />
-		<method name="lastElement()Ljava/lang/Object;" />
-		<method name="lastIndexOf(Ljava/lang/Object;I)I" />
-		<method name="removeAllElements()V" />
-		<method name="removeElement(Ljava/lang/Object;)Z" />
-		<method name="removeElementAt(I)V" />
-		<method name="setElementAt(Ljava/lang/Object;I)V" />
-		<method name="setSize(I)V" />
-		<method name="trimToSize()V" />
-		<field name="capacityIncrement" />
-		<field name="elementCount" />
-		<field name="elementData" />
-	</class>
-	<class name="java/util/WeakHashMap" since="1">
-		<extends name="java/util/AbstractMap" />
-		<implements name="java/util/Map" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(I)V" />
-		<method name="&lt;init>(IF)V" />
-		<method name="&lt;init>(Ljava/util/Map;)V" />
-	</class>
-	<class name="java/util/concurrent/AbstractExecutorService" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/util/concurrent/ExecutorService" />
-		<method name="&lt;init>()V" />
-		<method name="newTaskFor(Ljava/lang/Runnable;Ljava/lang/Object;)Ljava/util/concurrent/RunnableFuture;" since="9" />
-		<method name="newTaskFor(Ljava/util/concurrent/Callable;)Ljava/util/concurrent/RunnableFuture;" since="9" />
-	</class>
-	<class name="java/util/concurrent/ArrayBlockingQueue" since="1">
-		<extends name="java/util/AbstractQueue" />
-		<implements name="java/io/Serializable" />
-		<implements name="java/util/concurrent/BlockingQueue" />
-		<method name="&lt;init>(I)V" />
-		<method name="&lt;init>(IZ)V" />
-		<method name="&lt;init>(IZLjava/util/Collection;)V" />
-	</class>
-	<class name="java/util/concurrent/BlockingDeque" since="9">
-		<extends name="java/lang/Object" />
-		<implements name="java/util/Deque" />
-		<implements name="java/util/concurrent/BlockingQueue" />
-		<method name="offerFirst(Ljava/lang/Object;JLjava/util/concurrent/TimeUnit;)Z" />
-		<method name="offerLast(Ljava/lang/Object;JLjava/util/concurrent/TimeUnit;)Z" />
-		<method name="pollFirst(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object;" />
-		<method name="pollLast(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object;" />
-		<method name="putFirst(Ljava/lang/Object;)V" />
-		<method name="putLast(Ljava/lang/Object;)V" />
-		<method name="takeFirst()Ljava/lang/Object;" />
-		<method name="takeLast()Ljava/lang/Object;" />
-	</class>
-	<class name="java/util/concurrent/BlockingQueue" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/util/Queue" />
-		<method name="drainTo(Ljava/util/Collection;)I" />
-		<method name="drainTo(Ljava/util/Collection;I)I" />
-		<method name="offer(Ljava/lang/Object;JLjava/util/concurrent/TimeUnit;)Z" />
-		<method name="poll(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object;" />
-		<method name="put(Ljava/lang/Object;)V" />
-		<method name="remainingCapacity()I" />
-		<method name="take()Ljava/lang/Object;" />
-	</class>
-	<class name="java/util/concurrent/BrokenBarrierException" since="1">
-		<extends name="java/lang/Exception" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/util/concurrent/Callable" since="1">
-		<extends name="java/lang/Object" />
-		<method name="call()Ljava/lang/Object;" />
-	</class>
-	<class name="java/util/concurrent/CancellationException" since="1">
-		<extends name="java/lang/IllegalStateException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/util/concurrent/CompletionService" since="1">
-		<extends name="java/lang/Object" />
-		<method name="poll()Ljava/util/concurrent/Future;" />
-		<method name="poll(JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/Future;" />
-		<method name="submit(Ljava/lang/Runnable;Ljava/lang/Object;)Ljava/util/concurrent/Future;" />
-		<method name="submit(Ljava/util/concurrent/Callable;)Ljava/util/concurrent/Future;" />
-		<method name="take()Ljava/util/concurrent/Future;" />
-	</class>
-	<class name="java/util/concurrent/ConcurrentHashMap" since="1">
-		<extends name="java/util/AbstractMap" />
-		<implements name="java/io/Serializable" />
-		<implements name="java/util/concurrent/ConcurrentMap" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(I)V" />
-		<method name="&lt;init>(IF)V" since="9" />
-		<method name="&lt;init>(IFI)V" />
-		<method name="&lt;init>(Ljava/util/Map;)V" />
-		<method name="contains(Ljava/lang/Object;)Z" />
-		<method name="elements()Ljava/util/Enumeration;" />
-		<method name="keys()Ljava/util/Enumeration;" />
-	</class>
-	<class name="java/util/concurrent/ConcurrentLinkedQueue" since="1">
-		<extends name="java/util/AbstractQueue" />
-		<implements name="java/io/Serializable" />
-		<implements name="java/util/Queue" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/util/Collection;)V" />
-	</class>
-	<class name="java/util/concurrent/ConcurrentMap" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/util/Map" />
-		<method name="putIfAbsent(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;" />
-		<method name="remove(Ljava/lang/Object;Ljava/lang/Object;)Z" />
-		<method name="replace(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;" />
-		<method name="replace(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z" />
-	</class>
-	<class name="java/util/concurrent/ConcurrentNavigableMap" since="9">
-		<extends name="java/lang/Object" />
-		<implements name="java/util/NavigableMap" />
-		<implements name="java/util/concurrent/ConcurrentMap" />
-		<method name="descendingMap()Ljava/util/concurrent/ConcurrentNavigableMap;" />
-		<method name="headMap(Ljava/lang/Object;)Ljava/util/concurrent/ConcurrentNavigableMap;" />
-		<method name="headMap(Ljava/lang/Object;Z)Ljava/util/concurrent/ConcurrentNavigableMap;" />
-		<method name="keySet()Ljava/util/NavigableSet;" />
-		<method name="subMap(Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/concurrent/ConcurrentNavigableMap;" />
-		<method name="subMap(Ljava/lang/Object;ZLjava/lang/Object;Z)Ljava/util/concurrent/ConcurrentNavigableMap;" />
-		<method name="tailMap(Ljava/lang/Object;)Ljava/util/concurrent/ConcurrentNavigableMap;" />
-		<method name="tailMap(Ljava/lang/Object;Z)Ljava/util/concurrent/ConcurrentNavigableMap;" />
-	</class>
-	<class name="java/util/concurrent/ConcurrentSkipListMap" since="9">
-		<extends name="java/util/AbstractMap" />
-		<implements name="java/io/Serializable" />
-		<implements name="java/lang/Cloneable" />
-		<implements name="java/util/concurrent/ConcurrentNavigableMap" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/util/Comparator;)V" />
-		<method name="&lt;init>(Ljava/util/Map;)V" />
-		<method name="&lt;init>(Ljava/util/SortedMap;)V" />
-		<method name="clone()Ljava/util/concurrent/ConcurrentSkipListMap;" />
-	</class>
-	<class name="java/util/concurrent/ConcurrentSkipListSet" since="9">
-		<extends name="java/util/AbstractSet" />
-		<implements name="java/io/Serializable" />
-		<implements name="java/lang/Cloneable" />
-		<implements name="java/util/NavigableSet" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/util/Collection;)V" />
-		<method name="&lt;init>(Ljava/util/Comparator;)V" />
-		<method name="&lt;init>(Ljava/util/SortedSet;)V" />
-		<method name="clone()Ljava/util/concurrent/ConcurrentSkipListSet;" />
-		<method name="headSet(Ljava/lang/Object;)Ljava/util/NavigableSet;" />
-		<method name="subSet(Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/NavigableSet;" />
-		<method name="tailSet(Ljava/lang/Object;)Ljava/util/NavigableSet;" />
-	</class>
-	<class name="java/util/concurrent/CopyOnWriteArrayList" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<implements name="java/lang/Cloneable" />
-		<implements name="java/util/List" />
-		<implements name="java/util/RandomAccess" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/util/Collection;)V" />
-		<method name="&lt;init>([Ljava/lang/Object;)V" />
-		<method name="addAllAbsent(Ljava/util/Collection;)I" />
-		<method name="addIfAbsent(Ljava/lang/Object;)Z" />
-		<method name="indexOf(Ljava/lang/Object;I)I" />
-		<method name="lastIndexOf(Ljava/lang/Object;I)I" />
-	</class>
-	<class name="java/util/concurrent/CopyOnWriteArraySet" since="1">
-		<extends name="java/util/AbstractSet" />
-		<implements name="java/io/Serializable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/util/Collection;)V" />
-	</class>
-	<class name="java/util/concurrent/CountDownLatch" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(I)V" />
-		<method name="await()V" />
-		<method name="await(JLjava/util/concurrent/TimeUnit;)Z" />
-		<method name="countDown()V" />
-		<method name="getCount()J" />
-	</class>
-	<class name="java/util/concurrent/CyclicBarrier" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(I)V" />
-		<method name="&lt;init>(ILjava/lang/Runnable;)V" />
-		<method name="await()I" />
-		<method name="await(JLjava/util/concurrent/TimeUnit;)I" />
-		<method name="getNumberWaiting()I" />
-		<method name="getParties()I" />
-		<method name="isBroken()Z" />
-		<method name="reset()V" />
-	</class>
-	<class name="java/util/concurrent/DelayQueue" since="1">
-		<extends name="java/util/AbstractQueue" />
-		<implements name="java/util/concurrent/BlockingQueue" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/util/Collection;)V" />
-		<method name="add(Ljava/util/concurrent/Delayed;)Z" />
-		<method name="offer(Ljava/util/concurrent/Delayed;)Z" />
-		<method name="offer(Ljava/util/concurrent/Delayed;JLjava/util/concurrent/TimeUnit;)Z" />
-		<method name="peek()Ljava/util/concurrent/Delayed;" />
-		<method name="poll()Ljava/util/concurrent/Delayed;" />
-		<method name="poll(JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/Delayed;" />
-		<method name="put(Ljava/util/concurrent/Delayed;)V" />
-		<method name="take()Ljava/util/concurrent/Delayed;" />
-	</class>
-	<class name="java/util/concurrent/Delayed" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/Comparable" />
-		<method name="getDelay(Ljava/util/concurrent/TimeUnit;)J" />
-	</class>
-	<class name="java/util/concurrent/Exchanger" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="exchange(Ljava/lang/Object;)Ljava/lang/Object;" />
-		<method name="exchange(Ljava/lang/Object;JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object;" />
-	</class>
-	<class name="java/util/concurrent/ExecutionException" since="1">
-		<extends name="java/lang/Exception" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="java/util/concurrent/Executor" since="1">
-		<extends name="java/lang/Object" />
-		<method name="execute(Ljava/lang/Runnable;)V" />
-	</class>
-	<class name="java/util/concurrent/ExecutorCompletionService" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/util/concurrent/CompletionService" />
-		<method name="&lt;init>(Ljava/util/concurrent/Executor;)V" />
-		<method name="&lt;init>(Ljava/util/concurrent/Executor;Ljava/util/concurrent/BlockingQueue;)V" />
-	</class>
-	<class name="java/util/concurrent/ExecutorService" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/util/concurrent/Executor" />
-		<method name="awaitTermination(JLjava/util/concurrent/TimeUnit;)Z" />
-		<method name="invokeAll(Ljava/util/Collection;)Ljava/util/List;" />
-		<method name="invokeAll(Ljava/util/Collection;JLjava/util/concurrent/TimeUnit;)Ljava/util/List;" />
-		<method name="invokeAny(Ljava/util/Collection;)Ljava/lang/Object;" />
-		<method name="invokeAny(Ljava/util/Collection;JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object;" />
-		<method name="isShutdown()Z" />
-		<method name="isTerminated()Z" />
-		<method name="shutdown()V" />
-		<method name="shutdownNow()Ljava/util/List;" />
-		<method name="submit(Ljava/lang/Runnable;)Ljava/util/concurrent/Future;" />
-		<method name="submit(Ljava/lang/Runnable;Ljava/lang/Object;)Ljava/util/concurrent/Future;" />
-		<method name="submit(Ljava/util/concurrent/Callable;)Ljava/util/concurrent/Future;" />
-	</class>
-	<class name="java/util/concurrent/Executors" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="callable(Ljava/lang/Runnable;)Ljava/util/concurrent/Callable;" />
-		<method name="callable(Ljava/lang/Runnable;Ljava/lang/Object;)Ljava/util/concurrent/Callable;" />
-		<method name="callable(Ljava/security/PrivilegedAction;)Ljava/util/concurrent/Callable;" />
-		<method name="callable(Ljava/security/PrivilegedExceptionAction;)Ljava/util/concurrent/Callable;" />
-		<method name="defaultThreadFactory()Ljava/util/concurrent/ThreadFactory;" />
-		<method name="newCachedThreadPool()Ljava/util/concurrent/ExecutorService;" />
-		<method name="newCachedThreadPool(Ljava/util/concurrent/ThreadFactory;)Ljava/util/concurrent/ExecutorService;" />
-		<method name="newFixedThreadPool(I)Ljava/util/concurrent/ExecutorService;" />
-		<method name="newFixedThreadPool(ILjava/util/concurrent/ThreadFactory;)Ljava/util/concurrent/ExecutorService;" />
-		<method name="newScheduledThreadPool(I)Ljava/util/concurrent/ScheduledExecutorService;" />
-		<method name="newScheduledThreadPool(ILjava/util/concurrent/ThreadFactory;)Ljava/util/concurrent/ScheduledExecutorService;" />
-		<method name="newSingleThreadExecutor()Ljava/util/concurrent/ExecutorService;" />
-		<method name="newSingleThreadExecutor(Ljava/util/concurrent/ThreadFactory;)Ljava/util/concurrent/ExecutorService;" />
-		<method name="newSingleThreadScheduledExecutor()Ljava/util/concurrent/ScheduledExecutorService;" />
-		<method name="newSingleThreadScheduledExecutor(Ljava/util/concurrent/ThreadFactory;)Ljava/util/concurrent/ScheduledExecutorService;" />
-		<method name="privilegedCallable(Ljava/util/concurrent/Callable;)Ljava/util/concurrent/Callable;" />
-		<method name="privilegedCallableUsingCurrentClassLoader(Ljava/util/concurrent/Callable;)Ljava/util/concurrent/Callable;" />
-		<method name="privilegedThreadFactory()Ljava/util/concurrent/ThreadFactory;" />
-		<method name="unconfigurableExecutorService(Ljava/util/concurrent/ExecutorService;)Ljava/util/concurrent/ExecutorService;" />
-		<method name="unconfigurableScheduledExecutorService(Ljava/util/concurrent/ScheduledExecutorService;)Ljava/util/concurrent/ScheduledExecutorService;" />
-	</class>
-	<class name="java/util/concurrent/Future" since="1">
-		<extends name="java/lang/Object" />
-		<method name="cancel(Z)Z" />
-		<method name="get()Ljava/lang/Object;" />
-		<method name="get(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object;" />
-		<method name="isCancelled()Z" />
-		<method name="isDone()Z" />
-	</class>
-	<class name="java/util/concurrent/FutureTask" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/Runnable" />
-		<implements name="java/util/concurrent/Future" />
-		<implements name="java/util/concurrent/RunnableFuture" since="9" />
-		<method name="&lt;init>(Ljava/lang/Runnable;Ljava/lang/Object;)V" />
-		<method name="&lt;init>(Ljava/util/concurrent/Callable;)V" />
-		<method name="done()V" />
-		<method name="runAndReset()Z" />
-		<method name="set(Ljava/lang/Object;)V" />
-		<method name="setException(Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="java/util/concurrent/LinkedBlockingDeque" since="9">
-		<extends name="java/util/AbstractQueue" />
-		<implements name="java/io/Serializable" />
-		<implements name="java/util/concurrent/BlockingDeque" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(I)V" />
-		<method name="&lt;init>(Ljava/util/Collection;)V" />
-	</class>
-	<class name="java/util/concurrent/LinkedBlockingQueue" since="1">
-		<extends name="java/util/AbstractQueue" />
-		<implements name="java/io/Serializable" />
-		<implements name="java/util/concurrent/BlockingQueue" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(I)V" />
-		<method name="&lt;init>(Ljava/util/Collection;)V" />
-	</class>
-	<class name="java/util/concurrent/PriorityBlockingQueue" since="1">
-		<extends name="java/util/AbstractQueue" />
-		<implements name="java/io/Serializable" />
-		<implements name="java/util/concurrent/BlockingQueue" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(I)V" />
-		<method name="&lt;init>(ILjava/util/Comparator;)V" />
-		<method name="&lt;init>(Ljava/util/Collection;)V" />
-		<method name="comparator()Ljava/util/Comparator;" />
-	</class>
-	<class name="java/util/concurrent/RejectedExecutionException" since="1">
-		<extends name="java/lang/RuntimeException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="java/util/concurrent/RejectedExecutionHandler" since="1">
-		<extends name="java/lang/Object" />
-		<method name="rejectedExecution(Ljava/lang/Runnable;Ljava/util/concurrent/ThreadPoolExecutor;)V" />
-	</class>
-	<class name="java/util/concurrent/RunnableFuture" since="9">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/Runnable" />
-		<implements name="java/util/concurrent/Future" />
-	</class>
-	<class name="java/util/concurrent/RunnableScheduledFuture" since="9">
-		<extends name="java/lang/Object" />
-		<implements name="java/util/concurrent/RunnableFuture" />
-		<implements name="java/util/concurrent/ScheduledFuture" />
-		<method name="isPeriodic()Z" />
-	</class>
-	<class name="java/util/concurrent/ScheduledExecutorService" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/util/concurrent/ExecutorService" />
-		<method name="schedule(Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture;" />
-		<method name="schedule(Ljava/util/concurrent/Callable;JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture;" />
-		<method name="scheduleAtFixedRate(Ljava/lang/Runnable;JJLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture;" />
-		<method name="scheduleWithFixedDelay(Ljava/lang/Runnable;JJLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture;" />
-	</class>
-	<class name="java/util/concurrent/ScheduledFuture" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/util/concurrent/Delayed" />
-		<implements name="java/util/concurrent/Future" />
-	</class>
-	<class name="java/util/concurrent/ScheduledThreadPoolExecutor" since="1">
-		<extends name="java/util/concurrent/ThreadPoolExecutor" />
-		<implements name="java/util/concurrent/ScheduledExecutorService" />
-		<method name="&lt;init>(I)V" />
-		<method name="&lt;init>(ILjava/util/concurrent/RejectedExecutionHandler;)V" />
-		<method name="&lt;init>(ILjava/util/concurrent/ThreadFactory;)V" />
-		<method name="&lt;init>(ILjava/util/concurrent/ThreadFactory;Ljava/util/concurrent/RejectedExecutionHandler;)V" />
-		<method name="decorateTask(Ljava/lang/Runnable;Ljava/util/concurrent/RunnableScheduledFuture;)Ljava/util/concurrent/RunnableScheduledFuture;" since="9" />
-		<method name="decorateTask(Ljava/util/concurrent/Callable;Ljava/util/concurrent/RunnableScheduledFuture;)Ljava/util/concurrent/RunnableScheduledFuture;" since="9" />
-		<method name="getContinueExistingPeriodicTasksAfterShutdownPolicy()Z" />
-		<method name="getExecuteExistingDelayedTasksAfterShutdownPolicy()Z" />
-		<method name="setContinueExistingPeriodicTasksAfterShutdownPolicy(Z)V" />
-		<method name="setExecuteExistingDelayedTasksAfterShutdownPolicy(Z)V" />
-	</class>
-	<class name="java/util/concurrent/Semaphore" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<method name="&lt;init>(I)V" />
-		<method name="&lt;init>(IZ)V" />
-		<method name="acquire()V" />
-		<method name="acquire(I)V" />
-		<method name="acquireUninterruptibly()V" />
-		<method name="acquireUninterruptibly(I)V" />
-		<method name="availablePermits()I" />
-		<method name="drainPermits()I" />
-		<method name="getQueueLength()I" />
-		<method name="getQueuedThreads()Ljava/util/Collection;" />
-		<method name="hasQueuedThreads()Z" />
-		<method name="isFair()Z" />
-		<method name="reducePermits(I)V" />
-		<method name="release()V" />
-		<method name="release(I)V" />
-		<method name="tryAcquire()Z" />
-		<method name="tryAcquire(I)Z" />
-		<method name="tryAcquire(IJLjava/util/concurrent/TimeUnit;)Z" />
-		<method name="tryAcquire(JLjava/util/concurrent/TimeUnit;)Z" />
-	</class>
-	<class name="java/util/concurrent/SynchronousQueue" since="1">
-		<extends name="java/util/AbstractQueue" />
-		<implements name="java/io/Serializable" />
-		<implements name="java/util/concurrent/BlockingQueue" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Z)V" />
-	</class>
-	<class name="java/util/concurrent/ThreadFactory" since="1">
-		<extends name="java/lang/Object" />
-		<method name="newThread(Ljava/lang/Runnable;)Ljava/lang/Thread;" />
-	</class>
-	<class name="java/util/concurrent/ThreadPoolExecutor" since="1">
-		<extends name="java/util/concurrent/AbstractExecutorService" />
-		<method name="&lt;init>(IIJLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/BlockingQueue;)V" />
-		<method name="&lt;init>(IIJLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/BlockingQueue;Ljava/util/concurrent/RejectedExecutionHandler;)V" />
-		<method name="&lt;init>(IIJLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/BlockingQueue;Ljava/util/concurrent/ThreadFactory;)V" />
-		<method name="&lt;init>(IIJLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/BlockingQueue;Ljava/util/concurrent/ThreadFactory;Ljava/util/concurrent/RejectedExecutionHandler;)V" />
-		<method name="afterExecute(Ljava/lang/Runnable;Ljava/lang/Throwable;)V" />
-		<method name="allowCoreThreadTimeOut(Z)V" since="9" />
-		<method name="allowsCoreThreadTimeOut()Z" since="9" />
-		<method name="beforeExecute(Ljava/lang/Thread;Ljava/lang/Runnable;)V" />
-		<method name="getActiveCount()I" />
-		<method name="getCompletedTaskCount()J" />
-		<method name="getCorePoolSize()I" />
-		<method name="getKeepAliveTime(Ljava/util/concurrent/TimeUnit;)J" />
-		<method name="getLargestPoolSize()I" />
-		<method name="getMaximumPoolSize()I" />
-		<method name="getPoolSize()I" />
-		<method name="getQueue()Ljava/util/concurrent/BlockingQueue;" />
-		<method name="getRejectedExecutionHandler()Ljava/util/concurrent/RejectedExecutionHandler;" />
-		<method name="getTaskCount()J" />
-		<method name="getThreadFactory()Ljava/util/concurrent/ThreadFactory;" />
-		<method name="isTerminating()Z" />
-		<method name="prestartAllCoreThreads()I" />
-		<method name="prestartCoreThread()Z" />
-		<method name="purge()V" />
-		<method name="remove(Ljava/lang/Runnable;)Z" />
-		<method name="setCorePoolSize(I)V" />
-		<method name="setKeepAliveTime(JLjava/util/concurrent/TimeUnit;)V" />
-		<method name="setMaximumPoolSize(I)V" />
-		<method name="setRejectedExecutionHandler(Ljava/util/concurrent/RejectedExecutionHandler;)V" />
-		<method name="setThreadFactory(Ljava/util/concurrent/ThreadFactory;)V" />
-		<method name="terminated()V" />
-	</class>
-	<class name="java/util/concurrent/ThreadPoolExecutor$AbortPolicy" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/util/concurrent/RejectedExecutionHandler" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="java/util/concurrent/ThreadPoolExecutor$CallerRunsPolicy" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/util/concurrent/RejectedExecutionHandler" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="java/util/concurrent/ThreadPoolExecutor$DiscardOldestPolicy" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/util/concurrent/RejectedExecutionHandler" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="java/util/concurrent/ThreadPoolExecutor$DiscardPolicy" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/util/concurrent/RejectedExecutionHandler" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="java/util/concurrent/TimeUnit" since="1">
-		<extends name="java/lang/Enum" />
-		<method name="convert(JLjava/util/concurrent/TimeUnit;)J" />
-		<method name="sleep(J)V" />
-		<method name="timedJoin(Ljava/lang/Thread;J)V" />
-		<method name="timedWait(Ljava/lang/Object;J)V" />
-		<method name="toDays(J)J" since="9" />
-		<method name="toHours(J)J" since="9" />
-		<method name="toMicros(J)J" />
-		<method name="toMillis(J)J" />
-		<method name="toMinutes(J)J" since="9" />
-		<method name="toNanos(J)J" />
-		<method name="toSeconds(J)J" />
-		<method name="valueOf(Ljava/lang/String;)Ljava/util/concurrent/TimeUnit;" />
-		<method name="values()[Ljava/util/concurrent/TimeUnit;" />
-		<field name="DAYS" since="9" />
-		<field name="HOURS" since="9" />
-		<field name="MICROSECONDS" />
-		<field name="MILLISECONDS" />
-		<field name="MINUTES" since="9" />
-		<field name="NANOSECONDS" />
-		<field name="SECONDS" />
-	</class>
-	<class name="java/util/concurrent/TimeoutException" since="1">
-		<extends name="java/lang/Exception" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/util/concurrent/atomic/AtomicBoolean" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Z)V" />
-		<method name="compareAndSet(ZZ)Z" />
-		<method name="get()Z" />
-		<method name="getAndSet(Z)Z" />
-		<method name="lazySet(Z)V" since="9" />
-		<method name="set(Z)V" />
-		<method name="weakCompareAndSet(ZZ)Z" />
-	</class>
-	<class name="java/util/concurrent/atomic/AtomicInteger" since="1">
-		<extends name="java/lang/Number" />
-		<implements name="java/io/Serializable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(I)V" />
-		<method name="addAndGet(I)I" />
-		<method name="compareAndSet(II)Z" />
-		<method name="decrementAndGet()I" />
-		<method name="get()I" />
-		<method name="getAndAdd(I)I" />
-		<method name="getAndDecrement()I" />
-		<method name="getAndIncrement()I" />
-		<method name="getAndSet(I)I" />
-		<method name="incrementAndGet()I" />
-		<method name="lazySet(I)V" since="9" />
-		<method name="set(I)V" />
-		<method name="weakCompareAndSet(II)Z" />
-	</class>
-	<class name="java/util/concurrent/atomic/AtomicIntegerArray" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<method name="&lt;init>(I)V" />
-		<method name="&lt;init>([I)V" />
-		<method name="addAndGet(II)I" />
-		<method name="compareAndSet(III)Z" />
-		<method name="decrementAndGet(I)I" />
-		<method name="get(I)I" />
-		<method name="getAndAdd(II)I" />
-		<method name="getAndDecrement(I)I" />
-		<method name="getAndIncrement(I)I" />
-		<method name="getAndSet(II)I" />
-		<method name="incrementAndGet(I)I" />
-		<method name="lazySet(II)V" since="9" />
-		<method name="length()I" />
-		<method name="set(II)V" />
-		<method name="weakCompareAndSet(III)Z" />
-	</class>
-	<class name="java/util/concurrent/atomic/AtomicIntegerFieldUpdater" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="addAndGet(Ljava/lang/Object;I)I" />
-		<method name="compareAndSet(Ljava/lang/Object;II)Z" />
-		<method name="decrementAndGet(Ljava/lang/Object;)I" />
-		<method name="get(Ljava/lang/Object;)I" />
-		<method name="getAndAdd(Ljava/lang/Object;I)I" />
-		<method name="getAndDecrement(Ljava/lang/Object;)I" />
-		<method name="getAndIncrement(Ljava/lang/Object;)I" />
-		<method name="getAndSet(Ljava/lang/Object;I)I" />
-		<method name="incrementAndGet(Ljava/lang/Object;)I" />
-		<method name="lazySet(Ljava/lang/Object;I)V" since="9" />
-		<method name="newUpdater(Ljava/lang/Class;Ljava/lang/String;)Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;" />
-		<method name="set(Ljava/lang/Object;I)V" />
-		<method name="weakCompareAndSet(Ljava/lang/Object;II)Z" />
-	</class>
-	<class name="java/util/concurrent/atomic/AtomicLong" since="1">
-		<extends name="java/lang/Number" />
-		<implements name="java/io/Serializable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(J)V" />
-		<method name="addAndGet(J)J" />
-		<method name="compareAndSet(JJ)Z" />
-		<method name="decrementAndGet()J" />
-		<method name="get()J" />
-		<method name="getAndAdd(J)J" />
-		<method name="getAndDecrement()J" />
-		<method name="getAndIncrement()J" />
-		<method name="getAndSet(J)J" />
-		<method name="incrementAndGet()J" />
-		<method name="lazySet(J)V" since="9" />
-		<method name="set(J)V" />
-		<method name="weakCompareAndSet(JJ)Z" />
-	</class>
-	<class name="java/util/concurrent/atomic/AtomicLongArray" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<method name="&lt;init>(I)V" />
-		<method name="&lt;init>([J)V" />
-		<method name="addAndGet(IJ)J" />
-		<method name="compareAndSet(IJJ)Z" />
-		<method name="decrementAndGet(I)J" />
-		<method name="get(I)J" />
-		<method name="getAndAdd(IJ)J" />
-		<method name="getAndDecrement(I)J" />
-		<method name="getAndIncrement(I)J" />
-		<method name="getAndSet(IJ)J" />
-		<method name="incrementAndGet(I)J" />
-		<method name="lazySet(IJ)V" since="9" />
-		<method name="length()I" />
-		<method name="set(IJ)V" />
-		<method name="weakCompareAndSet(IJJ)Z" />
-	</class>
-	<class name="java/util/concurrent/atomic/AtomicLongFieldUpdater" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="addAndGet(Ljava/lang/Object;J)J" />
-		<method name="compareAndSet(Ljava/lang/Object;JJ)Z" />
-		<method name="decrementAndGet(Ljava/lang/Object;)J" />
-		<method name="get(Ljava/lang/Object;)J" />
-		<method name="getAndAdd(Ljava/lang/Object;J)J" />
-		<method name="getAndDecrement(Ljava/lang/Object;)J" />
-		<method name="getAndIncrement(Ljava/lang/Object;)J" />
-		<method name="getAndSet(Ljava/lang/Object;J)J" />
-		<method name="incrementAndGet(Ljava/lang/Object;)J" />
-		<method name="lazySet(Ljava/lang/Object;J)V" since="9" />
-		<method name="newUpdater(Ljava/lang/Class;Ljava/lang/String;)Ljava/util/concurrent/atomic/AtomicLongFieldUpdater;" />
-		<method name="set(Ljava/lang/Object;J)V" />
-		<method name="weakCompareAndSet(Ljava/lang/Object;JJ)Z" />
-	</class>
-	<class name="java/util/concurrent/atomic/AtomicMarkableReference" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/lang/Object;Z)V" />
-		<method name="attemptMark(Ljava/lang/Object;Z)Z" />
-		<method name="compareAndSet(Ljava/lang/Object;Ljava/lang/Object;ZZ)Z" />
-		<method name="get([Z)Ljava/lang/Object;" />
-		<method name="getReference()Ljava/lang/Object;" />
-		<method name="isMarked()Z" />
-		<method name="set(Ljava/lang/Object;Z)V" />
-		<method name="weakCompareAndSet(Ljava/lang/Object;Ljava/lang/Object;ZZ)Z" />
-	</class>
-	<class name="java/util/concurrent/atomic/AtomicReference" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/Object;)V" />
-		<method name="compareAndSet(Ljava/lang/Object;Ljava/lang/Object;)Z" />
-		<method name="get()Ljava/lang/Object;" />
-		<method name="getAndSet(Ljava/lang/Object;)Ljava/lang/Object;" />
-		<method name="lazySet(Ljava/lang/Object;)V" since="9" />
-		<method name="set(Ljava/lang/Object;)V" />
-		<method name="weakCompareAndSet(Ljava/lang/Object;Ljava/lang/Object;)Z" />
-	</class>
-	<class name="java/util/concurrent/atomic/AtomicReferenceArray" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<method name="&lt;init>(I)V" />
-		<method name="&lt;init>([Ljava/lang/Object;)V" />
-		<method name="compareAndSet(ILjava/lang/Object;Ljava/lang/Object;)Z" />
-		<method name="get(I)Ljava/lang/Object;" />
-		<method name="getAndSet(ILjava/lang/Object;)Ljava/lang/Object;" />
-		<method name="lazySet(ILjava/lang/Object;)V" since="9" />
-		<method name="length()I" />
-		<method name="set(ILjava/lang/Object;)V" />
-		<method name="weakCompareAndSet(ILjava/lang/Object;Ljava/lang/Object;)Z" />
-	</class>
-	<class name="java/util/concurrent/atomic/AtomicReferenceFieldUpdater" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="compareAndSet(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z" />
-		<method name="get(Ljava/lang/Object;)Ljava/lang/Object;" />
-		<method name="getAndSet(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;" />
-		<method name="lazySet(Ljava/lang/Object;Ljava/lang/Object;)V" since="9" />
-		<method name="newUpdater(Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/String;)Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;" />
-		<method name="set(Ljava/lang/Object;Ljava/lang/Object;)V" />
-		<method name="weakCompareAndSet(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z" />
-	</class>
-	<class name="java/util/concurrent/atomic/AtomicStampedReference" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/lang/Object;I)V" />
-		<method name="attemptStamp(Ljava/lang/Object;I)Z" />
-		<method name="compareAndSet(Ljava/lang/Object;Ljava/lang/Object;II)Z" />
-		<method name="get([I)Ljava/lang/Object;" />
-		<method name="getReference()Ljava/lang/Object;" />
-		<method name="getStamp()I" />
-		<method name="set(Ljava/lang/Object;I)V" />
-		<method name="weakCompareAndSet(Ljava/lang/Object;Ljava/lang/Object;II)Z" />
-	</class>
-	<class name="java/util/concurrent/locks/AbstractOwnableSynchronizer" since="5">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<method name="&lt;init>()V" />
-		<method name="getExclusiveOwnerThread()Ljava/lang/Thread;" />
-		<method name="setExclusiveOwnerThread(Ljava/lang/Thread;)V" />
-	</class>
-	<class name="java/util/concurrent/locks/AbstractQueuedLongSynchronizer" since="9">
-		<extends name="java/util/concurrent/locks/AbstractOwnableSynchronizer" />
-		<implements name="java/io/Serializable" />
-		<method name="&lt;init>()V" />
-		<method name="acquire(J)V" />
-		<method name="acquireInterruptibly(J)V" />
-		<method name="acquireShared(J)V" />
-		<method name="acquireSharedInterruptibly(J)V" />
-		<method name="compareAndSetState(JJ)Z" />
-		<method name="getExclusiveQueuedThreads()Ljava/util/Collection;" />
-		<method name="getFirstQueuedThread()Ljava/lang/Thread;" />
-		<method name="getQueueLength()I" />
-		<method name="getQueuedThreads()Ljava/util/Collection;" />
-		<method name="getSharedQueuedThreads()Ljava/util/Collection;" />
-		<method name="getState()J" />
-		<method name="getWaitQueueLength(Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer$ConditionObject;)I" />
-		<method name="getWaitingThreads(Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer$ConditionObject;)Ljava/util/Collection;" />
-		<method name="hasContended()Z" />
-		<method name="hasQueuedThreads()Z" />
-		<method name="hasWaiters(Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer$ConditionObject;)Z" />
-		<method name="isHeldExclusively()Z" />
-		<method name="isQueued(Ljava/lang/Thread;)Z" />
-		<method name="owns(Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer$ConditionObject;)Z" />
-		<method name="release(J)Z" />
-		<method name="releaseShared(J)Z" />
-		<method name="setState(J)V" />
-		<method name="tryAcquire(J)Z" />
-		<method name="tryAcquireNanos(JJ)Z" />
-		<method name="tryAcquireShared(J)J" />
-		<method name="tryAcquireSharedNanos(JJ)Z" />
-		<method name="tryRelease(J)Z" />
-		<method name="tryReleaseShared(J)Z" />
-	</class>
-	<class name="java/util/concurrent/locks/AbstractQueuedLongSynchronizer$ConditionObject" since="9">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<implements name="java/util/concurrent/locks/Condition" />
-		<method name="&lt;init>(Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;)V" />
-		<method name="getWaitQueueLength()I" />
-		<method name="getWaitingThreads()Ljava/util/Collection;" />
-		<method name="hasWaiters()Z" />
-	</class>
-	<class name="java/util/concurrent/locks/AbstractQueuedSynchronizer" since="1">
-		<extends name="java/lang/Object" />
-		<extends name="java/util/concurrent/locks/AbstractOwnableSynchronizer" since="5" />
-		<implements name="java/io/Serializable" />
-		<method name="&lt;init>()V" />
-		<method name="acquire(I)V" />
-		<method name="acquireInterruptibly(I)V" />
-		<method name="acquireShared(I)V" />
-		<method name="acquireSharedInterruptibly(I)V" />
-		<method name="compareAndSetState(II)Z" />
-		<method name="getExclusiveQueuedThreads()Ljava/util/Collection;" />
-		<method name="getFirstQueuedThread()Ljava/lang/Thread;" />
-		<method name="getQueueLength()I" />
-		<method name="getQueuedThreads()Ljava/util/Collection;" />
-		<method name="getSharedQueuedThreads()Ljava/util/Collection;" />
-		<method name="getState()I" />
-		<method name="getWaitQueueLength(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;)I" />
-		<method name="getWaitingThreads(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;)Ljava/util/Collection;" />
-		<method name="hasContended()Z" />
-		<method name="hasQueuedThreads()Z" />
-		<method name="hasWaiters(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;)Z" />
-		<method name="isHeldExclusively()Z" />
-		<method name="isQueued(Ljava/lang/Thread;)Z" />
-		<method name="owns(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;)Z" />
-		<method name="release(I)Z" />
-		<method name="releaseShared(I)Z" />
-		<method name="setState(I)V" />
-		<method name="tryAcquire(I)Z" />
-		<method name="tryAcquireNanos(IJ)Z" />
-		<method name="tryAcquireShared(I)I" />
-		<method name="tryAcquireSharedNanos(IJ)Z" />
-		<method name="tryRelease(I)Z" />
-		<method name="tryReleaseShared(I)Z" />
-	</class>
-	<class name="java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<implements name="java/util/concurrent/locks/Condition" />
-		<method name="&lt;init>(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;)V" />
-		<method name="getWaitQueueLength()I" />
-		<method name="getWaitingThreads()Ljava/util/Collection;" />
-		<method name="hasWaiters()Z" />
-	</class>
-	<class name="java/util/concurrent/locks/Condition" since="1">
-		<extends name="java/lang/Object" />
-		<method name="await()V" />
-		<method name="await(JLjava/util/concurrent/TimeUnit;)Z" />
-		<method name="awaitNanos(J)J" />
-		<method name="awaitUninterruptibly()V" />
-		<method name="awaitUntil(Ljava/util/Date;)Z" />
-		<method name="signal()V" />
-		<method name="signalAll()V" />
-	</class>
-	<class name="java/util/concurrent/locks/Lock" since="1">
-		<extends name="java/lang/Object" />
-		<method name="lock()V" />
-		<method name="lockInterruptibly()V" />
-		<method name="newCondition()Ljava/util/concurrent/locks/Condition;" />
-		<method name="tryLock()Z" />
-		<method name="tryLock(JLjava/util/concurrent/TimeUnit;)Z" />
-		<method name="unlock()V" />
-	</class>
-	<class name="java/util/concurrent/locks/LockSupport" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getBlocker(Ljava/lang/Thread;)Ljava/lang/Object;" since="9" />
-		<method name="park()V" />
-		<method name="park(Ljava/lang/Object;)V" since="9" />
-		<method name="parkNanos(J)V" />
-		<method name="parkNanos(Ljava/lang/Object;J)V" since="9" />
-		<method name="parkUntil(J)V" />
-		<method name="parkUntil(Ljava/lang/Object;J)V" since="9" />
-		<method name="unpark(Ljava/lang/Thread;)V" />
-	</class>
-	<class name="java/util/concurrent/locks/ReadWriteLock" since="1">
-		<extends name="java/lang/Object" />
-		<method name="readLock()Ljava/util/concurrent/locks/Lock;" />
-		<method name="writeLock()Ljava/util/concurrent/locks/Lock;" />
-	</class>
-	<class name="java/util/concurrent/locks/ReentrantLock" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<implements name="java/util/concurrent/locks/Lock" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Z)V" />
-		<method name="getHoldCount()I" />
-		<method name="getOwner()Ljava/lang/Thread;" />
-		<method name="getQueueLength()I" />
-		<method name="getQueuedThreads()Ljava/util/Collection;" />
-		<method name="getWaitQueueLength(Ljava/util/concurrent/locks/Condition;)I" />
-		<method name="getWaitingThreads(Ljava/util/concurrent/locks/Condition;)Ljava/util/Collection;" />
-		<method name="hasQueuedThread(Ljava/lang/Thread;)Z" />
-		<method name="hasQueuedThreads()Z" />
-		<method name="hasWaiters(Ljava/util/concurrent/locks/Condition;)Z" />
-		<method name="isFair()Z" />
-		<method name="isHeldByCurrentThread()Z" />
-		<method name="isLocked()Z" />
-	</class>
-	<class name="java/util/concurrent/locks/ReentrantReadWriteLock" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<implements name="java/util/concurrent/locks/ReadWriteLock" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Z)V" />
-		<method name="getOwner()Ljava/lang/Thread;" />
-		<method name="getQueueLength()I" />
-		<method name="getQueuedReaderThreads()Ljava/util/Collection;" />
-		<method name="getQueuedThreads()Ljava/util/Collection;" />
-		<method name="getQueuedWriterThreads()Ljava/util/Collection;" />
-		<method name="getReadHoldCount()I" since="9" />
-		<method name="getReadLockCount()I" />
-		<method name="getWaitQueueLength(Ljava/util/concurrent/locks/Condition;)I" />
-		<method name="getWaitingThreads(Ljava/util/concurrent/locks/Condition;)Ljava/util/Collection;" />
-		<method name="getWriteHoldCount()I" />
-		<method name="hasQueuedThread(Ljava/lang/Thread;)Z" />
-		<method name="hasQueuedThreads()Z" />
-		<method name="hasWaiters(Ljava/util/concurrent/locks/Condition;)Z" />
-		<method name="isFair()Z" />
-		<method name="isWriteLocked()Z" />
-		<method name="isWriteLockedByCurrentThread()Z" />
-		<method name="readLock()Ljava/util/concurrent/locks/ReentrantReadWriteLock$ReadLock;" />
-		<method name="writeLock()Ljava/util/concurrent/locks/ReentrantReadWriteLock$WriteLock;" />
-	</class>
-	<class name="java/util/concurrent/locks/ReentrantReadWriteLock$ReadLock" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<implements name="java/util/concurrent/locks/Lock" />
-		<method name="&lt;init>(Ljava/util/concurrent/locks/ReentrantReadWriteLock;)V" />
-	</class>
-	<class name="java/util/concurrent/locks/ReentrantReadWriteLock$WriteLock" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<implements name="java/util/concurrent/locks/Lock" />
-		<method name="&lt;init>(Ljava/util/concurrent/locks/ReentrantReadWriteLock;)V" />
-		<method name="getHoldCount()I" since="9" />
-		<method name="isHeldByCurrentThread()Z" since="9" />
-	</class>
-	<class name="java/util/jar/Attributes" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/Cloneable" />
-		<implements name="java/util/Map" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(I)V" />
-		<method name="&lt;init>(Ljava/util/jar/Attributes;)V" />
-		<method name="getValue(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="getValue(Ljava/util/jar/Attributes$Name;)Ljava/lang/String;" />
-		<method name="putValue(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
-		<field name="map" />
-	</class>
-	<class name="java/util/jar/Attributes$Name" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<field name="CLASS_PATH" />
-		<field name="CONTENT_TYPE" />
-		<field name="EXTENSION_INSTALLATION" />
-		<field name="EXTENSION_LIST" />
-		<field name="EXTENSION_NAME" />
-		<field name="IMPLEMENTATION_TITLE" />
-		<field name="IMPLEMENTATION_URL" />
-		<field name="IMPLEMENTATION_VENDOR" />
-		<field name="IMPLEMENTATION_VENDOR_ID" />
-		<field name="IMPLEMENTATION_VERSION" />
-		<field name="MAIN_CLASS" />
-		<field name="MANIFEST_VERSION" />
-		<field name="SEALED" />
-		<field name="SIGNATURE_VERSION" />
-		<field name="SPECIFICATION_TITLE" />
-		<field name="SPECIFICATION_VENDOR" />
-		<field name="SPECIFICATION_VERSION" />
-	</class>
-	<class name="java/util/jar/JarEntry" since="1">
-		<extends name="java/util/zip/ZipEntry" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/util/jar/JarEntry;)V" />
-		<method name="&lt;init>(Ljava/util/zip/ZipEntry;)V" />
-		<method name="getAttributes()Ljava/util/jar/Attributes;" />
-		<method name="getCertificates()[Ljava/security/cert/Certificate;" />
-		<method name="getCodeSigners()[Ljava/security/CodeSigner;" />
-	</class>
-	<class name="java/util/jar/JarException" since="1">
-		<extends name="java/util/zip/ZipException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/util/jar/JarFile" since="1">
-		<extends name="java/util/zip/ZipFile" />
-		<method name="&lt;init>(Ljava/io/File;)V" />
-		<method name="&lt;init>(Ljava/io/File;Z)V" />
-		<method name="&lt;init>(Ljava/io/File;ZI)V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Z)V" />
-		<method name="getJarEntry(Ljava/lang/String;)Ljava/util/jar/JarEntry;" />
-		<method name="getManifest()Ljava/util/jar/Manifest;" />
-		<field name="MANIFEST_NAME" />
-	</class>
-	<class name="java/util/jar/JarInputStream" since="1">
-		<extends name="java/util/zip/ZipInputStream" />
-		<method name="&lt;init>(Ljava/io/InputStream;)V" />
-		<method name="&lt;init>(Ljava/io/InputStream;Z)V" />
-		<method name="getManifest()Ljava/util/jar/Manifest;" />
-		<method name="getNextJarEntry()Ljava/util/jar/JarEntry;" />
-	</class>
-	<class name="java/util/jar/JarOutputStream" since="1">
-		<extends name="java/util/zip/ZipOutputStream" />
-		<method name="&lt;init>(Ljava/io/OutputStream;)V" />
-		<method name="&lt;init>(Ljava/io/OutputStream;Ljava/util/jar/Manifest;)V" />
-	</class>
-	<class name="java/util/jar/Manifest" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/Cloneable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/io/InputStream;)V" />
-		<method name="&lt;init>(Ljava/util/jar/Manifest;)V" />
-		<method name="clear()V" />
-		<method name="getAttributes(Ljava/lang/String;)Ljava/util/jar/Attributes;" />
-		<method name="getEntries()Ljava/util/Map;" />
-		<method name="getMainAttributes()Ljava/util/jar/Attributes;" />
-		<method name="read(Ljava/io/InputStream;)V" />
-		<method name="write(Ljava/io/OutputStream;)V" />
-	</class>
-	<class name="java/util/jar/Pack200" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="newPacker()Ljava/util/jar/Pack200$Packer;" />
-		<method name="newUnpacker()Ljava/util/jar/Pack200$Unpacker;" />
-	</class>
-	<class name="java/util/jar/Pack200$Packer" since="1">
-		<extends name="java/lang/Object" />
-		<method name="addPropertyChangeListener(Ljava/beans/PropertyChangeListener;)V" since="3" />
-		<method name="pack(Ljava/util/jar/JarFile;Ljava/io/OutputStream;)V" />
-		<method name="pack(Ljava/util/jar/JarInputStream;Ljava/io/OutputStream;)V" />
-		<method name="properties()Ljava/util/SortedMap;" />
-		<method name="removePropertyChangeListener(Ljava/beans/PropertyChangeListener;)V" since="3" />
-		<field name="CLASS_ATTRIBUTE_PFX" />
-		<field name="CODE_ATTRIBUTE_PFX" />
-		<field name="DEFLATE_HINT" />
-		<field name="EFFORT" />
-		<field name="ERROR" />
-		<field name="FALSE" />
-		<field name="FIELD_ATTRIBUTE_PFX" />
-		<field name="KEEP" />
-		<field name="KEEP_FILE_ORDER" />
-		<field name="LATEST" />
-		<field name="METHOD_ATTRIBUTE_PFX" />
-		<field name="MODIFICATION_TIME" />
-		<field name="PASS" />
-		<field name="PASS_FILE_PFX" />
-		<field name="PROGRESS" />
-		<field name="SEGMENT_LIMIT" />
-		<field name="STRIP" />
-		<field name="TRUE" />
-		<field name="UNKNOWN_ATTRIBUTE" />
-	</class>
-	<class name="java/util/jar/Pack200$Unpacker" since="1">
-		<extends name="java/lang/Object" />
-		<method name="addPropertyChangeListener(Ljava/beans/PropertyChangeListener;)V" since="3" />
-		<method name="properties()Ljava/util/SortedMap;" />
-		<method name="removePropertyChangeListener(Ljava/beans/PropertyChangeListener;)V" since="3" />
-		<method name="unpack(Ljava/io/File;Ljava/util/jar/JarOutputStream;)V" />
-		<method name="unpack(Ljava/io/InputStream;Ljava/util/jar/JarOutputStream;)V" />
-		<field name="DEFLATE_HINT" />
-		<field name="FALSE" />
-		<field name="KEEP" />
-		<field name="PROGRESS" />
-		<field name="TRUE" />
-	</class>
-	<class name="java/util/logging/ConsoleHandler" since="1">
-		<extends name="java/util/logging/StreamHandler" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="java/util/logging/ErrorManager" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="error(Ljava/lang/String;Ljava/lang/Exception;I)V" />
-		<field name="CLOSE_FAILURE" />
-		<field name="FLUSH_FAILURE" />
-		<field name="FORMAT_FAILURE" />
-		<field name="GENERIC_FAILURE" />
-		<field name="OPEN_FAILURE" />
-		<field name="WRITE_FAILURE" />
-	</class>
-	<class name="java/util/logging/FileHandler" since="1">
-		<extends name="java/util/logging/StreamHandler" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;II)V" />
-		<method name="&lt;init>(Ljava/lang/String;IIZ)V" />
-		<method name="&lt;init>(Ljava/lang/String;Z)V" />
-	</class>
-	<class name="java/util/logging/Filter" since="1">
-		<extends name="java/lang/Object" />
-		<method name="isLoggable(Ljava/util/logging/LogRecord;)Z" />
-	</class>
-	<class name="java/util/logging/Formatter" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="format(Ljava/util/logging/LogRecord;)Ljava/lang/String;" />
-		<method name="formatMessage(Ljava/util/logging/LogRecord;)Ljava/lang/String;" />
-		<method name="getHead(Ljava/util/logging/Handler;)Ljava/lang/String;" />
-		<method name="getTail(Ljava/util/logging/Handler;)Ljava/lang/String;" />
-	</class>
-	<class name="java/util/logging/Handler" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="close()V" />
-		<method name="flush()V" />
-		<method name="getEncoding()Ljava/lang/String;" />
-		<method name="getErrorManager()Ljava/util/logging/ErrorManager;" />
-		<method name="getFilter()Ljava/util/logging/Filter;" />
-		<method name="getFormatter()Ljava/util/logging/Formatter;" />
-		<method name="getLevel()Ljava/util/logging/Level;" />
-		<method name="isLoggable(Ljava/util/logging/LogRecord;)Z" />
-		<method name="publish(Ljava/util/logging/LogRecord;)V" />
-		<method name="reportError(Ljava/lang/String;Ljava/lang/Exception;I)V" />
-		<method name="setEncoding(Ljava/lang/String;)V" />
-		<method name="setErrorManager(Ljava/util/logging/ErrorManager;)V" />
-		<method name="setFilter(Ljava/util/logging/Filter;)V" />
-		<method name="setFormatter(Ljava/util/logging/Formatter;)V" />
-		<method name="setLevel(Ljava/util/logging/Level;)V" />
-	</class>
-	<class name="java/util/logging/Level" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<method name="&lt;init>(Ljava/lang/String;I)V" />
-		<method name="&lt;init>(Ljava/lang/String;ILjava/lang/String;)V" />
-		<method name="getLocalizedName()Ljava/lang/String;" />
-		<method name="getName()Ljava/lang/String;" />
-		<method name="getResourceBundleName()Ljava/lang/String;" />
-		<method name="intValue()I" />
-		<method name="parse(Ljava/lang/String;)Ljava/util/logging/Level;" />
-		<field name="ALL" />
-		<field name="CONFIG" />
-		<field name="FINE" />
-		<field name="FINER" />
-		<field name="FINEST" />
-		<field name="INFO" />
-		<field name="OFF" />
-		<field name="SEVERE" />
-		<field name="WARNING" />
-	</class>
-	<class name="java/util/logging/LogManager" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="addLogger(Ljava/util/logging/Logger;)Z" />
-		<method name="addPropertyChangeListener(Ljava/beans/PropertyChangeListener;)V" since="3" />
-		<method name="checkAccess()V" />
-		<method name="getLogManager()Ljava/util/logging/LogManager;" />
-		<method name="getLogger(Ljava/lang/String;)Ljava/util/logging/Logger;" />
-		<method name="getLoggerNames()Ljava/util/Enumeration;" />
-		<method name="getLoggingMXBean()Ljava/util/logging/LoggingMXBean;" since="3" />
-		<method name="getProperty(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="readConfiguration()V" />
-		<method name="readConfiguration(Ljava/io/InputStream;)V" />
-		<method name="removePropertyChangeListener(Ljava/beans/PropertyChangeListener;)V" since="3" />
-		<method name="reset()V" />
-		<field name="LOGGING_MXBEAN_NAME" />
-	</class>
-	<class name="java/util/logging/LogRecord" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<method name="&lt;init>(Ljava/util/logging/Level;Ljava/lang/String;)V" />
-		<method name="getLevel()Ljava/util/logging/Level;" />
-		<method name="getLoggerName()Ljava/lang/String;" />
-		<method name="getMessage()Ljava/lang/String;" />
-		<method name="getMillis()J" />
-		<method name="getParameters()[Ljava/lang/Object;" />
-		<method name="getResourceBundle()Ljava/util/ResourceBundle;" />
-		<method name="getResourceBundleName()Ljava/lang/String;" />
-		<method name="getSequenceNumber()J" />
-		<method name="getSourceClassName()Ljava/lang/String;" />
-		<method name="getSourceMethodName()Ljava/lang/String;" />
-		<method name="getThreadID()I" />
-		<method name="getThrown()Ljava/lang/Throwable;" />
-		<method name="setLevel(Ljava/util/logging/Level;)V" />
-		<method name="setLoggerName(Ljava/lang/String;)V" />
-		<method name="setMessage(Ljava/lang/String;)V" />
-		<method name="setMillis(J)V" />
-		<method name="setParameters([Ljava/lang/Object;)V" />
-		<method name="setResourceBundle(Ljava/util/ResourceBundle;)V" />
-		<method name="setResourceBundleName(Ljava/lang/String;)V" />
-		<method name="setSequenceNumber(J)V" />
-		<method name="setSourceClassName(Ljava/lang/String;)V" />
-		<method name="setSourceMethodName(Ljava/lang/String;)V" />
-		<method name="setThreadID(I)V" />
-		<method name="setThrown(Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="java/util/logging/Logger" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="addHandler(Ljava/util/logging/Handler;)V" />
-		<method name="config(Ljava/lang/String;)V" />
-		<method name="entering(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="entering(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;)V" />
-		<method name="entering(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V" />
-		<method name="exiting(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="exiting(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;)V" />
-		<method name="fine(Ljava/lang/String;)V" />
-		<method name="finer(Ljava/lang/String;)V" />
-		<method name="finest(Ljava/lang/String;)V" />
-		<method name="getAnonymousLogger()Ljava/util/logging/Logger;" />
-		<method name="getAnonymousLogger(Ljava/lang/String;)Ljava/util/logging/Logger;" />
-		<method name="getFilter()Ljava/util/logging/Filter;" />
-		<method name="getGlobal()Ljava/util/logging/Logger;" since="19" />
-		<method name="getHandlers()[Ljava/util/logging/Handler;" />
-		<method name="getLevel()Ljava/util/logging/Level;" />
-		<method name="getLogger(Ljava/lang/String;)Ljava/util/logging/Logger;" />
-		<method name="getLogger(Ljava/lang/String;Ljava/lang/String;)Ljava/util/logging/Logger;" />
-		<method name="getName()Ljava/lang/String;" />
-		<method name="getParent()Ljava/util/logging/Logger;" />
-		<method name="getResourceBundle()Ljava/util/ResourceBundle;" />
-		<method name="getResourceBundleName()Ljava/lang/String;" />
-		<method name="getUseParentHandlers()Z" />
-		<method name="info(Ljava/lang/String;)V" />
-		<method name="isLoggable(Ljava/util/logging/Level;)Z" />
-		<method name="log(Ljava/util/logging/Level;Ljava/lang/String;)V" />
-		<method name="log(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Object;)V" />
-		<method name="log(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="log(Ljava/util/logging/Level;Ljava/lang/String;[Ljava/lang/Object;)V" />
-		<method name="log(Ljava/util/logging/LogRecord;)V" />
-		<method name="logp(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="logp(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;)V" />
-		<method name="logp(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="logp(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V" />
-		<method name="logrb(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="logrb(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;)V" />
-		<method name="logrb(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="logrb(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V" />
-		<method name="removeHandler(Ljava/util/logging/Handler;)V" />
-		<method name="setFilter(Ljava/util/logging/Filter;)V" />
-		<method name="setLevel(Ljava/util/logging/Level;)V" />
-		<method name="setParent(Ljava/util/logging/Logger;)V" />
-		<method name="setUseParentHandlers(Z)V" />
-		<method name="severe(Ljava/lang/String;)V" />
-		<method name="throwing(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="warning(Ljava/lang/String;)V" />
-		<field name="GLOBAL_LOGGER_NAME" since="9" />
-		<field name="global" />
-	</class>
-	<class name="java/util/logging/LoggingMXBean" since="1">
-		<extends name="java/lang/Object" />
-		<method name="getLoggerLevel(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="getLoggerNames()Ljava/util/List;" />
-		<method name="getParentLoggerName(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="setLoggerLevel(Ljava/lang/String;Ljava/lang/String;)V" />
-	</class>
-	<class name="java/util/logging/LoggingPermission" since="1">
-		<extends name="java/security/BasicPermission" />
-		<implements name="java/io/Serializable" />
-		<implements name="java/security/Guard" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
-	</class>
-	<class name="java/util/logging/MemoryHandler" since="1">
-		<extends name="java/util/logging/Handler" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/util/logging/Handler;ILjava/util/logging/Level;)V" />
-		<method name="getPushLevel()Ljava/util/logging/Level;" />
-		<method name="push()V" />
-		<method name="setPushLevel(Ljava/util/logging/Level;)V" />
-	</class>
-	<class name="java/util/logging/SimpleFormatter" since="1">
-		<extends name="java/util/logging/Formatter" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="java/util/logging/SocketHandler" since="1">
-		<extends name="java/util/logging/StreamHandler" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;I)V" />
-	</class>
-	<class name="java/util/logging/StreamHandler" since="1">
-		<extends name="java/util/logging/Handler" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/io/OutputStream;Ljava/util/logging/Formatter;)V" />
-		<method name="setOutputStream(Ljava/io/OutputStream;)V" />
-	</class>
-	<class name="java/util/logging/XMLFormatter" since="1">
-		<extends name="java/util/logging/Formatter" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="java/util/prefs/AbstractPreferences" since="1">
-		<extends name="java/util/prefs/Preferences" />
-		<method name="&lt;init>(Ljava/util/prefs/AbstractPreferences;Ljava/lang/String;)V" />
-		<method name="cachedChildren()[Ljava/util/prefs/AbstractPreferences;" />
-		<method name="childSpi(Ljava/lang/String;)Ljava/util/prefs/AbstractPreferences;" />
-		<method name="childrenNamesSpi()[Ljava/lang/String;" />
-		<method name="flushSpi()V" />
-		<method name="getChild(Ljava/lang/String;)Ljava/util/prefs/AbstractPreferences;" />
-		<method name="getSpi(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="isRemoved()Z" />
-		<method name="keysSpi()[Ljava/lang/String;" />
-		<method name="putSpi(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="removeNodeSpi()V" />
-		<method name="removeSpi(Ljava/lang/String;)V" />
-		<method name="syncSpi()V" />
-		<field name="lock" />
-		<field name="newNode" />
-	</class>
-	<class name="java/util/prefs/BackingStoreException" since="1">
-		<extends name="java/lang/Exception" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="java/util/prefs/InvalidPreferencesFormatException" since="1">
-		<extends name="java/lang/Exception" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="java/util/prefs/NodeChangeEvent" since="1">
-		<extends name="java/util/EventObject" />
-		<implements name="java/io/Serializable" />
-		<method name="&lt;init>(Ljava/util/prefs/Preferences;Ljava/util/prefs/Preferences;)V" />
-		<method name="getChild()Ljava/util/prefs/Preferences;" />
-		<method name="getParent()Ljava/util/prefs/Preferences;" />
-	</class>
-	<class name="java/util/prefs/NodeChangeListener" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/util/EventListener" />
-		<method name="childAdded(Ljava/util/prefs/NodeChangeEvent;)V" />
-		<method name="childRemoved(Ljava/util/prefs/NodeChangeEvent;)V" />
-	</class>
-	<class name="java/util/prefs/PreferenceChangeEvent" since="1">
-		<extends name="java/util/EventObject" />
-		<implements name="java/io/Serializable" />
-		<method name="&lt;init>(Ljava/util/prefs/Preferences;Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="getKey()Ljava/lang/String;" />
-		<method name="getNewValue()Ljava/lang/String;" />
-		<method name="getNode()Ljava/util/prefs/Preferences;" />
-	</class>
-	<class name="java/util/prefs/PreferenceChangeListener" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/util/EventListener" />
-		<method name="preferenceChange(Ljava/util/prefs/PreferenceChangeEvent;)V" />
-	</class>
-	<class name="java/util/prefs/Preferences" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="absolutePath()Ljava/lang/String;" />
-		<method name="addNodeChangeListener(Ljava/util/prefs/NodeChangeListener;)V" />
-		<method name="addPreferenceChangeListener(Ljava/util/prefs/PreferenceChangeListener;)V" />
-		<method name="childrenNames()[Ljava/lang/String;" />
-		<method name="clear()V" />
-		<method name="exportNode(Ljava/io/OutputStream;)V" />
-		<method name="exportSubtree(Ljava/io/OutputStream;)V" />
-		<method name="flush()V" />
-		<method name="get(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="getBoolean(Ljava/lang/String;Z)Z" />
-		<method name="getByteArray(Ljava/lang/String;[B)[B" />
-		<method name="getDouble(Ljava/lang/String;D)D" />
-		<method name="getFloat(Ljava/lang/String;F)F" />
-		<method name="getInt(Ljava/lang/String;I)I" />
-		<method name="getLong(Ljava/lang/String;J)J" />
-		<method name="importPreferences(Ljava/io/InputStream;)V" />
-		<method name="isUserNode()Z" />
-		<method name="keys()[Ljava/lang/String;" />
-		<method name="name()Ljava/lang/String;" />
-		<method name="node(Ljava/lang/String;)Ljava/util/prefs/Preferences;" />
-		<method name="nodeExists(Ljava/lang/String;)Z" />
-		<method name="parent()Ljava/util/prefs/Preferences;" />
-		<method name="put(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="putBoolean(Ljava/lang/String;Z)V" />
-		<method name="putByteArray(Ljava/lang/String;[B)V" />
-		<method name="putDouble(Ljava/lang/String;D)V" />
-		<method name="putFloat(Ljava/lang/String;F)V" />
-		<method name="putInt(Ljava/lang/String;I)V" />
-		<method name="putLong(Ljava/lang/String;J)V" />
-		<method name="remove(Ljava/lang/String;)V" />
-		<method name="removeNode()V" />
-		<method name="removeNodeChangeListener(Ljava/util/prefs/NodeChangeListener;)V" />
-		<method name="removePreferenceChangeListener(Ljava/util/prefs/PreferenceChangeListener;)V" />
-		<method name="sync()V" />
-		<method name="systemNodeForPackage(Ljava/lang/Class;)Ljava/util/prefs/Preferences;" />
-		<method name="systemRoot()Ljava/util/prefs/Preferences;" />
-		<method name="userNodeForPackage(Ljava/lang/Class;)Ljava/util/prefs/Preferences;" />
-		<method name="userRoot()Ljava/util/prefs/Preferences;" />
-		<field name="MAX_KEY_LENGTH" />
-		<field name="MAX_NAME_LENGTH" />
-		<field name="MAX_VALUE_LENGTH" />
-	</class>
-	<class name="java/util/prefs/PreferencesFactory" since="1">
-		<extends name="java/lang/Object" />
-		<method name="systemRoot()Ljava/util/prefs/Preferences;" />
-		<method name="userRoot()Ljava/util/prefs/Preferences;" />
-	</class>
-	<class name="java/util/regex/MatchResult" since="1">
-		<extends name="java/lang/Object" />
-		<method name="end()I" />
-		<method name="end(I)I" />
-		<method name="group()Ljava/lang/String;" />
-		<method name="group(I)Ljava/lang/String;" />
-		<method name="groupCount()I" />
-		<method name="start()I" />
-		<method name="start(I)I" />
-	</class>
-	<class name="java/util/regex/Matcher" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/util/regex/MatchResult" />
-		<method name="&lt;init>()V" />
-		<method name="appendReplacement(Ljava/lang/StringBuffer;Ljava/lang/String;)Ljava/util/regex/Matcher;" />
-		<method name="appendTail(Ljava/lang/StringBuffer;)Ljava/lang/StringBuffer;" />
-		<method name="find()Z" />
-		<method name="find(I)Z" />
-		<method name="hasAnchoringBounds()Z" />
-		<method name="hasTransparentBounds()Z" />
-		<method name="hitEnd()Z" />
-		<method name="lookingAt()Z" />
-		<method name="matches()Z" />
-		<method name="pattern()Ljava/util/regex/Pattern;" />
-		<method name="quoteReplacement(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="region(II)Ljava/util/regex/Matcher;" />
-		<method name="regionEnd()I" />
-		<method name="regionStart()I" />
-		<method name="replaceAll(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="replaceFirst(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="requireEnd()Z" />
-		<method name="reset()Ljava/util/regex/Matcher;" />
-		<method name="reset(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;" />
-		<method name="toMatchResult()Ljava/util/regex/MatchResult;" />
-		<method name="useAnchoringBounds(Z)Ljava/util/regex/Matcher;" />
-		<method name="usePattern(Ljava/util/regex/Pattern;)Ljava/util/regex/Matcher;" />
-		<method name="useTransparentBounds(Z)Ljava/util/regex/Matcher;" />
-	</class>
-	<class name="java/util/regex/Pattern" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<method name="&lt;init>()V" />
-		<method name="compile(Ljava/lang/String;)Ljava/util/regex/Pattern;" />
-		<method name="compile(Ljava/lang/String;I)Ljava/util/regex/Pattern;" />
-		<method name="flags()I" />
-		<method name="matcher(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;" />
-		<method name="matches(Ljava/lang/String;Ljava/lang/CharSequence;)Z" />
-		<method name="pattern()Ljava/lang/String;" />
-		<method name="quote(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="split(Ljava/lang/CharSequence;)[Ljava/lang/String;" />
-		<method name="split(Ljava/lang/CharSequence;I)[Ljava/lang/String;" />
-		<field name="CANON_EQ" />
-		<field name="CASE_INSENSITIVE" />
-		<field name="COMMENTS" />
-		<field name="DOTALL" />
-		<field name="LITERAL" />
-		<field name="MULTILINE" />
-		<field name="UNICODE_CASE" />
-		<field name="UNIX_LINES" />
-	</class>
-	<class name="java/util/regex/PatternSyntaxException" since="1">
-		<extends name="java/lang/IllegalArgumentException" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;I)V" />
-		<method name="getDescription()Ljava/lang/String;" />
-		<method name="getIndex()I" />
-		<method name="getPattern()Ljava/lang/String;" />
-	</class>
-	<class name="java/util/zip/Adler32" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/util/zip/Checksum" />
-		<method name="&lt;init>()V" />
-		<method name="update([B)V" />
-	</class>
-	<class name="java/util/zip/CRC32" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/util/zip/Checksum" />
-		<method name="&lt;init>()V" />
-		<method name="update([B)V" />
-	</class>
-	<class name="java/util/zip/CheckedInputStream" since="1">
-		<extends name="java/io/FilterInputStream" />
-		<method name="&lt;init>(Ljava/io/InputStream;Ljava/util/zip/Checksum;)V" />
-		<method name="getChecksum()Ljava/util/zip/Checksum;" />
-	</class>
-	<class name="java/util/zip/CheckedOutputStream" since="1">
-		<extends name="java/io/FilterOutputStream" />
-		<method name="&lt;init>(Ljava/io/OutputStream;Ljava/util/zip/Checksum;)V" />
-		<method name="getChecksum()Ljava/util/zip/Checksum;" />
-	</class>
-	<class name="java/util/zip/Checksum" since="1">
-		<extends name="java/lang/Object" />
-		<method name="getValue()J" />
-		<method name="reset()V" />
-		<method name="update(I)V" />
-		<method name="update([BII)V" />
-	</class>
-	<class name="java/util/zip/DataFormatException" since="1">
-		<extends name="java/lang/Exception" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/util/zip/Deflater" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(I)V" />
-		<method name="&lt;init>(IZ)V" />
-		<method name="deflate([B)I" />
-		<method name="deflate([BII)I" />
-		<method name="deflate([BIII)I" since="19" />
-		<method name="end()V" />
-		<method name="finish()V" />
-		<method name="finished()Z" />
-		<method name="getAdler()I" />
-		<method name="getBytesRead()J" />
-		<method name="getBytesWritten()J" />
-		<method name="getTotalIn()I" />
-		<method name="getTotalOut()I" />
-		<method name="needsInput()Z" />
-		<method name="reset()V" />
-		<method name="setDictionary([B)V" />
-		<method name="setDictionary([BII)V" />
-		<method name="setInput([B)V" />
-		<method name="setInput([BII)V" />
-		<method name="setLevel(I)V" />
-		<method name="setStrategy(I)V" />
-		<field name="BEST_COMPRESSION" />
-		<field name="BEST_SPEED" />
-		<field name="DEFAULT_COMPRESSION" />
-		<field name="DEFAULT_STRATEGY" />
-		<field name="DEFLATED" />
-		<field name="FILTERED" />
-		<field name="FULL_FLUSH" since="19" />
-		<field name="HUFFMAN_ONLY" />
-		<field name="NO_COMPRESSION" />
-		<field name="NO_FLUSH" since="19" />
-		<field name="SYNC_FLUSH" since="19" />
-	</class>
-	<class name="java/util/zip/DeflaterInputStream" since="9">
-		<extends name="java/io/FilterInputStream" />
-		<method name="&lt;init>(Ljava/io/InputStream;)V" />
-		<method name="&lt;init>(Ljava/io/InputStream;Ljava/util/zip/Deflater;)V" />
-		<method name="&lt;init>(Ljava/io/InputStream;Ljava/util/zip/Deflater;I)V" />
-		<field name="buf" />
-		<field name="def" />
-	</class>
-	<class name="java/util/zip/DeflaterOutputStream" since="1">
-		<extends name="java/io/FilterOutputStream" />
-		<method name="&lt;init>(Ljava/io/OutputStream;)V" />
-		<method name="&lt;init>(Ljava/io/OutputStream;Ljava/util/zip/Deflater;)V" />
-		<method name="&lt;init>(Ljava/io/OutputStream;Ljava/util/zip/Deflater;I)V" />
-		<method name="&lt;init>(Ljava/io/OutputStream;Ljava/util/zip/Deflater;IZ)V" since="19" />
-		<method name="&lt;init>(Ljava/io/OutputStream;Ljava/util/zip/Deflater;Z)V" since="19" />
-		<method name="&lt;init>(Ljava/io/OutputStream;Z)V" since="19" />
-		<method name="deflate()V" />
-		<method name="finish()V" />
-		<field name="buf" />
-		<field name="def" />
-	</class>
-	<class name="java/util/zip/GZIPInputStream" since="1">
-		<extends name="java/util/zip/InflaterInputStream" />
-		<method name="&lt;init>(Ljava/io/InputStream;)V" />
-		<method name="&lt;init>(Ljava/io/InputStream;I)V" />
-		<field name="GZIP_MAGIC" />
-		<field name="crc" />
-		<field name="eos" />
-	</class>
-	<class name="java/util/zip/GZIPOutputStream" since="1">
-		<extends name="java/util/zip/DeflaterOutputStream" />
-		<method name="&lt;init>(Ljava/io/OutputStream;)V" />
-		<method name="&lt;init>(Ljava/io/OutputStream;I)V" />
-		<method name="&lt;init>(Ljava/io/OutputStream;IZ)V" since="19" />
-		<method name="&lt;init>(Ljava/io/OutputStream;Z)V" since="19" />
-		<field name="crc" />
-	</class>
-	<class name="java/util/zip/Inflater" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Z)V" />
-		<method name="end()V" />
-		<method name="finished()Z" />
-		<method name="getAdler()I" />
-		<method name="getBytesRead()J" />
-		<method name="getBytesWritten()J" />
-		<method name="getRemaining()I" />
-		<method name="getTotalIn()I" />
-		<method name="getTotalOut()I" />
-		<method name="inflate([B)I" />
-		<method name="inflate([BII)I" />
-		<method name="needsDictionary()Z" />
-		<method name="needsInput()Z" />
-		<method name="reset()V" />
-		<method name="setDictionary([B)V" />
-		<method name="setDictionary([BII)V" />
-		<method name="setInput([B)V" />
-		<method name="setInput([BII)V" />
-	</class>
-	<class name="java/util/zip/InflaterInputStream" since="1">
-		<extends name="java/io/FilterInputStream" />
-		<method name="&lt;init>(Ljava/io/InputStream;)V" />
-		<method name="&lt;init>(Ljava/io/InputStream;Ljava/util/zip/Inflater;)V" />
-		<method name="&lt;init>(Ljava/io/InputStream;Ljava/util/zip/Inflater;I)V" />
-		<method name="fill()V" />
-		<field name="buf" />
-		<field name="inf" />
-		<field name="len" />
-	</class>
-	<class name="java/util/zip/InflaterOutputStream" since="9">
-		<extends name="java/io/FilterOutputStream" />
-		<method name="&lt;init>(Ljava/io/OutputStream;)V" />
-		<method name="&lt;init>(Ljava/io/OutputStream;Ljava/util/zip/Inflater;)V" />
-		<method name="&lt;init>(Ljava/io/OutputStream;Ljava/util/zip/Inflater;I)V" />
-		<method name="finish()V" />
-		<field name="buf" />
-		<field name="inf" />
-	</class>
-	<class name="java/util/zip/ZipEntry" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/Cloneable" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/util/zip/ZipEntry;)V" />
-		<method name="getComment()Ljava/lang/String;" />
-		<method name="getCompressedSize()J" />
-		<method name="getCrc()J" />
-		<method name="getExtra()[B" />
-		<method name="getMethod()I" />
-		<method name="getName()Ljava/lang/String;" />
-		<method name="getSize()J" />
-		<method name="getTime()J" />
-		<method name="isDirectory()Z" />
-		<method name="setComment(Ljava/lang/String;)V" />
-		<method name="setCompressedSize(J)V" />
-		<method name="setCrc(J)V" />
-		<method name="setExtra([B)V" />
-		<method name="setMethod(I)V" />
-		<method name="setSize(J)V" />
-		<method name="setTime(J)V" />
-		<field name="CENATT" since="21" />
-		<field name="CENATX" since="21" />
-		<field name="CENCOM" since="21" />
-		<field name="CENCRC" since="21" />
-		<field name="CENDSK" since="21" />
-		<field name="CENEXT" since="21" />
-		<field name="CENFLG" since="21" />
-		<field name="CENHDR" since="21" />
-		<field name="CENHOW" since="21" />
-		<field name="CENLEN" since="21" />
-		<field name="CENNAM" since="21" />
-		<field name="CENOFF" since="21" />
-		<field name="CENSIG" since="21" />
-		<field name="CENSIZ" since="21" />
-		<field name="CENTIM" since="21" />
-		<field name="CENVEM" since="21" />
-		<field name="CENVER" since="21" />
-		<field name="DEFLATED" />
-		<field name="ENDCOM" since="21" />
-		<field name="ENDHDR" since="21" />
-		<field name="ENDOFF" since="21" />
-		<field name="ENDSIG" since="21" />
-		<field name="ENDSIZ" since="21" />
-		<field name="ENDSUB" since="21" />
-		<field name="ENDTOT" since="21" />
-		<field name="EXTCRC" since="21" />
-		<field name="EXTHDR" since="21" />
-		<field name="EXTLEN" since="21" />
-		<field name="EXTSIG" since="21" />
-		<field name="EXTSIZ" since="21" />
-		<field name="LOCCRC" since="21" />
-		<field name="LOCEXT" since="21" />
-		<field name="LOCFLG" since="21" />
-		<field name="LOCHDR" since="21" />
-		<field name="LOCHOW" since="21" />
-		<field name="LOCLEN" since="21" />
-		<field name="LOCNAM" since="21" />
-		<field name="LOCSIG" since="21" />
-		<field name="LOCSIZ" since="21" />
-		<field name="LOCTIM" since="21" />
-		<field name="LOCVER" since="21" />
-		<field name="STORED" />
-	</class>
-	<class name="java/util/zip/ZipError" since="9">
-		<extends name="java/lang/InternalError" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/util/zip/ZipException" since="1">
-		<extends name="java/io/IOException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="java/util/zip/ZipFile" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Closeable" since="19" />
-		<method name="&lt;init>(Ljava/io/File;)V" />
-		<method name="&lt;init>(Ljava/io/File;I)V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="close()V" />
-		<method name="entries()Ljava/util/Enumeration;" />
-		<method name="getComment()Ljava/lang/String;" since="19" />
-		<method name="getEntry(Ljava/lang/String;)Ljava/util/zip/ZipEntry;" />
-		<method name="getInputStream(Ljava/util/zip/ZipEntry;)Ljava/io/InputStream;" />
-		<method name="getName()Ljava/lang/String;" />
-		<method name="size()I" />
-		<field name="CENATT" since="21" />
-		<field name="CENATX" since="21" />
-		<field name="CENCOM" since="21" />
-		<field name="CENCRC" since="21" />
-		<field name="CENDSK" since="21" />
-		<field name="CENEXT" since="21" />
-		<field name="CENFLG" since="21" />
-		<field name="CENHDR" since="21" />
-		<field name="CENHOW" since="21" />
-		<field name="CENLEN" since="21" />
-		<field name="CENNAM" since="21" />
-		<field name="CENOFF" since="21" />
-		<field name="CENSIG" since="21" />
-		<field name="CENSIZ" since="21" />
-		<field name="CENTIM" since="21" />
-		<field name="CENVEM" since="21" />
-		<field name="CENVER" since="21" />
-		<field name="ENDCOM" since="21" />
-		<field name="ENDHDR" since="21" />
-		<field name="ENDOFF" since="21" />
-		<field name="ENDSIG" since="21" />
-		<field name="ENDSIZ" since="21" />
-		<field name="ENDSUB" since="21" />
-		<field name="ENDTOT" since="21" />
-		<field name="EXTCRC" since="21" />
-		<field name="EXTHDR" since="21" />
-		<field name="EXTLEN" since="21" />
-		<field name="EXTSIG" since="21" />
-		<field name="EXTSIZ" since="21" />
-		<field name="LOCCRC" since="21" />
-		<field name="LOCEXT" since="21" />
-		<field name="LOCFLG" since="21" />
-		<field name="LOCHDR" since="21" />
-		<field name="LOCHOW" since="21" />
-		<field name="LOCLEN" since="21" />
-		<field name="LOCNAM" since="21" />
-		<field name="LOCSIG" since="21" />
-		<field name="LOCSIZ" since="21" />
-		<field name="LOCTIM" since="21" />
-		<field name="LOCVER" since="21" />
-		<field name="OPEN_DELETE" />
-		<field name="OPEN_READ" />
-	</class>
-	<class name="java/util/zip/ZipInputStream" since="1">
-		<extends name="java/util/zip/InflaterInputStream" />
-		<method name="&lt;init>(Ljava/io/InputStream;)V" />
-		<method name="closeEntry()V" />
-		<method name="createZipEntry(Ljava/lang/String;)Ljava/util/zip/ZipEntry;" />
-		<method name="getNextEntry()Ljava/util/zip/ZipEntry;" />
-		<field name="CENATT" since="21" />
-		<field name="CENATX" since="21" />
-		<field name="CENCOM" since="21" />
-		<field name="CENCRC" since="21" />
-		<field name="CENDSK" since="21" />
-		<field name="CENEXT" since="21" />
-		<field name="CENFLG" since="21" />
-		<field name="CENHDR" since="21" />
-		<field name="CENHOW" since="21" />
-		<field name="CENLEN" since="21" />
-		<field name="CENNAM" since="21" />
-		<field name="CENOFF" since="21" />
-		<field name="CENSIG" since="21" />
-		<field name="CENSIZ" since="21" />
-		<field name="CENTIM" since="21" />
-		<field name="CENVEM" since="21" />
-		<field name="CENVER" since="21" />
-		<field name="ENDCOM" since="21" />
-		<field name="ENDHDR" since="21" />
-		<field name="ENDOFF" since="21" />
-		<field name="ENDSIG" since="21" />
-		<field name="ENDSIZ" since="21" />
-		<field name="ENDSUB" since="21" />
-		<field name="ENDTOT" since="21" />
-		<field name="EXTCRC" since="21" />
-		<field name="EXTHDR" since="21" />
-		<field name="EXTLEN" since="21" />
-		<field name="EXTSIG" since="21" />
-		<field name="EXTSIZ" since="21" />
-		<field name="LOCCRC" since="21" />
-		<field name="LOCEXT" since="21" />
-		<field name="LOCFLG" since="21" />
-		<field name="LOCHDR" since="21" />
-		<field name="LOCHOW" since="21" />
-		<field name="LOCLEN" since="21" />
-		<field name="LOCNAM" since="21" />
-		<field name="LOCSIG" since="21" />
-		<field name="LOCSIZ" since="21" />
-		<field name="LOCTIM" since="21" />
-		<field name="LOCVER" since="21" />
-	</class>
-	<class name="java/util/zip/ZipOutputStream" since="1">
-		<extends name="java/util/zip/DeflaterOutputStream" />
-		<method name="&lt;init>(Ljava/io/OutputStream;)V" />
-		<method name="closeEntry()V" />
-		<method name="putNextEntry(Ljava/util/zip/ZipEntry;)V" />
-		<method name="setComment(Ljava/lang/String;)V" />
-		<method name="setLevel(I)V" />
-		<method name="setMethod(I)V" />
-		<field name="CENATT" since="21" />
-		<field name="CENATX" since="21" />
-		<field name="CENCOM" since="21" />
-		<field name="CENCRC" since="21" />
-		<field name="CENDSK" since="21" />
-		<field name="CENEXT" since="21" />
-		<field name="CENFLG" since="21" />
-		<field name="CENHDR" since="21" />
-		<field name="CENHOW" since="21" />
-		<field name="CENLEN" since="21" />
-		<field name="CENNAM" since="21" />
-		<field name="CENOFF" since="21" />
-		<field name="CENSIG" since="21" />
-		<field name="CENSIZ" since="21" />
-		<field name="CENTIM" since="21" />
-		<field name="CENVEM" since="21" />
-		<field name="CENVER" since="21" />
-		<field name="DEFLATED" />
-		<field name="ENDCOM" since="21" />
-		<field name="ENDHDR" since="21" />
-		<field name="ENDOFF" since="21" />
-		<field name="ENDSIG" since="21" />
-		<field name="ENDSIZ" since="21" />
-		<field name="ENDSUB" since="21" />
-		<field name="ENDTOT" since="21" />
-		<field name="EXTCRC" since="21" />
-		<field name="EXTHDR" since="21" />
-		<field name="EXTLEN" since="21" />
-		<field name="EXTSIG" since="21" />
-		<field name="EXTSIZ" since="21" />
-		<field name="LOCCRC" since="21" />
-		<field name="LOCEXT" since="21" />
-		<field name="LOCFLG" since="21" />
-		<field name="LOCHDR" since="21" />
-		<field name="LOCHOW" since="21" />
-		<field name="LOCLEN" since="21" />
-		<field name="LOCNAM" since="21" />
-		<field name="LOCSIG" since="21" />
-		<field name="LOCSIZ" since="21" />
-		<field name="LOCTIM" since="21" />
-		<field name="LOCVER" since="21" />
-		<field name="STORED" />
-	</class>
-	<class name="javax/crypto/AEADBadTagException" since="19">
-		<extends name="javax/crypto/BadPaddingException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="javax/crypto/BadPaddingException" since="1">
-		<extends name="java/security/GeneralSecurityException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="javax/crypto/Cipher" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljavax/crypto/CipherSpi;Ljava/security/Provider;Ljava/lang/String;)V" />
-		<method name="doFinal()[B" />
-		<method name="doFinal(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)I" />
-		<method name="doFinal([B)[B" />
-		<method name="doFinal([BI)I" />
-		<method name="doFinal([BII)[B" />
-		<method name="doFinal([BII[B)I" />
-		<method name="doFinal([BII[BI)I" />
-		<method name="getAlgorithm()Ljava/lang/String;" />
-		<method name="getBlockSize()I" />
-		<method name="getExemptionMechanism()Ljavax/crypto/ExemptionMechanism;" />
-		<method name="getIV()[B" />
-		<method name="getInstance(Ljava/lang/String;)Ljavax/crypto/Cipher;" />
-		<method name="getInstance(Ljava/lang/String;Ljava/lang/String;)Ljavax/crypto/Cipher;" />
-		<method name="getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljavax/crypto/Cipher;" />
-		<method name="getMaxAllowedKeyLength(Ljava/lang/String;)I" />
-		<method name="getMaxAllowedParameterSpec(Ljava/lang/String;)Ljava/security/spec/AlgorithmParameterSpec;" />
-		<method name="getOutputSize(I)I" />
-		<method name="getParameters()Ljava/security/AlgorithmParameters;" />
-		<method name="getProvider()Ljava/security/Provider;" />
-		<method name="init(ILjava/security/Key;)V" />
-		<method name="init(ILjava/security/Key;Ljava/security/AlgorithmParameters;)V" />
-		<method name="init(ILjava/security/Key;Ljava/security/AlgorithmParameters;Ljava/security/SecureRandom;)V" />
-		<method name="init(ILjava/security/Key;Ljava/security/SecureRandom;)V" />
-		<method name="init(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V" />
-		<method name="init(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V" />
-		<method name="init(ILjava/security/cert/Certificate;)V" />
-		<method name="init(ILjava/security/cert/Certificate;Ljava/security/SecureRandom;)V" />
-		<method name="unwrap([BLjava/lang/String;I)Ljava/security/Key;" />
-		<method name="update(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)I" />
-		<method name="update([B)[B" />
-		<method name="update([BII)[B" />
-		<method name="update([BII[B)I" />
-		<method name="update([BII[BI)I" />
-		<method name="updateAAD(Ljava/nio/ByteBuffer;)V" since="19" />
-		<method name="updateAAD([B)V" since="19" />
-		<method name="updateAAD([BII)V" since="19" />
-		<method name="wrap(Ljava/security/Key;)[B" />
-		<field name="DECRYPT_MODE" />
-		<field name="ENCRYPT_MODE" />
-		<field name="PRIVATE_KEY" />
-		<field name="PUBLIC_KEY" />
-		<field name="SECRET_KEY" />
-		<field name="UNWRAP_MODE" />
-		<field name="WRAP_MODE" />
-	</class>
-	<class name="javax/crypto/CipherInputStream" since="1">
-		<extends name="java/io/FilterInputStream" />
-		<method name="&lt;init>(Ljava/io/InputStream;)V" />
-		<method name="&lt;init>(Ljava/io/InputStream;Ljavax/crypto/Cipher;)V" />
-	</class>
-	<class name="javax/crypto/CipherOutputStream" since="1">
-		<extends name="java/io/FilterOutputStream" />
-		<method name="&lt;init>(Ljava/io/OutputStream;)V" />
-		<method name="&lt;init>(Ljava/io/OutputStream;Ljavax/crypto/Cipher;)V" />
-	</class>
-	<class name="javax/crypto/CipherSpi" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="engineDoFinal(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)I" />
-		<method name="engineDoFinal([BII)[B" />
-		<method name="engineDoFinal([BII[BI)I" />
-		<method name="engineGetBlockSize()I" />
-		<method name="engineGetIV()[B" />
-		<method name="engineGetKeySize(Ljava/security/Key;)I" />
-		<method name="engineGetOutputSize(I)I" />
-		<method name="engineGetParameters()Ljava/security/AlgorithmParameters;" />
-		<method name="engineInit(ILjava/security/Key;Ljava/security/AlgorithmParameters;Ljava/security/SecureRandom;)V" />
-		<method name="engineInit(ILjava/security/Key;Ljava/security/SecureRandom;)V" />
-		<method name="engineInit(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V" />
-		<method name="engineSetMode(Ljava/lang/String;)V" />
-		<method name="engineSetPadding(Ljava/lang/String;)V" />
-		<method name="engineUnwrap([BLjava/lang/String;I)Ljava/security/Key;" />
-		<method name="engineUpdate(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)I" />
-		<method name="engineUpdate([BII)[B" />
-		<method name="engineUpdate([BII[BI)I" />
-		<method name="engineUpdateAAD(Ljava/nio/ByteBuffer;)V" since="19" />
-		<method name="engineUpdateAAD([BII)V" since="19" />
-		<method name="engineWrap(Ljava/security/Key;)[B" />
-	</class>
-	<class name="javax/crypto/EncryptedPrivateKeyInfo" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/lang/String;[B)V" />
-		<method name="&lt;init>(Ljava/security/AlgorithmParameters;[B)V" />
-		<method name="&lt;init>([B)V" />
-		<method name="getAlgName()Ljava/lang/String;" />
-		<method name="getAlgParameters()Ljava/security/AlgorithmParameters;" />
-		<method name="getEncoded()[B" />
-		<method name="getEncryptedData()[B" />
-		<method name="getKeySpec(Ljava/security/Key;)Ljava/security/spec/PKCS8EncodedKeySpec;" />
-		<method name="getKeySpec(Ljava/security/Key;Ljava/lang/String;)Ljava/security/spec/PKCS8EncodedKeySpec;" />
-		<method name="getKeySpec(Ljava/security/Key;Ljava/security/Provider;)Ljava/security/spec/PKCS8EncodedKeySpec;" />
-		<method name="getKeySpec(Ljavax/crypto/Cipher;)Ljava/security/spec/PKCS8EncodedKeySpec;" />
-	</class>
-	<class name="javax/crypto/ExemptionMechanism" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljavax/crypto/ExemptionMechanismSpi;Ljava/security/Provider;Ljava/lang/String;)V" />
-		<method name="genExemptionBlob()[B" />
-		<method name="genExemptionBlob([B)I" />
-		<method name="genExemptionBlob([BI)I" />
-		<method name="getInstance(Ljava/lang/String;)Ljavax/crypto/ExemptionMechanism;" />
-		<method name="getInstance(Ljava/lang/String;Ljava/lang/String;)Ljavax/crypto/ExemptionMechanism;" />
-		<method name="getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljavax/crypto/ExemptionMechanism;" />
-		<method name="getName()Ljava/lang/String;" />
-		<method name="getOutputSize(I)I" />
-		<method name="getProvider()Ljava/security/Provider;" />
-		<method name="init(Ljava/security/Key;)V" />
-		<method name="init(Ljava/security/Key;Ljava/security/AlgorithmParameters;)V" />
-		<method name="init(Ljava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V" />
-		<method name="isCryptoAllowed(Ljava/security/Key;)Z" />
-	</class>
-	<class name="javax/crypto/ExemptionMechanismException" since="1">
-		<extends name="java/security/GeneralSecurityException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="javax/crypto/ExemptionMechanismSpi" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="engineGenExemptionBlob()[B" />
-		<method name="engineGenExemptionBlob([BI)I" />
-		<method name="engineGetOutputSize(I)I" />
-		<method name="engineInit(Ljava/security/Key;)V" />
-		<method name="engineInit(Ljava/security/Key;Ljava/security/AlgorithmParameters;)V" />
-		<method name="engineInit(Ljava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V" />
-	</class>
-	<class name="javax/crypto/IllegalBlockSizeException" since="1">
-		<extends name="java/security/GeneralSecurityException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="javax/crypto/KeyAgreement" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljavax/crypto/KeyAgreementSpi;Ljava/security/Provider;Ljava/lang/String;)V" />
-		<method name="doPhase(Ljava/security/Key;Z)Ljava/security/Key;" />
-		<method name="generateSecret()[B" />
-		<method name="generateSecret(Ljava/lang/String;)Ljavax/crypto/SecretKey;" />
-		<method name="generateSecret([BI)I" />
-		<method name="getAlgorithm()Ljava/lang/String;" />
-		<method name="getInstance(Ljava/lang/String;)Ljavax/crypto/KeyAgreement;" />
-		<method name="getInstance(Ljava/lang/String;Ljava/lang/String;)Ljavax/crypto/KeyAgreement;" />
-		<method name="getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljavax/crypto/KeyAgreement;" />
-		<method name="getProvider()Ljava/security/Provider;" />
-		<method name="init(Ljava/security/Key;)V" />
-		<method name="init(Ljava/security/Key;Ljava/security/SecureRandom;)V" />
-		<method name="init(Ljava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V" />
-		<method name="init(Ljava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V" />
-	</class>
-	<class name="javax/crypto/KeyAgreementSpi" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="engineDoPhase(Ljava/security/Key;Z)Ljava/security/Key;" />
-		<method name="engineGenerateSecret()[B" />
-		<method name="engineGenerateSecret(Ljava/lang/String;)Ljavax/crypto/SecretKey;" />
-		<method name="engineGenerateSecret([BI)I" />
-		<method name="engineInit(Ljava/security/Key;Ljava/security/SecureRandom;)V" />
-		<method name="engineInit(Ljava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V" />
-	</class>
-	<class name="javax/crypto/KeyGenerator" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljavax/crypto/KeyGeneratorSpi;Ljava/security/Provider;Ljava/lang/String;)V" />
-		<method name="generateKey()Ljavax/crypto/SecretKey;" />
-		<method name="getAlgorithm()Ljava/lang/String;" />
-		<method name="getInstance(Ljava/lang/String;)Ljavax/crypto/KeyGenerator;" />
-		<method name="getInstance(Ljava/lang/String;Ljava/lang/String;)Ljavax/crypto/KeyGenerator;" />
-		<method name="getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljavax/crypto/KeyGenerator;" />
-		<method name="getProvider()Ljava/security/Provider;" />
-		<method name="init(I)V" />
-		<method name="init(ILjava/security/SecureRandom;)V" />
-		<method name="init(Ljava/security/SecureRandom;)V" />
-		<method name="init(Ljava/security/spec/AlgorithmParameterSpec;)V" />
-		<method name="init(Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V" />
-	</class>
-	<class name="javax/crypto/KeyGeneratorSpi" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="engineGenerateKey()Ljavax/crypto/SecretKey;" />
-		<method name="engineInit(ILjava/security/SecureRandom;)V" />
-		<method name="engineInit(Ljava/security/SecureRandom;)V" />
-		<method name="engineInit(Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V" />
-	</class>
-	<class name="javax/crypto/Mac" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/Cloneable" />
-		<method name="&lt;init>(Ljavax/crypto/MacSpi;Ljava/security/Provider;Ljava/lang/String;)V" />
-		<method name="doFinal()[B" />
-		<method name="doFinal([B)[B" />
-		<method name="doFinal([BI)V" />
-		<method name="getAlgorithm()Ljava/lang/String;" />
-		<method name="getInstance(Ljava/lang/String;)Ljavax/crypto/Mac;" />
-		<method name="getInstance(Ljava/lang/String;Ljava/lang/String;)Ljavax/crypto/Mac;" />
-		<method name="getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljavax/crypto/Mac;" />
-		<method name="getMacLength()I" />
-		<method name="getProvider()Ljava/security/Provider;" />
-		<method name="init(Ljava/security/Key;)V" />
-		<method name="init(Ljava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V" />
-		<method name="reset()V" />
-		<method name="update(B)V" />
-		<method name="update(Ljava/nio/ByteBuffer;)V" />
-		<method name="update([B)V" />
-		<method name="update([BII)V" />
-	</class>
-	<class name="javax/crypto/MacSpi" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="engineDoFinal()[B" />
-		<method name="engineGetMacLength()I" />
-		<method name="engineInit(Ljava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V" />
-		<method name="engineReset()V" />
-		<method name="engineUpdate(B)V" />
-		<method name="engineUpdate(Ljava/nio/ByteBuffer;)V" />
-		<method name="engineUpdate([BII)V" />
-	</class>
-	<class name="javax/crypto/NoSuchPaddingException" since="1">
-		<extends name="java/security/GeneralSecurityException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="javax/crypto/NullCipher" since="1">
-		<extends name="javax/crypto/Cipher" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="javax/crypto/SealedObject" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<method name="&lt;init>(Ljava/io/Serializable;Ljavax/crypto/Cipher;)V" />
-		<method name="&lt;init>(Ljavax/crypto/SealedObject;)V" />
-		<method name="getAlgorithm()Ljava/lang/String;" />
-		<method name="getObject(Ljava/security/Key;)Ljava/lang/Object;" />
-		<method name="getObject(Ljava/security/Key;Ljava/lang/String;)Ljava/lang/Object;" />
-		<method name="getObject(Ljavax/crypto/Cipher;)Ljava/lang/Object;" />
-		<field name="encodedParams" />
-	</class>
-	<class name="javax/crypto/SecretKey" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/security/Key" />
-		<field name="serialVersionUID" />
-	</class>
-	<class name="javax/crypto/SecretKeyFactory" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljavax/crypto/SecretKeyFactorySpi;Ljava/security/Provider;Ljava/lang/String;)V" />
-		<method name="generateSecret(Ljava/security/spec/KeySpec;)Ljavax/crypto/SecretKey;" />
-		<method name="getAlgorithm()Ljava/lang/String;" />
-		<method name="getInstance(Ljava/lang/String;)Ljavax/crypto/SecretKeyFactory;" />
-		<method name="getInstance(Ljava/lang/String;Ljava/lang/String;)Ljavax/crypto/SecretKeyFactory;" />
-		<method name="getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljavax/crypto/SecretKeyFactory;" />
-		<method name="getKeySpec(Ljavax/crypto/SecretKey;Ljava/lang/Class;)Ljava/security/spec/KeySpec;" />
-		<method name="getProvider()Ljava/security/Provider;" />
-		<method name="translateKey(Ljavax/crypto/SecretKey;)Ljavax/crypto/SecretKey;" />
-	</class>
-	<class name="javax/crypto/SecretKeyFactorySpi" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="engineGenerateSecret(Ljava/security/spec/KeySpec;)Ljavax/crypto/SecretKey;" />
-		<method name="engineGetKeySpec(Ljavax/crypto/SecretKey;Ljava/lang/Class;)Ljava/security/spec/KeySpec;" />
-		<method name="engineTranslateKey(Ljavax/crypto/SecretKey;)Ljavax/crypto/SecretKey;" />
-	</class>
-	<class name="javax/crypto/ShortBufferException" since="1">
-		<extends name="java/security/GeneralSecurityException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="javax/crypto/interfaces/DHKey" since="1">
-		<extends name="java/lang/Object" />
-		<method name="getParams()Ljavax/crypto/spec/DHParameterSpec;" />
-	</class>
-	<class name="javax/crypto/interfaces/DHPrivateKey" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/security/PrivateKey" />
-		<implements name="javax/crypto/interfaces/DHKey" />
-		<method name="getX()Ljava/math/BigInteger;" />
-		<field name="serialVersionUID" />
-	</class>
-	<class name="javax/crypto/interfaces/DHPublicKey" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/security/PublicKey" />
-		<implements name="javax/crypto/interfaces/DHKey" />
-		<method name="getY()Ljava/math/BigInteger;" />
-		<field name="serialVersionUID" />
-	</class>
-	<class name="javax/crypto/interfaces/PBEKey" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="javax/crypto/SecretKey" />
-		<method name="getIterationCount()I" />
-		<method name="getPassword()[C" />
-		<method name="getSalt()[B" />
-		<field name="serialVersionUID" />
-	</class>
-	<class name="javax/crypto/spec/DESKeySpec" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/security/spec/KeySpec" />
-		<method name="&lt;init>([B)V" />
-		<method name="&lt;init>([BI)V" />
-		<method name="getKey()[B" />
-		<method name="isParityAdjusted([BI)Z" />
-		<method name="isWeak([BI)Z" />
-		<field name="DES_KEY_LEN" />
-	</class>
-	<class name="javax/crypto/spec/DESedeKeySpec" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/security/spec/KeySpec" />
-		<method name="&lt;init>([B)V" />
-		<method name="&lt;init>([BI)V" />
-		<method name="getKey()[B" />
-		<method name="isParityAdjusted([BI)Z" />
-		<field name="DES_EDE_KEY_LEN" />
-	</class>
-	<class name="javax/crypto/spec/DHGenParameterSpec" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/security/spec/AlgorithmParameterSpec" />
-		<method name="&lt;init>(II)V" />
-		<method name="getExponentSize()I" />
-		<method name="getPrimeSize()I" />
-	</class>
-	<class name="javax/crypto/spec/DHParameterSpec" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/security/spec/AlgorithmParameterSpec" />
-		<method name="&lt;init>(Ljava/math/BigInteger;Ljava/math/BigInteger;)V" />
-		<method name="&lt;init>(Ljava/math/BigInteger;Ljava/math/BigInteger;I)V" />
-		<method name="getG()Ljava/math/BigInteger;" />
-		<method name="getL()I" />
-		<method name="getP()Ljava/math/BigInteger;" />
-	</class>
-	<class name="javax/crypto/spec/DHPrivateKeySpec" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/security/spec/KeySpec" />
-		<method name="&lt;init>(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;)V" />
-		<method name="getG()Ljava/math/BigInteger;" />
-		<method name="getP()Ljava/math/BigInteger;" />
-		<method name="getX()Ljava/math/BigInteger;" />
-	</class>
-	<class name="javax/crypto/spec/DHPublicKeySpec" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/security/spec/KeySpec" />
-		<method name="&lt;init>(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;)V" />
-		<method name="getG()Ljava/math/BigInteger;" />
-		<method name="getP()Ljava/math/BigInteger;" />
-		<method name="getY()Ljava/math/BigInteger;" />
-	</class>
-	<class name="javax/crypto/spec/GCMParameterSpec" since="19">
-		<extends name="java/lang/Object" />
-		<implements name="java/security/spec/AlgorithmParameterSpec" />
-		<method name="&lt;init>(I[B)V" />
-		<method name="&lt;init>(I[BII)V" />
-		<method name="getIV()[B" />
-		<method name="getTLen()I" />
-	</class>
-	<class name="javax/crypto/spec/IvParameterSpec" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/security/spec/AlgorithmParameterSpec" />
-		<method name="&lt;init>([B)V" />
-		<method name="&lt;init>([BII)V" />
-		<method name="getIV()[B" />
-	</class>
-	<class name="javax/crypto/spec/OAEPParameterSpec" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/security/spec/AlgorithmParameterSpec" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/security/spec/AlgorithmParameterSpec;Ljavax/crypto/spec/PSource;)V" />
-		<method name="getDigestAlgorithm()Ljava/lang/String;" />
-		<method name="getMGFAlgorithm()Ljava/lang/String;" />
-		<method name="getMGFParameters()Ljava/security/spec/AlgorithmParameterSpec;" />
-		<method name="getPSource()Ljavax/crypto/spec/PSource;" />
-		<field name="DEFAULT" />
-	</class>
-	<class name="javax/crypto/spec/PBEKeySpec" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/security/spec/KeySpec" />
-		<method name="&lt;init>([C)V" />
-		<method name="&lt;init>([C[BI)V" />
-		<method name="&lt;init>([C[BII)V" />
-		<method name="clearPassword()V" />
-		<method name="getIterationCount()I" />
-		<method name="getKeyLength()I" />
-		<method name="getPassword()[C" />
-		<method name="getSalt()[B" />
-	</class>
-	<class name="javax/crypto/spec/PBEParameterSpec" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/security/spec/AlgorithmParameterSpec" />
-		<method name="&lt;init>([BI)V" />
-		<method name="getIterationCount()I" />
-		<method name="getSalt()[B" />
-	</class>
-	<class name="javax/crypto/spec/PSource" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="getAlgorithm()Ljava/lang/String;" />
-	</class>
-	<class name="javax/crypto/spec/PSource$PSpecified" since="1">
-		<extends name="javax/crypto/spec/PSource" />
-		<method name="&lt;init>([B)V" />
-		<method name="getValue()[B" />
-		<field name="DEFAULT" />
-	</class>
-	<class name="javax/crypto/spec/RC2ParameterSpec" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/security/spec/AlgorithmParameterSpec" />
-		<method name="&lt;init>(I)V" />
-		<method name="&lt;init>(I[B)V" />
-		<method name="&lt;init>(I[BI)V" />
-		<method name="getEffectiveKeyBits()I" />
-		<method name="getIV()[B" />
-	</class>
-	<class name="javax/crypto/spec/RC5ParameterSpec" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/security/spec/AlgorithmParameterSpec" />
-		<method name="&lt;init>(III)V" />
-		<method name="&lt;init>(III[B)V" />
-		<method name="&lt;init>(III[BI)V" />
-		<method name="getIV()[B" />
-		<method name="getRounds()I" />
-		<method name="getVersion()I" />
-		<method name="getWordSize()I" />
-	</class>
-	<class name="javax/crypto/spec/SecretKeySpec" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<implements name="java/security/spec/KeySpec" />
-		<implements name="javax/crypto/SecretKey" />
-		<method name="&lt;init>([BIILjava/lang/String;)V" />
-		<method name="&lt;init>([BLjava/lang/String;)V" />
-	</class>
-	<class name="javax/microedition/khronos/egl/EGL" since="1">
-		<extends name="java/lang/Object" />
-	</class>
-	<class name="javax/microedition/khronos/egl/EGL10" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="javax/microedition/khronos/egl/EGL" />
-		<method name="eglChooseConfig(Ljavax/microedition/khronos/egl/EGLDisplay;[I[Ljavax/microedition/khronos/egl/EGLConfig;I[I)Z" />
-		<method name="eglCopyBuffers(Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLSurface;Ljava/lang/Object;)Z" />
-		<method name="eglCreateContext(Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLConfig;Ljavax/microedition/khronos/egl/EGLContext;[I)Ljavax/microedition/khronos/egl/EGLContext;" />
-		<method name="eglCreatePbufferSurface(Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLConfig;[I)Ljavax/microedition/khronos/egl/EGLSurface;" />
-		<method name="eglCreatePixmapSurface(Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLConfig;Ljava/lang/Object;[I)Ljavax/microedition/khronos/egl/EGLSurface;" />
-		<method name="eglCreateWindowSurface(Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLConfig;Ljava/lang/Object;[I)Ljavax/microedition/khronos/egl/EGLSurface;" />
-		<method name="eglDestroyContext(Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLContext;)Z" />
-		<method name="eglDestroySurface(Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLSurface;)Z" />
-		<method name="eglGetConfigAttrib(Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLConfig;I[I)Z" />
-		<method name="eglGetConfigs(Ljavax/microedition/khronos/egl/EGLDisplay;[Ljavax/microedition/khronos/egl/EGLConfig;I[I)Z" />
-		<method name="eglGetCurrentContext()Ljavax/microedition/khronos/egl/EGLContext;" />
-		<method name="eglGetCurrentDisplay()Ljavax/microedition/khronos/egl/EGLDisplay;" />
-		<method name="eglGetCurrentSurface(I)Ljavax/microedition/khronos/egl/EGLSurface;" />
-		<method name="eglGetDisplay(Ljava/lang/Object;)Ljavax/microedition/khronos/egl/EGLDisplay;" />
-		<method name="eglGetError()I" />
-		<method name="eglInitialize(Ljavax/microedition/khronos/egl/EGLDisplay;[I)Z" />
-		<method name="eglMakeCurrent(Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLSurface;Ljavax/microedition/khronos/egl/EGLSurface;Ljavax/microedition/khronos/egl/EGLContext;)Z" />
-		<method name="eglQueryContext(Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLContext;I[I)Z" />
-		<method name="eglQueryString(Ljavax/microedition/khronos/egl/EGLDisplay;I)Ljava/lang/String;" />
-		<method name="eglQuerySurface(Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLSurface;I[I)Z" />
-		<method name="eglSwapBuffers(Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLSurface;)Z" />
-		<method name="eglTerminate(Ljavax/microedition/khronos/egl/EGLDisplay;)Z" />
-		<method name="eglWaitGL()Z" />
-		<method name="eglWaitNative(ILjava/lang/Object;)Z" />
-		<field name="EGL_ALPHA_FORMAT" />
-		<field name="EGL_ALPHA_MASK_SIZE" />
-		<field name="EGL_ALPHA_SIZE" />
-		<field name="EGL_BAD_ACCESS" />
-		<field name="EGL_BAD_ALLOC" />
-		<field name="EGL_BAD_ATTRIBUTE" />
-		<field name="EGL_BAD_CONFIG" />
-		<field name="EGL_BAD_CONTEXT" />
-		<field name="EGL_BAD_CURRENT_SURFACE" />
-		<field name="EGL_BAD_DISPLAY" />
-		<field name="EGL_BAD_MATCH" />
-		<field name="EGL_BAD_NATIVE_PIXMAP" />
-		<field name="EGL_BAD_NATIVE_WINDOW" />
-		<field name="EGL_BAD_PARAMETER" />
-		<field name="EGL_BAD_SURFACE" />
-		<field name="EGL_BLUE_SIZE" />
-		<field name="EGL_BUFFER_SIZE" />
-		<field name="EGL_COLORSPACE" />
-		<field name="EGL_COLOR_BUFFER_TYPE" />
-		<field name="EGL_CONFIG_CAVEAT" />
-		<field name="EGL_CONFIG_ID" />
-		<field name="EGL_CORE_NATIVE_ENGINE" />
-		<field name="EGL_DEFAULT_DISPLAY" />
-		<field name="EGL_DEPTH_SIZE" />
-		<field name="EGL_DONT_CARE" />
-		<field name="EGL_DRAW" />
-		<field name="EGL_EXTENSIONS" />
-		<field name="EGL_GREEN_SIZE" />
-		<field name="EGL_HEIGHT" />
-		<field name="EGL_HORIZONTAL_RESOLUTION" />
-		<field name="EGL_LARGEST_PBUFFER" />
-		<field name="EGL_LEVEL" />
-		<field name="EGL_LUMINANCE_BUFFER" />
-		<field name="EGL_LUMINANCE_SIZE" />
-		<field name="EGL_MAX_PBUFFER_HEIGHT" />
-		<field name="EGL_MAX_PBUFFER_PIXELS" />
-		<field name="EGL_MAX_PBUFFER_WIDTH" />
-		<field name="EGL_NATIVE_RENDERABLE" />
-		<field name="EGL_NATIVE_VISUAL_ID" />
-		<field name="EGL_NATIVE_VISUAL_TYPE" />
-		<field name="EGL_NONE" />
-		<field name="EGL_NON_CONFORMANT_CONFIG" />
-		<field name="EGL_NOT_INITIALIZED" />
-		<field name="EGL_NO_CONTEXT" />
-		<field name="EGL_NO_DISPLAY" />
-		<field name="EGL_NO_SURFACE" />
-		<field name="EGL_PBUFFER_BIT" />
-		<field name="EGL_PIXEL_ASPECT_RATIO" />
-		<field name="EGL_PIXMAP_BIT" />
-		<field name="EGL_READ" />
-		<field name="EGL_RED_SIZE" />
-		<field name="EGL_RENDERABLE_TYPE" />
-		<field name="EGL_RENDER_BUFFER" />
-		<field name="EGL_RGB_BUFFER" />
-		<field name="EGL_SAMPLES" />
-		<field name="EGL_SAMPLE_BUFFERS" />
-		<field name="EGL_SINGLE_BUFFER" />
-		<field name="EGL_SLOW_CONFIG" />
-		<field name="EGL_STENCIL_SIZE" />
-		<field name="EGL_SUCCESS" />
-		<field name="EGL_SURFACE_TYPE" />
-		<field name="EGL_TRANSPARENT_BLUE_VALUE" />
-		<field name="EGL_TRANSPARENT_GREEN_VALUE" />
-		<field name="EGL_TRANSPARENT_RED_VALUE" />
-		<field name="EGL_TRANSPARENT_RGB" />
-		<field name="EGL_TRANSPARENT_TYPE" />
-		<field name="EGL_VENDOR" />
-		<field name="EGL_VERSION" />
-		<field name="EGL_VERTICAL_RESOLUTION" />
-		<field name="EGL_WIDTH" />
-		<field name="EGL_WINDOW_BIT" />
-	</class>
-	<class name="javax/microedition/khronos/egl/EGL11" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="javax/microedition/khronos/egl/EGL10" />
-		<field name="EGL_CONTEXT_LOST" />
-	</class>
-	<class name="javax/microedition/khronos/egl/EGLConfig" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="javax/microedition/khronos/egl/EGLContext" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getEGL()Ljavax/microedition/khronos/egl/EGL;" />
-		<method name="getGL()Ljavax/microedition/khronos/opengles/GL;" />
-	</class>
-	<class name="javax/microedition/khronos/egl/EGLDisplay" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="javax/microedition/khronos/egl/EGLSurface" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="javax/microedition/khronos/opengles/GL" since="1">
-		<extends name="java/lang/Object" />
-	</class>
-	<class name="javax/microedition/khronos/opengles/GL10" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="javax/microedition/khronos/opengles/GL" />
-		<method name="glActiveTexture(I)V" />
-		<method name="glAlphaFunc(IF)V" />
-		<method name="glAlphaFuncx(II)V" />
-		<method name="glBindTexture(II)V" />
-		<method name="glBlendFunc(II)V" />
-		<method name="glClear(I)V" />
-		<method name="glClearColor(FFFF)V" />
-		<method name="glClearColorx(IIII)V" />
-		<method name="glClearDepthf(F)V" />
-		<method name="glClearDepthx(I)V" />
-		<method name="glClearStencil(I)V" />
-		<method name="glClientActiveTexture(I)V" />
-		<method name="glColor4f(FFFF)V" />
-		<method name="glColor4x(IIII)V" />
-		<method name="glColorMask(ZZZZ)V" />
-		<method name="glColorPointer(IIILjava/nio/Buffer;)V" />
-		<method name="glCompressedTexImage2D(IIIIIIILjava/nio/Buffer;)V" />
-		<method name="glCompressedTexSubImage2D(IIIIIIIILjava/nio/Buffer;)V" />
-		<method name="glCopyTexImage2D(IIIIIIII)V" />
-		<method name="glCopyTexSubImage2D(IIIIIIII)V" />
-		<method name="glCullFace(I)V" />
-		<method name="glDeleteTextures(ILjava/nio/IntBuffer;)V" />
-		<method name="glDeleteTextures(I[II)V" />
-		<method name="glDepthFunc(I)V" />
-		<method name="glDepthMask(Z)V" />
-		<method name="glDepthRangef(FF)V" />
-		<method name="glDepthRangex(II)V" />
-		<method name="glDisable(I)V" />
-		<method name="glDisableClientState(I)V" />
-		<method name="glDrawArrays(III)V" />
-		<method name="glDrawElements(IIILjava/nio/Buffer;)V" />
-		<method name="glEnable(I)V" />
-		<method name="glEnableClientState(I)V" />
-		<method name="glFinish()V" />
-		<method name="glFlush()V" />
-		<method name="glFogf(IF)V" />
-		<method name="glFogfv(ILjava/nio/FloatBuffer;)V" />
-		<method name="glFogfv(I[FI)V" />
-		<method name="glFogx(II)V" />
-		<method name="glFogxv(ILjava/nio/IntBuffer;)V" />
-		<method name="glFogxv(I[II)V" />
-		<method name="glFrontFace(I)V" />
-		<method name="glFrustumf(FFFFFF)V" />
-		<method name="glFrustumx(IIIIII)V" />
-		<method name="glGenTextures(ILjava/nio/IntBuffer;)V" />
-		<method name="glGenTextures(I[II)V" />
-		<method name="glGetError()I" />
-		<method name="glGetIntegerv(ILjava/nio/IntBuffer;)V" />
-		<method name="glGetIntegerv(I[II)V" />
-		<method name="glGetString(I)Ljava/lang/String;" />
-		<method name="glHint(II)V" />
-		<method name="glLightModelf(IF)V" />
-		<method name="glLightModelfv(ILjava/nio/FloatBuffer;)V" />
-		<method name="glLightModelfv(I[FI)V" />
-		<method name="glLightModelx(II)V" />
-		<method name="glLightModelxv(ILjava/nio/IntBuffer;)V" />
-		<method name="glLightModelxv(I[II)V" />
-		<method name="glLightf(IIF)V" />
-		<method name="glLightfv(IILjava/nio/FloatBuffer;)V" />
-		<method name="glLightfv(II[FI)V" />
-		<method name="glLightx(III)V" />
-		<method name="glLightxv(IILjava/nio/IntBuffer;)V" />
-		<method name="glLightxv(II[II)V" />
-		<method name="glLineWidth(F)V" />
-		<method name="glLineWidthx(I)V" />
-		<method name="glLoadIdentity()V" />
-		<method name="glLoadMatrixf(Ljava/nio/FloatBuffer;)V" />
-		<method name="glLoadMatrixf([FI)V" />
-		<method name="glLoadMatrixx(Ljava/nio/IntBuffer;)V" />
-		<method name="glLoadMatrixx([II)V" />
-		<method name="glLogicOp(I)V" />
-		<method name="glMaterialf(IIF)V" />
-		<method name="glMaterialfv(IILjava/nio/FloatBuffer;)V" />
-		<method name="glMaterialfv(II[FI)V" />
-		<method name="glMaterialx(III)V" />
-		<method name="glMaterialxv(IILjava/nio/IntBuffer;)V" />
-		<method name="glMaterialxv(II[II)V" />
-		<method name="glMatrixMode(I)V" />
-		<method name="glMultMatrixf(Ljava/nio/FloatBuffer;)V" />
-		<method name="glMultMatrixf([FI)V" />
-		<method name="glMultMatrixx(Ljava/nio/IntBuffer;)V" />
-		<method name="glMultMatrixx([II)V" />
-		<method name="glMultiTexCoord4f(IFFFF)V" />
-		<method name="glMultiTexCoord4x(IIIII)V" />
-		<method name="glNormal3f(FFF)V" />
-		<method name="glNormal3x(III)V" />
-		<method name="glNormalPointer(IILjava/nio/Buffer;)V" />
-		<method name="glOrthof(FFFFFF)V" />
-		<method name="glOrthox(IIIIII)V" />
-		<method name="glPixelStorei(II)V" />
-		<method name="glPointSize(F)V" />
-		<method name="glPointSizex(I)V" />
-		<method name="glPolygonOffset(FF)V" />
-		<method name="glPolygonOffsetx(II)V" />
-		<method name="glPopMatrix()V" />
-		<method name="glPushMatrix()V" />
-		<method name="glReadPixels(IIIIIILjava/nio/Buffer;)V" />
-		<method name="glRotatef(FFFF)V" />
-		<method name="glRotatex(IIII)V" />
-		<method name="glSampleCoverage(FZ)V" />
-		<method name="glSampleCoveragex(IZ)V" />
-		<method name="glScalef(FFF)V" />
-		<method name="glScalex(III)V" />
-		<method name="glScissor(IIII)V" />
-		<method name="glShadeModel(I)V" />
-		<method name="glStencilFunc(III)V" />
-		<method name="glStencilMask(I)V" />
-		<method name="glStencilOp(III)V" />
-		<method name="glTexCoordPointer(IIILjava/nio/Buffer;)V" />
-		<method name="glTexEnvf(IIF)V" />
-		<method name="glTexEnvfv(IILjava/nio/FloatBuffer;)V" />
-		<method name="glTexEnvfv(II[FI)V" />
-		<method name="glTexEnvx(III)V" />
-		<method name="glTexEnvxv(IILjava/nio/IntBuffer;)V" />
-		<method name="glTexEnvxv(II[II)V" />
-		<method name="glTexImage2D(IIIIIIIILjava/nio/Buffer;)V" />
-		<method name="glTexParameterf(IIF)V" />
-		<method name="glTexParameterx(III)V" />
-		<method name="glTexSubImage2D(IIIIIIIILjava/nio/Buffer;)V" />
-		<method name="glTranslatef(FFF)V" />
-		<method name="glTranslatex(III)V" />
-		<method name="glVertexPointer(IIILjava/nio/Buffer;)V" />
-		<method name="glViewport(IIII)V" />
-		<field name="GL_ADD" />
-		<field name="GL_ALIASED_LINE_WIDTH_RANGE" />
-		<field name="GL_ALIASED_POINT_SIZE_RANGE" />
-		<field name="GL_ALPHA" />
-		<field name="GL_ALPHA_BITS" />
-		<field name="GL_ALPHA_TEST" />
-		<field name="GL_ALWAYS" />
-		<field name="GL_AMBIENT" />
-		<field name="GL_AMBIENT_AND_DIFFUSE" />
-		<field name="GL_AND" />
-		<field name="GL_AND_INVERTED" />
-		<field name="GL_AND_REVERSE" />
-		<field name="GL_BACK" />
-		<field name="GL_BLEND" />
-		<field name="GL_BLUE_BITS" />
-		<field name="GL_BYTE" />
-		<field name="GL_CCW" />
-		<field name="GL_CLAMP_TO_EDGE" />
-		<field name="GL_CLEAR" />
-		<field name="GL_COLOR_ARRAY" />
-		<field name="GL_COLOR_BUFFER_BIT" />
-		<field name="GL_COLOR_LOGIC_OP" />
-		<field name="GL_COLOR_MATERIAL" />
-		<field name="GL_COMPRESSED_TEXTURE_FORMATS" />
-		<field name="GL_CONSTANT_ATTENUATION" />
-		<field name="GL_COPY" />
-		<field name="GL_COPY_INVERTED" />
-		<field name="GL_CULL_FACE" />
-		<field name="GL_CW" />
-		<field name="GL_DECAL" />
-		<field name="GL_DECR" />
-		<field name="GL_DEPTH_BITS" />
-		<field name="GL_DEPTH_BUFFER_BIT" />
-		<field name="GL_DEPTH_TEST" />
-		<field name="GL_DIFFUSE" />
-		<field name="GL_DITHER" />
-		<field name="GL_DONT_CARE" />
-		<field name="GL_DST_ALPHA" />
-		<field name="GL_DST_COLOR" />
-		<field name="GL_EMISSION" />
-		<field name="GL_EQUAL" />
-		<field name="GL_EQUIV" />
-		<field name="GL_EXP" />
-		<field name="GL_EXP2" />
-		<field name="GL_EXTENSIONS" />
-		<field name="GL_FALSE" />
-		<field name="GL_FASTEST" />
-		<field name="GL_FIXED" />
-		<field name="GL_FLAT" />
-		<field name="GL_FLOAT" />
-		<field name="GL_FOG" />
-		<field name="GL_FOG_COLOR" />
-		<field name="GL_FOG_DENSITY" />
-		<field name="GL_FOG_END" />
-		<field name="GL_FOG_HINT" />
-		<field name="GL_FOG_MODE" />
-		<field name="GL_FOG_START" />
-		<field name="GL_FRONT" />
-		<field name="GL_FRONT_AND_BACK" />
-		<field name="GL_GEQUAL" />
-		<field name="GL_GREATER" />
-		<field name="GL_GREEN_BITS" />
-		<field name="GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES" />
-		<field name="GL_IMPLEMENTATION_COLOR_READ_TYPE_OES" />
-		<field name="GL_INCR" />
-		<field name="GL_INVALID_ENUM" />
-		<field name="GL_INVALID_OPERATION" />
-		<field name="GL_INVALID_VALUE" />
-		<field name="GL_INVERT" />
-		<field name="GL_KEEP" />
-		<field name="GL_LEQUAL" />
-		<field name="GL_LESS" />
-		<field name="GL_LIGHT0" />
-		<field name="GL_LIGHT1" />
-		<field name="GL_LIGHT2" />
-		<field name="GL_LIGHT3" />
-		<field name="GL_LIGHT4" />
-		<field name="GL_LIGHT5" />
-		<field name="GL_LIGHT6" />
-		<field name="GL_LIGHT7" />
-		<field name="GL_LIGHTING" />
-		<field name="GL_LIGHT_MODEL_AMBIENT" />
-		<field name="GL_LIGHT_MODEL_TWO_SIDE" />
-		<field name="GL_LINEAR" />
-		<field name="GL_LINEAR_ATTENUATION" />
-		<field name="GL_LINEAR_MIPMAP_LINEAR" />
-		<field name="GL_LINEAR_MIPMAP_NEAREST" />
-		<field name="GL_LINES" />
-		<field name="GL_LINE_LOOP" />
-		<field name="GL_LINE_SMOOTH" />
-		<field name="GL_LINE_SMOOTH_HINT" />
-		<field name="GL_LINE_STRIP" />
-		<field name="GL_LUMINANCE" />
-		<field name="GL_LUMINANCE_ALPHA" />
-		<field name="GL_MAX_ELEMENTS_INDICES" />
-		<field name="GL_MAX_ELEMENTS_VERTICES" />
-		<field name="GL_MAX_LIGHTS" />
-		<field name="GL_MAX_MODELVIEW_STACK_DEPTH" />
-		<field name="GL_MAX_PROJECTION_STACK_DEPTH" />
-		<field name="GL_MAX_TEXTURE_SIZE" />
-		<field name="GL_MAX_TEXTURE_STACK_DEPTH" />
-		<field name="GL_MAX_TEXTURE_UNITS" />
-		<field name="GL_MAX_VIEWPORT_DIMS" />
-		<field name="GL_MODELVIEW" />
-		<field name="GL_MODULATE" />
-		<field name="GL_MULTISAMPLE" />
-		<field name="GL_NAND" />
-		<field name="GL_NEAREST" />
-		<field name="GL_NEAREST_MIPMAP_LINEAR" />
-		<field name="GL_NEAREST_MIPMAP_NEAREST" />
-		<field name="GL_NEVER" />
-		<field name="GL_NICEST" />
-		<field name="GL_NOOP" />
-		<field name="GL_NOR" />
-		<field name="GL_NORMALIZE" />
-		<field name="GL_NORMAL_ARRAY" />
-		<field name="GL_NOTEQUAL" />
-		<field name="GL_NO_ERROR" />
-		<field name="GL_NUM_COMPRESSED_TEXTURE_FORMATS" />
-		<field name="GL_ONE" />
-		<field name="GL_ONE_MINUS_DST_ALPHA" />
-		<field name="GL_ONE_MINUS_DST_COLOR" />
-		<field name="GL_ONE_MINUS_SRC_ALPHA" />
-		<field name="GL_ONE_MINUS_SRC_COLOR" />
-		<field name="GL_OR" />
-		<field name="GL_OR_INVERTED" />
-		<field name="GL_OR_REVERSE" />
-		<field name="GL_OUT_OF_MEMORY" />
-		<field name="GL_PACK_ALIGNMENT" />
-		<field name="GL_PALETTE4_R5_G6_B5_OES" />
-		<field name="GL_PALETTE4_RGB5_A1_OES" />
-		<field name="GL_PALETTE4_RGB8_OES" />
-		<field name="GL_PALETTE4_RGBA4_OES" />
-		<field name="GL_PALETTE4_RGBA8_OES" />
-		<field name="GL_PALETTE8_R5_G6_B5_OES" />
-		<field name="GL_PALETTE8_RGB5_A1_OES" />
-		<field name="GL_PALETTE8_RGB8_OES" />
-		<field name="GL_PALETTE8_RGBA4_OES" />
-		<field name="GL_PALETTE8_RGBA8_OES" />
-		<field name="GL_PERSPECTIVE_CORRECTION_HINT" />
-		<field name="GL_POINTS" />
-		<field name="GL_POINT_FADE_THRESHOLD_SIZE" />
-		<field name="GL_POINT_SIZE" />
-		<field name="GL_POINT_SMOOTH" />
-		<field name="GL_POINT_SMOOTH_HINT" />
-		<field name="GL_POLYGON_OFFSET_FILL" />
-		<field name="GL_POLYGON_SMOOTH_HINT" />
-		<field name="GL_POSITION" />
-		<field name="GL_PROJECTION" />
-		<field name="GL_QUADRATIC_ATTENUATION" />
-		<field name="GL_RED_BITS" />
-		<field name="GL_RENDERER" />
-		<field name="GL_REPEAT" />
-		<field name="GL_REPLACE" />
-		<field name="GL_RESCALE_NORMAL" />
-		<field name="GL_RGB" />
-		<field name="GL_RGBA" />
-		<field name="GL_SAMPLE_ALPHA_TO_COVERAGE" />
-		<field name="GL_SAMPLE_ALPHA_TO_ONE" />
-		<field name="GL_SAMPLE_COVERAGE" />
-		<field name="GL_SCISSOR_TEST" />
-		<field name="GL_SET" />
-		<field name="GL_SHININESS" />
-		<field name="GL_SHORT" />
-		<field name="GL_SMOOTH" />
-		<field name="GL_SMOOTH_LINE_WIDTH_RANGE" />
-		<field name="GL_SMOOTH_POINT_SIZE_RANGE" />
-		<field name="GL_SPECULAR" />
-		<field name="GL_SPOT_CUTOFF" />
-		<field name="GL_SPOT_DIRECTION" />
-		<field name="GL_SPOT_EXPONENT" />
-		<field name="GL_SRC_ALPHA" />
-		<field name="GL_SRC_ALPHA_SATURATE" />
-		<field name="GL_SRC_COLOR" />
-		<field name="GL_STACK_OVERFLOW" />
-		<field name="GL_STACK_UNDERFLOW" />
-		<field name="GL_STENCIL_BITS" />
-		<field name="GL_STENCIL_BUFFER_BIT" />
-		<field name="GL_STENCIL_TEST" />
-		<field name="GL_SUBPIXEL_BITS" />
-		<field name="GL_TEXTURE" />
-		<field name="GL_TEXTURE0" />
-		<field name="GL_TEXTURE1" />
-		<field name="GL_TEXTURE10" />
-		<field name="GL_TEXTURE11" />
-		<field name="GL_TEXTURE12" />
-		<field name="GL_TEXTURE13" />
-		<field name="GL_TEXTURE14" />
-		<field name="GL_TEXTURE15" />
-		<field name="GL_TEXTURE16" />
-		<field name="GL_TEXTURE17" />
-		<field name="GL_TEXTURE18" />
-		<field name="GL_TEXTURE19" />
-		<field name="GL_TEXTURE2" />
-		<field name="GL_TEXTURE20" />
-		<field name="GL_TEXTURE21" />
-		<field name="GL_TEXTURE22" />
-		<field name="GL_TEXTURE23" />
-		<field name="GL_TEXTURE24" />
-		<field name="GL_TEXTURE25" />
-		<field name="GL_TEXTURE26" />
-		<field name="GL_TEXTURE27" />
-		<field name="GL_TEXTURE28" />
-		<field name="GL_TEXTURE29" />
-		<field name="GL_TEXTURE3" />
-		<field name="GL_TEXTURE30" />
-		<field name="GL_TEXTURE31" />
-		<field name="GL_TEXTURE4" />
-		<field name="GL_TEXTURE5" />
-		<field name="GL_TEXTURE6" />
-		<field name="GL_TEXTURE7" />
-		<field name="GL_TEXTURE8" />
-		<field name="GL_TEXTURE9" />
-		<field name="GL_TEXTURE_2D" />
-		<field name="GL_TEXTURE_COORD_ARRAY" />
-		<field name="GL_TEXTURE_ENV" />
-		<field name="GL_TEXTURE_ENV_COLOR" />
-		<field name="GL_TEXTURE_ENV_MODE" />
-		<field name="GL_TEXTURE_MAG_FILTER" />
-		<field name="GL_TEXTURE_MIN_FILTER" />
-		<field name="GL_TEXTURE_WRAP_S" />
-		<field name="GL_TEXTURE_WRAP_T" />
-		<field name="GL_TRIANGLES" />
-		<field name="GL_TRIANGLE_FAN" />
-		<field name="GL_TRIANGLE_STRIP" />
-		<field name="GL_TRUE" />
-		<field name="GL_UNPACK_ALIGNMENT" />
-		<field name="GL_UNSIGNED_BYTE" />
-		<field name="GL_UNSIGNED_SHORT" />
-		<field name="GL_UNSIGNED_SHORT_4_4_4_4" />
-		<field name="GL_UNSIGNED_SHORT_5_5_5_1" />
-		<field name="GL_UNSIGNED_SHORT_5_6_5" />
-		<field name="GL_VENDOR" />
-		<field name="GL_VERSION" />
-		<field name="GL_VERTEX_ARRAY" />
-		<field name="GL_XOR" />
-		<field name="GL_ZERO" />
-	</class>
-	<class name="javax/microedition/khronos/opengles/GL10Ext" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="javax/microedition/khronos/opengles/GL" />
-		<method name="glQueryMatrixxOES(Ljava/nio/IntBuffer;Ljava/nio/IntBuffer;)I" />
-		<method name="glQueryMatrixxOES([II[II)I" />
-	</class>
-	<class name="javax/microedition/khronos/opengles/GL11" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="javax/microedition/khronos/opengles/GL10" />
-		<method name="glBindBuffer(II)V" />
-		<method name="glBufferData(IILjava/nio/Buffer;I)V" />
-		<method name="glBufferSubData(IIILjava/nio/Buffer;)V" />
-		<method name="glClipPlanef(ILjava/nio/FloatBuffer;)V" />
-		<method name="glClipPlanef(I[FI)V" />
-		<method name="glClipPlanex(ILjava/nio/IntBuffer;)V" />
-		<method name="glClipPlanex(I[II)V" />
-		<method name="glColor4ub(BBBB)V" />
-		<method name="glColorPointer(IIII)V" />
-		<method name="glDeleteBuffers(ILjava/nio/IntBuffer;)V" />
-		<method name="glDeleteBuffers(I[II)V" />
-		<method name="glDrawElements(IIII)V" />
-		<method name="glGenBuffers(ILjava/nio/IntBuffer;)V" />
-		<method name="glGenBuffers(I[II)V" />
-		<method name="glGetBooleanv(ILjava/nio/IntBuffer;)V" />
-		<method name="glGetBooleanv(I[ZI)V" />
-		<method name="glGetBufferParameteriv(IILjava/nio/IntBuffer;)V" />
-		<method name="glGetBufferParameteriv(II[II)V" />
-		<method name="glGetClipPlanef(ILjava/nio/FloatBuffer;)V" />
-		<method name="glGetClipPlanef(I[FI)V" />
-		<method name="glGetClipPlanex(ILjava/nio/IntBuffer;)V" />
-		<method name="glGetClipPlanex(I[II)V" />
-		<method name="glGetFixedv(ILjava/nio/IntBuffer;)V" />
-		<method name="glGetFixedv(I[II)V" />
-		<method name="glGetFloatv(ILjava/nio/FloatBuffer;)V" />
-		<method name="glGetFloatv(I[FI)V" />
-		<method name="glGetLightfv(IILjava/nio/FloatBuffer;)V" />
-		<method name="glGetLightfv(II[FI)V" />
-		<method name="glGetLightxv(IILjava/nio/IntBuffer;)V" />
-		<method name="glGetLightxv(II[II)V" />
-		<method name="glGetMaterialfv(IILjava/nio/FloatBuffer;)V" />
-		<method name="glGetMaterialfv(II[FI)V" />
-		<method name="glGetMaterialxv(IILjava/nio/IntBuffer;)V" />
-		<method name="glGetMaterialxv(II[II)V" />
-		<method name="glGetPointerv(I[Ljava/nio/Buffer;)V" />
-		<method name="glGetTexEnviv(IILjava/nio/IntBuffer;)V" />
-		<method name="glGetTexEnviv(II[II)V" />
-		<method name="glGetTexEnvxv(IILjava/nio/IntBuffer;)V" />
-		<method name="glGetTexEnvxv(II[II)V" />
-		<method name="glGetTexParameterfv(IILjava/nio/FloatBuffer;)V" />
-		<method name="glGetTexParameterfv(II[FI)V" />
-		<method name="glGetTexParameteriv(IILjava/nio/IntBuffer;)V" />
-		<method name="glGetTexParameteriv(II[II)V" />
-		<method name="glGetTexParameterxv(IILjava/nio/IntBuffer;)V" />
-		<method name="glGetTexParameterxv(II[II)V" />
-		<method name="glIsBuffer(I)Z" />
-		<method name="glIsEnabled(I)Z" />
-		<method name="glIsTexture(I)Z" />
-		<method name="glNormalPointer(III)V" />
-		<method name="glPointParameterf(IF)V" />
-		<method name="glPointParameterfv(ILjava/nio/FloatBuffer;)V" />
-		<method name="glPointParameterfv(I[FI)V" />
-		<method name="glPointParameterx(II)V" />
-		<method name="glPointParameterxv(ILjava/nio/IntBuffer;)V" />
-		<method name="glPointParameterxv(I[II)V" />
-		<method name="glPointSizePointerOES(IILjava/nio/Buffer;)V" />
-		<method name="glTexCoordPointer(IIII)V" />
-		<method name="glTexEnvi(III)V" />
-		<method name="glTexEnviv(IILjava/nio/IntBuffer;)V" />
-		<method name="glTexEnviv(II[II)V" />
-		<method name="glTexParameterfv(IILjava/nio/FloatBuffer;)V" />
-		<method name="glTexParameterfv(II[FI)V" />
-		<method name="glTexParameteri(III)V" />
-		<method name="glTexParameteriv(IILjava/nio/IntBuffer;)V" />
-		<method name="glTexParameteriv(II[II)V" />
-		<method name="glTexParameterxv(IILjava/nio/IntBuffer;)V" />
-		<method name="glTexParameterxv(II[II)V" />
-		<method name="glVertexPointer(IIII)V" />
-		<field name="GL_ACTIVE_TEXTURE" />
-		<field name="GL_ADD_SIGNED" />
-		<field name="GL_ALPHA_SCALE" />
-		<field name="GL_ALPHA_TEST_FUNC" />
-		<field name="GL_ALPHA_TEST_REF" />
-		<field name="GL_ARRAY_BUFFER" />
-		<field name="GL_ARRAY_BUFFER_BINDING" />
-		<field name="GL_BLEND_DST" />
-		<field name="GL_BLEND_SRC" />
-		<field name="GL_BUFFER_ACCESS" />
-		<field name="GL_BUFFER_SIZE" />
-		<field name="GL_BUFFER_USAGE" />
-		<field name="GL_CLIENT_ACTIVE_TEXTURE" />
-		<field name="GL_CLIP_PLANE0" />
-		<field name="GL_CLIP_PLANE1" />
-		<field name="GL_CLIP_PLANE2" />
-		<field name="GL_CLIP_PLANE3" />
-		<field name="GL_CLIP_PLANE4" />
-		<field name="GL_CLIP_PLANE5" />
-		<field name="GL_COLOR_ARRAY_BUFFER_BINDING" />
-		<field name="GL_COLOR_ARRAY_POINTER" />
-		<field name="GL_COLOR_ARRAY_SIZE" />
-		<field name="GL_COLOR_ARRAY_STRIDE" />
-		<field name="GL_COLOR_ARRAY_TYPE" />
-		<field name="GL_COLOR_CLEAR_VALUE" />
-		<field name="GL_COLOR_WRITEMASK" />
-		<field name="GL_COMBINE" />
-		<field name="GL_COMBINE_ALPHA" />
-		<field name="GL_COMBINE_RGB" />
-		<field name="GL_CONSTANT" />
-		<field name="GL_COORD_REPLACE_OES" />
-		<field name="GL_CULL_FACE_MODE" />
-		<field name="GL_CURRENT_COLOR" />
-		<field name="GL_CURRENT_NORMAL" />
-		<field name="GL_CURRENT_TEXTURE_COORDS" />
-		<field name="GL_DEPTH_CLEAR_VALUE" />
-		<field name="GL_DEPTH_FUNC" />
-		<field name="GL_DEPTH_RANGE" />
-		<field name="GL_DEPTH_WRITEMASK" />
-		<field name="GL_DOT3_RGB" />
-		<field name="GL_DOT3_RGBA" />
-		<field name="GL_DYNAMIC_DRAW" />
-		<field name="GL_ELEMENT_ARRAY_BUFFER" />
-		<field name="GL_ELEMENT_ARRAY_BUFFER_BINDING" />
-		<field name="GL_FRONT_FACE" />
-		<field name="GL_GENERATE_MIPMAP" />
-		<field name="GL_GENERATE_MIPMAP_HINT" />
-		<field name="GL_INTERPOLATE" />
-		<field name="GL_LINE_WIDTH" />
-		<field name="GL_LOGIC_OP_MODE" />
-		<field name="GL_MATRIX_MODE" />
-		<field name="GL_MAX_CLIP_PLANES" />
-		<field name="GL_MODELVIEW_MATRIX" />
-		<field name="GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES" />
-		<field name="GL_MODELVIEW_STACK_DEPTH" />
-		<field name="GL_NORMAL_ARRAY_BUFFER_BINDING" />
-		<field name="GL_NORMAL_ARRAY_POINTER" />
-		<field name="GL_NORMAL_ARRAY_STRIDE" />
-		<field name="GL_NORMAL_ARRAY_TYPE" />
-		<field name="GL_OPERAND0_ALPHA" />
-		<field name="GL_OPERAND0_RGB" />
-		<field name="GL_OPERAND1_ALPHA" />
-		<field name="GL_OPERAND1_RGB" />
-		<field name="GL_OPERAND2_ALPHA" />
-		<field name="GL_OPERAND2_RGB" />
-		<field name="GL_POINT_DISTANCE_ATTENUATION" />
-		<field name="GL_POINT_FADE_THRESHOLD_SIZE" />
-		<field name="GL_POINT_SIZE" />
-		<field name="GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES" />
-		<field name="GL_POINT_SIZE_ARRAY_OES" />
-		<field name="GL_POINT_SIZE_ARRAY_POINTER_OES" />
-		<field name="GL_POINT_SIZE_ARRAY_STRIDE_OES" />
-		<field name="GL_POINT_SIZE_ARRAY_TYPE_OES" />
-		<field name="GL_POINT_SIZE_MAX" />
-		<field name="GL_POINT_SIZE_MIN" />
-		<field name="GL_POINT_SPRITE_OES" />
-		<field name="GL_POLYGON_OFFSET_FACTOR" />
-		<field name="GL_POLYGON_OFFSET_UNITS" />
-		<field name="GL_PREVIOUS" />
-		<field name="GL_PRIMARY_COLOR" />
-		<field name="GL_PROJECTION_MATRIX" />
-		<field name="GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES" />
-		<field name="GL_PROJECTION_STACK_DEPTH" />
-		<field name="GL_RGB_SCALE" />
-		<field name="GL_SAMPLES" />
-		<field name="GL_SAMPLE_BUFFERS" />
-		<field name="GL_SAMPLE_COVERAGE_INVERT" />
-		<field name="GL_SAMPLE_COVERAGE_VALUE" />
-		<field name="GL_SCISSOR_BOX" />
-		<field name="GL_SHADE_MODEL" />
-		<field name="GL_SRC0_ALPHA" />
-		<field name="GL_SRC0_RGB" />
-		<field name="GL_SRC1_ALPHA" />
-		<field name="GL_SRC1_RGB" />
-		<field name="GL_SRC2_ALPHA" />
-		<field name="GL_SRC2_RGB" />
-		<field name="GL_STATIC_DRAW" />
-		<field name="GL_STENCIL_CLEAR_VALUE" />
-		<field name="GL_STENCIL_FAIL" />
-		<field name="GL_STENCIL_FUNC" />
-		<field name="GL_STENCIL_PASS_DEPTH_FAIL" />
-		<field name="GL_STENCIL_PASS_DEPTH_PASS" />
-		<field name="GL_STENCIL_REF" />
-		<field name="GL_STENCIL_VALUE_MASK" />
-		<field name="GL_STENCIL_WRITEMASK" />
-		<field name="GL_SUBTRACT" />
-		<field name="GL_TEXTURE_BINDING_2D" />
-		<field name="GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING" />
-		<field name="GL_TEXTURE_COORD_ARRAY_POINTER" />
-		<field name="GL_TEXTURE_COORD_ARRAY_SIZE" />
-		<field name="GL_TEXTURE_COORD_ARRAY_STRIDE" />
-		<field name="GL_TEXTURE_COORD_ARRAY_TYPE" />
-		<field name="GL_TEXTURE_MATRIX" />
-		<field name="GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES" />
-		<field name="GL_TEXTURE_STACK_DEPTH" />
-		<field name="GL_VERTEX_ARRAY_BUFFER_BINDING" />
-		<field name="GL_VERTEX_ARRAY_POINTER" />
-		<field name="GL_VERTEX_ARRAY_SIZE" />
-		<field name="GL_VERTEX_ARRAY_STRIDE" />
-		<field name="GL_VERTEX_ARRAY_TYPE" />
-		<field name="GL_VIEWPORT" />
-		<field name="GL_WRITE_ONLY" />
-	</class>
-	<class name="javax/microedition/khronos/opengles/GL11Ext" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="javax/microedition/khronos/opengles/GL" />
-		<method name="glCurrentPaletteMatrixOES(I)V" />
-		<method name="glDrawTexfOES(FFFFF)V" />
-		<method name="glDrawTexfvOES(Ljava/nio/FloatBuffer;)V" />
-		<method name="glDrawTexfvOES([FI)V" />
-		<method name="glDrawTexiOES(IIIII)V" />
-		<method name="glDrawTexivOES(Ljava/nio/IntBuffer;)V" />
-		<method name="glDrawTexivOES([II)V" />
-		<method name="glDrawTexsOES(SSSSS)V" />
-		<method name="glDrawTexsvOES(Ljava/nio/ShortBuffer;)V" />
-		<method name="glDrawTexsvOES([SI)V" />
-		<method name="glDrawTexxOES(IIIII)V" />
-		<method name="glDrawTexxvOES(Ljava/nio/IntBuffer;)V" />
-		<method name="glDrawTexxvOES([II)V" />
-		<method name="glEnable(I)V" />
-		<method name="glEnableClientState(I)V" />
-		<method name="glLoadPaletteFromModelViewMatrixOES()V" />
-		<method name="glMatrixIndexPointerOES(IIII)V" />
-		<method name="glMatrixIndexPointerOES(IIILjava/nio/Buffer;)V" />
-		<method name="glTexParameterfv(II[FI)V" />
-		<method name="glWeightPointerOES(IIII)V" />
-		<method name="glWeightPointerOES(IIILjava/nio/Buffer;)V" />
-		<field name="GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES" />
-		<field name="GL_MATRIX_INDEX_ARRAY_OES" />
-		<field name="GL_MATRIX_INDEX_ARRAY_POINTER_OES" />
-		<field name="GL_MATRIX_INDEX_ARRAY_SIZE_OES" />
-		<field name="GL_MATRIX_INDEX_ARRAY_STRIDE_OES" />
-		<field name="GL_MATRIX_INDEX_ARRAY_TYPE_OES" />
-		<field name="GL_MATRIX_PALETTE_OES" />
-		<field name="GL_MAX_PALETTE_MATRICES_OES" />
-		<field name="GL_MAX_VERTEX_UNITS_OES" />
-		<field name="GL_TEXTURE_CROP_RECT_OES" />
-		<field name="GL_WEIGHT_ARRAY_BUFFER_BINDING_OES" />
-		<field name="GL_WEIGHT_ARRAY_OES" />
-		<field name="GL_WEIGHT_ARRAY_POINTER_OES" />
-		<field name="GL_WEIGHT_ARRAY_SIZE_OES" />
-		<field name="GL_WEIGHT_ARRAY_STRIDE_OES" />
-		<field name="GL_WEIGHT_ARRAY_TYPE_OES" />
-	</class>
-	<class name="javax/microedition/khronos/opengles/GL11ExtensionPack" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="javax/microedition/khronos/opengles/GL" />
-		<method name="glBindFramebufferOES(II)V" />
-		<method name="glBindRenderbufferOES(II)V" />
-		<method name="glBindTexture(II)V" />
-		<method name="glBlendEquation(I)V" />
-		<method name="glBlendEquationSeparate(II)V" />
-		<method name="glBlendFuncSeparate(IIII)V" />
-		<method name="glCheckFramebufferStatusOES(I)I" />
-		<method name="glCompressedTexImage2D(IIIIIIILjava/nio/Buffer;)V" />
-		<method name="glCopyTexImage2D(IIIIIIII)V" />
-		<method name="glDeleteFramebuffersOES(ILjava/nio/IntBuffer;)V" />
-		<method name="glDeleteFramebuffersOES(I[II)V" />
-		<method name="glDeleteRenderbuffersOES(ILjava/nio/IntBuffer;)V" />
-		<method name="glDeleteRenderbuffersOES(I[II)V" />
-		<method name="glEnable(I)V" />
-		<method name="glFramebufferRenderbufferOES(IIII)V" />
-		<method name="glFramebufferTexture2DOES(IIIII)V" />
-		<method name="glGenFramebuffersOES(ILjava/nio/IntBuffer;)V" />
-		<method name="glGenFramebuffersOES(I[II)V" />
-		<method name="glGenRenderbuffersOES(ILjava/nio/IntBuffer;)V" />
-		<method name="glGenRenderbuffersOES(I[II)V" />
-		<method name="glGenerateMipmapOES(I)V" />
-		<method name="glGetFramebufferAttachmentParameterivOES(IIILjava/nio/IntBuffer;)V" />
-		<method name="glGetFramebufferAttachmentParameterivOES(III[II)V" />
-		<method name="glGetIntegerv(ILjava/nio/IntBuffer;)V" />
-		<method name="glGetIntegerv(I[II)V" />
-		<method name="glGetRenderbufferParameterivOES(IILjava/nio/IntBuffer;)V" />
-		<method name="glGetRenderbufferParameterivOES(II[II)V" />
-		<method name="glGetTexGenfv(IILjava/nio/FloatBuffer;)V" />
-		<method name="glGetTexGenfv(II[FI)V" />
-		<method name="glGetTexGeniv(IILjava/nio/IntBuffer;)V" />
-		<method name="glGetTexGeniv(II[II)V" />
-		<method name="glGetTexGenxv(IILjava/nio/IntBuffer;)V" />
-		<method name="glGetTexGenxv(II[II)V" />
-		<method name="glIsFramebufferOES(I)Z" />
-		<method name="glIsRenderbufferOES(I)Z" />
-		<method name="glRenderbufferStorageOES(IIII)V" />
-		<method name="glStencilOp(III)V" />
-		<method name="glTexEnvf(IIF)V" />
-		<method name="glTexEnvfv(IILjava/nio/FloatBuffer;)V" />
-		<method name="glTexEnvfv(II[FI)V" />
-		<method name="glTexEnvx(III)V" />
-		<method name="glTexEnvxv(IILjava/nio/IntBuffer;)V" />
-		<method name="glTexEnvxv(II[II)V" />
-		<method name="glTexGenf(IIF)V" />
-		<method name="glTexGenfv(IILjava/nio/FloatBuffer;)V" />
-		<method name="glTexGenfv(II[FI)V" />
-		<method name="glTexGeni(III)V" />
-		<method name="glTexGeniv(IILjava/nio/IntBuffer;)V" />
-		<method name="glTexGeniv(II[II)V" />
-		<method name="glTexGenx(III)V" />
-		<method name="glTexGenxv(IILjava/nio/IntBuffer;)V" />
-		<method name="glTexGenxv(II[II)V" />
-		<method name="glTexParameterf(IIF)V" />
-		<field name="GL_BLEND_DST_ALPHA" />
-		<field name="GL_BLEND_DST_RGB" />
-		<field name="GL_BLEND_EQUATION" />
-		<field name="GL_BLEND_EQUATION_ALPHA" />
-		<field name="GL_BLEND_EQUATION_RGB" />
-		<field name="GL_BLEND_SRC_ALPHA" />
-		<field name="GL_BLEND_SRC_RGB" />
-		<field name="GL_COLOR_ATTACHMENT0_OES" />
-		<field name="GL_COLOR_ATTACHMENT10_OES" />
-		<field name="GL_COLOR_ATTACHMENT11_OES" />
-		<field name="GL_COLOR_ATTACHMENT12_OES" />
-		<field name="GL_COLOR_ATTACHMENT13_OES" />
-		<field name="GL_COLOR_ATTACHMENT14_OES" />
-		<field name="GL_COLOR_ATTACHMENT15_OES" />
-		<field name="GL_COLOR_ATTACHMENT1_OES" />
-		<field name="GL_COLOR_ATTACHMENT2_OES" />
-		<field name="GL_COLOR_ATTACHMENT3_OES" />
-		<field name="GL_COLOR_ATTACHMENT4_OES" />
-		<field name="GL_COLOR_ATTACHMENT5_OES" />
-		<field name="GL_COLOR_ATTACHMENT6_OES" />
-		<field name="GL_COLOR_ATTACHMENT7_OES" />
-		<field name="GL_COLOR_ATTACHMENT8_OES" />
-		<field name="GL_COLOR_ATTACHMENT9_OES" />
-		<field name="GL_DECR_WRAP" />
-		<field name="GL_DEPTH_ATTACHMENT_OES" />
-		<field name="GL_DEPTH_COMPONENT" />
-		<field name="GL_DEPTH_COMPONENT16" />
-		<field name="GL_DEPTH_COMPONENT24" />
-		<field name="GL_DEPTH_COMPONENT32" />
-		<field name="GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES" />
-		<field name="GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES" />
-		<field name="GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES" />
-		<field name="GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES" />
-		<field name="GL_FRAMEBUFFER_BINDING_OES" />
-		<field name="GL_FRAMEBUFFER_COMPLETE_OES" />
-		<field name="GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES" />
-		<field name="GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES" />
-		<field name="GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_OES" />
-		<field name="GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES" />
-		<field name="GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES" />
-		<field name="GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_OES" />
-		<field name="GL_FRAMEBUFFER_OES" />
-		<field name="GL_FRAMEBUFFER_UNSUPPORTED_OES" />
-		<field name="GL_FUNC_ADD" />
-		<field name="GL_FUNC_REVERSE_SUBTRACT" />
-		<field name="GL_FUNC_SUBTRACT" />
-		<field name="GL_INCR_WRAP" />
-		<field name="GL_INVALID_FRAMEBUFFER_OPERATION_OES" />
-		<field name="GL_MAX_COLOR_ATTACHMENTS_OES" />
-		<field name="GL_MAX_CUBE_MAP_TEXTURE_SIZE" />
-		<field name="GL_MAX_RENDERBUFFER_SIZE_OES" />
-		<field name="GL_MIRRORED_REPEAT" />
-		<field name="GL_NORMAL_MAP" />
-		<field name="GL_REFLECTION_MAP" />
-		<field name="GL_RENDERBUFFER_ALPHA_SIZE_OES" />
-		<field name="GL_RENDERBUFFER_BINDING_OES" />
-		<field name="GL_RENDERBUFFER_BLUE_SIZE_OES" />
-		<field name="GL_RENDERBUFFER_DEPTH_SIZE_OES" />
-		<field name="GL_RENDERBUFFER_GREEN_SIZE_OES" />
-		<field name="GL_RENDERBUFFER_HEIGHT_OES" />
-		<field name="GL_RENDERBUFFER_INTERNAL_FORMAT_OES" />
-		<field name="GL_RENDERBUFFER_OES" />
-		<field name="GL_RENDERBUFFER_RED_SIZE_OES" />
-		<field name="GL_RENDERBUFFER_STENCIL_SIZE_OES" />
-		<field name="GL_RENDERBUFFER_WIDTH_OES" />
-		<field name="GL_RGB565_OES" />
-		<field name="GL_RGB5_A1" />
-		<field name="GL_RGB8" />
-		<field name="GL_RGBA4" />
-		<field name="GL_RGBA8" />
-		<field name="GL_STENCIL_ATTACHMENT_OES" />
-		<field name="GL_STENCIL_INDEX" />
-		<field name="GL_STENCIL_INDEX1_OES" />
-		<field name="GL_STENCIL_INDEX4_OES" />
-		<field name="GL_STENCIL_INDEX8_OES" />
-		<field name="GL_STR" />
-		<field name="GL_TEXTURE_BINDING_CUBE_MAP" />
-		<field name="GL_TEXTURE_CUBE_MAP" />
-		<field name="GL_TEXTURE_CUBE_MAP_NEGATIVE_X" />
-		<field name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Y" />
-		<field name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Z" />
-		<field name="GL_TEXTURE_CUBE_MAP_POSITIVE_X" />
-		<field name="GL_TEXTURE_CUBE_MAP_POSITIVE_Y" />
-		<field name="GL_TEXTURE_CUBE_MAP_POSITIVE_Z" />
-		<field name="GL_TEXTURE_GEN_MODE" />
-		<field name="GL_TEXTURE_GEN_STR" />
-	</class>
-	<class name="javax/net/ServerSocketFactory" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="createServerSocket()Ljava/net/ServerSocket;" />
-		<method name="createServerSocket(I)Ljava/net/ServerSocket;" />
-		<method name="createServerSocket(II)Ljava/net/ServerSocket;" />
-		<method name="createServerSocket(IILjava/net/InetAddress;)Ljava/net/ServerSocket;" />
-		<method name="getDefault()Ljavax/net/ServerSocketFactory;" />
-	</class>
-	<class name="javax/net/SocketFactory" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="createSocket()Ljava/net/Socket;" />
-		<method name="createSocket(Ljava/lang/String;I)Ljava/net/Socket;" />
-		<method name="createSocket(Ljava/lang/String;ILjava/net/InetAddress;I)Ljava/net/Socket;" />
-		<method name="createSocket(Ljava/net/InetAddress;I)Ljava/net/Socket;" />
-		<method name="createSocket(Ljava/net/InetAddress;ILjava/net/InetAddress;I)Ljava/net/Socket;" />
-		<method name="getDefault()Ljavax/net/SocketFactory;" />
-	</class>
-	<class name="javax/net/ssl/CertPathTrustManagerParameters" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="javax/net/ssl/ManagerFactoryParameters" />
-		<method name="&lt;init>(Ljava/security/cert/CertPathParameters;)V" />
-		<method name="getParameters()Ljava/security/cert/CertPathParameters;" />
-	</class>
-	<class name="javax/net/ssl/HandshakeCompletedEvent" since="1">
-		<extends name="java/util/EventObject" />
-		<implements name="java/io/Serializable" />
-		<method name="&lt;init>(Ljavax/net/ssl/SSLSocket;Ljavax/net/ssl/SSLSession;)V" />
-		<method name="getCipherSuite()Ljava/lang/String;" />
-		<method name="getLocalCertificates()[Ljava/security/cert/Certificate;" />
-		<method name="getLocalPrincipal()Ljava/security/Principal;" />
-		<method name="getPeerCertificateChain()[Ljavax/security/cert/X509Certificate;" />
-		<method name="getPeerCertificates()[Ljava/security/cert/Certificate;" />
-		<method name="getPeerPrincipal()Ljava/security/Principal;" />
-		<method name="getSession()Ljavax/net/ssl/SSLSession;" />
-		<method name="getSocket()Ljavax/net/ssl/SSLSocket;" />
-	</class>
-	<class name="javax/net/ssl/HandshakeCompletedListener" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/util/EventListener" />
-		<method name="handshakeCompleted(Ljavax/net/ssl/HandshakeCompletedEvent;)V" />
-	</class>
-	<class name="javax/net/ssl/HostnameVerifier" since="1">
-		<extends name="java/lang/Object" />
-		<method name="verify(Ljava/lang/String;Ljavax/net/ssl/SSLSession;)Z" />
-	</class>
-	<class name="javax/net/ssl/HttpsURLConnection" since="1">
-		<extends name="java/net/HttpURLConnection" />
-		<method name="&lt;init>(Ljava/net/URL;)V" />
-		<method name="getCipherSuite()Ljava/lang/String;" />
-		<method name="getDefaultHostnameVerifier()Ljavax/net/ssl/HostnameVerifier;" />
-		<method name="getDefaultSSLSocketFactory()Ljavax/net/ssl/SSLSocketFactory;" />
-		<method name="getHostnameVerifier()Ljavax/net/ssl/HostnameVerifier;" />
-		<method name="getLocalCertificates()[Ljava/security/cert/Certificate;" />
-		<method name="getLocalPrincipal()Ljava/security/Principal;" />
-		<method name="getPeerPrincipal()Ljava/security/Principal;" />
-		<method name="getSSLSocketFactory()Ljavax/net/ssl/SSLSocketFactory;" />
-		<method name="getServerCertificates()[Ljava/security/cert/Certificate;" />
-		<method name="setDefaultHostnameVerifier(Ljavax/net/ssl/HostnameVerifier;)V" />
-		<method name="setDefaultSSLSocketFactory(Ljavax/net/ssl/SSLSocketFactory;)V" />
-		<method name="setHostnameVerifier(Ljavax/net/ssl/HostnameVerifier;)V" />
-		<method name="setSSLSocketFactory(Ljavax/net/ssl/SSLSocketFactory;)V" />
-		<field name="hostnameVerifier" />
-	</class>
-	<class name="javax/net/ssl/KeyManager" since="1">
-		<extends name="java/lang/Object" />
-	</class>
-	<class name="javax/net/ssl/KeyManagerFactory" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljavax/net/ssl/KeyManagerFactorySpi;Ljava/security/Provider;Ljava/lang/String;)V" />
-		<method name="getAlgorithm()Ljava/lang/String;" />
-		<method name="getDefaultAlgorithm()Ljava/lang/String;" />
-		<method name="getInstance(Ljava/lang/String;)Ljavax/net/ssl/KeyManagerFactory;" />
-		<method name="getInstance(Ljava/lang/String;Ljava/lang/String;)Ljavax/net/ssl/KeyManagerFactory;" />
-		<method name="getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljavax/net/ssl/KeyManagerFactory;" />
-		<method name="getKeyManagers()[Ljavax/net/ssl/KeyManager;" />
-		<method name="getProvider()Ljava/security/Provider;" />
-		<method name="init(Ljava/security/KeyStore;[C)V" />
-		<method name="init(Ljavax/net/ssl/ManagerFactoryParameters;)V" />
-	</class>
-	<class name="javax/net/ssl/KeyManagerFactorySpi" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="engineGetKeyManagers()[Ljavax/net/ssl/KeyManager;" />
-		<method name="engineInit(Ljava/security/KeyStore;[C)V" />
-		<method name="engineInit(Ljavax/net/ssl/ManagerFactoryParameters;)V" />
-	</class>
-	<class name="javax/net/ssl/KeyStoreBuilderParameters" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="javax/net/ssl/ManagerFactoryParameters" />
-		<method name="&lt;init>(Ljava/security/KeyStore$Builder;)V" />
-		<method name="&lt;init>(Ljava/util/List;)V" />
-		<method name="getParameters()Ljava/util/List;" />
-	</class>
-	<class name="javax/net/ssl/ManagerFactoryParameters" since="1">
-		<extends name="java/lang/Object" />
-	</class>
-	<class name="javax/net/ssl/SSLContext" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljavax/net/ssl/SSLContextSpi;Ljava/security/Provider;Ljava/lang/String;)V" />
-		<method name="createSSLEngine()Ljavax/net/ssl/SSLEngine;" />
-		<method name="createSSLEngine(Ljava/lang/String;I)Ljavax/net/ssl/SSLEngine;" />
-		<method name="getClientSessionContext()Ljavax/net/ssl/SSLSessionContext;" />
-		<method name="getDefault()Ljavax/net/ssl/SSLContext;" since="9" />
-		<method name="getDefaultSSLParameters()Ljavax/net/ssl/SSLParameters;" since="9" />
-		<method name="getInstance(Ljava/lang/String;)Ljavax/net/ssl/SSLContext;" />
-		<method name="getInstance(Ljava/lang/String;Ljava/lang/String;)Ljavax/net/ssl/SSLContext;" />
-		<method name="getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljavax/net/ssl/SSLContext;" />
-		<method name="getProtocol()Ljava/lang/String;" />
-		<method name="getProvider()Ljava/security/Provider;" />
-		<method name="getServerSessionContext()Ljavax/net/ssl/SSLSessionContext;" />
-		<method name="getServerSocketFactory()Ljavax/net/ssl/SSLServerSocketFactory;" />
-		<method name="getSocketFactory()Ljavax/net/ssl/SSLSocketFactory;" />
-		<method name="getSupportedSSLParameters()Ljavax/net/ssl/SSLParameters;" since="9" />
-		<method name="init([Ljavax/net/ssl/KeyManager;[Ljavax/net/ssl/TrustManager;Ljava/security/SecureRandom;)V" />
-		<method name="setDefault(Ljavax/net/ssl/SSLContext;)V" since="9" />
-	</class>
-	<class name="javax/net/ssl/SSLContextSpi" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="engineCreateSSLEngine()Ljavax/net/ssl/SSLEngine;" />
-		<method name="engineCreateSSLEngine(Ljava/lang/String;I)Ljavax/net/ssl/SSLEngine;" />
-		<method name="engineGetClientSessionContext()Ljavax/net/ssl/SSLSessionContext;" />
-		<method name="engineGetDefaultSSLParameters()Ljavax/net/ssl/SSLParameters;" since="9" />
-		<method name="engineGetServerSessionContext()Ljavax/net/ssl/SSLSessionContext;" />
-		<method name="engineGetServerSocketFactory()Ljavax/net/ssl/SSLServerSocketFactory;" />
-		<method name="engineGetSocketFactory()Ljavax/net/ssl/SSLSocketFactory;" />
-		<method name="engineGetSupportedSSLParameters()Ljavax/net/ssl/SSLParameters;" since="9" />
-		<method name="engineInit([Ljavax/net/ssl/KeyManager;[Ljavax/net/ssl/TrustManager;Ljava/security/SecureRandom;)V" />
-	</class>
-	<class name="javax/net/ssl/SSLEngine" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;I)V" />
-		<method name="beginHandshake()V" />
-		<method name="closeInbound()V" />
-		<method name="closeOutbound()V" />
-		<method name="getDelegatedTask()Ljava/lang/Runnable;" />
-		<method name="getEnableSessionCreation()Z" />
-		<method name="getEnabledCipherSuites()[Ljava/lang/String;" />
-		<method name="getEnabledProtocols()[Ljava/lang/String;" />
-		<method name="getHandshakeStatus()Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;" />
-		<method name="getNeedClientAuth()Z" />
-		<method name="getPeerHost()Ljava/lang/String;" />
-		<method name="getPeerPort()I" />
-		<method name="getSSLParameters()Ljavax/net/ssl/SSLParameters;" since="9" />
-		<method name="getSession()Ljavax/net/ssl/SSLSession;" />
-		<method name="getSupportedCipherSuites()[Ljava/lang/String;" />
-		<method name="getSupportedProtocols()[Ljava/lang/String;" />
-		<method name="getUseClientMode()Z" />
-		<method name="getWantClientAuth()Z" />
-		<method name="isInboundDone()Z" />
-		<method name="isOutboundDone()Z" />
-		<method name="setEnableSessionCreation(Z)V" />
-		<method name="setEnabledCipherSuites([Ljava/lang/String;)V" />
-		<method name="setEnabledProtocols([Ljava/lang/String;)V" />
-		<method name="setNeedClientAuth(Z)V" />
-		<method name="setSSLParameters(Ljavax/net/ssl/SSLParameters;)V" since="9" />
-		<method name="setUseClientMode(Z)V" />
-		<method name="setWantClientAuth(Z)V" />
-		<method name="unwrap(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)Ljavax/net/ssl/SSLEngineResult;" />
-		<method name="unwrap(Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;)Ljavax/net/ssl/SSLEngineResult;" />
-		<method name="unwrap(Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;II)Ljavax/net/ssl/SSLEngineResult;" />
-		<method name="wrap(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)Ljavax/net/ssl/SSLEngineResult;" />
-		<method name="wrap([Ljava/nio/ByteBuffer;IILjava/nio/ByteBuffer;)Ljavax/net/ssl/SSLEngineResult;" />
-		<method name="wrap([Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)Ljavax/net/ssl/SSLEngineResult;" />
-	</class>
-	<class name="javax/net/ssl/SSLEngineResult" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljavax/net/ssl/SSLEngineResult$Status;Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;II)V" />
-		<method name="bytesConsumed()I" />
-		<method name="bytesProduced()I" />
-		<method name="getHandshakeStatus()Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;" />
-		<method name="getStatus()Ljavax/net/ssl/SSLEngineResult$Status;" />
-	</class>
-	<class name="javax/net/ssl/SSLEngineResult$HandshakeStatus" since="1">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;" />
-		<method name="values()[Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;" />
-		<field name="FINISHED" />
-		<field name="NEED_TASK" />
-		<field name="NEED_UNWRAP" />
-		<field name="NEED_WRAP" />
-		<field name="NOT_HANDSHAKING" />
-	</class>
-	<class name="javax/net/ssl/SSLEngineResult$Status" since="1">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Ljavax/net/ssl/SSLEngineResult$Status;" />
-		<method name="values()[Ljavax/net/ssl/SSLEngineResult$Status;" />
-		<field name="BUFFER_OVERFLOW" />
-		<field name="BUFFER_UNDERFLOW" />
-		<field name="CLOSED" />
-		<field name="OK" />
-	</class>
-	<class name="javax/net/ssl/SSLException" since="1">
-		<extends name="java/io/IOException" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="javax/net/ssl/SSLHandshakeException" since="1">
-		<extends name="javax/net/ssl/SSLException" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="javax/net/ssl/SSLKeyException" since="1">
-		<extends name="javax/net/ssl/SSLException" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="javax/net/ssl/SSLParameters" since="9">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>([Ljava/lang/String;)V" />
-		<method name="&lt;init>([Ljava/lang/String;[Ljava/lang/String;)V" />
-		<method name="getCipherSuites()[Ljava/lang/String;" />
-		<method name="getNeedClientAuth()Z" />
-		<method name="getProtocols()[Ljava/lang/String;" />
-		<method name="getWantClientAuth()Z" />
-		<method name="setCipherSuites([Ljava/lang/String;)V" />
-		<method name="setNeedClientAuth(Z)V" />
-		<method name="setProtocols([Ljava/lang/String;)V" />
-		<method name="setWantClientAuth(Z)V" />
-	</class>
-	<class name="javax/net/ssl/SSLPeerUnverifiedException" since="1">
-		<extends name="javax/net/ssl/SSLException" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="javax/net/ssl/SSLPermission" since="1">
-		<extends name="java/security/BasicPermission" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
-	</class>
-	<class name="javax/net/ssl/SSLProtocolException" since="1">
-		<extends name="javax/net/ssl/SSLException" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="javax/net/ssl/SSLServerSocket" since="1">
-		<extends name="java/net/ServerSocket" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(I)V" />
-		<method name="&lt;init>(II)V" />
-		<method name="&lt;init>(IILjava/net/InetAddress;)V" />
-		<method name="getEnableSessionCreation()Z" />
-		<method name="getEnabledCipherSuites()[Ljava/lang/String;" />
-		<method name="getEnabledProtocols()[Ljava/lang/String;" />
-		<method name="getNeedClientAuth()Z" />
-		<method name="getSupportedCipherSuites()[Ljava/lang/String;" />
-		<method name="getSupportedProtocols()[Ljava/lang/String;" />
-		<method name="getUseClientMode()Z" />
-		<method name="getWantClientAuth()Z" />
-		<method name="setEnableSessionCreation(Z)V" />
-		<method name="setEnabledCipherSuites([Ljava/lang/String;)V" />
-		<method name="setEnabledProtocols([Ljava/lang/String;)V" />
-		<method name="setNeedClientAuth(Z)V" />
-		<method name="setUseClientMode(Z)V" />
-		<method name="setWantClientAuth(Z)V" />
-	</class>
-	<class name="javax/net/ssl/SSLServerSocketFactory" since="1">
-		<extends name="javax/net/ServerSocketFactory" />
-		<method name="&lt;init>()V" />
-		<method name="getDefaultCipherSuites()[Ljava/lang/String;" />
-		<method name="getSupportedCipherSuites()[Ljava/lang/String;" />
-	</class>
-	<class name="javax/net/ssl/SSLSession" since="1">
-		<extends name="java/lang/Object" />
-		<method name="getApplicationBufferSize()I" />
-		<method name="getCipherSuite()Ljava/lang/String;" />
-		<method name="getCreationTime()J" />
-		<method name="getId()[B" />
-		<method name="getLastAccessedTime()J" />
-		<method name="getLocalCertificates()[Ljava/security/cert/Certificate;" />
-		<method name="getLocalPrincipal()Ljava/security/Principal;" />
-		<method name="getPacketBufferSize()I" />
-		<method name="getPeerCertificateChain()[Ljavax/security/cert/X509Certificate;" />
-		<method name="getPeerCertificates()[Ljava/security/cert/Certificate;" />
-		<method name="getPeerHost()Ljava/lang/String;" />
-		<method name="getPeerPort()I" />
-		<method name="getPeerPrincipal()Ljava/security/Principal;" />
-		<method name="getProtocol()Ljava/lang/String;" />
-		<method name="getSessionContext()Ljavax/net/ssl/SSLSessionContext;" />
-		<method name="getValue(Ljava/lang/String;)Ljava/lang/Object;" />
-		<method name="getValueNames()[Ljava/lang/String;" />
-		<method name="invalidate()V" />
-		<method name="isValid()Z" />
-		<method name="putValue(Ljava/lang/String;Ljava/lang/Object;)V" />
-		<method name="removeValue(Ljava/lang/String;)V" />
-	</class>
-	<class name="javax/net/ssl/SSLSessionBindingEvent" since="1">
-		<extends name="java/util/EventObject" />
-		<implements name="java/io/Serializable" />
-		<method name="&lt;init>(Ljavax/net/ssl/SSLSession;Ljava/lang/String;)V" />
-		<method name="getName()Ljava/lang/String;" />
-		<method name="getSession()Ljavax/net/ssl/SSLSession;" />
-	</class>
-	<class name="javax/net/ssl/SSLSessionBindingListener" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/util/EventListener" />
-		<method name="valueBound(Ljavax/net/ssl/SSLSessionBindingEvent;)V" />
-		<method name="valueUnbound(Ljavax/net/ssl/SSLSessionBindingEvent;)V" />
-	</class>
-	<class name="javax/net/ssl/SSLSessionContext" since="1">
-		<extends name="java/lang/Object" />
-		<method name="getIds()Ljava/util/Enumeration;" />
-		<method name="getSession([B)Ljavax/net/ssl/SSLSession;" />
-		<method name="getSessionCacheSize()I" />
-		<method name="getSessionTimeout()I" />
-		<method name="setSessionCacheSize(I)V" />
-		<method name="setSessionTimeout(I)V" />
-	</class>
-	<class name="javax/net/ssl/SSLSocket" since="1">
-		<extends name="java/net/Socket" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;I)V" />
-		<method name="&lt;init>(Ljava/lang/String;ILjava/net/InetAddress;I)V" />
-		<method name="&lt;init>(Ljava/net/InetAddress;I)V" />
-		<method name="&lt;init>(Ljava/net/InetAddress;ILjava/net/InetAddress;I)V" />
-		<method name="addHandshakeCompletedListener(Ljavax/net/ssl/HandshakeCompletedListener;)V" />
-		<method name="getEnableSessionCreation()Z" />
-		<method name="getEnabledCipherSuites()[Ljava/lang/String;" />
-		<method name="getEnabledProtocols()[Ljava/lang/String;" />
-		<method name="getNeedClientAuth()Z" />
-		<method name="getSSLParameters()Ljavax/net/ssl/SSLParameters;" since="9" />
-		<method name="getSession()Ljavax/net/ssl/SSLSession;" />
-		<method name="getSupportedCipherSuites()[Ljava/lang/String;" />
-		<method name="getSupportedProtocols()[Ljava/lang/String;" />
-		<method name="getUseClientMode()Z" />
-		<method name="getWantClientAuth()Z" />
-		<method name="removeHandshakeCompletedListener(Ljavax/net/ssl/HandshakeCompletedListener;)V" />
-		<method name="setEnableSessionCreation(Z)V" />
-		<method name="setEnabledCipherSuites([Ljava/lang/String;)V" />
-		<method name="setEnabledProtocols([Ljava/lang/String;)V" />
-		<method name="setNeedClientAuth(Z)V" />
-		<method name="setSSLParameters(Ljavax/net/ssl/SSLParameters;)V" since="9" />
-		<method name="setUseClientMode(Z)V" />
-		<method name="setWantClientAuth(Z)V" />
-		<method name="startHandshake()V" />
-	</class>
-	<class name="javax/net/ssl/SSLSocketFactory" since="1">
-		<extends name="javax/net/SocketFactory" />
-		<method name="&lt;init>()V" />
-		<method name="createSocket(Ljava/net/Socket;Ljava/lang/String;IZ)Ljava/net/Socket;" />
-		<method name="getDefaultCipherSuites()[Ljava/lang/String;" />
-		<method name="getSupportedCipherSuites()[Ljava/lang/String;" />
-	</class>
-	<class name="javax/net/ssl/TrustManager" since="1">
-		<extends name="java/lang/Object" />
-	</class>
-	<class name="javax/net/ssl/TrustManagerFactory" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljavax/net/ssl/TrustManagerFactorySpi;Ljava/security/Provider;Ljava/lang/String;)V" />
-		<method name="getAlgorithm()Ljava/lang/String;" />
-		<method name="getDefaultAlgorithm()Ljava/lang/String;" />
-		<method name="getInstance(Ljava/lang/String;)Ljavax/net/ssl/TrustManagerFactory;" />
-		<method name="getInstance(Ljava/lang/String;Ljava/lang/String;)Ljavax/net/ssl/TrustManagerFactory;" />
-		<method name="getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljavax/net/ssl/TrustManagerFactory;" />
-		<method name="getProvider()Ljava/security/Provider;" />
-		<method name="getTrustManagers()[Ljavax/net/ssl/TrustManager;" />
-		<method name="init(Ljava/security/KeyStore;)V" />
-		<method name="init(Ljavax/net/ssl/ManagerFactoryParameters;)V" />
-	</class>
-	<class name="javax/net/ssl/TrustManagerFactorySpi" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="engineGetTrustManagers()[Ljavax/net/ssl/TrustManager;" />
-		<method name="engineInit(Ljava/security/KeyStore;)V" />
-		<method name="engineInit(Ljavax/net/ssl/ManagerFactoryParameters;)V" />
-	</class>
-	<class name="javax/net/ssl/X509ExtendedKeyManager" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="javax/net/ssl/X509KeyManager" />
-		<method name="&lt;init>()V" />
-		<method name="chooseEngineClientAlias([Ljava/lang/String;[Ljava/security/Principal;Ljavax/net/ssl/SSLEngine;)Ljava/lang/String;" />
-		<method name="chooseEngineServerAlias(Ljava/lang/String;[Ljava/security/Principal;Ljavax/net/ssl/SSLEngine;)Ljava/lang/String;" />
-	</class>
-	<class name="javax/net/ssl/X509KeyManager" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="javax/net/ssl/KeyManager" />
-		<method name="chooseClientAlias([Ljava/lang/String;[Ljava/security/Principal;Ljava/net/Socket;)Ljava/lang/String;" />
-		<method name="chooseServerAlias(Ljava/lang/String;[Ljava/security/Principal;Ljava/net/Socket;)Ljava/lang/String;" />
-		<method name="getCertificateChain(Ljava/lang/String;)[Ljava/security/cert/X509Certificate;" />
-		<method name="getClientAliases(Ljava/lang/String;[Ljava/security/Principal;)[Ljava/lang/String;" />
-		<method name="getPrivateKey(Ljava/lang/String;)Ljava/security/PrivateKey;" />
-		<method name="getServerAliases(Ljava/lang/String;[Ljava/security/Principal;)[Ljava/lang/String;" />
-	</class>
-	<class name="javax/net/ssl/X509TrustManager" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="javax/net/ssl/TrustManager" />
-		<method name="checkClientTrusted([Ljava/security/cert/X509Certificate;Ljava/lang/String;)V" />
-		<method name="checkServerTrusted([Ljava/security/cert/X509Certificate;Ljava/lang/String;)V" />
-		<method name="getAcceptedIssuers()[Ljava/security/cert/X509Certificate;" />
-	</class>
-	<class name="javax/security/auth/AuthPermission" since="1">
-		<extends name="java/security/BasicPermission" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
-	</class>
-	<class name="javax/security/auth/DestroyFailedException" since="1">
-		<extends name="java/lang/Exception" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="javax/security/auth/Destroyable" since="1">
-		<extends name="java/lang/Object" />
-		<method name="destroy()V" />
-		<method name="isDestroyed()Z" />
-	</class>
-	<class name="javax/security/auth/PrivateCredentialPermission" since="1">
-		<extends name="java/security/Permission" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="getCredentialClass()Ljava/lang/String;" />
-		<method name="getPrincipals()[[Ljava/lang/String;" />
-	</class>
-	<class name="javax/security/auth/Subject" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(ZLjava/util/Set;Ljava/util/Set;Ljava/util/Set;)V" />
-		<method name="doAs(Ljavax/security/auth/Subject;Ljava/security/PrivilegedAction;)Ljava/lang/Object;" />
-		<method name="doAs(Ljavax/security/auth/Subject;Ljava/security/PrivilegedExceptionAction;)Ljava/lang/Object;" />
-		<method name="doAsPrivileged(Ljavax/security/auth/Subject;Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;)Ljava/lang/Object;" />
-		<method name="doAsPrivileged(Ljavax/security/auth/Subject;Ljava/security/PrivilegedExceptionAction;Ljava/security/AccessControlContext;)Ljava/lang/Object;" />
-		<method name="getPrincipals()Ljava/util/Set;" />
-		<method name="getPrincipals(Ljava/lang/Class;)Ljava/util/Set;" />
-		<method name="getPrivateCredentials()Ljava/util/Set;" />
-		<method name="getPrivateCredentials(Ljava/lang/Class;)Ljava/util/Set;" />
-		<method name="getPublicCredentials()Ljava/util/Set;" />
-		<method name="getPublicCredentials(Ljava/lang/Class;)Ljava/util/Set;" />
-		<method name="getSubject(Ljava/security/AccessControlContext;)Ljavax/security/auth/Subject;" />
-		<method name="isReadOnly()Z" />
-		<method name="setReadOnly()V" />
-	</class>
-	<class name="javax/security/auth/SubjectDomainCombiner" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/security/DomainCombiner" />
-		<method name="&lt;init>(Ljavax/security/auth/Subject;)V" />
-		<method name="getSubject()Ljavax/security/auth/Subject;" />
-	</class>
-	<class name="javax/security/auth/callback/Callback" since="1">
-		<extends name="java/lang/Object" />
-	</class>
-	<class name="javax/security/auth/callback/CallbackHandler" since="1">
-		<extends name="java/lang/Object" />
-		<method name="handle([Ljavax/security/auth/callback/Callback;)V" />
-	</class>
-	<class name="javax/security/auth/callback/PasswordCallback" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<implements name="javax/security/auth/callback/Callback" />
-		<method name="&lt;init>(Ljava/lang/String;Z)V" />
-		<method name="clearPassword()V" />
-		<method name="getPassword()[C" />
-		<method name="getPrompt()Ljava/lang/String;" />
-		<method name="isEchoOn()Z" />
-		<method name="setPassword([C)V" />
-	</class>
-	<class name="javax/security/auth/callback/UnsupportedCallbackException" since="1">
-		<extends name="java/lang/Exception" />
-		<method name="&lt;init>(Ljavax/security/auth/callback/Callback;)V" />
-		<method name="&lt;init>(Ljavax/security/auth/callback/Callback;Ljava/lang/String;)V" />
-		<method name="getCallback()Ljavax/security/auth/callback/Callback;" />
-	</class>
-	<class name="javax/security/auth/login/LoginException" since="1">
-		<extends name="java/security/GeneralSecurityException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="javax/security/auth/x500/X500Principal" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<implements name="java/security/Principal" />
-		<method name="&lt;init>(Ljava/io/InputStream;)V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/util/Map;)V" since="9" />
-		<method name="&lt;init>([B)V" />
-		<method name="getEncoded()[B" />
-		<method name="getName(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="getName(Ljava/lang/String;Ljava/util/Map;)Ljava/lang/String;" since="9" />
-		<field name="CANONICAL" />
-		<field name="RFC1779" />
-		<field name="RFC2253" />
-	</class>
-	<class name="javax/security/cert/Certificate" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getEncoded()[B" />
-		<method name="getPublicKey()Ljava/security/PublicKey;" />
-		<method name="verify(Ljava/security/PublicKey;)V" />
-		<method name="verify(Ljava/security/PublicKey;Ljava/lang/String;)V" />
-	</class>
-	<class name="javax/security/cert/CertificateEncodingException" since="1">
-		<extends name="javax/security/cert/CertificateException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="javax/security/cert/CertificateException" since="1">
-		<extends name="java/lang/Exception" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="javax/security/cert/CertificateExpiredException" since="1">
-		<extends name="javax/security/cert/CertificateException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="javax/security/cert/CertificateNotYetValidException" since="1">
-		<extends name="javax/security/cert/CertificateException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="javax/security/cert/CertificateParsingException" since="1">
-		<extends name="javax/security/cert/CertificateException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="javax/security/cert/X509Certificate" since="1">
-		<extends name="javax/security/cert/Certificate" />
-		<method name="&lt;init>()V" />
-		<method name="checkValidity()V" />
-		<method name="checkValidity(Ljava/util/Date;)V" />
-		<method name="getInstance(Ljava/io/InputStream;)Ljavax/security/cert/X509Certificate;" />
-		<method name="getInstance([B)Ljavax/security/cert/X509Certificate;" />
-		<method name="getIssuerDN()Ljava/security/Principal;" />
-		<method name="getNotAfter()Ljava/util/Date;" />
-		<method name="getNotBefore()Ljava/util/Date;" />
-		<method name="getSerialNumber()Ljava/math/BigInteger;" />
-		<method name="getSigAlgName()Ljava/lang/String;" />
-		<method name="getSigAlgOID()Ljava/lang/String;" />
-		<method name="getSigAlgParams()[B" />
-		<method name="getSubjectDN()Ljava/security/Principal;" />
-		<method name="getVersion()I" />
-	</class>
-	<class name="javax/sql/CommonDataSource" since="9">
-		<extends name="java/lang/Object" />
-		<method name="getLogWriter()Ljava/io/PrintWriter;" />
-		<method name="getLoginTimeout()I" />
-		<method name="setLogWriter(Ljava/io/PrintWriter;)V" />
-		<method name="setLoginTimeout(I)V" />
-	</class>
-	<class name="javax/sql/ConnectionEvent" since="1">
-		<extends name="java/util/EventObject" />
-		<implements name="java/io/Serializable" />
-		<method name="&lt;init>(Ljavax/sql/PooledConnection;)V" />
-		<method name="&lt;init>(Ljavax/sql/PooledConnection;Ljava/sql/SQLException;)V" />
-		<method name="getSQLException()Ljava/sql/SQLException;" />
-	</class>
-	<class name="javax/sql/ConnectionEventListener" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/util/EventListener" />
-		<method name="connectionClosed(Ljavax/sql/ConnectionEvent;)V" />
-		<method name="connectionErrorOccurred(Ljavax/sql/ConnectionEvent;)V" />
-	</class>
-	<class name="javax/sql/ConnectionPoolDataSource" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="javax/sql/CommonDataSource" since="9" />
-		<method name="getLogWriter()Ljava/io/PrintWriter;" />
-		<method name="getLoginTimeout()I" />
-		<method name="getPooledConnection()Ljavax/sql/PooledConnection;" />
-		<method name="getPooledConnection(Ljava/lang/String;Ljava/lang/String;)Ljavax/sql/PooledConnection;" />
-		<method name="setLogWriter(Ljava/io/PrintWriter;)V" />
-		<method name="setLoginTimeout(I)V" />
-	</class>
-	<class name="javax/sql/DataSource" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/sql/Wrapper" since="9" />
-		<implements name="javax/sql/CommonDataSource" since="9" />
-		<method name="getConnection()Ljava/sql/Connection;" />
-		<method name="getConnection(Ljava/lang/String;Ljava/lang/String;)Ljava/sql/Connection;" />
-		<method name="getLogWriter()Ljava/io/PrintWriter;" />
-		<method name="getLoginTimeout()I" />
-		<method name="setLogWriter(Ljava/io/PrintWriter;)V" />
-		<method name="setLoginTimeout(I)V" />
-	</class>
-	<class name="javax/sql/PooledConnection" since="1">
-		<extends name="java/lang/Object" />
-		<method name="addConnectionEventListener(Ljavax/sql/ConnectionEventListener;)V" />
-		<method name="addStatementEventListener(Ljavax/sql/StatementEventListener;)V" since="9" />
-		<method name="close()V" />
-		<method name="getConnection()Ljava/sql/Connection;" />
-		<method name="removeConnectionEventListener(Ljavax/sql/ConnectionEventListener;)V" />
-		<method name="removeStatementEventListener(Ljavax/sql/StatementEventListener;)V" since="9" />
-	</class>
-	<class name="javax/sql/RowSet" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/sql/ResultSet" />
-		<method name="addRowSetListener(Ljavax/sql/RowSetListener;)V" />
-		<method name="clearParameters()V" />
-		<method name="execute()V" />
-		<method name="getCommand()Ljava/lang/String;" />
-		<method name="getDataSourceName()Ljava/lang/String;" />
-		<method name="getEscapeProcessing()Z" />
-		<method name="getMaxFieldSize()I" />
-		<method name="getMaxRows()I" />
-		<method name="getPassword()Ljava/lang/String;" />
-		<method name="getQueryTimeout()I" />
-		<method name="getTransactionIsolation()I" />
-		<method name="getTypeMap()Ljava/util/Map;" />
-		<method name="getUrl()Ljava/lang/String;" />
-		<method name="getUsername()Ljava/lang/String;" />
-		<method name="isReadOnly()Z" />
-		<method name="removeRowSetListener(Ljavax/sql/RowSetListener;)V" />
-		<method name="setArray(ILjava/sql/Array;)V" />
-		<method name="setAsciiStream(ILjava/io/InputStream;)V" since="9" />
-		<method name="setAsciiStream(ILjava/io/InputStream;I)V" />
-		<method name="setAsciiStream(Ljava/lang/String;Ljava/io/InputStream;)V" since="9" />
-		<method name="setAsciiStream(Ljava/lang/String;Ljava/io/InputStream;I)V" since="9" />
-		<method name="setBigDecimal(ILjava/math/BigDecimal;)V" />
-		<method name="setBigDecimal(Ljava/lang/String;Ljava/math/BigDecimal;)V" since="9" />
-		<method name="setBinaryStream(ILjava/io/InputStream;)V" since="9" />
-		<method name="setBinaryStream(ILjava/io/InputStream;I)V" />
-		<method name="setBinaryStream(Ljava/lang/String;Ljava/io/InputStream;)V" since="9" />
-		<method name="setBinaryStream(Ljava/lang/String;Ljava/io/InputStream;I)V" since="9" />
-		<method name="setBlob(ILjava/io/InputStream;)V" since="9" />
-		<method name="setBlob(ILjava/io/InputStream;J)V" since="9" />
-		<method name="setBlob(ILjava/sql/Blob;)V" />
-		<method name="setBlob(Ljava/lang/String;Ljava/io/InputStream;)V" since="9" />
-		<method name="setBlob(Ljava/lang/String;Ljava/io/InputStream;J)V" since="9" />
-		<method name="setBlob(Ljava/lang/String;Ljava/sql/Blob;)V" since="9" />
-		<method name="setBoolean(IZ)V" />
-		<method name="setBoolean(Ljava/lang/String;Z)V" since="9" />
-		<method name="setByte(IB)V" />
-		<method name="setByte(Ljava/lang/String;B)V" since="9" />
-		<method name="setBytes(I[B)V" />
-		<method name="setBytes(Ljava/lang/String;[B)V" since="9" />
-		<method name="setCharacterStream(ILjava/io/Reader;)V" since="9" />
-		<method name="setCharacterStream(ILjava/io/Reader;I)V" />
-		<method name="setCharacterStream(Ljava/lang/String;Ljava/io/Reader;)V" since="9" />
-		<method name="setCharacterStream(Ljava/lang/String;Ljava/io/Reader;I)V" since="9" />
-		<method name="setClob(ILjava/io/Reader;)V" since="9" />
-		<method name="setClob(ILjava/io/Reader;J)V" since="9" />
-		<method name="setClob(ILjava/sql/Clob;)V" />
-		<method name="setClob(Ljava/lang/String;Ljava/io/Reader;)V" since="9" />
-		<method name="setClob(Ljava/lang/String;Ljava/io/Reader;J)V" since="9" />
-		<method name="setClob(Ljava/lang/String;Ljava/sql/Clob;)V" since="9" />
-		<method name="setCommand(Ljava/lang/String;)V" />
-		<method name="setConcurrency(I)V" />
-		<method name="setDataSourceName(Ljava/lang/String;)V" />
-		<method name="setDate(ILjava/sql/Date;)V" />
-		<method name="setDate(ILjava/sql/Date;Ljava/util/Calendar;)V" />
-		<method name="setDate(Ljava/lang/String;Ljava/sql/Date;)V" since="9" />
-		<method name="setDate(Ljava/lang/String;Ljava/sql/Date;Ljava/util/Calendar;)V" since="9" />
-		<method name="setDouble(ID)V" />
-		<method name="setDouble(Ljava/lang/String;D)V" since="9" />
-		<method name="setEscapeProcessing(Z)V" />
-		<method name="setFloat(IF)V" />
-		<method name="setFloat(Ljava/lang/String;F)V" since="9" />
-		<method name="setInt(II)V" />
-		<method name="setInt(Ljava/lang/String;I)V" since="9" />
-		<method name="setLong(IJ)V" />
-		<method name="setLong(Ljava/lang/String;J)V" since="9" />
-		<method name="setMaxFieldSize(I)V" />
-		<method name="setMaxRows(I)V" />
-		<method name="setNCharacterStream(ILjava/io/Reader;)V" since="9" />
-		<method name="setNCharacterStream(ILjava/io/Reader;J)V" since="9" />
-		<method name="setNCharacterStream(Ljava/lang/String;Ljava/io/Reader;)V" since="9" />
-		<method name="setNCharacterStream(Ljava/lang/String;Ljava/io/Reader;J)V" since="9" />
-		<method name="setNClob(ILjava/io/Reader;)V" since="9" />
-		<method name="setNClob(ILjava/io/Reader;J)V" since="9" />
-		<method name="setNClob(ILjava/sql/NClob;)V" since="9" />
-		<method name="setNClob(Ljava/lang/String;Ljava/io/Reader;)V" since="9" />
-		<method name="setNClob(Ljava/lang/String;Ljava/io/Reader;J)V" since="9" />
-		<method name="setNClob(Ljava/lang/String;Ljava/sql/NClob;)V" since="9" />
-		<method name="setNString(ILjava/lang/String;)V" since="9" />
-		<method name="setNString(Ljava/lang/String;Ljava/lang/String;)V" since="9" />
-		<method name="setNull(II)V" />
-		<method name="setNull(IILjava/lang/String;)V" />
-		<method name="setNull(Ljava/lang/String;I)V" since="9" />
-		<method name="setNull(Ljava/lang/String;ILjava/lang/String;)V" since="9" />
-		<method name="setObject(ILjava/lang/Object;)V" />
-		<method name="setObject(ILjava/lang/Object;I)V" />
-		<method name="setObject(ILjava/lang/Object;II)V" />
-		<method name="setObject(Ljava/lang/String;Ljava/lang/Object;)V" since="9" />
-		<method name="setObject(Ljava/lang/String;Ljava/lang/Object;I)V" since="9" />
-		<method name="setObject(Ljava/lang/String;Ljava/lang/Object;II)V" since="9" />
-		<method name="setPassword(Ljava/lang/String;)V" />
-		<method name="setQueryTimeout(I)V" />
-		<method name="setReadOnly(Z)V" />
-		<method name="setRef(ILjava/sql/Ref;)V" />
-		<method name="setRowId(ILjava/sql/RowId;)V" since="9" />
-		<method name="setRowId(Ljava/lang/String;Ljava/sql/RowId;)V" since="9" />
-		<method name="setSQLXML(ILjava/sql/SQLXML;)V" since="9" />
-		<method name="setSQLXML(Ljava/lang/String;Ljava/sql/SQLXML;)V" since="9" />
-		<method name="setShort(IS)V" />
-		<method name="setShort(Ljava/lang/String;S)V" since="9" />
-		<method name="setString(ILjava/lang/String;)V" />
-		<method name="setString(Ljava/lang/String;Ljava/lang/String;)V" since="9" />
-		<method name="setTime(ILjava/sql/Time;)V" />
-		<method name="setTime(ILjava/sql/Time;Ljava/util/Calendar;)V" />
-		<method name="setTime(Ljava/lang/String;Ljava/sql/Time;)V" since="9" />
-		<method name="setTime(Ljava/lang/String;Ljava/sql/Time;Ljava/util/Calendar;)V" since="9" />
-		<method name="setTimestamp(ILjava/sql/Timestamp;)V" />
-		<method name="setTimestamp(ILjava/sql/Timestamp;Ljava/util/Calendar;)V" />
-		<method name="setTimestamp(Ljava/lang/String;Ljava/sql/Timestamp;)V" since="9" />
-		<method name="setTimestamp(Ljava/lang/String;Ljava/sql/Timestamp;Ljava/util/Calendar;)V" since="9" />
-		<method name="setTransactionIsolation(I)V" />
-		<method name="setType(I)V" />
-		<method name="setTypeMap(Ljava/util/Map;)V" />
-		<method name="setURL(ILjava/net/URL;)V" since="9" />
-		<method name="setUrl(Ljava/lang/String;)V" />
-		<method name="setUsername(Ljava/lang/String;)V" />
-	</class>
-	<class name="javax/sql/RowSetEvent" since="1">
-		<extends name="java/util/EventObject" />
-		<implements name="java/io/Serializable" />
-		<method name="&lt;init>(Ljavax/sql/RowSet;)V" />
-	</class>
-	<class name="javax/sql/RowSetInternal" since="1">
-		<extends name="java/lang/Object" />
-		<method name="getConnection()Ljava/sql/Connection;" />
-		<method name="getOriginal()Ljava/sql/ResultSet;" />
-		<method name="getOriginalRow()Ljava/sql/ResultSet;" />
-		<method name="getParams()[Ljava/lang/Object;" />
-		<method name="setMetaData(Ljavax/sql/RowSetMetaData;)V" />
-	</class>
-	<class name="javax/sql/RowSetListener" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/util/EventListener" />
-		<method name="cursorMoved(Ljavax/sql/RowSetEvent;)V" />
-		<method name="rowChanged(Ljavax/sql/RowSetEvent;)V" />
-		<method name="rowSetChanged(Ljavax/sql/RowSetEvent;)V" />
-	</class>
-	<class name="javax/sql/RowSetMetaData" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/sql/ResultSetMetaData" />
-		<method name="setAutoIncrement(IZ)V" />
-		<method name="setCaseSensitive(IZ)V" />
-		<method name="setCatalogName(ILjava/lang/String;)V" />
-		<method name="setColumnCount(I)V" />
-		<method name="setColumnDisplaySize(II)V" />
-		<method name="setColumnLabel(ILjava/lang/String;)V" />
-		<method name="setColumnName(ILjava/lang/String;)V" />
-		<method name="setColumnType(II)V" />
-		<method name="setColumnTypeName(ILjava/lang/String;)V" />
-		<method name="setCurrency(IZ)V" />
-		<method name="setNullable(II)V" />
-		<method name="setPrecision(II)V" />
-		<method name="setScale(II)V" />
-		<method name="setSchemaName(ILjava/lang/String;)V" />
-		<method name="setSearchable(IZ)V" />
-		<method name="setSigned(IZ)V" />
-		<method name="setTableName(ILjava/lang/String;)V" />
-	</class>
-	<class name="javax/sql/RowSetReader" since="1">
-		<extends name="java/lang/Object" />
-		<method name="readData(Ljavax/sql/RowSetInternal;)V" />
-	</class>
-	<class name="javax/sql/RowSetWriter" since="1">
-		<extends name="java/lang/Object" />
-		<method name="writeData(Ljavax/sql/RowSetInternal;)Z" />
-	</class>
-	<class name="javax/sql/StatementEvent" since="9">
-		<extends name="java/util/EventObject" />
-		<method name="&lt;init>(Ljavax/sql/PooledConnection;Ljava/sql/PreparedStatement;)V" />
-		<method name="&lt;init>(Ljavax/sql/PooledConnection;Ljava/sql/PreparedStatement;Ljava/sql/SQLException;)V" />
-		<method name="getSQLException()Ljava/sql/SQLException;" />
-		<method name="getStatement()Ljava/sql/PreparedStatement;" />
-	</class>
-	<class name="javax/sql/StatementEventListener" since="9">
-		<extends name="java/lang/Object" />
-		<implements name="java/util/EventListener" />
-		<method name="statementClosed(Ljavax/sql/StatementEvent;)V" />
-		<method name="statementErrorOccurred(Ljavax/sql/StatementEvent;)V" />
-	</class>
-	<class name="javax/xml/XMLConstants" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="DEFAULT_NS_PREFIX" />
-		<field name="FEATURE_SECURE_PROCESSING" />
-		<field name="NULL_NS_URI" />
-		<field name="RELAXNG_NS_URI" />
-		<field name="W3C_XML_SCHEMA_INSTANCE_NS_URI" />
-		<field name="W3C_XML_SCHEMA_NS_URI" />
-		<field name="W3C_XPATH_DATATYPE_NS_URI" />
-		<field name="XMLNS_ATTRIBUTE" />
-		<field name="XMLNS_ATTRIBUTE_NS_URI" />
-		<field name="XML_DTD_NS_URI" />
-		<field name="XML_NS_PREFIX" />
-		<field name="XML_NS_URI" />
-	</class>
-	<class name="javax/xml/datatype/DatatypeConfigurationException" since="8">
-		<extends name="java/lang/Exception" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="javax/xml/datatype/DatatypeConstants" since="8">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="APRIL" />
-		<field name="AUGUST" />
-		<field name="DATE" />
-		<field name="DATETIME" />
-		<field name="DAYS" />
-		<field name="DECEMBER" />
-		<field name="DURATION" />
-		<field name="DURATION_DAYTIME" />
-		<field name="DURATION_YEARMONTH" />
-		<field name="EQUAL" />
-		<field name="FEBRUARY" />
-		<field name="FIELD_UNDEFINED" />
-		<field name="GDAY" />
-		<field name="GMONTH" />
-		<field name="GMONTHDAY" />
-		<field name="GREATER" />
-		<field name="GYEAR" />
-		<field name="GYEARMONTH" />
-		<field name="HOURS" />
-		<field name="INDETERMINATE" />
-		<field name="JANUARY" />
-		<field name="JULY" />
-		<field name="JUNE" />
-		<field name="LESSER" />
-		<field name="MARCH" />
-		<field name="MAX_TIMEZONE_OFFSET" />
-		<field name="MAY" />
-		<field name="MINUTES" />
-		<field name="MIN_TIMEZONE_OFFSET" />
-		<field name="MONTHS" />
-		<field name="NOVEMBER" />
-		<field name="OCTOBER" />
-		<field name="SECONDS" />
-		<field name="SEPTEMBER" />
-		<field name="TIME" />
-		<field name="YEARS" />
-	</class>
-	<class name="javax/xml/datatype/DatatypeConstants$Field" since="8">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getId()I" />
-	</class>
-	<class name="javax/xml/datatype/DatatypeFactory" since="8">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="newDuration(J)Ljavax/xml/datatype/Duration;" />
-		<method name="newDuration(Ljava/lang/String;)Ljavax/xml/datatype/Duration;" />
-		<method name="newDuration(ZIIIIII)Ljavax/xml/datatype/Duration;" />
-		<method name="newDuration(ZLjava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigDecimal;)Ljavax/xml/datatype/Duration;" />
-		<method name="newDurationDayTime(J)Ljavax/xml/datatype/Duration;" />
-		<method name="newDurationDayTime(Ljava/lang/String;)Ljavax/xml/datatype/Duration;" />
-		<method name="newDurationDayTime(ZIIII)Ljavax/xml/datatype/Duration;" />
-		<method name="newDurationDayTime(ZLjava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;)Ljavax/xml/datatype/Duration;" />
-		<method name="newDurationYearMonth(J)Ljavax/xml/datatype/Duration;" />
-		<method name="newDurationYearMonth(Ljava/lang/String;)Ljavax/xml/datatype/Duration;" />
-		<method name="newDurationYearMonth(ZII)Ljavax/xml/datatype/Duration;" />
-		<method name="newDurationYearMonth(ZLjava/math/BigInteger;Ljava/math/BigInteger;)Ljavax/xml/datatype/Duration;" />
-		<method name="newInstance()Ljavax/xml/datatype/DatatypeFactory;" />
-		<method name="newInstance(Ljava/lang/String;Ljava/lang/ClassLoader;)Ljavax/xml/datatype/DatatypeFactory;" since="9" />
-		<method name="newXMLGregorianCalendar()Ljavax/xml/datatype/XMLGregorianCalendar;" />
-		<method name="newXMLGregorianCalendar(IIIIIIII)Ljavax/xml/datatype/XMLGregorianCalendar;" />
-		<method name="newXMLGregorianCalendar(Ljava/lang/String;)Ljavax/xml/datatype/XMLGregorianCalendar;" />
-		<method name="newXMLGregorianCalendar(Ljava/math/BigInteger;IIIIILjava/math/BigDecimal;I)Ljavax/xml/datatype/XMLGregorianCalendar;" />
-		<method name="newXMLGregorianCalendar(Ljava/util/GregorianCalendar;)Ljavax/xml/datatype/XMLGregorianCalendar;" />
-		<method name="newXMLGregorianCalendarDate(IIII)Ljavax/xml/datatype/XMLGregorianCalendar;" />
-		<method name="newXMLGregorianCalendarTime(IIII)Ljavax/xml/datatype/XMLGregorianCalendar;" />
-		<method name="newXMLGregorianCalendarTime(IIIII)Ljavax/xml/datatype/XMLGregorianCalendar;" />
-		<method name="newXMLGregorianCalendarTime(IIILjava/math/BigDecimal;I)Ljavax/xml/datatype/XMLGregorianCalendar;" />
-		<field name="DATATYPEFACTORY_IMPLEMENTATION_CLASS" />
-		<field name="DATATYPEFACTORY_PROPERTY" />
-	</class>
-	<class name="javax/xml/datatype/Duration" since="8">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="add(Ljavax/xml/datatype/Duration;)Ljavax/xml/datatype/Duration;" />
-		<method name="addTo(Ljava/util/Calendar;)V" />
-		<method name="addTo(Ljava/util/Date;)V" />
-		<method name="compare(Ljavax/xml/datatype/Duration;)I" />
-		<method name="getDays()I" />
-		<method name="getField(Ljavax/xml/datatype/DatatypeConstants$Field;)Ljava/lang/Number;" />
-		<method name="getHours()I" />
-		<method name="getMinutes()I" />
-		<method name="getMonths()I" />
-		<method name="getSeconds()I" />
-		<method name="getSign()I" />
-		<method name="getTimeInMillis(Ljava/util/Calendar;)J" />
-		<method name="getTimeInMillis(Ljava/util/Date;)J" />
-		<method name="getXMLSchemaType()Ljavax/xml/namespace/QName;" />
-		<method name="getYears()I" />
-		<method name="isLongerThan(Ljavax/xml/datatype/Duration;)Z" />
-		<method name="isSet(Ljavax/xml/datatype/DatatypeConstants$Field;)Z" />
-		<method name="isShorterThan(Ljavax/xml/datatype/Duration;)Z" />
-		<method name="multiply(I)Ljavax/xml/datatype/Duration;" />
-		<method name="multiply(Ljava/math/BigDecimal;)Ljavax/xml/datatype/Duration;" />
-		<method name="negate()Ljavax/xml/datatype/Duration;" />
-		<method name="normalizeWith(Ljava/util/Calendar;)Ljavax/xml/datatype/Duration;" />
-		<method name="subtract(Ljavax/xml/datatype/Duration;)Ljavax/xml/datatype/Duration;" />
-	</class>
-	<class name="javax/xml/datatype/XMLGregorianCalendar" since="8">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/Cloneable" />
-		<method name="&lt;init>()V" />
-		<method name="add(Ljavax/xml/datatype/Duration;)V" />
-		<method name="clear()V" />
-		<method name="compare(Ljavax/xml/datatype/XMLGregorianCalendar;)I" />
-		<method name="getDay()I" />
-		<method name="getEon()Ljava/math/BigInteger;" />
-		<method name="getEonAndYear()Ljava/math/BigInteger;" />
-		<method name="getFractionalSecond()Ljava/math/BigDecimal;" />
-		<method name="getHour()I" />
-		<method name="getMillisecond()I" />
-		<method name="getMinute()I" />
-		<method name="getMonth()I" />
-		<method name="getSecond()I" />
-		<method name="getTimeZone(I)Ljava/util/TimeZone;" />
-		<method name="getTimezone()I" />
-		<method name="getXMLSchemaType()Ljavax/xml/namespace/QName;" />
-		<method name="getYear()I" />
-		<method name="isValid()Z" />
-		<method name="normalize()Ljavax/xml/datatype/XMLGregorianCalendar;" />
-		<method name="reset()V" />
-		<method name="setDay(I)V" />
-		<method name="setFractionalSecond(Ljava/math/BigDecimal;)V" />
-		<method name="setHour(I)V" />
-		<method name="setMillisecond(I)V" />
-		<method name="setMinute(I)V" />
-		<method name="setMonth(I)V" />
-		<method name="setSecond(I)V" />
-		<method name="setTime(III)V" />
-		<method name="setTime(IIII)V" />
-		<method name="setTime(IIILjava/math/BigDecimal;)V" />
-		<method name="setTimezone(I)V" />
-		<method name="setYear(I)V" />
-		<method name="setYear(Ljava/math/BigInteger;)V" />
-		<method name="toGregorianCalendar()Ljava/util/GregorianCalendar;" />
-		<method name="toGregorianCalendar(Ljava/util/TimeZone;Ljava/util/Locale;Ljavax/xml/datatype/XMLGregorianCalendar;)Ljava/util/GregorianCalendar;" />
-		<method name="toXMLFormat()Ljava/lang/String;" />
-	</class>
-	<class name="javax/xml/namespace/NamespaceContext" since="8">
-		<extends name="java/lang/Object" />
-		<method name="getNamespaceURI(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="getPrefix(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="getPrefixes(Ljava/lang/String;)Ljava/util/Iterator;" />
-	</class>
-	<class name="javax/xml/namespace/QName" since="8">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="getLocalPart()Ljava/lang/String;" />
-		<method name="getNamespaceURI()Ljava/lang/String;" />
-		<method name="getPrefix()Ljava/lang/String;" />
-		<method name="valueOf(Ljava/lang/String;)Ljavax/xml/namespace/QName;" />
-	</class>
-	<class name="javax/xml/parsers/DocumentBuilder" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getDOMImplementation()Lorg/w3c/dom/DOMImplementation;" />
-		<method name="getSchema()Ljavax/xml/validation/Schema;" since="8" />
-		<method name="isNamespaceAware()Z" />
-		<method name="isValidating()Z" />
-		<method name="isXIncludeAware()Z" />
-		<method name="newDocument()Lorg/w3c/dom/Document;" />
-		<method name="parse(Ljava/io/File;)Lorg/w3c/dom/Document;" />
-		<method name="parse(Ljava/io/InputStream;)Lorg/w3c/dom/Document;" />
-		<method name="parse(Ljava/io/InputStream;Ljava/lang/String;)Lorg/w3c/dom/Document;" />
-		<method name="parse(Ljava/lang/String;)Lorg/w3c/dom/Document;" />
-		<method name="parse(Lorg/xml/sax/InputSource;)Lorg/w3c/dom/Document;" />
-		<method name="reset()V" />
-		<method name="setEntityResolver(Lorg/xml/sax/EntityResolver;)V" />
-		<method name="setErrorHandler(Lorg/xml/sax/ErrorHandler;)V" />
-	</class>
-	<class name="javax/xml/parsers/DocumentBuilderFactory" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getAttribute(Ljava/lang/String;)Ljava/lang/Object;" />
-		<method name="getFeature(Ljava/lang/String;)Z" />
-		<method name="getSchema()Ljavax/xml/validation/Schema;" since="8" />
-		<method name="isCoalescing()Z" />
-		<method name="isExpandEntityReferences()Z" />
-		<method name="isIgnoringComments()Z" />
-		<method name="isIgnoringElementContentWhitespace()Z" />
-		<method name="isNamespaceAware()Z" />
-		<method name="isValidating()Z" />
-		<method name="isXIncludeAware()Z" />
-		<method name="newDocumentBuilder()Ljavax/xml/parsers/DocumentBuilder;" />
-		<method name="newInstance()Ljavax/xml/parsers/DocumentBuilderFactory;" />
-		<method name="newInstance(Ljava/lang/String;Ljava/lang/ClassLoader;)Ljavax/xml/parsers/DocumentBuilderFactory;" since="9" />
-		<method name="setAttribute(Ljava/lang/String;Ljava/lang/Object;)V" />
-		<method name="setCoalescing(Z)V" />
-		<method name="setExpandEntityReferences(Z)V" />
-		<method name="setFeature(Ljava/lang/String;Z)V" />
-		<method name="setIgnoringComments(Z)V" />
-		<method name="setIgnoringElementContentWhitespace(Z)V" />
-		<method name="setNamespaceAware(Z)V" />
-		<method name="setSchema(Ljavax/xml/validation/Schema;)V" since="8" />
-		<method name="setValidating(Z)V" />
-		<method name="setXIncludeAware(Z)V" />
-	</class>
-	<class name="javax/xml/parsers/FactoryConfigurationError" since="1">
-		<extends name="java/lang/Error" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/Exception;)V" />
-		<method name="&lt;init>(Ljava/lang/Exception;Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="getException()Ljava/lang/Exception;" />
-	</class>
-	<class name="javax/xml/parsers/ParserConfigurationException" since="1">
-		<extends name="java/lang/Exception" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="javax/xml/parsers/SAXParser" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getParser()Lorg/xml/sax/Parser;" />
-		<method name="getProperty(Ljava/lang/String;)Ljava/lang/Object;" />
-		<method name="getSchema()Ljavax/xml/validation/Schema;" since="8" />
-		<method name="getXMLReader()Lorg/xml/sax/XMLReader;" />
-		<method name="isNamespaceAware()Z" />
-		<method name="isValidating()Z" />
-		<method name="isXIncludeAware()Z" />
-		<method name="parse(Ljava/io/File;Lorg/xml/sax/HandlerBase;)V" />
-		<method name="parse(Ljava/io/File;Lorg/xml/sax/helpers/DefaultHandler;)V" />
-		<method name="parse(Ljava/io/InputStream;Lorg/xml/sax/HandlerBase;)V" />
-		<method name="parse(Ljava/io/InputStream;Lorg/xml/sax/HandlerBase;Ljava/lang/String;)V" />
-		<method name="parse(Ljava/io/InputStream;Lorg/xml/sax/helpers/DefaultHandler;)V" />
-		<method name="parse(Ljava/io/InputStream;Lorg/xml/sax/helpers/DefaultHandler;Ljava/lang/String;)V" />
-		<method name="parse(Ljava/lang/String;Lorg/xml/sax/HandlerBase;)V" />
-		<method name="parse(Ljava/lang/String;Lorg/xml/sax/helpers/DefaultHandler;)V" />
-		<method name="parse(Lorg/xml/sax/InputSource;Lorg/xml/sax/HandlerBase;)V" />
-		<method name="parse(Lorg/xml/sax/InputSource;Lorg/xml/sax/helpers/DefaultHandler;)V" />
-		<method name="reset()V" />
-		<method name="setProperty(Ljava/lang/String;Ljava/lang/Object;)V" />
-	</class>
-	<class name="javax/xml/parsers/SAXParserFactory" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getFeature(Ljava/lang/String;)Z" />
-		<method name="getSchema()Ljavax/xml/validation/Schema;" since="8" />
-		<method name="isNamespaceAware()Z" />
-		<method name="isValidating()Z" />
-		<method name="isXIncludeAware()Z" />
-		<method name="newInstance()Ljavax/xml/parsers/SAXParserFactory;" />
-		<method name="newInstance(Ljava/lang/String;Ljava/lang/ClassLoader;)Ljavax/xml/parsers/SAXParserFactory;" since="9" />
-		<method name="newSAXParser()Ljavax/xml/parsers/SAXParser;" />
-		<method name="setFeature(Ljava/lang/String;Z)V" />
-		<method name="setNamespaceAware(Z)V" />
-		<method name="setSchema(Ljavax/xml/validation/Schema;)V" since="8" />
-		<method name="setValidating(Z)V" />
-		<method name="setXIncludeAware(Z)V" />
-	</class>
-	<class name="javax/xml/transform/ErrorListener" since="8">
-		<extends name="java/lang/Object" />
-		<method name="error(Ljavax/xml/transform/TransformerException;)V" />
-		<method name="fatalError(Ljavax/xml/transform/TransformerException;)V" />
-		<method name="warning(Ljavax/xml/transform/TransformerException;)V" />
-	</class>
-	<class name="javax/xml/transform/OutputKeys" since="8">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="CDATA_SECTION_ELEMENTS" />
-		<field name="DOCTYPE_PUBLIC" />
-		<field name="DOCTYPE_SYSTEM" />
-		<field name="ENCODING" />
-		<field name="INDENT" />
-		<field name="MEDIA_TYPE" />
-		<field name="METHOD" />
-		<field name="OMIT_XML_DECLARATION" />
-		<field name="STANDALONE" />
-		<field name="VERSION" />
-	</class>
-	<class name="javax/xml/transform/Result" since="8">
-		<extends name="java/lang/Object" />
-		<method name="getSystemId()Ljava/lang/String;" />
-		<method name="setSystemId(Ljava/lang/String;)V" />
-		<field name="PI_DISABLE_OUTPUT_ESCAPING" />
-		<field name="PI_ENABLE_OUTPUT_ESCAPING" />
-	</class>
-	<class name="javax/xml/transform/Source" since="8">
-		<extends name="java/lang/Object" />
-		<method name="getSystemId()Ljava/lang/String;" />
-		<method name="setSystemId(Ljava/lang/String;)V" />
-	</class>
-	<class name="javax/xml/transform/SourceLocator" since="8">
-		<extends name="java/lang/Object" />
-		<method name="getColumnNumber()I" />
-		<method name="getLineNumber()I" />
-		<method name="getPublicId()Ljava/lang/String;" />
-		<method name="getSystemId()Ljava/lang/String;" />
-	</class>
-	<class name="javax/xml/transform/Templates" since="8">
-		<extends name="java/lang/Object" />
-		<method name="getOutputProperties()Ljava/util/Properties;" />
-		<method name="newTransformer()Ljavax/xml/transform/Transformer;" />
-	</class>
-	<class name="javax/xml/transform/Transformer" since="8">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="clearParameters()V" />
-		<method name="getErrorListener()Ljavax/xml/transform/ErrorListener;" />
-		<method name="getOutputProperties()Ljava/util/Properties;" />
-		<method name="getOutputProperty(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="getParameter(Ljava/lang/String;)Ljava/lang/Object;" />
-		<method name="getURIResolver()Ljavax/xml/transform/URIResolver;" />
-		<method name="reset()V" />
-		<method name="setErrorListener(Ljavax/xml/transform/ErrorListener;)V" />
-		<method name="setOutputProperties(Ljava/util/Properties;)V" />
-		<method name="setOutputProperty(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="setParameter(Ljava/lang/String;Ljava/lang/Object;)V" />
-		<method name="setURIResolver(Ljavax/xml/transform/URIResolver;)V" />
-		<method name="transform(Ljavax/xml/transform/Source;Ljavax/xml/transform/Result;)V" />
-	</class>
-	<class name="javax/xml/transform/TransformerConfigurationException" since="8">
-		<extends name="javax/xml/transform/TransformerException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljavax/xml/transform/SourceLocator;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljavax/xml/transform/SourceLocator;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="javax/xml/transform/TransformerException" since="8">
-		<extends name="java/lang/Exception" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljavax/xml/transform/SourceLocator;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljavax/xml/transform/SourceLocator;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
-		<method name="getException()Ljava/lang/Throwable;" />
-		<method name="getLocationAsString()Ljava/lang/String;" />
-		<method name="getLocator()Ljavax/xml/transform/SourceLocator;" />
-		<method name="getMessageAndLocation()Ljava/lang/String;" />
-		<method name="setLocator(Ljavax/xml/transform/SourceLocator;)V" />
-	</class>
-	<class name="javax/xml/transform/TransformerFactory" since="8">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getAssociatedStylesheet(Ljavax/xml/transform/Source;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljavax/xml/transform/Source;" />
-		<method name="getAttribute(Ljava/lang/String;)Ljava/lang/Object;" />
-		<method name="getErrorListener()Ljavax/xml/transform/ErrorListener;" />
-		<method name="getFeature(Ljava/lang/String;)Z" />
-		<method name="getURIResolver()Ljavax/xml/transform/URIResolver;" />
-		<method name="newInstance()Ljavax/xml/transform/TransformerFactory;" />
-		<method name="newInstance(Ljava/lang/String;Ljava/lang/ClassLoader;)Ljavax/xml/transform/TransformerFactory;" since="9" />
-		<method name="newTemplates(Ljavax/xml/transform/Source;)Ljavax/xml/transform/Templates;" />
-		<method name="newTransformer()Ljavax/xml/transform/Transformer;" />
-		<method name="newTransformer(Ljavax/xml/transform/Source;)Ljavax/xml/transform/Transformer;" />
-		<method name="setAttribute(Ljava/lang/String;Ljava/lang/Object;)V" />
-		<method name="setErrorListener(Ljavax/xml/transform/ErrorListener;)V" />
-		<method name="setFeature(Ljava/lang/String;Z)V" />
-		<method name="setURIResolver(Ljavax/xml/transform/URIResolver;)V" />
-	</class>
-	<class name="javax/xml/transform/TransformerFactoryConfigurationError" since="8">
-		<extends name="java/lang/Error" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/Exception;)V" />
-		<method name="&lt;init>(Ljava/lang/Exception;Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="getException()Ljava/lang/Exception;" />
-	</class>
-	<class name="javax/xml/transform/URIResolver" since="8">
-		<extends name="java/lang/Object" />
-		<method name="resolve(Ljava/lang/String;Ljava/lang/String;)Ljavax/xml/transform/Source;" />
-	</class>
-	<class name="javax/xml/transform/dom/DOMLocator" since="8">
-		<extends name="java/lang/Object" />
-		<implements name="javax/xml/transform/SourceLocator" />
-		<method name="getOriginatingNode()Lorg/w3c/dom/Node;" />
-	</class>
-	<class name="javax/xml/transform/dom/DOMResult" since="8">
-		<extends name="java/lang/Object" />
-		<implements name="javax/xml/transform/Result" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Lorg/w3c/dom/Node;)V" />
-		<method name="&lt;init>(Lorg/w3c/dom/Node;Ljava/lang/String;)V" />
-		<method name="&lt;init>(Lorg/w3c/dom/Node;Lorg/w3c/dom/Node;)V" />
-		<method name="&lt;init>(Lorg/w3c/dom/Node;Lorg/w3c/dom/Node;Ljava/lang/String;)V" />
-		<method name="getNextSibling()Lorg/w3c/dom/Node;" />
-		<method name="getNode()Lorg/w3c/dom/Node;" />
-		<method name="setNextSibling(Lorg/w3c/dom/Node;)V" />
-		<method name="setNode(Lorg/w3c/dom/Node;)V" />
-		<field name="FEATURE" />
-	</class>
-	<class name="javax/xml/transform/dom/DOMSource" since="8">
-		<extends name="java/lang/Object" />
-		<implements name="javax/xml/transform/Source" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Lorg/w3c/dom/Node;)V" />
-		<method name="&lt;init>(Lorg/w3c/dom/Node;Ljava/lang/String;)V" />
-		<method name="getNode()Lorg/w3c/dom/Node;" />
-		<method name="setNode(Lorg/w3c/dom/Node;)V" />
-		<field name="FEATURE" />
-	</class>
-	<class name="javax/xml/transform/sax/SAXResult" since="8">
-		<extends name="java/lang/Object" />
-		<implements name="javax/xml/transform/Result" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Lorg/xml/sax/ContentHandler;)V" />
-		<method name="getHandler()Lorg/xml/sax/ContentHandler;" />
-		<method name="getLexicalHandler()Lorg/xml/sax/ext/LexicalHandler;" />
-		<method name="setHandler(Lorg/xml/sax/ContentHandler;)V" />
-		<method name="setLexicalHandler(Lorg/xml/sax/ext/LexicalHandler;)V" />
-		<field name="FEATURE" />
-	</class>
-	<class name="javax/xml/transform/sax/SAXSource" since="8">
-		<extends name="java/lang/Object" />
-		<implements name="javax/xml/transform/Source" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Lorg/xml/sax/InputSource;)V" />
-		<method name="&lt;init>(Lorg/xml/sax/XMLReader;Lorg/xml/sax/InputSource;)V" />
-		<method name="getInputSource()Lorg/xml/sax/InputSource;" />
-		<method name="getXMLReader()Lorg/xml/sax/XMLReader;" />
-		<method name="setInputSource(Lorg/xml/sax/InputSource;)V" />
-		<method name="setXMLReader(Lorg/xml/sax/XMLReader;)V" />
-		<method name="sourceToInputSource(Ljavax/xml/transform/Source;)Lorg/xml/sax/InputSource;" />
-		<field name="FEATURE" />
-	</class>
-	<class name="javax/xml/transform/sax/SAXTransformerFactory" since="8">
-		<extends name="javax/xml/transform/TransformerFactory" />
-		<method name="&lt;init>()V" />
-		<method name="newTemplatesHandler()Ljavax/xml/transform/sax/TemplatesHandler;" />
-		<method name="newTransformerHandler()Ljavax/xml/transform/sax/TransformerHandler;" />
-		<method name="newTransformerHandler(Ljavax/xml/transform/Source;)Ljavax/xml/transform/sax/TransformerHandler;" />
-		<method name="newTransformerHandler(Ljavax/xml/transform/Templates;)Ljavax/xml/transform/sax/TransformerHandler;" />
-		<method name="newXMLFilter(Ljavax/xml/transform/Source;)Lorg/xml/sax/XMLFilter;" />
-		<method name="newXMLFilter(Ljavax/xml/transform/Templates;)Lorg/xml/sax/XMLFilter;" />
-		<field name="FEATURE" />
-		<field name="FEATURE_XMLFILTER" />
-	</class>
-	<class name="javax/xml/transform/sax/TemplatesHandler" since="8">
-		<extends name="java/lang/Object" />
-		<implements name="org/xml/sax/ContentHandler" />
-		<method name="getSystemId()Ljava/lang/String;" />
-		<method name="getTemplates()Ljavax/xml/transform/Templates;" />
-		<method name="setSystemId(Ljava/lang/String;)V" />
-	</class>
-	<class name="javax/xml/transform/sax/TransformerHandler" since="8">
-		<extends name="java/lang/Object" />
-		<implements name="org/xml/sax/ContentHandler" />
-		<implements name="org/xml/sax/DTDHandler" />
-		<implements name="org/xml/sax/ext/LexicalHandler" />
-		<method name="getSystemId()Ljava/lang/String;" />
-		<method name="getTransformer()Ljavax/xml/transform/Transformer;" />
-		<method name="setResult(Ljavax/xml/transform/Result;)V" />
-		<method name="setSystemId(Ljava/lang/String;)V" />
-	</class>
-	<class name="javax/xml/transform/stream/StreamResult" since="8">
-		<extends name="java/lang/Object" />
-		<implements name="javax/xml/transform/Result" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/io/File;)V" />
-		<method name="&lt;init>(Ljava/io/OutputStream;)V" />
-		<method name="&lt;init>(Ljava/io/Writer;)V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="getOutputStream()Ljava/io/OutputStream;" />
-		<method name="getWriter()Ljava/io/Writer;" />
-		<method name="setOutputStream(Ljava/io/OutputStream;)V" />
-		<method name="setSystemId(Ljava/io/File;)V" />
-		<method name="setWriter(Ljava/io/Writer;)V" />
-		<field name="FEATURE" />
-	</class>
-	<class name="javax/xml/transform/stream/StreamSource" since="8">
-		<extends name="java/lang/Object" />
-		<implements name="javax/xml/transform/Source" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/io/File;)V" />
-		<method name="&lt;init>(Ljava/io/InputStream;)V" />
-		<method name="&lt;init>(Ljava/io/InputStream;Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/io/Reader;)V" />
-		<method name="&lt;init>(Ljava/io/Reader;Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="getInputStream()Ljava/io/InputStream;" />
-		<method name="getPublicId()Ljava/lang/String;" />
-		<method name="getReader()Ljava/io/Reader;" />
-		<method name="setInputStream(Ljava/io/InputStream;)V" />
-		<method name="setPublicId(Ljava/lang/String;)V" />
-		<method name="setReader(Ljava/io/Reader;)V" />
-		<method name="setSystemId(Ljava/io/File;)V" />
-		<field name="FEATURE" />
-	</class>
-	<class name="javax/xml/validation/Schema" since="8">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="newValidator()Ljavax/xml/validation/Validator;" />
-		<method name="newValidatorHandler()Ljavax/xml/validation/ValidatorHandler;" />
-	</class>
-	<class name="javax/xml/validation/SchemaFactory" since="8">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getErrorHandler()Lorg/xml/sax/ErrorHandler;" />
-		<method name="getFeature(Ljava/lang/String;)Z" />
-		<method name="getProperty(Ljava/lang/String;)Ljava/lang/Object;" />
-		<method name="getResourceResolver()Lorg/w3c/dom/ls/LSResourceResolver;" />
-		<method name="isSchemaLanguageSupported(Ljava/lang/String;)Z" />
-		<method name="newInstance(Ljava/lang/String;)Ljavax/xml/validation/SchemaFactory;" />
-		<method name="newInstance(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;)Ljavax/xml/validation/SchemaFactory;" since="9" />
-		<method name="newSchema()Ljavax/xml/validation/Schema;" />
-		<method name="newSchema(Ljava/io/File;)Ljavax/xml/validation/Schema;" />
-		<method name="newSchema(Ljava/net/URL;)Ljavax/xml/validation/Schema;" />
-		<method name="newSchema(Ljavax/xml/transform/Source;)Ljavax/xml/validation/Schema;" />
-		<method name="newSchema([Ljavax/xml/transform/Source;)Ljavax/xml/validation/Schema;" />
-		<method name="setErrorHandler(Lorg/xml/sax/ErrorHandler;)V" />
-		<method name="setFeature(Ljava/lang/String;Z)V" />
-		<method name="setProperty(Ljava/lang/String;Ljava/lang/Object;)V" />
-		<method name="setResourceResolver(Lorg/w3c/dom/ls/LSResourceResolver;)V" />
-	</class>
-	<class name="javax/xml/validation/SchemaFactoryLoader" since="8">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="newFactory(Ljava/lang/String;)Ljavax/xml/validation/SchemaFactory;" />
-	</class>
-	<class name="javax/xml/validation/TypeInfoProvider" since="8">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getAttributeTypeInfo(I)Lorg/w3c/dom/TypeInfo;" />
-		<method name="getElementTypeInfo()Lorg/w3c/dom/TypeInfo;" />
-		<method name="isIdAttribute(I)Z" />
-		<method name="isSpecified(I)Z" />
-	</class>
-	<class name="javax/xml/validation/Validator" since="8">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getErrorHandler()Lorg/xml/sax/ErrorHandler;" />
-		<method name="getFeature(Ljava/lang/String;)Z" />
-		<method name="getProperty(Ljava/lang/String;)Ljava/lang/Object;" />
-		<method name="getResourceResolver()Lorg/w3c/dom/ls/LSResourceResolver;" />
-		<method name="reset()V" />
-		<method name="setErrorHandler(Lorg/xml/sax/ErrorHandler;)V" />
-		<method name="setFeature(Ljava/lang/String;Z)V" />
-		<method name="setProperty(Ljava/lang/String;Ljava/lang/Object;)V" />
-		<method name="setResourceResolver(Lorg/w3c/dom/ls/LSResourceResolver;)V" />
-		<method name="validate(Ljavax/xml/transform/Source;)V" />
-		<method name="validate(Ljavax/xml/transform/Source;Ljavax/xml/transform/Result;)V" />
-	</class>
-	<class name="javax/xml/validation/ValidatorHandler" since="8">
-		<extends name="java/lang/Object" />
-		<implements name="org/xml/sax/ContentHandler" />
-		<method name="&lt;init>()V" />
-		<method name="getContentHandler()Lorg/xml/sax/ContentHandler;" />
-		<method name="getErrorHandler()Lorg/xml/sax/ErrorHandler;" />
-		<method name="getFeature(Ljava/lang/String;)Z" />
-		<method name="getProperty(Ljava/lang/String;)Ljava/lang/Object;" />
-		<method name="getResourceResolver()Lorg/w3c/dom/ls/LSResourceResolver;" />
-		<method name="getTypeInfoProvider()Ljavax/xml/validation/TypeInfoProvider;" />
-		<method name="setContentHandler(Lorg/xml/sax/ContentHandler;)V" />
-		<method name="setErrorHandler(Lorg/xml/sax/ErrorHandler;)V" />
-		<method name="setFeature(Ljava/lang/String;Z)V" />
-		<method name="setProperty(Ljava/lang/String;Ljava/lang/Object;)V" />
-		<method name="setResourceResolver(Lorg/w3c/dom/ls/LSResourceResolver;)V" />
-	</class>
-	<class name="javax/xml/xpath/XPath" since="8">
-		<extends name="java/lang/Object" />
-		<method name="compile(Ljava/lang/String;)Ljavax/xml/xpath/XPathExpression;" />
-		<method name="evaluate(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/String;" />
-		<method name="evaluate(Ljava/lang/String;Ljava/lang/Object;Ljavax/xml/namespace/QName;)Ljava/lang/Object;" />
-		<method name="evaluate(Ljava/lang/String;Lorg/xml/sax/InputSource;)Ljava/lang/String;" />
-		<method name="evaluate(Ljava/lang/String;Lorg/xml/sax/InputSource;Ljavax/xml/namespace/QName;)Ljava/lang/Object;" />
-		<method name="getNamespaceContext()Ljavax/xml/namespace/NamespaceContext;" />
-		<method name="getXPathFunctionResolver()Ljavax/xml/xpath/XPathFunctionResolver;" />
-		<method name="getXPathVariableResolver()Ljavax/xml/xpath/XPathVariableResolver;" />
-		<method name="reset()V" />
-		<method name="setNamespaceContext(Ljavax/xml/namespace/NamespaceContext;)V" />
-		<method name="setXPathFunctionResolver(Ljavax/xml/xpath/XPathFunctionResolver;)V" />
-		<method name="setXPathVariableResolver(Ljavax/xml/xpath/XPathVariableResolver;)V" />
-	</class>
-	<class name="javax/xml/xpath/XPathConstants" since="8">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="BOOLEAN" />
-		<field name="DOM_OBJECT_MODEL" />
-		<field name="NODE" />
-		<field name="NODESET" />
-		<field name="NUMBER" />
-		<field name="STRING" />
-	</class>
-	<class name="javax/xml/xpath/XPathException" since="8">
-		<extends name="java/lang/Exception" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="javax/xml/xpath/XPathExpression" since="8">
-		<extends name="java/lang/Object" />
-		<method name="evaluate(Ljava/lang/Object;)Ljava/lang/String;" />
-		<method name="evaluate(Ljava/lang/Object;Ljavax/xml/namespace/QName;)Ljava/lang/Object;" />
-		<method name="evaluate(Lorg/xml/sax/InputSource;)Ljava/lang/String;" />
-		<method name="evaluate(Lorg/xml/sax/InputSource;Ljavax/xml/namespace/QName;)Ljava/lang/Object;" />
-	</class>
-	<class name="javax/xml/xpath/XPathExpressionException" since="8">
-		<extends name="javax/xml/xpath/XPathException" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="javax/xml/xpath/XPathFactory" since="8">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getFeature(Ljava/lang/String;)Z" />
-		<method name="isObjectModelSupported(Ljava/lang/String;)Z" />
-		<method name="newInstance()Ljavax/xml/xpath/XPathFactory;" />
-		<method name="newInstance(Ljava/lang/String;)Ljavax/xml/xpath/XPathFactory;" />
-		<method name="newInstance(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;)Ljavax/xml/xpath/XPathFactory;" />
-		<method name="newXPath()Ljavax/xml/xpath/XPath;" />
-		<method name="setFeature(Ljava/lang/String;Z)V" />
-		<method name="setXPathFunctionResolver(Ljavax/xml/xpath/XPathFunctionResolver;)V" />
-		<method name="setXPathVariableResolver(Ljavax/xml/xpath/XPathVariableResolver;)V" />
-		<field name="DEFAULT_OBJECT_MODEL_URI" />
-		<field name="DEFAULT_PROPERTY_NAME" />
-	</class>
-	<class name="javax/xml/xpath/XPathFactoryConfigurationException" since="8">
-		<extends name="javax/xml/xpath/XPathException" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="javax/xml/xpath/XPathFunction" since="8">
-		<extends name="java/lang/Object" />
-		<method name="evaluate(Ljava/util/List;)Ljava/lang/Object;" />
-	</class>
-	<class name="javax/xml/xpath/XPathFunctionException" since="8">
-		<extends name="javax/xml/xpath/XPathExpressionException" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="javax/xml/xpath/XPathFunctionResolver" since="8">
-		<extends name="java/lang/Object" />
-		<method name="resolveFunction(Ljavax/xml/namespace/QName;I)Ljavax/xml/xpath/XPathFunction;" />
-	</class>
-	<class name="javax/xml/xpath/XPathVariableResolver" since="8">
-		<extends name="java/lang/Object" />
-		<method name="resolveVariable(Ljavax/xml/namespace/QName;)Ljava/lang/Object;" />
-	</class>
-	<class name="junit/framework/Assert" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="assertEquals(BB)V" />
-		<method name="assertEquals(CC)V" />
-		<method name="assertEquals(DDD)V" />
-		<method name="assertEquals(FFF)V" />
-		<method name="assertEquals(II)V" />
-		<method name="assertEquals(JJ)V" />
-		<method name="assertEquals(Ljava/lang/Object;Ljava/lang/Object;)V" />
-		<method name="assertEquals(Ljava/lang/String;BB)V" />
-		<method name="assertEquals(Ljava/lang/String;CC)V" />
-		<method name="assertEquals(Ljava/lang/String;DDD)V" />
-		<method name="assertEquals(Ljava/lang/String;FFF)V" />
-		<method name="assertEquals(Ljava/lang/String;II)V" />
-		<method name="assertEquals(Ljava/lang/String;JJ)V" />
-		<method name="assertEquals(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V" />
-		<method name="assertEquals(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="assertEquals(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="assertEquals(Ljava/lang/String;SS)V" />
-		<method name="assertEquals(Ljava/lang/String;ZZ)V" />
-		<method name="assertEquals(SS)V" />
-		<method name="assertEquals(ZZ)V" />
-		<method name="assertFalse(Ljava/lang/String;Z)V" />
-		<method name="assertFalse(Z)V" />
-		<method name="assertNotNull(Ljava/lang/Object;)V" />
-		<method name="assertNotNull(Ljava/lang/String;Ljava/lang/Object;)V" />
-		<method name="assertNotSame(Ljava/lang/Object;Ljava/lang/Object;)V" />
-		<method name="assertNotSame(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V" />
-		<method name="assertNull(Ljava/lang/Object;)V" />
-		<method name="assertNull(Ljava/lang/String;Ljava/lang/Object;)V" />
-		<method name="assertSame(Ljava/lang/Object;Ljava/lang/Object;)V" />
-		<method name="assertSame(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V" />
-		<method name="assertTrue(Ljava/lang/String;Z)V" />
-		<method name="assertTrue(Z)V" />
-		<method name="fail()V" />
-		<method name="fail(Ljava/lang/String;)V" />
-		<method name="failNotEquals(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V" since="16" />
-		<method name="failNotSame(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V" since="16" />
-		<method name="failSame(Ljava/lang/String;)V" since="16" />
-		<method name="format(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/String;" since="16" />
-	</class>
-	<class name="junit/framework/AssertionFailedError" since="1">
-		<extends name="java/lang/AssertionError" since="16" />
-		<extends name="java/lang/Error" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="junit/framework/ComparisonFailure" since="1">
-		<extends name="junit/framework/AssertionFailedError" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="getActual()Ljava/lang/String;" since="16" />
-		<method name="getExpected()Ljava/lang/String;" since="16" />
-	</class>
-	<class name="junit/framework/Protectable" since="1">
-		<extends name="java/lang/Object" />
-		<method name="protect()V" />
-	</class>
-	<class name="junit/framework/Test" since="1">
-		<extends name="java/lang/Object" />
-		<method name="countTestCases()I" />
-		<method name="run(Ljunit/framework/TestResult;)V" />
-	</class>
-	<class name="junit/framework/TestCase" since="1">
-		<extends name="junit/framework/Assert" />
-		<implements name="junit/framework/Test" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="createResult()Ljunit/framework/TestResult;" />
-		<method name="getName()Ljava/lang/String;" />
-		<method name="run()Ljunit/framework/TestResult;" />
-		<method name="runBare()V" />
-		<method name="runTest()V" />
-		<method name="setName(Ljava/lang/String;)V" />
-		<method name="setUp()V" />
-		<method name="tearDown()V" />
-	</class>
-	<class name="junit/framework/TestFailure" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljunit/framework/Test;Ljava/lang/Throwable;)V" />
-		<method name="exceptionMessage()Ljava/lang/String;" />
-		<method name="failedTest()Ljunit/framework/Test;" />
-		<method name="isFailure()Z" />
-		<method name="thrownException()Ljava/lang/Throwable;" />
-		<method name="trace()Ljava/lang/String;" />
-		<field name="fFailedTest" />
-		<field name="fThrownException" />
-	</class>
-	<class name="junit/framework/TestListener" since="1">
-		<extends name="java/lang/Object" />
-		<method name="addError(Ljunit/framework/Test;Ljava/lang/Throwable;)V" />
-		<method name="addFailure(Ljunit/framework/Test;Ljunit/framework/AssertionFailedError;)V" />
-		<method name="endTest(Ljunit/framework/Test;)V" />
-		<method name="startTest(Ljunit/framework/Test;)V" />
-	</class>
-	<class name="junit/framework/TestResult" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="addError(Ljunit/framework/Test;Ljava/lang/Throwable;)V" />
-		<method name="addFailure(Ljunit/framework/Test;Ljunit/framework/AssertionFailedError;)V" />
-		<method name="addListener(Ljunit/framework/TestListener;)V" />
-		<method name="endTest(Ljunit/framework/Test;)V" />
-		<method name="errorCount()I" />
-		<method name="errors()Ljava/util/Enumeration;" />
-		<method name="failureCount()I" />
-		<method name="failures()Ljava/util/Enumeration;" />
-		<method name="removeListener(Ljunit/framework/TestListener;)V" />
-		<method name="run(Ljunit/framework/TestCase;)V" />
-		<method name="runCount()I" />
-		<method name="runProtected(Ljunit/framework/Test;Ljunit/framework/Protectable;)V" />
-		<method name="shouldStop()Z" />
-		<method name="startTest(Ljunit/framework/Test;)V" />
-		<method name="stop()V" />
-		<method name="wasSuccessful()Z" />
-		<field name="fErrors" />
-		<field name="fFailures" />
-		<field name="fListeners" />
-		<field name="fRunTests" />
-	</class>
-	<class name="junit/framework/TestSuite" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="junit/framework/Test" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/Class;)V" />
-		<method name="&lt;init>(Ljava/lang/Class;Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>([Ljava/lang/Class;)V" since="16" />
-		<method name="&lt;init>([Ljava/lang/Class;Ljava/lang/String;)V" since="16" />
-		<method name="addTest(Ljunit/framework/Test;)V" />
-		<method name="addTestSuite(Ljava/lang/Class;)V" />
-		<method name="createTest(Ljava/lang/Class;Ljava/lang/String;)Ljunit/framework/Test;" />
-		<method name="getName()Ljava/lang/String;" />
-		<method name="getTestConstructor(Ljava/lang/Class;)Ljava/lang/reflect/Constructor;" />
-		<method name="runTest(Ljunit/framework/Test;Ljunit/framework/TestResult;)V" />
-		<method name="setName(Ljava/lang/String;)V" />
-		<method name="testAt(I)Ljunit/framework/Test;" />
-		<method name="testCount()I" />
-		<method name="tests()Ljava/util/Enumeration;" />
-		<method name="warning(Ljava/lang/String;)Ljunit/framework/Test;" since="16" />
-	</class>
-	<class name="junit/runner/BaseTestRunner" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="junit/framework/TestListener" />
-		<method name="&lt;init>()V" />
-		<method name="clearStatus()V" />
-		<method name="elapsedTimeAsString(J)Ljava/lang/String;" />
-		<method name="extractClassName(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="getFilteredTrace(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="getFilteredTrace(Ljava/lang/Throwable;)Ljava/lang/String;" />
-		<method name="getLoader()Ljunit/runner/TestSuiteLoader;" />
-		<method name="getPreference(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="getPreference(Ljava/lang/String;I)I" />
-		<method name="getPreferences()Ljava/util/Properties;" />
-		<method name="getTest(Ljava/lang/String;)Ljunit/framework/Test;" />
-		<method name="inVAJava()Z" />
-		<method name="loadSuiteClass(Ljava/lang/String;)Ljava/lang/Class;" />
-		<method name="processArguments([Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="runFailed(Ljava/lang/String;)V" />
-		<method name="savePreferences()V" />
-		<method name="setLoading(Z)V" />
-		<method name="setPreference(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="setPreferences(Ljava/util/Properties;)V" />
-		<method name="showStackRaw()Z" />
-		<method name="testEnded(Ljava/lang/String;)V" />
-		<method name="testFailed(ILjunit/framework/Test;Ljava/lang/Throwable;)V" />
-		<method name="testStarted(Ljava/lang/String;)V" />
-		<method name="truncate(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="useReloadingTestSuiteLoader()Z" />
-		<field name="SUITE_METHODNAME" />
-	</class>
-	<class name="junit/runner/TestSuiteLoader" since="1">
-		<extends name="java/lang/Object" />
-		<method name="load(Ljava/lang/String;)Ljava/lang/Class;" />
-		<method name="reload(Ljava/lang/Class;)Ljava/lang/Class;" />
-	</class>
-	<class name="junit/runner/Version" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="id()Ljava/lang/String;" />
-	</class>
-	<class name="org/apache/commons/logging/Log" since="1">
-		<extends name="java/lang/Object" />
-		<method name="debug(Ljava/lang/Object;)V" />
-		<method name="debug(Ljava/lang/Object;Ljava/lang/Throwable;)V" />
-		<method name="error(Ljava/lang/Object;)V" />
-		<method name="error(Ljava/lang/Object;Ljava/lang/Throwable;)V" />
-		<method name="fatal(Ljava/lang/Object;)V" />
-		<method name="fatal(Ljava/lang/Object;Ljava/lang/Throwable;)V" />
-		<method name="info(Ljava/lang/Object;)V" />
-		<method name="info(Ljava/lang/Object;Ljava/lang/Throwable;)V" />
-		<method name="isDebugEnabled()Z" />
-		<method name="isErrorEnabled()Z" />
-		<method name="isFatalEnabled()Z" />
-		<method name="isInfoEnabled()Z" />
-		<method name="isTraceEnabled()Z" />
-		<method name="isWarnEnabled()Z" />
-		<method name="trace(Ljava/lang/Object;)V" />
-		<method name="trace(Ljava/lang/Object;Ljava/lang/Throwable;)V" />
-		<method name="warn(Ljava/lang/Object;)V" />
-		<method name="warn(Ljava/lang/Object;Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="org/apache/http/ConnectionClosedException" since="1">
-		<extends name="java/io/IOException" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="org/apache/http/ConnectionReuseStrategy" since="1">
-		<extends name="java/lang/Object" />
-		<method name="keepAlive(Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)Z" />
-	</class>
-	<class name="org/apache/http/FormattedHeader" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/Header" />
-		<method name="getBuffer()Lorg/apache/http/util/CharArrayBuffer;" />
-		<method name="getValuePos()I" />
-	</class>
-	<class name="org/apache/http/Header" since="1">
-		<extends name="java/lang/Object" />
-		<method name="getElements()[Lorg/apache/http/HeaderElement;" />
-		<method name="getName()Ljava/lang/String;" />
-		<method name="getValue()Ljava/lang/String;" />
-	</class>
-	<class name="org/apache/http/HeaderElement" since="1">
-		<extends name="java/lang/Object" />
-		<method name="getName()Ljava/lang/String;" />
-		<method name="getParameter(I)Lorg/apache/http/NameValuePair;" />
-		<method name="getParameterByName(Ljava/lang/String;)Lorg/apache/http/NameValuePair;" />
-		<method name="getParameterCount()I" />
-		<method name="getParameters()[Lorg/apache/http/NameValuePair;" />
-		<method name="getValue()Ljava/lang/String;" />
-	</class>
-	<class name="org/apache/http/HeaderElementIterator" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/util/Iterator" />
-		<method name="nextElement()Lorg/apache/http/HeaderElement;" />
-	</class>
-	<class name="org/apache/http/HeaderIterator" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/util/Iterator" />
-		<method name="nextHeader()Lorg/apache/http/Header;" />
-	</class>
-	<class name="org/apache/http/HttpClientConnection" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/HttpConnection" />
-		<method name="flush()V" />
-		<method name="isResponseAvailable(I)Z" />
-		<method name="receiveResponseEntity(Lorg/apache/http/HttpResponse;)V" />
-		<method name="receiveResponseHeader()Lorg/apache/http/HttpResponse;" />
-		<method name="sendRequestEntity(Lorg/apache/http/HttpEntityEnclosingRequest;)V" />
-		<method name="sendRequestHeader(Lorg/apache/http/HttpRequest;)V" />
-	</class>
-	<class name="org/apache/http/HttpConnection" since="1">
-		<extends name="java/lang/Object" />
-		<method name="close()V" />
-		<method name="getMetrics()Lorg/apache/http/HttpConnectionMetrics;" />
-		<method name="getSocketTimeout()I" />
-		<method name="isOpen()Z" />
-		<method name="isStale()Z" />
-		<method name="setSocketTimeout(I)V" />
-		<method name="shutdown()V" />
-	</class>
-	<class name="org/apache/http/HttpConnectionMetrics" since="1">
-		<extends name="java/lang/Object" />
-		<method name="getMetric(Ljava/lang/String;)Ljava/lang/Object;" />
-		<method name="getReceivedBytesCount()J" />
-		<method name="getRequestCount()J" />
-		<method name="getResponseCount()J" />
-		<method name="getSentBytesCount()J" />
-		<method name="reset()V" />
-	</class>
-	<class name="org/apache/http/HttpEntity" since="1">
-		<extends name="java/lang/Object" />
-		<method name="consumeContent()V" />
-		<method name="getContent()Ljava/io/InputStream;" />
-		<method name="getContentEncoding()Lorg/apache/http/Header;" />
-		<method name="getContentLength()J" />
-		<method name="getContentType()Lorg/apache/http/Header;" />
-		<method name="isChunked()Z" />
-		<method name="isRepeatable()Z" />
-		<method name="isStreaming()Z" />
-		<method name="writeTo(Ljava/io/OutputStream;)V" />
-	</class>
-	<class name="org/apache/http/HttpEntityEnclosingRequest" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/HttpRequest" />
-		<method name="expectContinue()Z" />
-		<method name="getEntity()Lorg/apache/http/HttpEntity;" />
-		<method name="setEntity(Lorg/apache/http/HttpEntity;)V" />
-	</class>
-	<class name="org/apache/http/HttpException" since="1">
-		<extends name="java/lang/Exception" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="org/apache/http/HttpHost" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/Cloneable" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;I)V" />
-		<method name="&lt;init>(Ljava/lang/String;ILjava/lang/String;)V" />
-		<method name="&lt;init>(Lorg/apache/http/HttpHost;)V" />
-		<method name="getHostName()Ljava/lang/String;" />
-		<method name="getPort()I" />
-		<method name="getSchemeName()Ljava/lang/String;" />
-		<method name="toHostString()Ljava/lang/String;" />
-		<method name="toURI()Ljava/lang/String;" />
-		<field name="DEFAULT_SCHEME_NAME" />
-		<field name="hostname" />
-		<field name="lcHostname" />
-		<field name="port" />
-		<field name="schemeName" />
-	</class>
-	<class name="org/apache/http/HttpInetConnection" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/HttpConnection" />
-		<method name="getLocalAddress()Ljava/net/InetAddress;" />
-		<method name="getLocalPort()I" />
-		<method name="getRemoteAddress()Ljava/net/InetAddress;" />
-		<method name="getRemotePort()I" />
-	</class>
-	<class name="org/apache/http/HttpMessage" since="1">
-		<extends name="java/lang/Object" />
-		<method name="addHeader(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="addHeader(Lorg/apache/http/Header;)V" />
-		<method name="containsHeader(Ljava/lang/String;)Z" />
-		<method name="getAllHeaders()[Lorg/apache/http/Header;" />
-		<method name="getFirstHeader(Ljava/lang/String;)Lorg/apache/http/Header;" />
-		<method name="getHeaders(Ljava/lang/String;)[Lorg/apache/http/Header;" />
-		<method name="getLastHeader(Ljava/lang/String;)Lorg/apache/http/Header;" />
-		<method name="getParams()Lorg/apache/http/params/HttpParams;" />
-		<method name="getProtocolVersion()Lorg/apache/http/ProtocolVersion;" />
-		<method name="headerIterator()Lorg/apache/http/HeaderIterator;" />
-		<method name="headerIterator(Ljava/lang/String;)Lorg/apache/http/HeaderIterator;" />
-		<method name="removeHeader(Lorg/apache/http/Header;)V" />
-		<method name="removeHeaders(Ljava/lang/String;)V" />
-		<method name="setHeader(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="setHeader(Lorg/apache/http/Header;)V" />
-		<method name="setHeaders([Lorg/apache/http/Header;)V" />
-		<method name="setParams(Lorg/apache/http/params/HttpParams;)V" />
-	</class>
-	<class name="org/apache/http/HttpRequest" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/HttpMessage" />
-		<method name="getRequestLine()Lorg/apache/http/RequestLine;" />
-	</class>
-	<class name="org/apache/http/HttpRequestFactory" since="1">
-		<extends name="java/lang/Object" />
-		<method name="newHttpRequest(Ljava/lang/String;Ljava/lang/String;)Lorg/apache/http/HttpRequest;" />
-		<method name="newHttpRequest(Lorg/apache/http/RequestLine;)Lorg/apache/http/HttpRequest;" />
-	</class>
-	<class name="org/apache/http/HttpRequestInterceptor" since="1">
-		<extends name="java/lang/Object" />
-		<method name="process(Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)V" />
-	</class>
-	<class name="org/apache/http/HttpResponse" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/HttpMessage" />
-		<method name="getEntity()Lorg/apache/http/HttpEntity;" />
-		<method name="getLocale()Ljava/util/Locale;" />
-		<method name="getStatusLine()Lorg/apache/http/StatusLine;" />
-		<method name="setEntity(Lorg/apache/http/HttpEntity;)V" />
-		<method name="setLocale(Ljava/util/Locale;)V" />
-		<method name="setReasonPhrase(Ljava/lang/String;)V" />
-		<method name="setStatusCode(I)V" />
-		<method name="setStatusLine(Lorg/apache/http/ProtocolVersion;I)V" />
-		<method name="setStatusLine(Lorg/apache/http/ProtocolVersion;ILjava/lang/String;)V" />
-		<method name="setStatusLine(Lorg/apache/http/StatusLine;)V" />
-	</class>
-	<class name="org/apache/http/HttpResponseFactory" since="1">
-		<extends name="java/lang/Object" />
-		<method name="newHttpResponse(Lorg/apache/http/ProtocolVersion;ILorg/apache/http/protocol/HttpContext;)Lorg/apache/http/HttpResponse;" />
-		<method name="newHttpResponse(Lorg/apache/http/StatusLine;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/HttpResponse;" />
-	</class>
-	<class name="org/apache/http/HttpResponseInterceptor" since="1">
-		<extends name="java/lang/Object" />
-		<method name="process(Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)V" />
-	</class>
-	<class name="org/apache/http/HttpServerConnection" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/HttpConnection" />
-		<method name="flush()V" />
-		<method name="receiveRequestEntity(Lorg/apache/http/HttpEntityEnclosingRequest;)V" />
-		<method name="receiveRequestHeader()Lorg/apache/http/HttpRequest;" />
-		<method name="sendResponseEntity(Lorg/apache/http/HttpResponse;)V" />
-		<method name="sendResponseHeader(Lorg/apache/http/HttpResponse;)V" />
-	</class>
-	<class name="org/apache/http/HttpStatus" since="1">
-		<extends name="java/lang/Object" />
-		<field name="SC_ACCEPTED" />
-		<field name="SC_BAD_GATEWAY" />
-		<field name="SC_BAD_REQUEST" />
-		<field name="SC_CONFLICT" />
-		<field name="SC_CONTINUE" />
-		<field name="SC_CREATED" />
-		<field name="SC_EXPECTATION_FAILED" />
-		<field name="SC_FAILED_DEPENDENCY" />
-		<field name="SC_FORBIDDEN" />
-		<field name="SC_GATEWAY_TIMEOUT" />
-		<field name="SC_GONE" />
-		<field name="SC_HTTP_VERSION_NOT_SUPPORTED" />
-		<field name="SC_INSUFFICIENT_SPACE_ON_RESOURCE" />
-		<field name="SC_INSUFFICIENT_STORAGE" />
-		<field name="SC_INTERNAL_SERVER_ERROR" />
-		<field name="SC_LENGTH_REQUIRED" />
-		<field name="SC_LOCKED" />
-		<field name="SC_METHOD_FAILURE" />
-		<field name="SC_METHOD_NOT_ALLOWED" />
-		<field name="SC_MOVED_PERMANENTLY" />
-		<field name="SC_MOVED_TEMPORARILY" />
-		<field name="SC_MULTIPLE_CHOICES" />
-		<field name="SC_MULTI_STATUS" />
-		<field name="SC_NON_AUTHORITATIVE_INFORMATION" />
-		<field name="SC_NOT_ACCEPTABLE" />
-		<field name="SC_NOT_FOUND" />
-		<field name="SC_NOT_IMPLEMENTED" />
-		<field name="SC_NOT_MODIFIED" />
-		<field name="SC_NO_CONTENT" />
-		<field name="SC_OK" />
-		<field name="SC_PARTIAL_CONTENT" />
-		<field name="SC_PAYMENT_REQUIRED" />
-		<field name="SC_PRECONDITION_FAILED" />
-		<field name="SC_PROCESSING" />
-		<field name="SC_PROXY_AUTHENTICATION_REQUIRED" />
-		<field name="SC_REQUESTED_RANGE_NOT_SATISFIABLE" />
-		<field name="SC_REQUEST_TIMEOUT" />
-		<field name="SC_REQUEST_TOO_LONG" />
-		<field name="SC_REQUEST_URI_TOO_LONG" />
-		<field name="SC_RESET_CONTENT" />
-		<field name="SC_SEE_OTHER" />
-		<field name="SC_SERVICE_UNAVAILABLE" />
-		<field name="SC_SWITCHING_PROTOCOLS" />
-		<field name="SC_TEMPORARY_REDIRECT" />
-		<field name="SC_UNAUTHORIZED" />
-		<field name="SC_UNPROCESSABLE_ENTITY" />
-		<field name="SC_UNSUPPORTED_MEDIA_TYPE" />
-		<field name="SC_USE_PROXY" />
-	</class>
-	<class name="org/apache/http/HttpVersion" since="1">
-		<extends name="org/apache/http/ProtocolVersion" />
-		<implements name="java/io/Serializable" />
-		<method name="&lt;init>(II)V" />
-		<field name="HTTP" />
-		<field name="HTTP_0_9" />
-		<field name="HTTP_1_0" />
-		<field name="HTTP_1_1" />
-	</class>
-	<class name="org/apache/http/MalformedChunkCodingException" since="1">
-		<extends name="java/io/IOException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="org/apache/http/MethodNotSupportedException" since="1">
-		<extends name="org/apache/http/HttpException" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="org/apache/http/NameValuePair" since="1">
-		<extends name="java/lang/Object" />
-		<method name="getName()Ljava/lang/String;" />
-		<method name="getValue()Ljava/lang/String;" />
-	</class>
-	<class name="org/apache/http/NoHttpResponseException" since="1">
-		<extends name="java/io/IOException" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="org/apache/http/ParseException" since="1">
-		<extends name="java/lang/RuntimeException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="org/apache/http/ProtocolException" since="1">
-		<extends name="org/apache/http/HttpException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="org/apache/http/ProtocolVersion" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<implements name="java/lang/Cloneable" />
-		<method name="&lt;init>(Ljava/lang/String;II)V" />
-		<method name="compareToVersion(Lorg/apache/http/ProtocolVersion;)I" />
-		<method name="forVersion(II)Lorg/apache/http/ProtocolVersion;" />
-		<method name="getMajor()I" />
-		<method name="getMinor()I" />
-		<method name="getProtocol()Ljava/lang/String;" />
-		<method name="greaterEquals(Lorg/apache/http/ProtocolVersion;)Z" />
-		<method name="isComparable(Lorg/apache/http/ProtocolVersion;)Z" />
-		<method name="lessEquals(Lorg/apache/http/ProtocolVersion;)Z" />
-		<field name="major" />
-		<field name="minor" />
-		<field name="protocol" />
-	</class>
-	<class name="org/apache/http/ReasonPhraseCatalog" since="1">
-		<extends name="java/lang/Object" />
-		<method name="getReason(ILjava/util/Locale;)Ljava/lang/String;" />
-	</class>
-	<class name="org/apache/http/RequestLine" since="1">
-		<extends name="java/lang/Object" />
-		<method name="getMethod()Ljava/lang/String;" />
-		<method name="getProtocolVersion()Lorg/apache/http/ProtocolVersion;" />
-		<method name="getUri()Ljava/lang/String;" />
-	</class>
-	<class name="org/apache/http/StatusLine" since="1">
-		<extends name="java/lang/Object" />
-		<method name="getProtocolVersion()Lorg/apache/http/ProtocolVersion;" />
-		<method name="getReasonPhrase()Ljava/lang/String;" />
-		<method name="getStatusCode()I" />
-	</class>
-	<class name="org/apache/http/TokenIterator" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/util/Iterator" />
-		<method name="nextToken()Ljava/lang/String;" />
-	</class>
-	<class name="org/apache/http/UnsupportedHttpVersionException" since="1">
-		<extends name="org/apache/http/ProtocolException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="org/apache/http/auth/AUTH" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="PROXY_AUTH" />
-		<field name="PROXY_AUTH_RESP" />
-		<field name="WWW_AUTH" />
-		<field name="WWW_AUTH_RESP" />
-	</class>
-	<class name="org/apache/http/auth/AuthScheme" since="1">
-		<extends name="java/lang/Object" />
-		<method name="authenticate(Lorg/apache/http/auth/Credentials;Lorg/apache/http/HttpRequest;)Lorg/apache/http/Header;" />
-		<method name="getParameter(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="getRealm()Ljava/lang/String;" />
-		<method name="getSchemeName()Ljava/lang/String;" />
-		<method name="isComplete()Z" />
-		<method name="isConnectionBased()Z" />
-		<method name="processChallenge(Lorg/apache/http/Header;)V" />
-	</class>
-	<class name="org/apache/http/auth/AuthSchemeFactory" since="1">
-		<extends name="java/lang/Object" />
-		<method name="newInstance(Lorg/apache/http/params/HttpParams;)Lorg/apache/http/auth/AuthScheme;" />
-	</class>
-	<class name="org/apache/http/auth/AuthSchemeRegistry" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getAuthScheme(Ljava/lang/String;Lorg/apache/http/params/HttpParams;)Lorg/apache/http/auth/AuthScheme;" />
-		<method name="getSchemeNames()Ljava/util/List;" />
-		<method name="register(Ljava/lang/String;Lorg/apache/http/auth/AuthSchemeFactory;)V" />
-		<method name="setItems(Ljava/util/Map;)V" />
-		<method name="unregister(Ljava/lang/String;)V" />
-	</class>
-	<class name="org/apache/http/auth/AuthScope" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/lang/String;I)V" />
-		<method name="&lt;init>(Ljava/lang/String;ILjava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V" />
-		<method name="&lt;init>(Lorg/apache/http/auth/AuthScope;)V" />
-		<method name="getHost()Ljava/lang/String;" />
-		<method name="getPort()I" />
-		<method name="getRealm()Ljava/lang/String;" />
-		<method name="getScheme()Ljava/lang/String;" />
-		<method name="match(Lorg/apache/http/auth/AuthScope;)I" />
-		<field name="ANY" />
-		<field name="ANY_HOST" />
-		<field name="ANY_PORT" />
-		<field name="ANY_REALM" />
-		<field name="ANY_SCHEME" />
-	</class>
-	<class name="org/apache/http/auth/AuthState" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getAuthScheme()Lorg/apache/http/auth/AuthScheme;" />
-		<method name="getAuthScope()Lorg/apache/http/auth/AuthScope;" />
-		<method name="getCredentials()Lorg/apache/http/auth/Credentials;" />
-		<method name="invalidate()V" />
-		<method name="isValid()Z" />
-		<method name="setAuthScheme(Lorg/apache/http/auth/AuthScheme;)V" />
-		<method name="setAuthScope(Lorg/apache/http/auth/AuthScope;)V" />
-		<method name="setCredentials(Lorg/apache/http/auth/Credentials;)V" />
-	</class>
-	<class name="org/apache/http/auth/AuthenticationException" since="1">
-		<extends name="org/apache/http/ProtocolException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="org/apache/http/auth/BasicUserPrincipal" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/security/Principal" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="org/apache/http/auth/Credentials" since="1">
-		<extends name="java/lang/Object" />
-		<method name="getPassword()Ljava/lang/String;" />
-		<method name="getUserPrincipal()Ljava/security/Principal;" />
-	</class>
-	<class name="org/apache/http/auth/InvalidCredentialsException" since="1">
-		<extends name="org/apache/http/auth/AuthenticationException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="org/apache/http/auth/MalformedChallengeException" since="1">
-		<extends name="org/apache/http/ProtocolException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="org/apache/http/auth/NTCredentials" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/auth/Credentials" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="getDomain()Ljava/lang/String;" />
-		<method name="getUserName()Ljava/lang/String;" />
-		<method name="getWorkstation()Ljava/lang/String;" />
-	</class>
-	<class name="org/apache/http/auth/NTUserPrincipal" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/security/Principal" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="getDomain()Ljava/lang/String;" />
-		<method name="getUsername()Ljava/lang/String;" />
-	</class>
-	<class name="org/apache/http/auth/UsernamePasswordCredentials" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/auth/Credentials" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="getUserName()Ljava/lang/String;" />
-	</class>
-	<class name="org/apache/http/auth/params/AuthPNames" since="1">
-		<extends name="java/lang/Object" />
-		<field name="CREDENTIAL_CHARSET" />
-	</class>
-	<class name="org/apache/http/auth/params/AuthParamBean" since="1">
-		<extends name="org/apache/http/params/HttpAbstractParamBean" />
-		<method name="&lt;init>(Lorg/apache/http/params/HttpParams;)V" />
-		<method name="setCredentialCharset(Ljava/lang/String;)V" />
-	</class>
-	<class name="org/apache/http/auth/params/AuthParams" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getCredentialCharset(Lorg/apache/http/params/HttpParams;)Ljava/lang/String;" />
-		<method name="setCredentialCharset(Lorg/apache/http/params/HttpParams;Ljava/lang/String;)V" />
-	</class>
-	<class name="org/apache/http/client/AuthenticationHandler" since="1">
-		<extends name="java/lang/Object" />
-		<method name="getChallenges(Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)Ljava/util/Map;" />
-		<method name="isAuthenticationRequested(Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)Z" />
-		<method name="selectScheme(Ljava/util/Map;Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/auth/AuthScheme;" />
-	</class>
-	<class name="org/apache/http/client/CircularRedirectException" since="1">
-		<extends name="org/apache/http/client/RedirectException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="org/apache/http/client/ClientProtocolException" since="1">
-		<extends name="java/io/IOException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="org/apache/http/client/CookieStore" since="1">
-		<extends name="java/lang/Object" />
-		<method name="addCookie(Lorg/apache/http/cookie/Cookie;)V" />
-		<method name="clear()V" />
-		<method name="clearExpired(Ljava/util/Date;)Z" />
-		<method name="getCookies()Ljava/util/List;" />
-	</class>
-	<class name="org/apache/http/client/CredentialsProvider" since="1">
-		<extends name="java/lang/Object" />
-		<method name="clear()V" />
-		<method name="getCredentials(Lorg/apache/http/auth/AuthScope;)Lorg/apache/http/auth/Credentials;" />
-		<method name="setCredentials(Lorg/apache/http/auth/AuthScope;Lorg/apache/http/auth/Credentials;)V" />
-	</class>
-	<class name="org/apache/http/client/HttpClient" since="1">
-		<extends name="java/lang/Object" />
-		<method name="execute(Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;)Lorg/apache/http/HttpResponse;" />
-		<method name="execute(Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;Lorg/apache/http/client/ResponseHandler;)Ljava/lang/Object;" />
-		<method name="execute(Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;Lorg/apache/http/client/ResponseHandler;Lorg/apache/http/protocol/HttpContext;)Ljava/lang/Object;" />
-		<method name="execute(Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/HttpResponse;" />
-		<method name="execute(Lorg/apache/http/client/methods/HttpUriRequest;)Lorg/apache/http/HttpResponse;" />
-		<method name="execute(Lorg/apache/http/client/methods/HttpUriRequest;Lorg/apache/http/client/ResponseHandler;)Ljava/lang/Object;" />
-		<method name="execute(Lorg/apache/http/client/methods/HttpUriRequest;Lorg/apache/http/client/ResponseHandler;Lorg/apache/http/protocol/HttpContext;)Ljava/lang/Object;" />
-		<method name="execute(Lorg/apache/http/client/methods/HttpUriRequest;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/HttpResponse;" />
-		<method name="getConnectionManager()Lorg/apache/http/conn/ClientConnectionManager;" />
-		<method name="getParams()Lorg/apache/http/params/HttpParams;" />
-	</class>
-	<class name="org/apache/http/client/HttpRequestRetryHandler" since="1">
-		<extends name="java/lang/Object" />
-		<method name="retryRequest(Ljava/io/IOException;ILorg/apache/http/protocol/HttpContext;)Z" />
-	</class>
-	<class name="org/apache/http/client/HttpResponseException" since="1">
-		<extends name="org/apache/http/client/ClientProtocolException" />
-		<method name="&lt;init>(ILjava/lang/String;)V" />
-		<method name="getStatusCode()I" />
-	</class>
-	<class name="org/apache/http/client/NonRepeatableRequestException" since="1">
-		<extends name="org/apache/http/ProtocolException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="org/apache/http/client/RedirectException" since="1">
-		<extends name="org/apache/http/ProtocolException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="org/apache/http/client/RedirectHandler" since="1">
-		<extends name="java/lang/Object" />
-		<method name="getLocationURI(Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)Ljava/net/URI;" />
-		<method name="isRedirectRequested(Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)Z" />
-	</class>
-	<class name="org/apache/http/client/RequestDirector" since="1">
-		<extends name="java/lang/Object" />
-		<method name="execute(Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/HttpResponse;" />
-	</class>
-	<class name="org/apache/http/client/ResponseHandler" since="1">
-		<extends name="java/lang/Object" />
-		<method name="handleResponse(Lorg/apache/http/HttpResponse;)Ljava/lang/Object;" />
-	</class>
-	<class name="org/apache/http/client/UserTokenHandler" since="1">
-		<extends name="java/lang/Object" />
-		<method name="getUserToken(Lorg/apache/http/protocol/HttpContext;)Ljava/lang/Object;" />
-	</class>
-	<class name="org/apache/http/client/entity/UrlEncodedFormEntity" since="1">
-		<extends name="org/apache/http/entity/StringEntity" />
-		<method name="&lt;init>(Ljava/util/List;)V" />
-		<method name="&lt;init>(Ljava/util/List;Ljava/lang/String;)V" />
-	</class>
-	<class name="org/apache/http/client/methods/AbortableHttpRequest" since="1">
-		<extends name="java/lang/Object" />
-		<method name="abort()V" />
-		<method name="setConnectionRequest(Lorg/apache/http/conn/ClientConnectionRequest;)V" />
-		<method name="setReleaseTrigger(Lorg/apache/http/conn/ConnectionReleaseTrigger;)V" />
-	</class>
-	<class name="org/apache/http/client/methods/HttpDelete" since="1">
-		<extends name="org/apache/http/client/methods/HttpRequestBase" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/net/URI;)V" />
-		<field name="METHOD_NAME" />
-	</class>
-	<class name="org/apache/http/client/methods/HttpEntityEnclosingRequestBase" since="1">
-		<extends name="org/apache/http/client/methods/HttpRequestBase" />
-		<implements name="org/apache/http/HttpEntityEnclosingRequest" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="org/apache/http/client/methods/HttpGet" since="1">
-		<extends name="org/apache/http/client/methods/HttpRequestBase" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/net/URI;)V" />
-		<field name="METHOD_NAME" />
-	</class>
-	<class name="org/apache/http/client/methods/HttpHead" since="1">
-		<extends name="org/apache/http/client/methods/HttpRequestBase" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/net/URI;)V" />
-		<field name="METHOD_NAME" />
-	</class>
-	<class name="org/apache/http/client/methods/HttpOptions" since="1">
-		<extends name="org/apache/http/client/methods/HttpRequestBase" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/net/URI;)V" />
-		<method name="getAllowedMethods(Lorg/apache/http/HttpResponse;)Ljava/util/Set;" />
-		<field name="METHOD_NAME" />
-	</class>
-	<class name="org/apache/http/client/methods/HttpPost" since="1">
-		<extends name="org/apache/http/client/methods/HttpEntityEnclosingRequestBase" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/net/URI;)V" />
-		<field name="METHOD_NAME" />
-	</class>
-	<class name="org/apache/http/client/methods/HttpPut" since="1">
-		<extends name="org/apache/http/client/methods/HttpEntityEnclosingRequestBase" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/net/URI;)V" />
-		<field name="METHOD_NAME" />
-	</class>
-	<class name="org/apache/http/client/methods/HttpRequestBase" since="1">
-		<extends name="org/apache/http/message/AbstractHttpMessage" />
-		<implements name="java/lang/Cloneable" />
-		<implements name="org/apache/http/client/methods/AbortableHttpRequest" />
-		<implements name="org/apache/http/client/methods/HttpUriRequest" />
-		<method name="&lt;init>()V" />
-		<method name="setURI(Ljava/net/URI;)V" />
-	</class>
-	<class name="org/apache/http/client/methods/HttpTrace" since="1">
-		<extends name="org/apache/http/client/methods/HttpRequestBase" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/net/URI;)V" />
-		<field name="METHOD_NAME" />
-	</class>
-	<class name="org/apache/http/client/methods/HttpUriRequest" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/HttpRequest" />
-		<method name="abort()V" />
-		<method name="getMethod()Ljava/lang/String;" />
-		<method name="getURI()Ljava/net/URI;" />
-		<method name="isAborted()Z" />
-	</class>
-	<class name="org/apache/http/client/params/AllClientPNames" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/auth/params/AuthPNames" />
-		<implements name="org/apache/http/client/params/ClientPNames" />
-		<implements name="org/apache/http/conn/params/ConnConnectionPNames" />
-		<implements name="org/apache/http/conn/params/ConnManagerPNames" />
-		<implements name="org/apache/http/conn/params/ConnRoutePNames" />
-		<implements name="org/apache/http/cookie/params/CookieSpecPNames" />
-		<implements name="org/apache/http/params/CoreConnectionPNames" />
-		<implements name="org/apache/http/params/CoreProtocolPNames" />
-	</class>
-	<class name="org/apache/http/client/params/AuthPolicy" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="BASIC" />
-		<field name="DIGEST" />
-		<field name="NTLM" />
-	</class>
-	<class name="org/apache/http/client/params/ClientPNames" since="1">
-		<extends name="java/lang/Object" />
-		<field name="ALLOW_CIRCULAR_REDIRECTS" />
-		<field name="CONNECTION_MANAGER_FACTORY" />
-		<field name="CONNECTION_MANAGER_FACTORY_CLASS_NAME" />
-		<field name="COOKIE_POLICY" />
-		<field name="DEFAULT_HEADERS" />
-		<field name="DEFAULT_HOST" />
-		<field name="HANDLE_AUTHENTICATION" />
-		<field name="HANDLE_REDIRECTS" />
-		<field name="MAX_REDIRECTS" />
-		<field name="REJECT_RELATIVE_REDIRECT" />
-		<field name="VIRTUAL_HOST" />
-	</class>
-	<class name="org/apache/http/client/params/ClientParamBean" since="1">
-		<extends name="org/apache/http/params/HttpAbstractParamBean" />
-		<method name="&lt;init>(Lorg/apache/http/params/HttpParams;)V" />
-		<method name="setAllowCircularRedirects(Z)V" />
-		<method name="setConnectionManagerFactory(Lorg/apache/http/conn/ClientConnectionManagerFactory;)V" />
-		<method name="setConnectionManagerFactoryClassName(Ljava/lang/String;)V" />
-		<method name="setCookiePolicy(Ljava/lang/String;)V" />
-		<method name="setDefaultHeaders(Ljava/util/Collection;)V" />
-		<method name="setDefaultHost(Lorg/apache/http/HttpHost;)V" />
-		<method name="setHandleAuthentication(Z)V" />
-		<method name="setHandleRedirects(Z)V" />
-		<method name="setMaxRedirects(I)V" />
-		<method name="setRejectRelativeRedirect(Z)V" />
-		<method name="setVirtualHost(Lorg/apache/http/HttpHost;)V" />
-	</class>
-	<class name="org/apache/http/client/params/CookiePolicy" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<field name="BEST_MATCH" />
-		<field name="BROWSER_COMPATIBILITY" />
-		<field name="NETSCAPE" />
-		<field name="RFC_2109" />
-		<field name="RFC_2965" />
-	</class>
-	<class name="org/apache/http/client/params/HttpClientParams" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getCookiePolicy(Lorg/apache/http/params/HttpParams;)Ljava/lang/String;" />
-		<method name="isAuthenticating(Lorg/apache/http/params/HttpParams;)Z" />
-		<method name="isRedirecting(Lorg/apache/http/params/HttpParams;)Z" />
-		<method name="setAuthenticating(Lorg/apache/http/params/HttpParams;Z)V" />
-		<method name="setCookiePolicy(Lorg/apache/http/params/HttpParams;Ljava/lang/String;)V" />
-		<method name="setRedirecting(Lorg/apache/http/params/HttpParams;Z)V" />
-	</class>
-	<class name="org/apache/http/client/protocol/ClientContext" since="1">
-		<extends name="java/lang/Object" />
-		<field name="AUTHSCHEME_REGISTRY" />
-		<field name="AUTH_SCHEME_PREF" />
-		<field name="COOKIESPEC_REGISTRY" />
-		<field name="COOKIE_ORIGIN" />
-		<field name="COOKIE_SPEC" />
-		<field name="COOKIE_STORE" />
-		<field name="CREDS_PROVIDER" />
-		<field name="PROXY_AUTH_STATE" />
-		<field name="TARGET_AUTH_STATE" />
-		<field name="USER_TOKEN" />
-	</class>
-	<class name="org/apache/http/client/protocol/ClientContextConfigurer" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/client/protocol/ClientContext" />
-		<method name="&lt;init>(Lorg/apache/http/protocol/HttpContext;)V" />
-		<method name="setAuthSchemePref(Ljava/util/List;)V" />
-		<method name="setAuthSchemeRegistry(Lorg/apache/http/auth/AuthSchemeRegistry;)V" />
-		<method name="setCookieSpecRegistry(Lorg/apache/http/cookie/CookieSpecRegistry;)V" />
-		<method name="setCookieStore(Lorg/apache/http/client/CookieStore;)V" />
-		<method name="setCredentialsProvider(Lorg/apache/http/client/CredentialsProvider;)V" />
-	</class>
-	<class name="org/apache/http/client/protocol/RequestAddCookies" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/HttpRequestInterceptor" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="org/apache/http/client/protocol/RequestDefaultHeaders" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/HttpRequestInterceptor" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="org/apache/http/client/protocol/RequestProxyAuthentication" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/HttpRequestInterceptor" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="org/apache/http/client/protocol/RequestTargetAuthentication" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/HttpRequestInterceptor" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="org/apache/http/client/protocol/ResponseProcessCookies" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/HttpResponseInterceptor" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="org/apache/http/client/utils/CloneUtils" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="clone(Ljava/lang/Object;)Ljava/lang/Object;" />
-	</class>
-	<class name="org/apache/http/client/utils/URIUtils" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="createURI(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/net/URI;" />
-		<method name="resolve(Ljava/net/URI;Ljava/lang/String;)Ljava/net/URI;" />
-		<method name="resolve(Ljava/net/URI;Ljava/net/URI;)Ljava/net/URI;" />
-		<method name="rewriteURI(Ljava/net/URI;Lorg/apache/http/HttpHost;)Ljava/net/URI;" />
-		<method name="rewriteURI(Ljava/net/URI;Lorg/apache/http/HttpHost;Z)Ljava/net/URI;" />
-	</class>
-	<class name="org/apache/http/client/utils/URLEncodedUtils" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="format(Ljava/util/List;Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="isEncoded(Lorg/apache/http/HttpEntity;)Z" />
-		<method name="parse(Ljava/net/URI;Ljava/lang/String;)Ljava/util/List;" />
-		<method name="parse(Ljava/util/List;Ljava/util/Scanner;Ljava/lang/String;)V" />
-		<method name="parse(Lorg/apache/http/HttpEntity;)Ljava/util/List;" />
-		<field name="CONTENT_TYPE" />
-	</class>
-	<class name="org/apache/http/conn/BasicEofSensorWatcher" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/conn/EofSensorWatcher" />
-		<method name="&lt;init>(Lorg/apache/http/conn/ManagedClientConnection;Z)V" />
-		<field name="attemptReuse" />
-		<field name="managedConn" />
-	</class>
-	<class name="org/apache/http/conn/BasicManagedEntity" since="1">
-		<extends name="org/apache/http/entity/HttpEntityWrapper" />
-		<implements name="org/apache/http/conn/ConnectionReleaseTrigger" />
-		<implements name="org/apache/http/conn/EofSensorWatcher" />
-		<method name="&lt;init>(Lorg/apache/http/HttpEntity;Lorg/apache/http/conn/ManagedClientConnection;Z)V" />
-		<method name="releaseManagedConnection()V" />
-		<field name="attemptReuse" />
-		<field name="managedConn" />
-	</class>
-	<class name="org/apache/http/conn/ClientConnectionManager" since="1">
-		<extends name="java/lang/Object" />
-		<method name="closeExpiredConnections()V" />
-		<method name="closeIdleConnections(JLjava/util/concurrent/TimeUnit;)V" />
-		<method name="getSchemeRegistry()Lorg/apache/http/conn/scheme/SchemeRegistry;" />
-		<method name="releaseConnection(Lorg/apache/http/conn/ManagedClientConnection;JLjava/util/concurrent/TimeUnit;)V" />
-		<method name="requestConnection(Lorg/apache/http/conn/routing/HttpRoute;Ljava/lang/Object;)Lorg/apache/http/conn/ClientConnectionRequest;" />
-		<method name="shutdown()V" />
-	</class>
-	<class name="org/apache/http/conn/ClientConnectionManagerFactory" since="1">
-		<extends name="java/lang/Object" />
-		<method name="newInstance(Lorg/apache/http/params/HttpParams;Lorg/apache/http/conn/scheme/SchemeRegistry;)Lorg/apache/http/conn/ClientConnectionManager;" />
-	</class>
-	<class name="org/apache/http/conn/ClientConnectionOperator" since="1">
-		<extends name="java/lang/Object" />
-		<method name="createConnection()Lorg/apache/http/conn/OperatedClientConnection;" />
-		<method name="openConnection(Lorg/apache/http/conn/OperatedClientConnection;Lorg/apache/http/HttpHost;Ljava/net/InetAddress;Lorg/apache/http/protocol/HttpContext;Lorg/apache/http/params/HttpParams;)V" />
-		<method name="updateSecureConnection(Lorg/apache/http/conn/OperatedClientConnection;Lorg/apache/http/HttpHost;Lorg/apache/http/protocol/HttpContext;Lorg/apache/http/params/HttpParams;)V" />
-	</class>
-	<class name="org/apache/http/conn/ClientConnectionRequest" since="1">
-		<extends name="java/lang/Object" />
-		<method name="abortRequest()V" />
-		<method name="getConnection(JLjava/util/concurrent/TimeUnit;)Lorg/apache/http/conn/ManagedClientConnection;" />
-	</class>
-	<class name="org/apache/http/conn/ConnectTimeoutException" since="1">
-		<extends name="java/io/InterruptedIOException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="org/apache/http/conn/ConnectionKeepAliveStrategy" since="1">
-		<extends name="java/lang/Object" />
-		<method name="getKeepAliveDuration(Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)J" />
-	</class>
-	<class name="org/apache/http/conn/ConnectionPoolTimeoutException" since="1">
-		<extends name="org/apache/http/conn/ConnectTimeoutException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="org/apache/http/conn/ConnectionReleaseTrigger" since="1">
-		<extends name="java/lang/Object" />
-		<method name="abortConnection()V" />
-		<method name="releaseConnection()V" />
-	</class>
-	<class name="org/apache/http/conn/EofSensorInputStream" since="1">
-		<extends name="java/io/InputStream" />
-		<implements name="org/apache/http/conn/ConnectionReleaseTrigger" />
-		<method name="&lt;init>(Ljava/io/InputStream;Lorg/apache/http/conn/EofSensorWatcher;)V" />
-		<method name="checkAbort()V" />
-		<method name="checkClose()V" />
-		<method name="checkEOF(I)V" />
-		<method name="isReadAllowed()Z" />
-		<field name="wrappedStream" />
-	</class>
-	<class name="org/apache/http/conn/EofSensorWatcher" since="1">
-		<extends name="java/lang/Object" />
-		<method name="eofDetected(Ljava/io/InputStream;)Z" />
-		<method name="streamAbort(Ljava/io/InputStream;)Z" />
-		<method name="streamClosed(Ljava/io/InputStream;)Z" />
-	</class>
-	<class name="org/apache/http/conn/HttpHostConnectException" since="1">
-		<extends name="java/net/ConnectException" />
-		<method name="&lt;init>(Lorg/apache/http/HttpHost;Ljava/net/ConnectException;)V" />
-		<method name="getHost()Lorg/apache/http/HttpHost;" />
-	</class>
-	<class name="org/apache/http/conn/ManagedClientConnection" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/HttpClientConnection" />
-		<implements name="org/apache/http/HttpInetConnection" />
-		<implements name="org/apache/http/conn/ConnectionReleaseTrigger" />
-		<method name="getRoute()Lorg/apache/http/conn/routing/HttpRoute;" />
-		<method name="getSSLSession()Ljavax/net/ssl/SSLSession;" />
-		<method name="getState()Ljava/lang/Object;" />
-		<method name="isMarkedReusable()Z" />
-		<method name="isSecure()Z" />
-		<method name="layerProtocol(Lorg/apache/http/protocol/HttpContext;Lorg/apache/http/params/HttpParams;)V" />
-		<method name="markReusable()V" />
-		<method name="open(Lorg/apache/http/conn/routing/HttpRoute;Lorg/apache/http/protocol/HttpContext;Lorg/apache/http/params/HttpParams;)V" />
-		<method name="setIdleDuration(JLjava/util/concurrent/TimeUnit;)V" />
-		<method name="setState(Ljava/lang/Object;)V" />
-		<method name="tunnelProxy(Lorg/apache/http/HttpHost;ZLorg/apache/http/params/HttpParams;)V" />
-		<method name="tunnelTarget(ZLorg/apache/http/params/HttpParams;)V" />
-		<method name="unmarkReusable()V" />
-	</class>
-	<class name="org/apache/http/conn/MultihomePlainSocketFactory" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/conn/scheme/SocketFactory" />
-		<method name="&lt;init>()V" />
-		<method name="getSocketFactory()Lorg/apache/http/conn/MultihomePlainSocketFactory;" />
-	</class>
-	<class name="org/apache/http/conn/OperatedClientConnection" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/HttpClientConnection" />
-		<implements name="org/apache/http/HttpInetConnection" />
-		<method name="getSocket()Ljava/net/Socket;" />
-		<method name="getTargetHost()Lorg/apache/http/HttpHost;" />
-		<method name="isSecure()Z" />
-		<method name="openCompleted(ZLorg/apache/http/params/HttpParams;)V" />
-		<method name="opening(Ljava/net/Socket;Lorg/apache/http/HttpHost;)V" />
-		<method name="update(Ljava/net/Socket;Lorg/apache/http/HttpHost;ZLorg/apache/http/params/HttpParams;)V" />
-	</class>
-	<class name="org/apache/http/conn/params/ConnConnectionPNames" since="1">
-		<extends name="java/lang/Object" />
-		<field name="MAX_STATUS_LINE_GARBAGE" />
-	</class>
-	<class name="org/apache/http/conn/params/ConnConnectionParamBean" since="1">
-		<extends name="org/apache/http/params/HttpAbstractParamBean" />
-		<method name="&lt;init>(Lorg/apache/http/params/HttpParams;)V" />
-		<method name="setMaxStatusLineGarbage(I)V" />
-	</class>
-	<class name="org/apache/http/conn/params/ConnManagerPNames" since="1">
-		<extends name="java/lang/Object" />
-		<field name="MAX_CONNECTIONS_PER_ROUTE" />
-		<field name="MAX_TOTAL_CONNECTIONS" />
-		<field name="TIMEOUT" />
-	</class>
-	<class name="org/apache/http/conn/params/ConnManagerParamBean" since="1">
-		<extends name="org/apache/http/params/HttpAbstractParamBean" />
-		<method name="&lt;init>(Lorg/apache/http/params/HttpParams;)V" />
-		<method name="setConnectionsPerRoute(Lorg/apache/http/conn/params/ConnPerRouteBean;)V" />
-		<method name="setMaxTotalConnections(I)V" />
-		<method name="setTimeout(J)V" />
-	</class>
-	<class name="org/apache/http/conn/params/ConnManagerParams" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/conn/params/ConnManagerPNames" />
-		<method name="&lt;init>()V" />
-		<method name="getMaxConnectionsPerRoute(Lorg/apache/http/params/HttpParams;)Lorg/apache/http/conn/params/ConnPerRoute;" />
-		<method name="getMaxTotalConnections(Lorg/apache/http/params/HttpParams;)I" />
-		<method name="getTimeout(Lorg/apache/http/params/HttpParams;)J" />
-		<method name="setMaxConnectionsPerRoute(Lorg/apache/http/params/HttpParams;Lorg/apache/http/conn/params/ConnPerRoute;)V" />
-		<method name="setMaxTotalConnections(Lorg/apache/http/params/HttpParams;I)V" />
-		<method name="setTimeout(Lorg/apache/http/params/HttpParams;J)V" />
-		<field name="DEFAULT_MAX_TOTAL_CONNECTIONS" />
-	</class>
-	<class name="org/apache/http/conn/params/ConnPerRoute" since="1">
-		<extends name="java/lang/Object" />
-		<method name="getMaxForRoute(Lorg/apache/http/conn/routing/HttpRoute;)I" />
-	</class>
-	<class name="org/apache/http/conn/params/ConnPerRouteBean" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/conn/params/ConnPerRoute" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(I)V" />
-		<method name="getDefaultMax()I" />
-		<method name="setDefaultMaxPerRoute(I)V" />
-		<method name="setMaxForRoute(Lorg/apache/http/conn/routing/HttpRoute;I)V" />
-		<method name="setMaxForRoutes(Ljava/util/Map;)V" />
-		<field name="DEFAULT_MAX_CONNECTIONS_PER_ROUTE" />
-	</class>
-	<class name="org/apache/http/conn/params/ConnRoutePNames" since="1">
-		<extends name="java/lang/Object" />
-		<field name="DEFAULT_PROXY" />
-		<field name="FORCED_ROUTE" />
-		<field name="LOCAL_ADDRESS" />
-	</class>
-	<class name="org/apache/http/conn/params/ConnRouteParamBean" since="1">
-		<extends name="org/apache/http/params/HttpAbstractParamBean" />
-		<method name="&lt;init>(Lorg/apache/http/params/HttpParams;)V" />
-		<method name="setDefaultProxy(Lorg/apache/http/HttpHost;)V" />
-		<method name="setForcedRoute(Lorg/apache/http/conn/routing/HttpRoute;)V" />
-		<method name="setLocalAddress(Ljava/net/InetAddress;)V" />
-	</class>
-	<class name="org/apache/http/conn/params/ConnRouteParams" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/conn/params/ConnRoutePNames" />
-		<method name="&lt;init>()V" />
-		<method name="getDefaultProxy(Lorg/apache/http/params/HttpParams;)Lorg/apache/http/HttpHost;" />
-		<method name="getForcedRoute(Lorg/apache/http/params/HttpParams;)Lorg/apache/http/conn/routing/HttpRoute;" />
-		<method name="getLocalAddress(Lorg/apache/http/params/HttpParams;)Ljava/net/InetAddress;" />
-		<method name="setDefaultProxy(Lorg/apache/http/params/HttpParams;Lorg/apache/http/HttpHost;)V" />
-		<method name="setForcedRoute(Lorg/apache/http/params/HttpParams;Lorg/apache/http/conn/routing/HttpRoute;)V" />
-		<method name="setLocalAddress(Lorg/apache/http/params/HttpParams;Ljava/net/InetAddress;)V" />
-		<field name="NO_HOST" />
-		<field name="NO_ROUTE" />
-	</class>
-	<class name="org/apache/http/conn/routing/BasicRouteDirector" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/conn/routing/HttpRouteDirector" />
-		<method name="&lt;init>()V" />
-		<method name="directStep(Lorg/apache/http/conn/routing/RouteInfo;Lorg/apache/http/conn/routing/RouteInfo;)I" />
-		<method name="firstStep(Lorg/apache/http/conn/routing/RouteInfo;)I" />
-		<method name="proxiedStep(Lorg/apache/http/conn/routing/RouteInfo;Lorg/apache/http/conn/routing/RouteInfo;)I" />
-	</class>
-	<class name="org/apache/http/conn/routing/HttpRoute" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/Cloneable" />
-		<implements name="org/apache/http/conn/routing/RouteInfo" />
-		<method name="&lt;init>(Lorg/apache/http/HttpHost;)V" />
-		<method name="&lt;init>(Lorg/apache/http/HttpHost;Ljava/net/InetAddress;Lorg/apache/http/HttpHost;Z)V" />
-		<method name="&lt;init>(Lorg/apache/http/HttpHost;Ljava/net/InetAddress;Lorg/apache/http/HttpHost;ZLorg/apache/http/conn/routing/RouteInfo$TunnelType;Lorg/apache/http/conn/routing/RouteInfo$LayerType;)V" />
-		<method name="&lt;init>(Lorg/apache/http/HttpHost;Ljava/net/InetAddress;Z)V" />
-		<method name="&lt;init>(Lorg/apache/http/HttpHost;Ljava/net/InetAddress;[Lorg/apache/http/HttpHost;ZLorg/apache/http/conn/routing/RouteInfo$TunnelType;Lorg/apache/http/conn/routing/RouteInfo$LayerType;)V" />
-	</class>
-	<class name="org/apache/http/conn/routing/HttpRouteDirector" since="1">
-		<extends name="java/lang/Object" />
-		<method name="nextStep(Lorg/apache/http/conn/routing/RouteInfo;Lorg/apache/http/conn/routing/RouteInfo;)I" />
-		<field name="COMPLETE" />
-		<field name="CONNECT_PROXY" />
-		<field name="CONNECT_TARGET" />
-		<field name="LAYER_PROTOCOL" />
-		<field name="TUNNEL_PROXY" />
-		<field name="TUNNEL_TARGET" />
-		<field name="UNREACHABLE" />
-	</class>
-	<class name="org/apache/http/conn/routing/HttpRoutePlanner" since="1">
-		<extends name="java/lang/Object" />
-		<method name="determineRoute(Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/conn/routing/HttpRoute;" />
-	</class>
-	<class name="org/apache/http/conn/routing/RouteInfo" since="1">
-		<extends name="java/lang/Object" />
-		<method name="getHopCount()I" />
-		<method name="getHopTarget(I)Lorg/apache/http/HttpHost;" />
-		<method name="getLayerType()Lorg/apache/http/conn/routing/RouteInfo$LayerType;" />
-		<method name="getLocalAddress()Ljava/net/InetAddress;" />
-		<method name="getProxyHost()Lorg/apache/http/HttpHost;" />
-		<method name="getTargetHost()Lorg/apache/http/HttpHost;" />
-		<method name="getTunnelType()Lorg/apache/http/conn/routing/RouteInfo$TunnelType;" />
-		<method name="isLayered()Z" />
-		<method name="isSecure()Z" />
-		<method name="isTunnelled()Z" />
-	</class>
-	<class name="org/apache/http/conn/routing/RouteInfo$LayerType" since="1">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Lorg/apache/http/conn/routing/RouteInfo$LayerType;" />
-		<method name="values()[Lorg/apache/http/conn/routing/RouteInfo$LayerType;" />
-		<field name="LAYERED" />
-		<field name="PLAIN" />
-	</class>
-	<class name="org/apache/http/conn/routing/RouteInfo$TunnelType" since="1">
-		<extends name="java/lang/Enum" />
-		<method name="valueOf(Ljava/lang/String;)Lorg/apache/http/conn/routing/RouteInfo$TunnelType;" />
-		<method name="values()[Lorg/apache/http/conn/routing/RouteInfo$TunnelType;" />
-		<field name="PLAIN" />
-		<field name="TUNNELLED" />
-	</class>
-	<class name="org/apache/http/conn/routing/RouteTracker" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/Cloneable" />
-		<implements name="org/apache/http/conn/routing/RouteInfo" />
-		<method name="&lt;init>(Lorg/apache/http/HttpHost;Ljava/net/InetAddress;)V" />
-		<method name="&lt;init>(Lorg/apache/http/conn/routing/HttpRoute;)V" />
-		<method name="connectProxy(Lorg/apache/http/HttpHost;Z)V" />
-		<method name="connectTarget(Z)V" />
-		<method name="isConnected()Z" />
-		<method name="layerProtocol(Z)V" />
-		<method name="toRoute()Lorg/apache/http/conn/routing/HttpRoute;" />
-		<method name="tunnelProxy(Lorg/apache/http/HttpHost;Z)V" />
-		<method name="tunnelTarget(Z)V" />
-	</class>
-	<class name="org/apache/http/conn/scheme/HostNameResolver" since="1">
-		<extends name="java/lang/Object" />
-		<method name="resolve(Ljava/lang/String;)Ljava/net/InetAddress;" />
-	</class>
-	<class name="org/apache/http/conn/scheme/LayeredSocketFactory" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/conn/scheme/SocketFactory" />
-		<method name="createSocket(Ljava/net/Socket;Ljava/lang/String;IZ)Ljava/net/Socket;" />
-	</class>
-	<class name="org/apache/http/conn/scheme/PlainSocketFactory" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/conn/scheme/SocketFactory" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Lorg/apache/http/conn/scheme/HostNameResolver;)V" />
-		<method name="getSocketFactory()Lorg/apache/http/conn/scheme/PlainSocketFactory;" />
-	</class>
-	<class name="org/apache/http/conn/scheme/Scheme" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/lang/String;Lorg/apache/http/conn/scheme/SocketFactory;I)V" />
-		<method name="getDefaultPort()I" />
-		<method name="getName()Ljava/lang/String;" />
-		<method name="getSocketFactory()Lorg/apache/http/conn/scheme/SocketFactory;" />
-		<method name="isLayered()Z" />
-		<method name="resolvePort(I)I" />
-	</class>
-	<class name="org/apache/http/conn/scheme/SchemeRegistry" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="get(Ljava/lang/String;)Lorg/apache/http/conn/scheme/Scheme;" />
-		<method name="getScheme(Ljava/lang/String;)Lorg/apache/http/conn/scheme/Scheme;" />
-		<method name="getScheme(Lorg/apache/http/HttpHost;)Lorg/apache/http/conn/scheme/Scheme;" />
-		<method name="getSchemeNames()Ljava/util/List;" />
-		<method name="register(Lorg/apache/http/conn/scheme/Scheme;)Lorg/apache/http/conn/scheme/Scheme;" />
-		<method name="setItems(Ljava/util/Map;)V" />
-		<method name="unregister(Ljava/lang/String;)Lorg/apache/http/conn/scheme/Scheme;" />
-	</class>
-	<class name="org/apache/http/conn/scheme/SocketFactory" since="1">
-		<extends name="java/lang/Object" />
-		<method name="connectSocket(Ljava/net/Socket;Ljava/lang/String;ILjava/net/InetAddress;ILorg/apache/http/params/HttpParams;)Ljava/net/Socket;" />
-		<method name="createSocket()Ljava/net/Socket;" />
-		<method name="isSecure(Ljava/net/Socket;)Z" />
-	</class>
-	<class name="org/apache/http/conn/ssl/AbstractVerifier" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/conn/ssl/X509HostnameVerifier" />
-		<method name="&lt;init>()V" />
-		<method name="acceptableCountryWildcard(Ljava/lang/String;)Z" />
-		<method name="countDots(Ljava/lang/String;)I" />
-		<method name="getCNs(Ljava/security/cert/X509Certificate;)[Ljava/lang/String;" />
-		<method name="getDNSSubjectAlts(Ljava/security/cert/X509Certificate;)[Ljava/lang/String;" />
-		<method name="verify(Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;Z)V" />
-	</class>
-	<class name="org/apache/http/conn/ssl/AllowAllHostnameVerifier" since="1">
-		<extends name="org/apache/http/conn/ssl/AbstractVerifier" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="org/apache/http/conn/ssl/BrowserCompatHostnameVerifier" since="1">
-		<extends name="org/apache/http/conn/ssl/AbstractVerifier" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="org/apache/http/conn/ssl/SSLSocketFactory" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/conn/scheme/LayeredSocketFactory" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/security/KeyStore;Ljava/lang/String;Ljava/security/KeyStore;Ljava/security/SecureRandom;Lorg/apache/http/conn/scheme/HostNameResolver;)V" />
-		<method name="&lt;init>(Ljava/security/KeyStore;)V" />
-		<method name="&lt;init>(Ljava/security/KeyStore;Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/security/KeyStore;Ljava/lang/String;Ljava/security/KeyStore;)V" />
-		<method name="getHostnameVerifier()Lorg/apache/http/conn/ssl/X509HostnameVerifier;" />
-		<method name="getSocketFactory()Lorg/apache/http/conn/ssl/SSLSocketFactory;" />
-		<method name="setHostnameVerifier(Lorg/apache/http/conn/ssl/X509HostnameVerifier;)V" />
-		<field name="ALLOW_ALL_HOSTNAME_VERIFIER" />
-		<field name="BROWSER_COMPATIBLE_HOSTNAME_VERIFIER" />
-		<field name="SSL" />
-		<field name="SSLV2" />
-		<field name="STRICT_HOSTNAME_VERIFIER" />
-		<field name="TLS" />
-	</class>
-	<class name="org/apache/http/conn/ssl/StrictHostnameVerifier" since="1">
-		<extends name="org/apache/http/conn/ssl/AbstractVerifier" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="org/apache/http/conn/ssl/X509HostnameVerifier" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="javax/net/ssl/HostnameVerifier" />
-		<method name="verify(Ljava/lang/String;Ljava/security/cert/X509Certificate;)V" />
-		<method name="verify(Ljava/lang/String;Ljavax/net/ssl/SSLSocket;)V" />
-		<method name="verify(Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;)V" />
-	</class>
-	<class name="org/apache/http/conn/util/InetAddressUtils" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="isIPv4Address(Ljava/lang/String;)Z" />
-		<method name="isIPv6Address(Ljava/lang/String;)Z" />
-		<method name="isIPv6HexCompressedAddress(Ljava/lang/String;)Z" />
-		<method name="isIPv6StdAddress(Ljava/lang/String;)Z" />
-	</class>
-	<class name="org/apache/http/cookie/ClientCookie" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/cookie/Cookie" />
-		<method name="containsAttribute(Ljava/lang/String;)Z" />
-		<method name="getAttribute(Ljava/lang/String;)Ljava/lang/String;" />
-		<field name="COMMENTURL_ATTR" />
-		<field name="COMMENT_ATTR" />
-		<field name="DISCARD_ATTR" />
-		<field name="DOMAIN_ATTR" />
-		<field name="EXPIRES_ATTR" />
-		<field name="MAX_AGE_ATTR" />
-		<field name="PATH_ATTR" />
-		<field name="PORT_ATTR" />
-		<field name="SECURE_ATTR" />
-		<field name="VERSION_ATTR" />
-	</class>
-	<class name="org/apache/http/cookie/Cookie" since="1">
-		<extends name="java/lang/Object" />
-		<method name="getComment()Ljava/lang/String;" />
-		<method name="getCommentURL()Ljava/lang/String;" />
-		<method name="getDomain()Ljava/lang/String;" />
-		<method name="getExpiryDate()Ljava/util/Date;" />
-		<method name="getName()Ljava/lang/String;" />
-		<method name="getPath()Ljava/lang/String;" />
-		<method name="getPorts()[I" />
-		<method name="getValue()Ljava/lang/String;" />
-		<method name="getVersion()I" />
-		<method name="isExpired(Ljava/util/Date;)Z" />
-		<method name="isPersistent()Z" />
-		<method name="isSecure()Z" />
-	</class>
-	<class name="org/apache/http/cookie/CookieAttributeHandler" since="1">
-		<extends name="java/lang/Object" />
-		<method name="match(Lorg/apache/http/cookie/Cookie;Lorg/apache/http/cookie/CookieOrigin;)Z" />
-		<method name="parse(Lorg/apache/http/cookie/SetCookie;Ljava/lang/String;)V" />
-		<method name="validate(Lorg/apache/http/cookie/Cookie;Lorg/apache/http/cookie/CookieOrigin;)V" />
-	</class>
-	<class name="org/apache/http/cookie/CookieIdentityComparator" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<implements name="java/util/Comparator" />
-		<method name="&lt;init>()V" />
-		<method name="compare(Lorg/apache/http/cookie/Cookie;Lorg/apache/http/cookie/Cookie;)I" />
-	</class>
-	<class name="org/apache/http/cookie/CookieOrigin" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/lang/String;ILjava/lang/String;Z)V" />
-		<method name="getHost()Ljava/lang/String;" />
-		<method name="getPath()Ljava/lang/String;" />
-		<method name="getPort()I" />
-		<method name="isSecure()Z" />
-	</class>
-	<class name="org/apache/http/cookie/CookiePathComparator" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/io/Serializable" />
-		<implements name="java/util/Comparator" />
-		<method name="&lt;init>()V" />
-		<method name="compare(Lorg/apache/http/cookie/Cookie;Lorg/apache/http/cookie/Cookie;)I" />
-	</class>
-	<class name="org/apache/http/cookie/CookieSpec" since="1">
-		<extends name="java/lang/Object" />
-		<method name="formatCookies(Ljava/util/List;)Ljava/util/List;" />
-		<method name="getVersion()I" />
-		<method name="getVersionHeader()Lorg/apache/http/Header;" />
-		<method name="match(Lorg/apache/http/cookie/Cookie;Lorg/apache/http/cookie/CookieOrigin;)Z" />
-		<method name="parse(Lorg/apache/http/Header;Lorg/apache/http/cookie/CookieOrigin;)Ljava/util/List;" />
-		<method name="validate(Lorg/apache/http/cookie/Cookie;Lorg/apache/http/cookie/CookieOrigin;)V" />
-	</class>
-	<class name="org/apache/http/cookie/CookieSpecFactory" since="1">
-		<extends name="java/lang/Object" />
-		<method name="newInstance(Lorg/apache/http/params/HttpParams;)Lorg/apache/http/cookie/CookieSpec;" />
-	</class>
-	<class name="org/apache/http/cookie/CookieSpecRegistry" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getCookieSpec(Ljava/lang/String;)Lorg/apache/http/cookie/CookieSpec;" />
-		<method name="getCookieSpec(Ljava/lang/String;Lorg/apache/http/params/HttpParams;)Lorg/apache/http/cookie/CookieSpec;" />
-		<method name="getSpecNames()Ljava/util/List;" />
-		<method name="register(Ljava/lang/String;Lorg/apache/http/cookie/CookieSpecFactory;)V" />
-		<method name="setItems(Ljava/util/Map;)V" />
-		<method name="unregister(Ljava/lang/String;)V" />
-	</class>
-	<class name="org/apache/http/cookie/MalformedCookieException" since="1">
-		<extends name="org/apache/http/ProtocolException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="org/apache/http/cookie/SM" since="1">
-		<extends name="java/lang/Object" />
-		<field name="COOKIE" />
-		<field name="COOKIE2" />
-		<field name="SET_COOKIE" />
-		<field name="SET_COOKIE2" />
-	</class>
-	<class name="org/apache/http/cookie/SetCookie" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/cookie/Cookie" />
-		<method name="setComment(Ljava/lang/String;)V" />
-		<method name="setDomain(Ljava/lang/String;)V" />
-		<method name="setExpiryDate(Ljava/util/Date;)V" />
-		<method name="setPath(Ljava/lang/String;)V" />
-		<method name="setSecure(Z)V" />
-		<method name="setValue(Ljava/lang/String;)V" />
-		<method name="setVersion(I)V" />
-	</class>
-	<class name="org/apache/http/cookie/SetCookie2" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/cookie/SetCookie" />
-		<method name="setCommentURL(Ljava/lang/String;)V" />
-		<method name="setDiscard(Z)V" />
-		<method name="setPorts([I)V" />
-	</class>
-	<class name="org/apache/http/cookie/params/CookieSpecPNames" since="1">
-		<extends name="java/lang/Object" />
-		<field name="DATE_PATTERNS" />
-		<field name="SINGLE_COOKIE_HEADER" />
-	</class>
-	<class name="org/apache/http/cookie/params/CookieSpecParamBean" since="1">
-		<extends name="org/apache/http/params/HttpAbstractParamBean" />
-		<method name="&lt;init>(Lorg/apache/http/params/HttpParams;)V" />
-		<method name="setDatePatterns(Ljava/util/Collection;)V" />
-		<method name="setSingleHeader(Z)V" />
-	</class>
-	<class name="org/apache/http/entity/AbstractHttpEntity" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/HttpEntity" />
-		<method name="&lt;init>()V" />
-		<method name="setChunked(Z)V" />
-		<method name="setContentEncoding(Ljava/lang/String;)V" />
-		<method name="setContentEncoding(Lorg/apache/http/Header;)V" />
-		<method name="setContentType(Ljava/lang/String;)V" />
-		<method name="setContentType(Lorg/apache/http/Header;)V" />
-		<field name="chunked" />
-		<field name="contentEncoding" />
-		<field name="contentType" />
-	</class>
-	<class name="org/apache/http/entity/BasicHttpEntity" since="1">
-		<extends name="org/apache/http/entity/AbstractHttpEntity" />
-		<method name="&lt;init>()V" />
-		<method name="setContent(Ljava/io/InputStream;)V" />
-		<method name="setContentLength(J)V" />
-	</class>
-	<class name="org/apache/http/entity/BufferedHttpEntity" since="1">
-		<extends name="org/apache/http/entity/HttpEntityWrapper" />
-		<method name="&lt;init>(Lorg/apache/http/HttpEntity;)V" />
-	</class>
-	<class name="org/apache/http/entity/ByteArrayEntity" since="1">
-		<extends name="org/apache/http/entity/AbstractHttpEntity" />
-		<implements name="java/lang/Cloneable" />
-		<method name="&lt;init>([B)V" />
-		<field name="content" />
-	</class>
-	<class name="org/apache/http/entity/ContentLengthStrategy" since="1">
-		<extends name="java/lang/Object" />
-		<method name="determineLength(Lorg/apache/http/HttpMessage;)J" />
-		<field name="CHUNKED" />
-		<field name="IDENTITY" />
-	</class>
-	<class name="org/apache/http/entity/ContentProducer" since="1">
-		<extends name="java/lang/Object" />
-		<method name="writeTo(Ljava/io/OutputStream;)V" />
-	</class>
-	<class name="org/apache/http/entity/EntityTemplate" since="1">
-		<extends name="org/apache/http/entity/AbstractHttpEntity" />
-		<method name="&lt;init>(Lorg/apache/http/entity/ContentProducer;)V" />
-	</class>
-	<class name="org/apache/http/entity/FileEntity" since="1">
-		<extends name="org/apache/http/entity/AbstractHttpEntity" />
-		<implements name="java/lang/Cloneable" />
-		<method name="&lt;init>(Ljava/io/File;Ljava/lang/String;)V" />
-		<field name="file" />
-	</class>
-	<class name="org/apache/http/entity/HttpEntityWrapper" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/HttpEntity" />
-		<method name="&lt;init>(Lorg/apache/http/HttpEntity;)V" />
-		<field name="wrappedEntity" />
-	</class>
-	<class name="org/apache/http/entity/InputStreamEntity" since="1">
-		<extends name="org/apache/http/entity/AbstractHttpEntity" />
-		<method name="&lt;init>(Ljava/io/InputStream;J)V" />
-	</class>
-	<class name="org/apache/http/entity/SerializableEntity" since="1">
-		<extends name="org/apache/http/entity/AbstractHttpEntity" />
-		<method name="&lt;init>(Ljava/io/Serializable;Z)V" />
-	</class>
-	<class name="org/apache/http/entity/StringEntity" since="1">
-		<extends name="org/apache/http/entity/AbstractHttpEntity" />
-		<implements name="java/lang/Cloneable" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
-		<field name="content" />
-	</class>
-	<class name="org/apache/http/impl/AbstractHttpClientConnection" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/HttpClientConnection" />
-		<method name="&lt;init>()V" />
-		<method name="assertOpen()V" />
-		<method name="createEntityDeserializer()Lorg/apache/http/impl/entity/EntityDeserializer;" />
-		<method name="createEntitySerializer()Lorg/apache/http/impl/entity/EntitySerializer;" />
-		<method name="createHttpResponseFactory()Lorg/apache/http/HttpResponseFactory;" />
-		<method name="createRequestWriter(Lorg/apache/http/io/SessionOutputBuffer;Lorg/apache/http/params/HttpParams;)Lorg/apache/http/io/HttpMessageWriter;" />
-		<method name="createResponseParser(Lorg/apache/http/io/SessionInputBuffer;Lorg/apache/http/HttpResponseFactory;Lorg/apache/http/params/HttpParams;)Lorg/apache/http/io/HttpMessageParser;" />
-		<method name="doFlush()V" />
-		<method name="init(Lorg/apache/http/io/SessionInputBuffer;Lorg/apache/http/io/SessionOutputBuffer;Lorg/apache/http/params/HttpParams;)V" />
-	</class>
-	<class name="org/apache/http/impl/AbstractHttpServerConnection" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/HttpServerConnection" />
-		<method name="&lt;init>()V" />
-		<method name="assertOpen()V" />
-		<method name="createEntityDeserializer()Lorg/apache/http/impl/entity/EntityDeserializer;" />
-		<method name="createEntitySerializer()Lorg/apache/http/impl/entity/EntitySerializer;" />
-		<method name="createHttpRequestFactory()Lorg/apache/http/HttpRequestFactory;" />
-		<method name="createRequestParser(Lorg/apache/http/io/SessionInputBuffer;Lorg/apache/http/HttpRequestFactory;Lorg/apache/http/params/HttpParams;)Lorg/apache/http/io/HttpMessageParser;" />
-		<method name="createResponseWriter(Lorg/apache/http/io/SessionOutputBuffer;Lorg/apache/http/params/HttpParams;)Lorg/apache/http/io/HttpMessageWriter;" />
-		<method name="doFlush()V" />
-		<method name="init(Lorg/apache/http/io/SessionInputBuffer;Lorg/apache/http/io/SessionOutputBuffer;Lorg/apache/http/params/HttpParams;)V" />
-	</class>
-	<class name="org/apache/http/impl/DefaultConnectionReuseStrategy" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/ConnectionReuseStrategy" />
-		<method name="&lt;init>()V" />
-		<method name="createTokenIterator(Lorg/apache/http/HeaderIterator;)Lorg/apache/http/TokenIterator;" />
-	</class>
-	<class name="org/apache/http/impl/DefaultHttpClientConnection" since="1">
-		<extends name="org/apache/http/impl/SocketHttpClientConnection" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="org/apache/http/impl/DefaultHttpRequestFactory" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/HttpRequestFactory" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="org/apache/http/impl/DefaultHttpResponseFactory" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/HttpResponseFactory" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Lorg/apache/http/ReasonPhraseCatalog;)V" />
-		<method name="determineLocale(Lorg/apache/http/protocol/HttpContext;)Ljava/util/Locale;" />
-		<field name="reasonCatalog" />
-	</class>
-	<class name="org/apache/http/impl/DefaultHttpServerConnection" since="1">
-		<extends name="org/apache/http/impl/SocketHttpServerConnection" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="org/apache/http/impl/EnglishReasonPhraseCatalog" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/ReasonPhraseCatalog" />
-		<method name="&lt;init>()V" />
-		<field name="INSTANCE" />
-	</class>
-	<class name="org/apache/http/impl/HttpConnectionMetricsImpl" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/HttpConnectionMetrics" />
-		<method name="&lt;init>(Lorg/apache/http/io/HttpTransportMetrics;Lorg/apache/http/io/HttpTransportMetrics;)V" />
-		<method name="incrementRequestCount()V" />
-		<method name="incrementResponseCount()V" />
-		<method name="setMetric(Ljava/lang/String;Ljava/lang/Object;)V" />
-		<field name="RECEIVED_BYTES_COUNT" />
-		<field name="REQUEST_COUNT" />
-		<field name="RESPONSE_COUNT" />
-		<field name="SENT_BYTES_COUNT" />
-	</class>
-	<class name="org/apache/http/impl/NoConnectionReuseStrategy" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/ConnectionReuseStrategy" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="org/apache/http/impl/SocketHttpClientConnection" since="1">
-		<extends name="org/apache/http/impl/AbstractHttpClientConnection" />
-		<implements name="org/apache/http/HttpInetConnection" />
-		<method name="&lt;init>()V" />
-		<method name="assertNotOpen()V" />
-		<method name="bind(Ljava/net/Socket;Lorg/apache/http/params/HttpParams;)V" />
-		<method name="createSessionInputBuffer(Ljava/net/Socket;ILorg/apache/http/params/HttpParams;)Lorg/apache/http/io/SessionInputBuffer;" />
-		<method name="createSessionOutputBuffer(Ljava/net/Socket;ILorg/apache/http/params/HttpParams;)Lorg/apache/http/io/SessionOutputBuffer;" />
-		<method name="getSocket()Ljava/net/Socket;" />
-	</class>
-	<class name="org/apache/http/impl/SocketHttpServerConnection" since="1">
-		<extends name="org/apache/http/impl/AbstractHttpServerConnection" />
-		<implements name="org/apache/http/HttpInetConnection" />
-		<method name="&lt;init>()V" />
-		<method name="assertNotOpen()V" />
-		<method name="bind(Ljava/net/Socket;Lorg/apache/http/params/HttpParams;)V" />
-		<method name="createHttpDataReceiver(Ljava/net/Socket;ILorg/apache/http/params/HttpParams;)Lorg/apache/http/io/SessionInputBuffer;" />
-		<method name="createHttpDataTransmitter(Ljava/net/Socket;ILorg/apache/http/params/HttpParams;)Lorg/apache/http/io/SessionOutputBuffer;" />
-		<method name="getSocket()Ljava/net/Socket;" />
-	</class>
-	<class name="org/apache/http/impl/auth/AuthSchemeBase" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/auth/AuthScheme" />
-		<method name="&lt;init>()V" />
-		<method name="isProxy()Z" />
-		<method name="parseChallenge(Lorg/apache/http/util/CharArrayBuffer;II)V" />
-	</class>
-	<class name="org/apache/http/impl/auth/BasicScheme" since="1">
-		<extends name="org/apache/http/impl/auth/RFC2617Scheme" />
-		<method name="&lt;init>()V" />
-		<method name="authenticate(Lorg/apache/http/auth/Credentials;Ljava/lang/String;Z)Lorg/apache/http/Header;" />
-	</class>
-	<class name="org/apache/http/impl/auth/BasicSchemeFactory" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/auth/AuthSchemeFactory" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="org/apache/http/impl/auth/DigestScheme" since="1">
-		<extends name="org/apache/http/impl/auth/RFC2617Scheme" />
-		<method name="&lt;init>()V" />
-		<method name="createCnonce()Ljava/lang/String;" />
-		<method name="overrideParamter(Ljava/lang/String;Ljava/lang/String;)V" />
-	</class>
-	<class name="org/apache/http/impl/auth/DigestSchemeFactory" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/auth/AuthSchemeFactory" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="org/apache/http/impl/auth/NTLMEngine" since="1">
-		<extends name="java/lang/Object" />
-		<method name="generateType1Msg(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="generateType3Msg(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
-	</class>
-	<class name="org/apache/http/impl/auth/NTLMEngineException" since="1">
-		<extends name="org/apache/http/auth/AuthenticationException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="org/apache/http/impl/auth/NTLMScheme" since="1">
-		<extends name="org/apache/http/impl/auth/AuthSchemeBase" />
-		<method name="&lt;init>(Lorg/apache/http/impl/auth/NTLMEngine;)V" />
-	</class>
-	<class name="org/apache/http/impl/auth/RFC2617Scheme" since="1">
-		<extends name="org/apache/http/impl/auth/AuthSchemeBase" />
-		<method name="&lt;init>()V" />
-		<method name="getParameters()Ljava/util/Map;" />
-	</class>
-	<class name="org/apache/http/impl/auth/UnsupportedDigestAlgorithmException" since="1">
-		<extends name="java/lang/RuntimeException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="org/apache/http/impl/client/AbstractAuthenticationHandler" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/client/AuthenticationHandler" />
-		<method name="&lt;init>()V" />
-		<method name="getAuthPreferences()Ljava/util/List;" />
-		<method name="parseChallenges([Lorg/apache/http/Header;)Ljava/util/Map;" />
-	</class>
-	<class name="org/apache/http/impl/client/AbstractHttpClient" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/client/HttpClient" />
-		<method name="&lt;init>(Lorg/apache/http/conn/ClientConnectionManager;Lorg/apache/http/params/HttpParams;)V" />
-		<method name="addRequestInterceptor(Lorg/apache/http/HttpRequestInterceptor;)V" />
-		<method name="addRequestInterceptor(Lorg/apache/http/HttpRequestInterceptor;I)V" />
-		<method name="addResponseInterceptor(Lorg/apache/http/HttpResponseInterceptor;)V" />
-		<method name="addResponseInterceptor(Lorg/apache/http/HttpResponseInterceptor;I)V" />
-		<method name="clearRequestInterceptors()V" />
-		<method name="clearResponseInterceptors()V" />
-		<method name="createAuthSchemeRegistry()Lorg/apache/http/auth/AuthSchemeRegistry;" />
-		<method name="createClientConnectionManager()Lorg/apache/http/conn/ClientConnectionManager;" />
-		<method name="createClientRequestDirector(Lorg/apache/http/protocol/HttpRequestExecutor;Lorg/apache/http/conn/ClientConnectionManager;Lorg/apache/http/ConnectionReuseStrategy;Lorg/apache/http/conn/ConnectionKeepAliveStrategy;Lorg/apache/http/conn/routing/HttpRoutePlanner;Lorg/apache/http/protocol/HttpProcessor;Lorg/apache/http/client/HttpRequestRetryHandler;Lorg/apache/http/client/RedirectHandler;Lorg/apache/http/client/AuthenticationHandler;Lorg/apache/http/client/AuthenticationHandler;Lorg/apache/http/client/UserTokenHandler;Lorg/apache/http/params/HttpParams;)Lorg/apache/http/client/RequestDirector;" />
-		<method name="createConnectionKeepAliveStrategy()Lorg/apache/http/conn/ConnectionKeepAliveStrategy;" />
-		<method name="createConnectionReuseStrategy()Lorg/apache/http/ConnectionReuseStrategy;" />
-		<method name="createCookieSpecRegistry()Lorg/apache/http/cookie/CookieSpecRegistry;" />
-		<method name="createCookieStore()Lorg/apache/http/client/CookieStore;" />
-		<method name="createCredentialsProvider()Lorg/apache/http/client/CredentialsProvider;" />
-		<method name="createHttpContext()Lorg/apache/http/protocol/HttpContext;" />
-		<method name="createHttpParams()Lorg/apache/http/params/HttpParams;" />
-		<method name="createHttpProcessor()Lorg/apache/http/protocol/BasicHttpProcessor;" />
-		<method name="createHttpRequestRetryHandler()Lorg/apache/http/client/HttpRequestRetryHandler;" />
-		<method name="createHttpRoutePlanner()Lorg/apache/http/conn/routing/HttpRoutePlanner;" />
-		<method name="createProxyAuthenticationHandler()Lorg/apache/http/client/AuthenticationHandler;" />
-		<method name="createRedirectHandler()Lorg/apache/http/client/RedirectHandler;" />
-		<method name="createRequestExecutor()Lorg/apache/http/protocol/HttpRequestExecutor;" />
-		<method name="createTargetAuthenticationHandler()Lorg/apache/http/client/AuthenticationHandler;" />
-		<method name="createUserTokenHandler()Lorg/apache/http/client/UserTokenHandler;" />
-		<method name="determineParams(Lorg/apache/http/HttpRequest;)Lorg/apache/http/params/HttpParams;" />
-		<method name="getAuthSchemes()Lorg/apache/http/auth/AuthSchemeRegistry;" />
-		<method name="getConnectionKeepAliveStrategy()Lorg/apache/http/conn/ConnectionKeepAliveStrategy;" />
-		<method name="getConnectionReuseStrategy()Lorg/apache/http/ConnectionReuseStrategy;" />
-		<method name="getCookieSpecs()Lorg/apache/http/cookie/CookieSpecRegistry;" />
-		<method name="getCookieStore()Lorg/apache/http/client/CookieStore;" />
-		<method name="getCredentialsProvider()Lorg/apache/http/client/CredentialsProvider;" />
-		<method name="getHttpProcessor()Lorg/apache/http/protocol/BasicHttpProcessor;" />
-		<method name="getHttpRequestRetryHandler()Lorg/apache/http/client/HttpRequestRetryHandler;" />
-		<method name="getProxyAuthenticationHandler()Lorg/apache/http/client/AuthenticationHandler;" />
-		<method name="getRedirectHandler()Lorg/apache/http/client/RedirectHandler;" />
-		<method name="getRequestExecutor()Lorg/apache/http/protocol/HttpRequestExecutor;" />
-		<method name="getRequestInterceptor(I)Lorg/apache/http/HttpRequestInterceptor;" />
-		<method name="getRequestInterceptorCount()I" />
-		<method name="getResponseInterceptor(I)Lorg/apache/http/HttpResponseInterceptor;" />
-		<method name="getResponseInterceptorCount()I" />
-		<method name="getRoutePlanner()Lorg/apache/http/conn/routing/HttpRoutePlanner;" />
-		<method name="getTargetAuthenticationHandler()Lorg/apache/http/client/AuthenticationHandler;" />
-		<method name="getUserTokenHandler()Lorg/apache/http/client/UserTokenHandler;" />
-		<method name="removeRequestInterceptorByClass(Ljava/lang/Class;)V" />
-		<method name="removeResponseInterceptorByClass(Ljava/lang/Class;)V" />
-		<method name="setAuthSchemes(Lorg/apache/http/auth/AuthSchemeRegistry;)V" />
-		<method name="setCookieSpecs(Lorg/apache/http/cookie/CookieSpecRegistry;)V" />
-		<method name="setCookieStore(Lorg/apache/http/client/CookieStore;)V" />
-		<method name="setCredentialsProvider(Lorg/apache/http/client/CredentialsProvider;)V" />
-		<method name="setHttpRequestRetryHandler(Lorg/apache/http/client/HttpRequestRetryHandler;)V" />
-		<method name="setKeepAliveStrategy(Lorg/apache/http/conn/ConnectionKeepAliveStrategy;)V" />
-		<method name="setParams(Lorg/apache/http/params/HttpParams;)V" />
-		<method name="setProxyAuthenticationHandler(Lorg/apache/http/client/AuthenticationHandler;)V" />
-		<method name="setRedirectHandler(Lorg/apache/http/client/RedirectHandler;)V" />
-		<method name="setReuseStrategy(Lorg/apache/http/ConnectionReuseStrategy;)V" />
-		<method name="setRoutePlanner(Lorg/apache/http/conn/routing/HttpRoutePlanner;)V" />
-		<method name="setTargetAuthenticationHandler(Lorg/apache/http/client/AuthenticationHandler;)V" />
-		<method name="setUserTokenHandler(Lorg/apache/http/client/UserTokenHandler;)V" />
-	</class>
-	<class name="org/apache/http/impl/client/BasicCookieStore" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/client/CookieStore" />
-		<method name="&lt;init>()V" />
-		<method name="addCookies([Lorg/apache/http/cookie/Cookie;)V" />
-	</class>
-	<class name="org/apache/http/impl/client/BasicCredentialsProvider" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/client/CredentialsProvider" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="org/apache/http/impl/client/BasicResponseHandler" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/client/ResponseHandler" />
-		<method name="&lt;init>()V" />
-		<method name="handleResponse(Lorg/apache/http/HttpResponse;)Ljava/lang/String;" />
-	</class>
-	<class name="org/apache/http/impl/client/ClientParamsStack" since="1">
-		<extends name="org/apache/http/params/AbstractHttpParams" />
-		<method name="&lt;init>(Lorg/apache/http/impl/client/ClientParamsStack;)V" />
-		<method name="&lt;init>(Lorg/apache/http/impl/client/ClientParamsStack;Lorg/apache/http/params/HttpParams;Lorg/apache/http/params/HttpParams;Lorg/apache/http/params/HttpParams;Lorg/apache/http/params/HttpParams;)V" />
-		<method name="&lt;init>(Lorg/apache/http/params/HttpParams;Lorg/apache/http/params/HttpParams;Lorg/apache/http/params/HttpParams;Lorg/apache/http/params/HttpParams;)V" />
-		<method name="getApplicationParams()Lorg/apache/http/params/HttpParams;" />
-		<method name="getClientParams()Lorg/apache/http/params/HttpParams;" />
-		<method name="getOverrideParams()Lorg/apache/http/params/HttpParams;" />
-		<method name="getRequestParams()Lorg/apache/http/params/HttpParams;" />
-		<field name="applicationParams" />
-		<field name="clientParams" />
-		<field name="overrideParams" />
-		<field name="requestParams" />
-	</class>
-	<class name="org/apache/http/impl/client/DefaultConnectionKeepAliveStrategy" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/conn/ConnectionKeepAliveStrategy" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="org/apache/http/impl/client/DefaultHttpClient" since="1">
-		<extends name="org/apache/http/impl/client/AbstractHttpClient" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Lorg/apache/http/conn/ClientConnectionManager;Lorg/apache/http/params/HttpParams;)V" />
-		<method name="&lt;init>(Lorg/apache/http/params/HttpParams;)V" />
-	</class>
-	<class name="org/apache/http/impl/client/DefaultHttpRequestRetryHandler" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/client/HttpRequestRetryHandler" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(IZ)V" />
-		<method name="getRetryCount()I" />
-		<method name="isRequestSentRetryEnabled()Z" />
-	</class>
-	<class name="org/apache/http/impl/client/DefaultProxyAuthenticationHandler" since="1">
-		<extends name="org/apache/http/impl/client/AbstractAuthenticationHandler" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="org/apache/http/impl/client/DefaultRedirectHandler" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/client/RedirectHandler" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="org/apache/http/impl/client/DefaultRequestDirector" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/client/RequestDirector" />
-		<method name="&lt;init>(Lorg/apache/http/protocol/HttpRequestExecutor;Lorg/apache/http/conn/ClientConnectionManager;Lorg/apache/http/ConnectionReuseStrategy;Lorg/apache/http/conn/ConnectionKeepAliveStrategy;Lorg/apache/http/conn/routing/HttpRoutePlanner;Lorg/apache/http/protocol/HttpProcessor;Lorg/apache/http/client/HttpRequestRetryHandler;Lorg/apache/http/client/RedirectHandler;Lorg/apache/http/client/AuthenticationHandler;Lorg/apache/http/client/AuthenticationHandler;Lorg/apache/http/client/UserTokenHandler;Lorg/apache/http/params/HttpParams;)V" />
-		<method name="createConnectRequest(Lorg/apache/http/conn/routing/HttpRoute;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/HttpRequest;" />
-		<method name="createTunnelToProxy(Lorg/apache/http/conn/routing/HttpRoute;ILorg/apache/http/protocol/HttpContext;)Z" />
-		<method name="createTunnelToTarget(Lorg/apache/http/conn/routing/HttpRoute;Lorg/apache/http/protocol/HttpContext;)Z" />
-		<method name="determineRoute(Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/conn/routing/HttpRoute;" />
-		<method name="establishRoute(Lorg/apache/http/conn/routing/HttpRoute;Lorg/apache/http/protocol/HttpContext;)V" />
-		<method name="handleResponse(Lorg/apache/http/impl/client/RoutedRequest;Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/impl/client/RoutedRequest;" />
-		<method name="releaseConnection()V" />
-		<method name="rewriteRequestURI(Lorg/apache/http/impl/client/RequestWrapper;Lorg/apache/http/conn/routing/HttpRoute;)V" />
-		<field name="connManager" />
-		<field name="httpProcessor" />
-		<field name="keepAliveStrategy" />
-		<field name="managedConn" />
-		<field name="params" />
-		<field name="redirectHandler" />
-		<field name="requestExec" />
-		<field name="retryHandler" />
-		<field name="reuseStrategy" />
-		<field name="routePlanner" />
-	</class>
-	<class name="org/apache/http/impl/client/DefaultTargetAuthenticationHandler" since="1">
-		<extends name="org/apache/http/impl/client/AbstractAuthenticationHandler" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="org/apache/http/impl/client/DefaultUserTokenHandler" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/client/UserTokenHandler" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="org/apache/http/impl/client/EntityEnclosingRequestWrapper" since="1">
-		<extends name="org/apache/http/impl/client/RequestWrapper" />
-		<implements name="org/apache/http/HttpEntityEnclosingRequest" />
-		<method name="&lt;init>(Lorg/apache/http/HttpEntityEnclosingRequest;)V" />
-	</class>
-	<class name="org/apache/http/impl/client/RedirectLocations" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="add(Ljava/net/URI;)V" />
-		<method name="contains(Ljava/net/URI;)Z" />
-		<method name="remove(Ljava/net/URI;)Z" />
-	</class>
-	<class name="org/apache/http/impl/client/RequestWrapper" since="1">
-		<extends name="org/apache/http/message/AbstractHttpMessage" />
-		<implements name="org/apache/http/client/methods/HttpUriRequest" />
-		<method name="&lt;init>(Lorg/apache/http/HttpRequest;)V" />
-		<method name="getExecCount()I" />
-		<method name="getOriginal()Lorg/apache/http/HttpRequest;" />
-		<method name="incrementExecCount()V" />
-		<method name="isRepeatable()Z" />
-		<method name="resetHeaders()V" />
-		<method name="setMethod(Ljava/lang/String;)V" />
-		<method name="setProtocolVersion(Lorg/apache/http/ProtocolVersion;)V" />
-		<method name="setURI(Ljava/net/URI;)V" />
-	</class>
-	<class name="org/apache/http/impl/client/RoutedRequest" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Lorg/apache/http/impl/client/RequestWrapper;Lorg/apache/http/conn/routing/HttpRoute;)V" />
-		<method name="getRequest()Lorg/apache/http/impl/client/RequestWrapper;" />
-		<method name="getRoute()Lorg/apache/http/conn/routing/HttpRoute;" />
-		<field name="request" />
-		<field name="route" />
-	</class>
-	<class name="org/apache/http/impl/client/TunnelRefusedException" since="1">
-		<extends name="org/apache/http/HttpException" />
-		<method name="&lt;init>(Ljava/lang/String;Lorg/apache/http/HttpResponse;)V" />
-		<method name="getResponse()Lorg/apache/http/HttpResponse;" />
-	</class>
-	<class name="org/apache/http/impl/conn/AbstractClientConnAdapter" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/conn/ManagedClientConnection" />
-		<method name="&lt;init>(Lorg/apache/http/conn/ClientConnectionManager;Lorg/apache/http/conn/OperatedClientConnection;)V" />
-		<method name="assertNotAborted()V" />
-		<method name="assertValid(Lorg/apache/http/conn/OperatedClientConnection;)V" />
-		<method name="detach()V" />
-		<method name="getManager()Lorg/apache/http/conn/ClientConnectionManager;" />
-		<method name="getWrappedConnection()Lorg/apache/http/conn/OperatedClientConnection;" />
-	</class>
-	<class name="org/apache/http/impl/conn/AbstractPoolEntry" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Lorg/apache/http/conn/ClientConnectionOperator;Lorg/apache/http/conn/routing/HttpRoute;)V" />
-		<method name="getState()Ljava/lang/Object;" />
-		<method name="layerProtocol(Lorg/apache/http/protocol/HttpContext;Lorg/apache/http/params/HttpParams;)V" />
-		<method name="open(Lorg/apache/http/conn/routing/HttpRoute;Lorg/apache/http/protocol/HttpContext;Lorg/apache/http/params/HttpParams;)V" />
-		<method name="setState(Ljava/lang/Object;)V" />
-		<method name="shutdownEntry()V" />
-		<method name="tunnelProxy(Lorg/apache/http/HttpHost;ZLorg/apache/http/params/HttpParams;)V" />
-		<method name="tunnelTarget(ZLorg/apache/http/params/HttpParams;)V" />
-		<field name="connOperator" />
-		<field name="connection" />
-		<field name="route" />
-		<field name="state" />
-		<field name="tracker" />
-	</class>
-	<class name="org/apache/http/impl/conn/AbstractPooledConnAdapter" since="1">
-		<extends name="org/apache/http/impl/conn/AbstractClientConnAdapter" />
-		<method name="&lt;init>(Lorg/apache/http/conn/ClientConnectionManager;Lorg/apache/http/impl/conn/AbstractPoolEntry;)V" />
-		<method name="assertAttached()V" />
-		<field name="poolEntry" />
-	</class>
-	<class name="org/apache/http/impl/conn/DefaultClientConnection" since="1">
-		<extends name="org/apache/http/impl/SocketHttpClientConnection" />
-		<implements name="org/apache/http/conn/OperatedClientConnection" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="org/apache/http/impl/conn/DefaultClientConnectionOperator" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/conn/ClientConnectionOperator" />
-		<method name="&lt;init>(Lorg/apache/http/conn/scheme/SchemeRegistry;)V" />
-		<method name="prepareSocket(Ljava/net/Socket;Lorg/apache/http/protocol/HttpContext;Lorg/apache/http/params/HttpParams;)V" />
-		<field name="schemeRegistry" />
-	</class>
-	<class name="org/apache/http/impl/conn/DefaultHttpRoutePlanner" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/conn/routing/HttpRoutePlanner" />
-		<method name="&lt;init>(Lorg/apache/http/conn/scheme/SchemeRegistry;)V" />
-		<field name="schemeRegistry" />
-	</class>
-	<class name="org/apache/http/impl/conn/DefaultResponseParser" since="1">
-		<extends name="org/apache/http/impl/io/AbstractMessageParser" />
-		<method name="&lt;init>(Lorg/apache/http/io/SessionInputBuffer;Lorg/apache/http/message/LineParser;Lorg/apache/http/HttpResponseFactory;Lorg/apache/http/params/HttpParams;)V" />
-	</class>
-	<class name="org/apache/http/impl/conn/IdleConnectionHandler" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="add(Lorg/apache/http/HttpConnection;JLjava/util/concurrent/TimeUnit;)V" />
-		<method name="closeExpiredConnections()V" />
-		<method name="closeIdleConnections(J)V" />
-		<method name="remove(Lorg/apache/http/HttpConnection;)Z" />
-		<method name="removeAll()V" />
-	</class>
-	<class name="org/apache/http/impl/conn/LoggingSessionInputBuffer" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/io/SessionInputBuffer" />
-		<method name="&lt;init>(Lorg/apache/http/io/SessionInputBuffer;Lorg/apache/http/impl/conn/Wire;)V" />
-	</class>
-	<class name="org/apache/http/impl/conn/LoggingSessionOutputBuffer" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/io/SessionOutputBuffer" />
-		<method name="&lt;init>(Lorg/apache/http/io/SessionOutputBuffer;Lorg/apache/http/impl/conn/Wire;)V" />
-	</class>
-	<class name="org/apache/http/impl/conn/ProxySelectorRoutePlanner" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/conn/routing/HttpRoutePlanner" />
-		<method name="&lt;init>(Lorg/apache/http/conn/scheme/SchemeRegistry;Ljava/net/ProxySelector;)V" />
-		<method name="chooseProxy(Ljava/util/List;Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)Ljava/net/Proxy;" />
-		<method name="determineProxy(Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/HttpHost;" />
-		<method name="getHost(Ljava/net/InetSocketAddress;)Ljava/lang/String;" />
-		<method name="getProxySelector()Ljava/net/ProxySelector;" />
-		<method name="setProxySelector(Ljava/net/ProxySelector;)V" />
-		<field name="proxySelector" />
-		<field name="schemeRegistry" />
-	</class>
-	<class name="org/apache/http/impl/conn/SingleClientConnManager" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/conn/ClientConnectionManager" />
-		<method name="&lt;init>(Lorg/apache/http/params/HttpParams;Lorg/apache/http/conn/scheme/SchemeRegistry;)V" />
-		<method name="assertStillUp()V" />
-		<method name="createConnectionOperator(Lorg/apache/http/conn/scheme/SchemeRegistry;)Lorg/apache/http/conn/ClientConnectionOperator;" />
-		<method name="getConnection(Lorg/apache/http/conn/routing/HttpRoute;Ljava/lang/Object;)Lorg/apache/http/conn/ManagedClientConnection;" />
-		<method name="revokeConnection()V" />
-		<field name="MISUSE_MESSAGE" />
-		<field name="alwaysShutDown" />
-		<field name="connOperator" />
-		<field name="connectionExpiresTime" />
-		<field name="isShutDown" />
-		<field name="lastReleaseTime" />
-		<field name="managedConn" />
-		<field name="schemeRegistry" />
-		<field name="uniquePoolEntry" />
-	</class>
-	<class name="org/apache/http/impl/conn/SingleClientConnManager$ConnAdapter" since="1">
-		<extends name="org/apache/http/impl/conn/AbstractPooledConnAdapter" />
-		<method name="&lt;init>(Lorg/apache/http/impl/conn/SingleClientConnManager;Lorg/apache/http/impl/conn/SingleClientConnManager$PoolEntry;Lorg/apache/http/conn/routing/HttpRoute;)V" />
-	</class>
-	<class name="org/apache/http/impl/conn/SingleClientConnManager$PoolEntry" since="1">
-		<extends name="org/apache/http/impl/conn/AbstractPoolEntry" />
-		<method name="&lt;init>(Lorg/apache/http/impl/conn/SingleClientConnManager;)V" />
-		<method name="close()V" />
-		<method name="shutdown()V" />
-	</class>
-	<class name="org/apache/http/impl/conn/Wire" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Lorg/apache/commons/logging/Log;)V" />
-		<method name="enabled()Z" />
-		<method name="input(I)V" />
-		<method name="input(Ljava/io/InputStream;)V" />
-		<method name="input(Ljava/lang/String;)V" />
-		<method name="input([B)V" />
-		<method name="input([BII)V" />
-		<method name="output(I)V" />
-		<method name="output(Ljava/io/InputStream;)V" />
-		<method name="output(Ljava/lang/String;)V" />
-		<method name="output([B)V" />
-		<method name="output([BII)V" />
-	</class>
-	<class name="org/apache/http/impl/conn/tsccm/AbstractConnPool" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/impl/conn/tsccm/RefQueueHandler" />
-		<method name="&lt;init>()V" />
-		<method name="closeConnection(Lorg/apache/http/conn/OperatedClientConnection;)V" />
-		<method name="closeExpiredConnections()V" />
-		<method name="closeIdleConnections(JLjava/util/concurrent/TimeUnit;)V" />
-		<method name="deleteClosedConnections()V" />
-		<method name="enableConnectionGC()V" />
-		<method name="freeEntry(Lorg/apache/http/impl/conn/tsccm/BasicPoolEntry;ZJLjava/util/concurrent/TimeUnit;)V" />
-		<method name="getEntry(Lorg/apache/http/conn/routing/HttpRoute;Ljava/lang/Object;JLjava/util/concurrent/TimeUnit;)Lorg/apache/http/impl/conn/tsccm/BasicPoolEntry;" />
-		<method name="handleLostEntry(Lorg/apache/http/conn/routing/HttpRoute;)V" />
-		<method name="requestPoolEntry(Lorg/apache/http/conn/routing/HttpRoute;Ljava/lang/Object;)Lorg/apache/http/impl/conn/tsccm/PoolEntryRequest;" />
-		<method name="shutdown()V" />
-		<field name="idleConnHandler" />
-		<field name="isShutDown" />
-		<field name="issuedConnections" />
-		<field name="numConnections" />
-		<field name="poolLock" />
-		<field name="refQueue" />
-	</class>
-	<class name="org/apache/http/impl/conn/tsccm/BasicPoolEntry" since="1">
-		<extends name="org/apache/http/impl/conn/AbstractPoolEntry" />
-		<method name="&lt;init>(Lorg/apache/http/conn/ClientConnectionOperator;Lorg/apache/http/conn/routing/HttpRoute;Ljava/lang/ref/ReferenceQueue;)V" />
-		<method name="getConnection()Lorg/apache/http/conn/OperatedClientConnection;" />
-		<method name="getPlannedRoute()Lorg/apache/http/conn/routing/HttpRoute;" />
-		<method name="getWeakRef()Lorg/apache/http/impl/conn/tsccm/BasicPoolEntryRef;" />
-	</class>
-	<class name="org/apache/http/impl/conn/tsccm/BasicPoolEntryRef" since="1">
-		<extends name="java/lang/ref/WeakReference" />
-		<method name="&lt;init>(Lorg/apache/http/impl/conn/tsccm/BasicPoolEntry;Ljava/lang/ref/ReferenceQueue;)V" />
-		<method name="getRoute()Lorg/apache/http/conn/routing/HttpRoute;" />
-	</class>
-	<class name="org/apache/http/impl/conn/tsccm/BasicPooledConnAdapter" since="1">
-		<extends name="org/apache/http/impl/conn/AbstractPooledConnAdapter" />
-		<method name="&lt;init>(Lorg/apache/http/impl/conn/tsccm/ThreadSafeClientConnManager;Lorg/apache/http/impl/conn/AbstractPoolEntry;)V" />
-		<method name="getPoolEntry()Lorg/apache/http/impl/conn/AbstractPoolEntry;" />
-	</class>
-	<class name="org/apache/http/impl/conn/tsccm/ConnPoolByRoute" since="1">
-		<extends name="org/apache/http/impl/conn/tsccm/AbstractConnPool" />
-		<method name="&lt;init>(Lorg/apache/http/conn/ClientConnectionOperator;Lorg/apache/http/params/HttpParams;)V" />
-		<method name="createEntry(Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;Lorg/apache/http/conn/ClientConnectionOperator;)Lorg/apache/http/impl/conn/tsccm/BasicPoolEntry;" />
-		<method name="createFreeConnQueue()Ljava/util/Queue;" />
-		<method name="createRouteToPoolMap()Ljava/util/Map;" />
-		<method name="createWaitingThreadQueue()Ljava/util/Queue;" />
-		<method name="deleteEntry(Lorg/apache/http/impl/conn/tsccm/BasicPoolEntry;)V" />
-		<method name="deleteLeastUsedEntry()V" />
-		<method name="getConnectionsInPool(Lorg/apache/http/conn/routing/HttpRoute;)I" />
-		<method name="getEntryBlocking(Lorg/apache/http/conn/routing/HttpRoute;Ljava/lang/Object;JLjava/util/concurrent/TimeUnit;Lorg/apache/http/impl/conn/tsccm/WaitingThreadAborter;)Lorg/apache/http/impl/conn/tsccm/BasicPoolEntry;" />
-		<method name="getFreeEntry(Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;Ljava/lang/Object;)Lorg/apache/http/impl/conn/tsccm/BasicPoolEntry;" />
-		<method name="getRoutePool(Lorg/apache/http/conn/routing/HttpRoute;Z)Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;" />
-		<method name="newRouteSpecificPool(Lorg/apache/http/conn/routing/HttpRoute;)Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;" />
-		<method name="newWaitingThread(Ljava/util/concurrent/locks/Condition;Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;)Lorg/apache/http/impl/conn/tsccm/WaitingThread;" />
-		<method name="notifyWaitingThread(Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;)V" />
-		<field name="freeConnections" />
-		<field name="maxTotalConnections" />
-		<field name="operator" />
-		<field name="routeToPool" />
-		<field name="waitingThreads" />
-	</class>
-	<class name="org/apache/http/impl/conn/tsccm/PoolEntryRequest" since="1">
-		<extends name="java/lang/Object" />
-		<method name="abortRequest()V" />
-		<method name="getPoolEntry(JLjava/util/concurrent/TimeUnit;)Lorg/apache/http/impl/conn/tsccm/BasicPoolEntry;" />
-	</class>
-	<class name="org/apache/http/impl/conn/tsccm/RefQueueHandler" since="1">
-		<extends name="java/lang/Object" />
-		<method name="handleReference(Ljava/lang/ref/Reference;)V" />
-	</class>
-	<class name="org/apache/http/impl/conn/tsccm/RefQueueWorker" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/Runnable" />
-		<method name="&lt;init>(Ljava/lang/ref/ReferenceQueue;Lorg/apache/http/impl/conn/tsccm/RefQueueHandler;)V" />
-		<method name="shutdown()V" />
-		<field name="refHandler" />
-		<field name="refQueue" />
-		<field name="workerThread" />
-	</class>
-	<class name="org/apache/http/impl/conn/tsccm/RouteSpecificPool" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Lorg/apache/http/conn/routing/HttpRoute;I)V" />
-		<method name="allocEntry(Ljava/lang/Object;)Lorg/apache/http/impl/conn/tsccm/BasicPoolEntry;" />
-		<method name="createdEntry(Lorg/apache/http/impl/conn/tsccm/BasicPoolEntry;)V" />
-		<method name="deleteEntry(Lorg/apache/http/impl/conn/tsccm/BasicPoolEntry;)Z" />
-		<method name="dropEntry()V" />
-		<method name="freeEntry(Lorg/apache/http/impl/conn/tsccm/BasicPoolEntry;)V" />
-		<method name="getCapacity()I" />
-		<method name="getEntryCount()I" />
-		<method name="getMaxEntries()I" />
-		<method name="getRoute()Lorg/apache/http/conn/routing/HttpRoute;" />
-		<method name="hasThread()Z" />
-		<method name="isUnused()Z" />
-		<method name="nextThread()Lorg/apache/http/impl/conn/tsccm/WaitingThread;" />
-		<method name="queueThread(Lorg/apache/http/impl/conn/tsccm/WaitingThread;)V" />
-		<method name="removeThread(Lorg/apache/http/impl/conn/tsccm/WaitingThread;)V" />
-		<field name="freeEntries" />
-		<field name="maxEntries" />
-		<field name="numEntries" />
-		<field name="route" />
-		<field name="waitingThreads" />
-	</class>
-	<class name="org/apache/http/impl/conn/tsccm/ThreadSafeClientConnManager" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/conn/ClientConnectionManager" />
-		<method name="&lt;init>(Lorg/apache/http/params/HttpParams;Lorg/apache/http/conn/scheme/SchemeRegistry;)V" />
-		<method name="createConnectionOperator(Lorg/apache/http/conn/scheme/SchemeRegistry;)Lorg/apache/http/conn/ClientConnectionOperator;" />
-		<method name="createConnectionPool(Lorg/apache/http/params/HttpParams;)Lorg/apache/http/impl/conn/tsccm/AbstractConnPool;" />
-		<method name="getConnectionsInPool()I" />
-		<method name="getConnectionsInPool(Lorg/apache/http/conn/routing/HttpRoute;)I" />
-		<field name="connOperator" />
-		<field name="connectionPool" />
-		<field name="schemeRegistry" />
-	</class>
-	<class name="org/apache/http/impl/conn/tsccm/WaitingThread" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/util/concurrent/locks/Condition;Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;)V" />
-		<method name="await(Ljava/util/Date;)Z" />
-		<method name="getCondition()Ljava/util/concurrent/locks/Condition;" />
-		<method name="getPool()Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;" />
-		<method name="getThread()Ljava/lang/Thread;" />
-		<method name="interrupt()V" />
-		<method name="wakeup()V" />
-	</class>
-	<class name="org/apache/http/impl/conn/tsccm/WaitingThreadAborter" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="abort()V" />
-		<method name="setWaitingThread(Lorg/apache/http/impl/conn/tsccm/WaitingThread;)V" />
-	</class>
-	<class name="org/apache/http/impl/cookie/AbstractCookieAttributeHandler" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/cookie/CookieAttributeHandler" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="org/apache/http/impl/cookie/AbstractCookieSpec" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/cookie/CookieSpec" />
-		<method name="&lt;init>()V" />
-		<method name="findAttribHandler(Ljava/lang/String;)Lorg/apache/http/cookie/CookieAttributeHandler;" />
-		<method name="getAttribHandler(Ljava/lang/String;)Lorg/apache/http/cookie/CookieAttributeHandler;" />
-		<method name="getAttribHandlers()Ljava/util/Collection;" />
-		<method name="registerAttribHandler(Ljava/lang/String;Lorg/apache/http/cookie/CookieAttributeHandler;)V" />
-	</class>
-	<class name="org/apache/http/impl/cookie/BasicClientCookie" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/Cloneable" />
-		<implements name="org/apache/http/cookie/ClientCookie" />
-		<implements name="org/apache/http/cookie/SetCookie" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="setAttribute(Ljava/lang/String;Ljava/lang/String;)V" />
-	</class>
-	<class name="org/apache/http/impl/cookie/BasicClientCookie2" since="1">
-		<extends name="org/apache/http/impl/cookie/BasicClientCookie" />
-		<implements name="org/apache/http/cookie/SetCookie2" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
-	</class>
-	<class name="org/apache/http/impl/cookie/BasicCommentHandler" since="1">
-		<extends name="org/apache/http/impl/cookie/AbstractCookieAttributeHandler" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="org/apache/http/impl/cookie/BasicDomainHandler" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/cookie/CookieAttributeHandler" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="org/apache/http/impl/cookie/BasicExpiresHandler" since="1">
-		<extends name="org/apache/http/impl/cookie/AbstractCookieAttributeHandler" />
-		<method name="&lt;init>([Ljava/lang/String;)V" />
-	</class>
-	<class name="org/apache/http/impl/cookie/BasicMaxAgeHandler" since="1">
-		<extends name="org/apache/http/impl/cookie/AbstractCookieAttributeHandler" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="org/apache/http/impl/cookie/BasicPathHandler" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/cookie/CookieAttributeHandler" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="org/apache/http/impl/cookie/BasicSecureHandler" since="1">
-		<extends name="org/apache/http/impl/cookie/AbstractCookieAttributeHandler" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="org/apache/http/impl/cookie/BestMatchSpec" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/cookie/CookieSpec" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>([Ljava/lang/String;Z)V" />
-	</class>
-	<class name="org/apache/http/impl/cookie/BestMatchSpecFactory" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/cookie/CookieSpecFactory" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="org/apache/http/impl/cookie/BrowserCompatSpec" since="1">
-		<extends name="org/apache/http/impl/cookie/CookieSpecBase" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>([Ljava/lang/String;)V" />
-		<field name="DATE_PATTERNS" />
-	</class>
-	<class name="org/apache/http/impl/cookie/BrowserCompatSpecFactory" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/cookie/CookieSpecFactory" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="org/apache/http/impl/cookie/CookieSpecBase" since="1">
-		<extends name="org/apache/http/impl/cookie/AbstractCookieSpec" />
-		<method name="&lt;init>()V" />
-		<method name="getDefaultDomain(Lorg/apache/http/cookie/CookieOrigin;)Ljava/lang/String;" />
-		<method name="getDefaultPath(Lorg/apache/http/cookie/CookieOrigin;)Ljava/lang/String;" />
-		<method name="parse([Lorg/apache/http/HeaderElement;Lorg/apache/http/cookie/CookieOrigin;)Ljava/util/List;" />
-	</class>
-	<class name="org/apache/http/impl/cookie/DateParseException" since="1">
-		<extends name="java/lang/Exception" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="org/apache/http/impl/cookie/DateUtils" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="formatDate(Ljava/util/Date;)Ljava/lang/String;" />
-		<method name="formatDate(Ljava/util/Date;Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="parseDate(Ljava/lang/String;)Ljava/util/Date;" />
-		<method name="parseDate(Ljava/lang/String;[Ljava/lang/String;)Ljava/util/Date;" />
-		<method name="parseDate(Ljava/lang/String;[Ljava/lang/String;Ljava/util/Date;)Ljava/util/Date;" />
-		<field name="GMT" />
-		<field name="PATTERN_ASCTIME" />
-		<field name="PATTERN_RFC1036" />
-		<field name="PATTERN_RFC1123" />
-	</class>
-	<class name="org/apache/http/impl/cookie/NetscapeDomainHandler" since="1">
-		<extends name="org/apache/http/impl/cookie/BasicDomainHandler" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="org/apache/http/impl/cookie/NetscapeDraftHeaderParser" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="parseHeader(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/message/ParserCursor;)Lorg/apache/http/HeaderElement;" />
-		<field name="DEFAULT" />
-	</class>
-	<class name="org/apache/http/impl/cookie/NetscapeDraftSpec" since="1">
-		<extends name="org/apache/http/impl/cookie/CookieSpecBase" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>([Ljava/lang/String;)V" />
-		<field name="EXPIRES_PATTERN" />
-	</class>
-	<class name="org/apache/http/impl/cookie/NetscapeDraftSpecFactory" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/cookie/CookieSpecFactory" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="org/apache/http/impl/cookie/RFC2109DomainHandler" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/cookie/CookieAttributeHandler" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="org/apache/http/impl/cookie/RFC2109Spec" since="1">
-		<extends name="org/apache/http/impl/cookie/CookieSpecBase" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>([Ljava/lang/String;Z)V" />
-		<method name="formatCookieAsVer(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/cookie/Cookie;I)V" />
-		<method name="formatParamAsVer(Lorg/apache/http/util/CharArrayBuffer;Ljava/lang/String;Ljava/lang/String;I)V" />
-	</class>
-	<class name="org/apache/http/impl/cookie/RFC2109SpecFactory" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/cookie/CookieSpecFactory" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="org/apache/http/impl/cookie/RFC2109VersionHandler" since="1">
-		<extends name="org/apache/http/impl/cookie/AbstractCookieAttributeHandler" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="org/apache/http/impl/cookie/RFC2965CommentUrlAttributeHandler" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/cookie/CookieAttributeHandler" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="org/apache/http/impl/cookie/RFC2965DiscardAttributeHandler" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/cookie/CookieAttributeHandler" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="org/apache/http/impl/cookie/RFC2965DomainAttributeHandler" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/cookie/CookieAttributeHandler" />
-		<method name="&lt;init>()V" />
-		<method name="domainMatch(Ljava/lang/String;Ljava/lang/String;)Z" />
-	</class>
-	<class name="org/apache/http/impl/cookie/RFC2965PortAttributeHandler" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/cookie/CookieAttributeHandler" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="org/apache/http/impl/cookie/RFC2965Spec" since="1">
-		<extends name="org/apache/http/impl/cookie/RFC2109Spec" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>([Ljava/lang/String;Z)V" />
-	</class>
-	<class name="org/apache/http/impl/cookie/RFC2965SpecFactory" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/cookie/CookieSpecFactory" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="org/apache/http/impl/cookie/RFC2965VersionAttributeHandler" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/cookie/CookieAttributeHandler" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="org/apache/http/impl/entity/EntityDeserializer" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Lorg/apache/http/entity/ContentLengthStrategy;)V" />
-		<method name="deserialize(Lorg/apache/http/io/SessionInputBuffer;Lorg/apache/http/HttpMessage;)Lorg/apache/http/HttpEntity;" />
-		<method name="doDeserialize(Lorg/apache/http/io/SessionInputBuffer;Lorg/apache/http/HttpMessage;)Lorg/apache/http/entity/BasicHttpEntity;" />
-	</class>
-	<class name="org/apache/http/impl/entity/EntitySerializer" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Lorg/apache/http/entity/ContentLengthStrategy;)V" />
-		<method name="doSerialize(Lorg/apache/http/io/SessionOutputBuffer;Lorg/apache/http/HttpMessage;)Ljava/io/OutputStream;" />
-		<method name="serialize(Lorg/apache/http/io/SessionOutputBuffer;Lorg/apache/http/HttpMessage;Lorg/apache/http/HttpEntity;)V" />
-	</class>
-	<class name="org/apache/http/impl/entity/LaxContentLengthStrategy" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/entity/ContentLengthStrategy" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="org/apache/http/impl/entity/StrictContentLengthStrategy" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/entity/ContentLengthStrategy" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="org/apache/http/impl/io/AbstractMessageParser" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/io/HttpMessageParser" />
-		<method name="&lt;init>(Lorg/apache/http/io/SessionInputBuffer;Lorg/apache/http/message/LineParser;Lorg/apache/http/params/HttpParams;)V" />
-		<method name="parseHead(Lorg/apache/http/io/SessionInputBuffer;)Lorg/apache/http/HttpMessage;" />
-		<method name="parseHeaders(Lorg/apache/http/io/SessionInputBuffer;IILorg/apache/http/message/LineParser;)[Lorg/apache/http/Header;" />
-		<field name="lineParser" />
-	</class>
-	<class name="org/apache/http/impl/io/AbstractMessageWriter" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/io/HttpMessageWriter" />
-		<method name="&lt;init>(Lorg/apache/http/io/SessionOutputBuffer;Lorg/apache/http/message/LineFormatter;Lorg/apache/http/params/HttpParams;)V" />
-		<method name="writeHeadLine(Lorg/apache/http/HttpMessage;)V" />
-		<field name="lineBuf" />
-		<field name="lineFormatter" />
-		<field name="sessionBuffer" />
-	</class>
-	<class name="org/apache/http/impl/io/AbstractSessionInputBuffer" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/io/SessionInputBuffer" />
-		<method name="&lt;init>()V" />
-		<method name="fillBuffer()I" />
-		<method name="hasBufferedData()Z" />
-		<method name="init(Ljava/io/InputStream;ILorg/apache/http/params/HttpParams;)V" />
-	</class>
-	<class name="org/apache/http/impl/io/AbstractSessionOutputBuffer" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/io/SessionOutputBuffer" />
-		<method name="&lt;init>()V" />
-		<method name="flushBuffer()V" />
-		<method name="init(Ljava/io/OutputStream;ILorg/apache/http/params/HttpParams;)V" />
-	</class>
-	<class name="org/apache/http/impl/io/ChunkedInputStream" since="1">
-		<extends name="java/io/InputStream" />
-		<method name="&lt;init>(Lorg/apache/http/io/SessionInputBuffer;)V" />
-		<method name="getFooters()[Lorg/apache/http/Header;" />
-	</class>
-	<class name="org/apache/http/impl/io/ChunkedOutputStream" since="1">
-		<extends name="java/io/OutputStream" />
-		<method name="&lt;init>(Lorg/apache/http/io/SessionOutputBuffer;)V" />
-		<method name="&lt;init>(Lorg/apache/http/io/SessionOutputBuffer;I)V" />
-		<method name="finish()V" />
-		<method name="flushCache()V" />
-		<method name="flushCacheWithAppend([BII)V" />
-		<method name="writeClosingChunk()V" />
-	</class>
-	<class name="org/apache/http/impl/io/ContentLengthInputStream" since="1">
-		<extends name="java/io/InputStream" />
-		<method name="&lt;init>(Lorg/apache/http/io/SessionInputBuffer;J)V" />
-	</class>
-	<class name="org/apache/http/impl/io/ContentLengthOutputStream" since="1">
-		<extends name="java/io/OutputStream" />
-		<method name="&lt;init>(Lorg/apache/http/io/SessionOutputBuffer;J)V" />
-	</class>
-	<class name="org/apache/http/impl/io/HttpRequestParser" since="1">
-		<extends name="org/apache/http/impl/io/AbstractMessageParser" />
-		<method name="&lt;init>(Lorg/apache/http/io/SessionInputBuffer;Lorg/apache/http/message/LineParser;Lorg/apache/http/HttpRequestFactory;Lorg/apache/http/params/HttpParams;)V" />
-	</class>
-	<class name="org/apache/http/impl/io/HttpRequestWriter" since="1">
-		<extends name="org/apache/http/impl/io/AbstractMessageWriter" />
-		<method name="&lt;init>(Lorg/apache/http/io/SessionOutputBuffer;Lorg/apache/http/message/LineFormatter;Lorg/apache/http/params/HttpParams;)V" />
-	</class>
-	<class name="org/apache/http/impl/io/HttpResponseParser" since="1">
-		<extends name="org/apache/http/impl/io/AbstractMessageParser" />
-		<method name="&lt;init>(Lorg/apache/http/io/SessionInputBuffer;Lorg/apache/http/message/LineParser;Lorg/apache/http/HttpResponseFactory;Lorg/apache/http/params/HttpParams;)V" />
-	</class>
-	<class name="org/apache/http/impl/io/HttpResponseWriter" since="1">
-		<extends name="org/apache/http/impl/io/AbstractMessageWriter" />
-		<method name="&lt;init>(Lorg/apache/http/io/SessionOutputBuffer;Lorg/apache/http/message/LineFormatter;Lorg/apache/http/params/HttpParams;)V" />
-	</class>
-	<class name="org/apache/http/impl/io/HttpTransportMetricsImpl" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/io/HttpTransportMetrics" />
-		<method name="&lt;init>()V" />
-		<method name="incrementBytesTransferred(J)V" />
-		<method name="setBytesTransferred(J)V" />
-	</class>
-	<class name="org/apache/http/impl/io/IdentityInputStream" since="1">
-		<extends name="java/io/InputStream" />
-		<method name="&lt;init>(Lorg/apache/http/io/SessionInputBuffer;)V" />
-	</class>
-	<class name="org/apache/http/impl/io/IdentityOutputStream" since="1">
-		<extends name="java/io/OutputStream" />
-		<method name="&lt;init>(Lorg/apache/http/io/SessionOutputBuffer;)V" />
-	</class>
-	<class name="org/apache/http/impl/io/SocketInputBuffer" since="1">
-		<extends name="org/apache/http/impl/io/AbstractSessionInputBuffer" />
-		<method name="&lt;init>(Ljava/net/Socket;ILorg/apache/http/params/HttpParams;)V" />
-	</class>
-	<class name="org/apache/http/impl/io/SocketOutputBuffer" since="1">
-		<extends name="org/apache/http/impl/io/AbstractSessionOutputBuffer" />
-		<method name="&lt;init>(Ljava/net/Socket;ILorg/apache/http/params/HttpParams;)V" />
-	</class>
-	<class name="org/apache/http/io/HttpMessageParser" since="1">
-		<extends name="java/lang/Object" />
-		<method name="parse()Lorg/apache/http/HttpMessage;" />
-	</class>
-	<class name="org/apache/http/io/HttpMessageWriter" since="1">
-		<extends name="java/lang/Object" />
-		<method name="write(Lorg/apache/http/HttpMessage;)V" />
-	</class>
-	<class name="org/apache/http/io/HttpTransportMetrics" since="1">
-		<extends name="java/lang/Object" />
-		<method name="getBytesTransferred()J" />
-		<method name="reset()V" />
-	</class>
-	<class name="org/apache/http/io/SessionInputBuffer" since="1">
-		<extends name="java/lang/Object" />
-		<method name="getMetrics()Lorg/apache/http/io/HttpTransportMetrics;" />
-		<method name="isDataAvailable(I)Z" />
-		<method name="read()I" />
-		<method name="read([B)I" />
-		<method name="read([BII)I" />
-		<method name="readLine()Ljava/lang/String;" />
-		<method name="readLine(Lorg/apache/http/util/CharArrayBuffer;)I" />
-	</class>
-	<class name="org/apache/http/io/SessionOutputBuffer" since="1">
-		<extends name="java/lang/Object" />
-		<method name="flush()V" />
-		<method name="getMetrics()Lorg/apache/http/io/HttpTransportMetrics;" />
-		<method name="write(I)V" />
-		<method name="write([B)V" />
-		<method name="write([BII)V" />
-		<method name="writeLine(Ljava/lang/String;)V" />
-		<method name="writeLine(Lorg/apache/http/util/CharArrayBuffer;)V" />
-	</class>
-	<class name="org/apache/http/message/AbstractHttpMessage" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/HttpMessage" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Lorg/apache/http/params/HttpParams;)V" />
-		<field name="headergroup" />
-		<field name="params" />
-	</class>
-	<class name="org/apache/http/message/BasicHeader" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/Cloneable" />
-		<implements name="org/apache/http/Header" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
-	</class>
-	<class name="org/apache/http/message/BasicHeaderElement" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/Cloneable" />
-		<implements name="org/apache/http/HeaderElement" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;[Lorg/apache/http/NameValuePair;)V" />
-	</class>
-	<class name="org/apache/http/message/BasicHeaderElementIterator" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/HeaderElementIterator" />
-		<method name="&lt;init>(Lorg/apache/http/HeaderIterator;)V" />
-		<method name="&lt;init>(Lorg/apache/http/HeaderIterator;Lorg/apache/http/message/HeaderValueParser;)V" />
-	</class>
-	<class name="org/apache/http/message/BasicHeaderIterator" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/HeaderIterator" />
-		<method name="&lt;init>([Lorg/apache/http/Header;Ljava/lang/String;)V" />
-		<method name="filterHeader(I)Z" />
-		<method name="findNext(I)I" />
-		<field name="allHeaders" />
-		<field name="currentIndex" />
-		<field name="headerName" />
-	</class>
-	<class name="org/apache/http/message/BasicHeaderValueFormatter" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/message/HeaderValueFormatter" />
-		<method name="&lt;init>()V" />
-		<method name="doFormatValue(Lorg/apache/http/util/CharArrayBuffer;Ljava/lang/String;Z)V" />
-		<method name="estimateElementsLen([Lorg/apache/http/HeaderElement;)I" />
-		<method name="estimateHeaderElementLen(Lorg/apache/http/HeaderElement;)I" />
-		<method name="estimateNameValuePairLen(Lorg/apache/http/NameValuePair;)I" />
-		<method name="estimateParametersLen([Lorg/apache/http/NameValuePair;)I" />
-		<method name="formatElements([Lorg/apache/http/HeaderElement;ZLorg/apache/http/message/HeaderValueFormatter;)Ljava/lang/String;" />
-		<method name="formatHeaderElement(Lorg/apache/http/HeaderElement;ZLorg/apache/http/message/HeaderValueFormatter;)Ljava/lang/String;" />
-		<method name="formatNameValuePair(Lorg/apache/http/NameValuePair;ZLorg/apache/http/message/HeaderValueFormatter;)Ljava/lang/String;" />
-		<method name="formatParameters([Lorg/apache/http/NameValuePair;ZLorg/apache/http/message/HeaderValueFormatter;)Ljava/lang/String;" />
-		<method name="isSeparator(C)Z" />
-		<method name="isUnsafe(C)Z" />
-		<field name="DEFAULT" />
-		<field name="SEPARATORS" />
-		<field name="UNSAFE_CHARS" />
-	</class>
-	<class name="org/apache/http/message/BasicHeaderValueParser" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/message/HeaderValueParser" />
-		<method name="&lt;init>()V" />
-		<method name="createHeaderElement(Ljava/lang/String;Ljava/lang/String;[Lorg/apache/http/NameValuePair;)Lorg/apache/http/HeaderElement;" />
-		<method name="createNameValuePair(Ljava/lang/String;Ljava/lang/String;)Lorg/apache/http/NameValuePair;" />
-		<method name="parseElements(Ljava/lang/String;Lorg/apache/http/message/HeaderValueParser;)[Lorg/apache/http/HeaderElement;" />
-		<method name="parseHeaderElement(Ljava/lang/String;Lorg/apache/http/message/HeaderValueParser;)Lorg/apache/http/HeaderElement;" />
-		<method name="parseNameValuePair(Ljava/lang/String;Lorg/apache/http/message/HeaderValueParser;)Lorg/apache/http/NameValuePair;" />
-		<method name="parseNameValuePair(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/message/ParserCursor;[C)Lorg/apache/http/NameValuePair;" />
-		<method name="parseParameters(Ljava/lang/String;Lorg/apache/http/message/HeaderValueParser;)[Lorg/apache/http/NameValuePair;" />
-		<field name="DEFAULT" />
-	</class>
-	<class name="org/apache/http/message/BasicHttpEntityEnclosingRequest" since="1">
-		<extends name="org/apache/http/message/BasicHttpRequest" />
-		<implements name="org/apache/http/HttpEntityEnclosingRequest" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Lorg/apache/http/ProtocolVersion;)V" />
-		<method name="&lt;init>(Lorg/apache/http/RequestLine;)V" />
-	</class>
-	<class name="org/apache/http/message/BasicHttpRequest" since="1">
-		<extends name="org/apache/http/message/AbstractHttpMessage" />
-		<implements name="org/apache/http/HttpRequest" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Lorg/apache/http/ProtocolVersion;)V" />
-		<method name="&lt;init>(Lorg/apache/http/RequestLine;)V" />
-	</class>
-	<class name="org/apache/http/message/BasicHttpResponse" since="1">
-		<extends name="org/apache/http/message/AbstractHttpMessage" />
-		<implements name="org/apache/http/HttpResponse" />
-		<method name="&lt;init>(Lorg/apache/http/ProtocolVersion;ILjava/lang/String;)V" />
-		<method name="&lt;init>(Lorg/apache/http/StatusLine;)V" />
-		<method name="&lt;init>(Lorg/apache/http/StatusLine;Lorg/apache/http/ReasonPhraseCatalog;Ljava/util/Locale;)V" />
-		<method name="getReason(I)Ljava/lang/String;" />
-	</class>
-	<class name="org/apache/http/message/BasicLineFormatter" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/message/LineFormatter" />
-		<method name="&lt;init>()V" />
-		<method name="doFormatHeader(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/Header;)V" />
-		<method name="doFormatRequestLine(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/RequestLine;)V" />
-		<method name="doFormatStatusLine(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/StatusLine;)V" />
-		<method name="estimateProtocolVersionLen(Lorg/apache/http/ProtocolVersion;)I" />
-		<method name="formatHeader(Lorg/apache/http/Header;Lorg/apache/http/message/LineFormatter;)Ljava/lang/String;" />
-		<method name="formatProtocolVersion(Lorg/apache/http/ProtocolVersion;Lorg/apache/http/message/LineFormatter;)Ljava/lang/String;" />
-		<method name="formatRequestLine(Lorg/apache/http/RequestLine;Lorg/apache/http/message/LineFormatter;)Ljava/lang/String;" />
-		<method name="formatStatusLine(Lorg/apache/http/StatusLine;Lorg/apache/http/message/LineFormatter;)Ljava/lang/String;" />
-		<method name="initBuffer(Lorg/apache/http/util/CharArrayBuffer;)Lorg/apache/http/util/CharArrayBuffer;" />
-		<field name="DEFAULT" />
-	</class>
-	<class name="org/apache/http/message/BasicLineParser" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/message/LineParser" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Lorg/apache/http/ProtocolVersion;)V" />
-		<method name="createProtocolVersion(II)Lorg/apache/http/ProtocolVersion;" />
-		<method name="createRequestLine(Ljava/lang/String;Ljava/lang/String;Lorg/apache/http/ProtocolVersion;)Lorg/apache/http/RequestLine;" />
-		<method name="createStatusLine(Lorg/apache/http/ProtocolVersion;ILjava/lang/String;)Lorg/apache/http/StatusLine;" />
-		<method name="parseHeader(Ljava/lang/String;Lorg/apache/http/message/LineParser;)Lorg/apache/http/Header;" />
-		<method name="parseProtocolVersion(Ljava/lang/String;Lorg/apache/http/message/LineParser;)Lorg/apache/http/ProtocolVersion;" />
-		<method name="parseRequestLine(Ljava/lang/String;Lorg/apache/http/message/LineParser;)Lorg/apache/http/RequestLine;" />
-		<method name="parseStatusLine(Ljava/lang/String;Lorg/apache/http/message/LineParser;)Lorg/apache/http/StatusLine;" />
-		<method name="skipWhitespace(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/message/ParserCursor;)V" />
-		<field name="DEFAULT" />
-		<field name="protocol" />
-	</class>
-	<class name="org/apache/http/message/BasicListHeaderIterator" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/HeaderIterator" />
-		<method name="&lt;init>(Ljava/util/List;Ljava/lang/String;)V" />
-		<method name="filterHeader(I)Z" />
-		<method name="findNext(I)I" />
-		<field name="allHeaders" />
-		<field name="currentIndex" />
-		<field name="headerName" />
-		<field name="lastIndex" />
-	</class>
-	<class name="org/apache/http/message/BasicNameValuePair" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/Cloneable" />
-		<implements name="org/apache/http/NameValuePair" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
-	</class>
-	<class name="org/apache/http/message/BasicRequestLine" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/Cloneable" />
-		<implements name="org/apache/http/RequestLine" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Lorg/apache/http/ProtocolVersion;)V" />
-	</class>
-	<class name="org/apache/http/message/BasicStatusLine" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/Cloneable" />
-		<implements name="org/apache/http/StatusLine" />
-		<method name="&lt;init>(Lorg/apache/http/ProtocolVersion;ILjava/lang/String;)V" />
-	</class>
-	<class name="org/apache/http/message/BasicTokenIterator" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/TokenIterator" />
-		<method name="&lt;init>(Lorg/apache/http/HeaderIterator;)V" />
-		<method name="createToken(Ljava/lang/String;II)Ljava/lang/String;" />
-		<method name="findNext(I)I" />
-		<method name="findTokenEnd(I)I" />
-		<method name="findTokenSeparator(I)I" />
-		<method name="findTokenStart(I)I" />
-		<method name="isHttpSeparator(C)Z" />
-		<method name="isTokenChar(C)Z" />
-		<method name="isTokenSeparator(C)Z" />
-		<method name="isWhitespace(C)Z" />
-		<field name="HTTP_SEPARATORS" />
-		<field name="currentHeader" />
-		<field name="currentToken" />
-		<field name="headerIt" />
-		<field name="searchPos" />
-	</class>
-	<class name="org/apache/http/message/BufferedHeader" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/Cloneable" />
-		<implements name="org/apache/http/FormattedHeader" />
-		<method name="&lt;init>(Lorg/apache/http/util/CharArrayBuffer;)V" />
-	</class>
-	<class name="org/apache/http/message/HeaderGroup" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/Cloneable" />
-		<method name="&lt;init>()V" />
-		<method name="addHeader(Lorg/apache/http/Header;)V" />
-		<method name="clear()V" />
-		<method name="containsHeader(Ljava/lang/String;)Z" />
-		<method name="copy()Lorg/apache/http/message/HeaderGroup;" />
-		<method name="getAllHeaders()[Lorg/apache/http/Header;" />
-		<method name="getCondensedHeader(Ljava/lang/String;)Lorg/apache/http/Header;" />
-		<method name="getFirstHeader(Ljava/lang/String;)Lorg/apache/http/Header;" />
-		<method name="getHeaders(Ljava/lang/String;)[Lorg/apache/http/Header;" />
-		<method name="getLastHeader(Ljava/lang/String;)Lorg/apache/http/Header;" />
-		<method name="iterator()Lorg/apache/http/HeaderIterator;" />
-		<method name="iterator(Ljava/lang/String;)Lorg/apache/http/HeaderIterator;" />
-		<method name="removeHeader(Lorg/apache/http/Header;)V" />
-		<method name="setHeaders([Lorg/apache/http/Header;)V" />
-		<method name="updateHeader(Lorg/apache/http/Header;)V" />
-	</class>
-	<class name="org/apache/http/message/HeaderValueFormatter" since="1">
-		<extends name="java/lang/Object" />
-		<method name="formatElements(Lorg/apache/http/util/CharArrayBuffer;[Lorg/apache/http/HeaderElement;Z)Lorg/apache/http/util/CharArrayBuffer;" />
-		<method name="formatHeaderElement(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/HeaderElement;Z)Lorg/apache/http/util/CharArrayBuffer;" />
-		<method name="formatNameValuePair(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/NameValuePair;Z)Lorg/apache/http/util/CharArrayBuffer;" />
-		<method name="formatParameters(Lorg/apache/http/util/CharArrayBuffer;[Lorg/apache/http/NameValuePair;Z)Lorg/apache/http/util/CharArrayBuffer;" />
-	</class>
-	<class name="org/apache/http/message/HeaderValueParser" since="1">
-		<extends name="java/lang/Object" />
-		<method name="parseElements(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/message/ParserCursor;)[Lorg/apache/http/HeaderElement;" />
-		<method name="parseHeaderElement(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/message/ParserCursor;)Lorg/apache/http/HeaderElement;" />
-		<method name="parseNameValuePair(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/message/ParserCursor;)Lorg/apache/http/NameValuePair;" />
-		<method name="parseParameters(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/message/ParserCursor;)[Lorg/apache/http/NameValuePair;" />
-	</class>
-	<class name="org/apache/http/message/LineFormatter" since="1">
-		<extends name="java/lang/Object" />
-		<method name="appendProtocolVersion(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/ProtocolVersion;)Lorg/apache/http/util/CharArrayBuffer;" />
-		<method name="formatHeader(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/Header;)Lorg/apache/http/util/CharArrayBuffer;" />
-		<method name="formatRequestLine(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/RequestLine;)Lorg/apache/http/util/CharArrayBuffer;" />
-		<method name="formatStatusLine(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/StatusLine;)Lorg/apache/http/util/CharArrayBuffer;" />
-	</class>
-	<class name="org/apache/http/message/LineParser" since="1">
-		<extends name="java/lang/Object" />
-		<method name="hasProtocolVersion(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/message/ParserCursor;)Z" />
-		<method name="parseHeader(Lorg/apache/http/util/CharArrayBuffer;)Lorg/apache/http/Header;" />
-		<method name="parseProtocolVersion(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/message/ParserCursor;)Lorg/apache/http/ProtocolVersion;" />
-		<method name="parseRequestLine(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/message/ParserCursor;)Lorg/apache/http/RequestLine;" />
-		<method name="parseStatusLine(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/message/ParserCursor;)Lorg/apache/http/StatusLine;" />
-	</class>
-	<class name="org/apache/http/message/ParserCursor" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(II)V" />
-		<method name="atEnd()Z" />
-		<method name="getLowerBound()I" />
-		<method name="getPos()I" />
-		<method name="getUpperBound()I" />
-		<method name="updatePos(I)V" />
-	</class>
-	<class name="org/apache/http/params/AbstractHttpParams" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/params/HttpParams" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="org/apache/http/params/BasicHttpParams" since="1">
-		<extends name="org/apache/http/params/AbstractHttpParams" />
-		<implements name="java/io/Serializable" />
-		<implements name="java/lang/Cloneable" />
-		<method name="&lt;init>()V" />
-		<method name="clear()V" />
-		<method name="copyParams(Lorg/apache/http/params/HttpParams;)V" />
-		<method name="isParameterSet(Ljava/lang/String;)Z" />
-		<method name="isParameterSetLocally(Ljava/lang/String;)Z" />
-		<method name="setParameters([Ljava/lang/String;Ljava/lang/Object;)V" />
-	</class>
-	<class name="org/apache/http/params/CoreConnectionPNames" since="1">
-		<extends name="java/lang/Object" />
-		<field name="CONNECTION_TIMEOUT" />
-		<field name="MAX_HEADER_COUNT" />
-		<field name="MAX_LINE_LENGTH" />
-		<field name="SOCKET_BUFFER_SIZE" />
-		<field name="SO_LINGER" />
-		<field name="SO_TIMEOUT" />
-		<field name="STALE_CONNECTION_CHECK" />
-		<field name="TCP_NODELAY" />
-	</class>
-	<class name="org/apache/http/params/CoreProtocolPNames" since="1">
-		<extends name="java/lang/Object" />
-		<field name="HTTP_CONTENT_CHARSET" />
-		<field name="HTTP_ELEMENT_CHARSET" />
-		<field name="ORIGIN_SERVER" />
-		<field name="PROTOCOL_VERSION" />
-		<field name="STRICT_TRANSFER_ENCODING" />
-		<field name="USER_AGENT" />
-		<field name="USE_EXPECT_CONTINUE" />
-		<field name="WAIT_FOR_CONTINUE" />
-	</class>
-	<class name="org/apache/http/params/DefaultedHttpParams" since="1">
-		<extends name="org/apache/http/params/AbstractHttpParams" />
-		<method name="&lt;init>(Lorg/apache/http/params/HttpParams;Lorg/apache/http/params/HttpParams;)V" />
-		<method name="getDefaults()Lorg/apache/http/params/HttpParams;" />
-	</class>
-	<class name="org/apache/http/params/HttpAbstractParamBean" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Lorg/apache/http/params/HttpParams;)V" />
-		<field name="params" />
-	</class>
-	<class name="org/apache/http/params/HttpConnectionParamBean" since="1">
-		<extends name="org/apache/http/params/HttpAbstractParamBean" />
-		<method name="&lt;init>(Lorg/apache/http/params/HttpParams;)V" />
-		<method name="setConnectionTimeout(I)V" />
-		<method name="setLinger(I)V" />
-		<method name="setSoTimeout(I)V" />
-		<method name="setSocketBufferSize(I)V" />
-		<method name="setStaleCheckingEnabled(Z)V" />
-		<method name="setTcpNoDelay(Z)V" />
-	</class>
-	<class name="org/apache/http/params/HttpConnectionParams" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/params/CoreConnectionPNames" />
-		<method name="&lt;init>()V" />
-		<method name="getConnectionTimeout(Lorg/apache/http/params/HttpParams;)I" />
-		<method name="getLinger(Lorg/apache/http/params/HttpParams;)I" />
-		<method name="getSoTimeout(Lorg/apache/http/params/HttpParams;)I" />
-		<method name="getSocketBufferSize(Lorg/apache/http/params/HttpParams;)I" />
-		<method name="getTcpNoDelay(Lorg/apache/http/params/HttpParams;)Z" />
-		<method name="isStaleCheckingEnabled(Lorg/apache/http/params/HttpParams;)Z" />
-		<method name="setConnectionTimeout(Lorg/apache/http/params/HttpParams;I)V" />
-		<method name="setLinger(Lorg/apache/http/params/HttpParams;I)V" />
-		<method name="setSoTimeout(Lorg/apache/http/params/HttpParams;I)V" />
-		<method name="setSocketBufferSize(Lorg/apache/http/params/HttpParams;I)V" />
-		<method name="setStaleCheckingEnabled(Lorg/apache/http/params/HttpParams;Z)V" />
-		<method name="setTcpNoDelay(Lorg/apache/http/params/HttpParams;Z)V" />
-	</class>
-	<class name="org/apache/http/params/HttpParams" since="1">
-		<extends name="java/lang/Object" />
-		<method name="copy()Lorg/apache/http/params/HttpParams;" />
-		<method name="getBooleanParameter(Ljava/lang/String;Z)Z" />
-		<method name="getDoubleParameter(Ljava/lang/String;D)D" />
-		<method name="getIntParameter(Ljava/lang/String;I)I" />
-		<method name="getLongParameter(Ljava/lang/String;J)J" />
-		<method name="getParameter(Ljava/lang/String;)Ljava/lang/Object;" />
-		<method name="isParameterFalse(Ljava/lang/String;)Z" />
-		<method name="isParameterTrue(Ljava/lang/String;)Z" />
-		<method name="removeParameter(Ljava/lang/String;)Z" />
-		<method name="setBooleanParameter(Ljava/lang/String;Z)Lorg/apache/http/params/HttpParams;" />
-		<method name="setDoubleParameter(Ljava/lang/String;D)Lorg/apache/http/params/HttpParams;" />
-		<method name="setIntParameter(Ljava/lang/String;I)Lorg/apache/http/params/HttpParams;" />
-		<method name="setLongParameter(Ljava/lang/String;J)Lorg/apache/http/params/HttpParams;" />
-		<method name="setParameter(Ljava/lang/String;Ljava/lang/Object;)Lorg/apache/http/params/HttpParams;" />
-	</class>
-	<class name="org/apache/http/params/HttpProtocolParamBean" since="1">
-		<extends name="org/apache/http/params/HttpAbstractParamBean" />
-		<method name="&lt;init>(Lorg/apache/http/params/HttpParams;)V" />
-		<method name="setContentCharset(Ljava/lang/String;)V" />
-		<method name="setHttpElementCharset(Ljava/lang/String;)V" />
-		<method name="setUseExpectContinue(Z)V" />
-		<method name="setUserAgent(Ljava/lang/String;)V" />
-		<method name="setVersion(Lorg/apache/http/HttpVersion;)V" />
-	</class>
-	<class name="org/apache/http/params/HttpProtocolParams" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/params/CoreProtocolPNames" />
-		<method name="&lt;init>()V" />
-		<method name="getContentCharset(Lorg/apache/http/params/HttpParams;)Ljava/lang/String;" />
-		<method name="getHttpElementCharset(Lorg/apache/http/params/HttpParams;)Ljava/lang/String;" />
-		<method name="getUserAgent(Lorg/apache/http/params/HttpParams;)Ljava/lang/String;" />
-		<method name="getVersion(Lorg/apache/http/params/HttpParams;)Lorg/apache/http/ProtocolVersion;" />
-		<method name="setContentCharset(Lorg/apache/http/params/HttpParams;Ljava/lang/String;)V" />
-		<method name="setHttpElementCharset(Lorg/apache/http/params/HttpParams;Ljava/lang/String;)V" />
-		<method name="setUseExpectContinue(Lorg/apache/http/params/HttpParams;Z)V" />
-		<method name="setUserAgent(Lorg/apache/http/params/HttpParams;Ljava/lang/String;)V" />
-		<method name="setVersion(Lorg/apache/http/params/HttpParams;Lorg/apache/http/ProtocolVersion;)V" />
-		<method name="useExpectContinue(Lorg/apache/http/params/HttpParams;)Z" />
-	</class>
-	<class name="org/apache/http/protocol/BasicHttpContext" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/protocol/HttpContext" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Lorg/apache/http/protocol/HttpContext;)V" />
-	</class>
-	<class name="org/apache/http/protocol/BasicHttpProcessor" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="java/lang/Cloneable" />
-		<implements name="org/apache/http/protocol/HttpProcessor" />
-		<implements name="org/apache/http/protocol/HttpRequestInterceptorList" />
-		<implements name="org/apache/http/protocol/HttpResponseInterceptorList" />
-		<method name="&lt;init>()V" />
-		<method name="addInterceptor(Lorg/apache/http/HttpRequestInterceptor;)V" />
-		<method name="addInterceptor(Lorg/apache/http/HttpRequestInterceptor;I)V" />
-		<method name="addInterceptor(Lorg/apache/http/HttpResponseInterceptor;)V" />
-		<method name="addInterceptor(Lorg/apache/http/HttpResponseInterceptor;I)V" />
-		<method name="clearInterceptors()V" />
-		<method name="copy()Lorg/apache/http/protocol/BasicHttpProcessor;" />
-		<method name="copyInterceptors(Lorg/apache/http/protocol/BasicHttpProcessor;)V" />
-		<field name="requestInterceptors" />
-		<field name="responseInterceptors" />
-	</class>
-	<class name="org/apache/http/protocol/DefaultedHttpContext" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/protocol/HttpContext" />
-		<method name="&lt;init>(Lorg/apache/http/protocol/HttpContext;Lorg/apache/http/protocol/HttpContext;)V" />
-		<method name="getDefaults()Lorg/apache/http/protocol/HttpContext;" />
-	</class>
-	<class name="org/apache/http/protocol/ExecutionContext" since="1">
-		<extends name="java/lang/Object" />
-		<field name="HTTP_CONNECTION" />
-		<field name="HTTP_PROXY_HOST" />
-		<field name="HTTP_REQUEST" />
-		<field name="HTTP_REQ_SENT" />
-		<field name="HTTP_RESPONSE" />
-		<field name="HTTP_TARGET_HOST" />
-	</class>
-	<class name="org/apache/http/protocol/HTTP" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="isWhitespace(C)Z" />
-		<field name="ASCII" />
-		<field name="CHARSET_PARAM" />
-		<field name="CHUNK_CODING" />
-		<field name="CONN_CLOSE" />
-		<field name="CONN_DIRECTIVE" />
-		<field name="CONN_KEEP_ALIVE" />
-		<field name="CONTENT_ENCODING" />
-		<field name="CONTENT_LEN" />
-		<field name="CONTENT_TYPE" />
-		<field name="CR" />
-		<field name="DATE_HEADER" />
-		<field name="DEFAULT_CONTENT_CHARSET" />
-		<field name="DEFAULT_CONTENT_TYPE" />
-		<field name="DEFAULT_PROTOCOL_CHARSET" />
-		<field name="EXPECT_CONTINUE" />
-		<field name="EXPECT_DIRECTIVE" />
-		<field name="HT" />
-		<field name="IDENTITY_CODING" />
-		<field name="ISO_8859_1" />
-		<field name="LF" />
-		<field name="OCTET_STREAM_TYPE" />
-		<field name="PLAIN_TEXT_TYPE" />
-		<field name="SERVER_HEADER" />
-		<field name="SP" />
-		<field name="TARGET_HOST" />
-		<field name="TRANSFER_ENCODING" />
-		<field name="USER_AGENT" />
-		<field name="US_ASCII" />
-		<field name="UTF_16" />
-		<field name="UTF_8" />
-	</class>
-	<class name="org/apache/http/protocol/HttpContext" since="1">
-		<extends name="java/lang/Object" />
-		<method name="getAttribute(Ljava/lang/String;)Ljava/lang/Object;" />
-		<method name="removeAttribute(Ljava/lang/String;)Ljava/lang/Object;" />
-		<method name="setAttribute(Ljava/lang/String;Ljava/lang/Object;)V" />
-		<field name="RESERVED_PREFIX" />
-	</class>
-	<class name="org/apache/http/protocol/HttpDateGenerator" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getCurrentDate()Ljava/lang/String;" />
-		<field name="GMT" />
-		<field name="PATTERN_RFC1123" />
-	</class>
-	<class name="org/apache/http/protocol/HttpExpectationVerifier" since="1">
-		<extends name="java/lang/Object" />
-		<method name="verify(Lorg/apache/http/HttpRequest;Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)V" />
-	</class>
-	<class name="org/apache/http/protocol/HttpProcessor" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/HttpRequestInterceptor" />
-		<implements name="org/apache/http/HttpResponseInterceptor" />
-	</class>
-	<class name="org/apache/http/protocol/HttpRequestExecutor" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="canResponseHaveBody(Lorg/apache/http/HttpRequest;Lorg/apache/http/HttpResponse;)Z" />
-		<method name="doReceiveResponse(Lorg/apache/http/HttpRequest;Lorg/apache/http/HttpClientConnection;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/HttpResponse;" />
-		<method name="doSendRequest(Lorg/apache/http/HttpRequest;Lorg/apache/http/HttpClientConnection;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/HttpResponse;" />
-		<method name="execute(Lorg/apache/http/HttpRequest;Lorg/apache/http/HttpClientConnection;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/HttpResponse;" />
-		<method name="postProcess(Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpProcessor;Lorg/apache/http/protocol/HttpContext;)V" />
-		<method name="preProcess(Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpProcessor;Lorg/apache/http/protocol/HttpContext;)V" />
-	</class>
-	<class name="org/apache/http/protocol/HttpRequestHandler" since="1">
-		<extends name="java/lang/Object" />
-		<method name="handle(Lorg/apache/http/HttpRequest;Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)V" />
-	</class>
-	<class name="org/apache/http/protocol/HttpRequestHandlerRegistry" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/protocol/HttpRequestHandlerResolver" />
-		<method name="&lt;init>()V" />
-		<method name="matchUriRequestPattern(Ljava/lang/String;Ljava/lang/String;)Z" />
-		<method name="register(Ljava/lang/String;Lorg/apache/http/protocol/HttpRequestHandler;)V" />
-		<method name="setHandlers(Ljava/util/Map;)V" />
-		<method name="unregister(Ljava/lang/String;)V" />
-	</class>
-	<class name="org/apache/http/protocol/HttpRequestHandlerResolver" since="1">
-		<extends name="java/lang/Object" />
-		<method name="lookup(Ljava/lang/String;)Lorg/apache/http/protocol/HttpRequestHandler;" />
-	</class>
-	<class name="org/apache/http/protocol/HttpRequestInterceptorList" since="1">
-		<extends name="java/lang/Object" />
-		<method name="addRequestInterceptor(Lorg/apache/http/HttpRequestInterceptor;)V" />
-		<method name="addRequestInterceptor(Lorg/apache/http/HttpRequestInterceptor;I)V" />
-		<method name="clearRequestInterceptors()V" />
-		<method name="getRequestInterceptor(I)Lorg/apache/http/HttpRequestInterceptor;" />
-		<method name="getRequestInterceptorCount()I" />
-		<method name="removeRequestInterceptorByClass(Ljava/lang/Class;)V" />
-		<method name="setInterceptors(Ljava/util/List;)V" />
-	</class>
-	<class name="org/apache/http/protocol/HttpResponseInterceptorList" since="1">
-		<extends name="java/lang/Object" />
-		<method name="addResponseInterceptor(Lorg/apache/http/HttpResponseInterceptor;)V" />
-		<method name="addResponseInterceptor(Lorg/apache/http/HttpResponseInterceptor;I)V" />
-		<method name="clearResponseInterceptors()V" />
-		<method name="getResponseInterceptor(I)Lorg/apache/http/HttpResponseInterceptor;" />
-		<method name="getResponseInterceptorCount()I" />
-		<method name="removeResponseInterceptorByClass(Ljava/lang/Class;)V" />
-		<method name="setInterceptors(Ljava/util/List;)V" />
-	</class>
-	<class name="org/apache/http/protocol/HttpService" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Lorg/apache/http/protocol/HttpProcessor;Lorg/apache/http/ConnectionReuseStrategy;Lorg/apache/http/HttpResponseFactory;)V" />
-		<method name="doService(Lorg/apache/http/HttpRequest;Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)V" />
-		<method name="getParams()Lorg/apache/http/params/HttpParams;" />
-		<method name="handleException(Lorg/apache/http/HttpException;Lorg/apache/http/HttpResponse;)V" />
-		<method name="handleRequest(Lorg/apache/http/HttpServerConnection;Lorg/apache/http/protocol/HttpContext;)V" />
-		<method name="setConnReuseStrategy(Lorg/apache/http/ConnectionReuseStrategy;)V" />
-		<method name="setExpectationVerifier(Lorg/apache/http/protocol/HttpExpectationVerifier;)V" />
-		<method name="setHandlerResolver(Lorg/apache/http/protocol/HttpRequestHandlerResolver;)V" />
-		<method name="setHttpProcessor(Lorg/apache/http/protocol/HttpProcessor;)V" />
-		<method name="setParams(Lorg/apache/http/params/HttpParams;)V" />
-		<method name="setResponseFactory(Lorg/apache/http/HttpResponseFactory;)V" />
-	</class>
-	<class name="org/apache/http/protocol/RequestConnControl" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/HttpRequestInterceptor" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="org/apache/http/protocol/RequestContent" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/HttpRequestInterceptor" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="org/apache/http/protocol/RequestDate" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/HttpRequestInterceptor" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="org/apache/http/protocol/RequestExpectContinue" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/HttpRequestInterceptor" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="org/apache/http/protocol/RequestTargetHost" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/HttpRequestInterceptor" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="org/apache/http/protocol/RequestUserAgent" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/HttpRequestInterceptor" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="org/apache/http/protocol/ResponseConnControl" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/HttpResponseInterceptor" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="org/apache/http/protocol/ResponseContent" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/HttpResponseInterceptor" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="org/apache/http/protocol/ResponseDate" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/HttpResponseInterceptor" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="org/apache/http/protocol/ResponseServer" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/HttpResponseInterceptor" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="org/apache/http/protocol/SyncBasicHttpContext" since="1">
-		<extends name="org/apache/http/protocol/BasicHttpContext" />
-		<method name="&lt;init>(Lorg/apache/http/protocol/HttpContext;)V" />
-	</class>
-	<class name="org/apache/http/protocol/UriPatternMatcher" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="lookup(Ljava/lang/String;)Ljava/lang/Object;" />
-		<method name="matchUriRequestPattern(Ljava/lang/String;Ljava/lang/String;)Z" />
-		<method name="register(Ljava/lang/String;Ljava/lang/Object;)V" />
-		<method name="setHandlers(Ljava/util/Map;)V" />
-		<method name="unregister(Ljava/lang/String;)V" />
-	</class>
-	<class name="org/apache/http/util/ByteArrayBuffer" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(I)V" />
-		<method name="append(I)V" />
-		<method name="append(Lorg/apache/http/util/CharArrayBuffer;II)V" />
-		<method name="append([BII)V" />
-		<method name="append([CII)V" />
-		<method name="buffer()[B" />
-		<method name="byteAt(I)I" />
-		<method name="capacity()I" />
-		<method name="clear()V" />
-		<method name="isEmpty()Z" />
-		<method name="isFull()Z" />
-		<method name="length()I" />
-		<method name="setLength(I)V" />
-		<method name="toByteArray()[B" />
-	</class>
-	<class name="org/apache/http/util/CharArrayBuffer" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(I)V" />
-		<method name="append(C)V" />
-		<method name="append(Ljava/lang/Object;)V" />
-		<method name="append(Ljava/lang/String;)V" />
-		<method name="append(Lorg/apache/http/util/ByteArrayBuffer;II)V" />
-		<method name="append(Lorg/apache/http/util/CharArrayBuffer;)V" />
-		<method name="append(Lorg/apache/http/util/CharArrayBuffer;II)V" />
-		<method name="append([BII)V" />
-		<method name="append([CII)V" />
-		<method name="buffer()[C" />
-		<method name="capacity()I" />
-		<method name="charAt(I)C" />
-		<method name="clear()V" />
-		<method name="ensureCapacity(I)V" />
-		<method name="indexOf(I)I" />
-		<method name="indexOf(III)I" />
-		<method name="isEmpty()Z" />
-		<method name="isFull()Z" />
-		<method name="length()I" />
-		<method name="setLength(I)V" />
-		<method name="substring(II)Ljava/lang/String;" />
-		<method name="substringTrimmed(II)Ljava/lang/String;" />
-		<method name="toCharArray()[C" />
-	</class>
-	<class name="org/apache/http/util/EncodingUtils" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getAsciiBytes(Ljava/lang/String;)[B" />
-		<method name="getAsciiString([B)Ljava/lang/String;" />
-		<method name="getAsciiString([BII)Ljava/lang/String;" />
-		<method name="getBytes(Ljava/lang/String;Ljava/lang/String;)[B" />
-		<method name="getString([BIILjava/lang/String;)Ljava/lang/String;" />
-		<method name="getString([BLjava/lang/String;)Ljava/lang/String;" />
-	</class>
-	<class name="org/apache/http/util/EntityUtils" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getContentCharSet(Lorg/apache/http/HttpEntity;)Ljava/lang/String;" />
-		<method name="toByteArray(Lorg/apache/http/HttpEntity;)[B" />
-		<method name="toString(Lorg/apache/http/HttpEntity;)Ljava/lang/String;" />
-		<method name="toString(Lorg/apache/http/HttpEntity;Ljava/lang/String;)Ljava/lang/String;" />
-	</class>
-	<class name="org/apache/http/util/ExceptionUtils" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="initCause(Ljava/lang/Throwable;Ljava/lang/Throwable;)V" />
-	</class>
-	<class name="org/apache/http/util/LangUtils" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="equals(Ljava/lang/Object;Ljava/lang/Object;)Z" />
-		<method name="equals([Ljava/lang/Object;[Ljava/lang/Object;)Z" />
-		<method name="hashCode(II)I" />
-		<method name="hashCode(ILjava/lang/Object;)I" />
-		<method name="hashCode(IZ)I" />
-		<field name="HASH_OFFSET" />
-		<field name="HASH_SEED" />
-	</class>
-	<class name="org/apache/http/util/VersionInfo" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="fromMap(Ljava/lang/String;Ljava/util/Map;Ljava/lang/ClassLoader;)Lorg/apache/http/util/VersionInfo;" />
-		<method name="getClassloader()Ljava/lang/String;" />
-		<method name="getModule()Ljava/lang/String;" />
-		<method name="getPackage()Ljava/lang/String;" />
-		<method name="getRelease()Ljava/lang/String;" />
-		<method name="getTimestamp()Ljava/lang/String;" />
-		<method name="loadVersionInfo(Ljava/lang/String;Ljava/lang/ClassLoader;)Lorg/apache/http/util/VersionInfo;" />
-		<method name="loadVersionInfo([Ljava/lang/String;Ljava/lang/ClassLoader;)[Lorg/apache/http/util/VersionInfo;" />
-		<field name="PROPERTY_MODULE" />
-		<field name="PROPERTY_RELEASE" />
-		<field name="PROPERTY_TIMESTAMP" />
-		<field name="UNAVAILABLE" />
-		<field name="VERSION_PROPERTY_FILE" />
-	</class>
-	<class name="org/json/JSONArray" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/Object;)V" since="19" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/util/Collection;)V" />
-		<method name="&lt;init>(Lorg/json/JSONTokener;)V" />
-		<method name="get(I)Ljava/lang/Object;" />
-		<method name="getBoolean(I)Z" />
-		<method name="getDouble(I)D" />
-		<method name="getInt(I)I" />
-		<method name="getJSONArray(I)Lorg/json/JSONArray;" />
-		<method name="getJSONObject(I)Lorg/json/JSONObject;" />
-		<method name="getLong(I)J" />
-		<method name="getString(I)Ljava/lang/String;" />
-		<method name="isNull(I)Z" />
-		<method name="join(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="length()I" />
-		<method name="opt(I)Ljava/lang/Object;" />
-		<method name="optBoolean(I)Z" />
-		<method name="optBoolean(IZ)Z" />
-		<method name="optDouble(I)D" />
-		<method name="optDouble(ID)D" />
-		<method name="optInt(I)I" />
-		<method name="optInt(II)I" />
-		<method name="optJSONArray(I)Lorg/json/JSONArray;" />
-		<method name="optJSONObject(I)Lorg/json/JSONObject;" />
-		<method name="optLong(I)J" />
-		<method name="optLong(IJ)J" />
-		<method name="optString(I)Ljava/lang/String;" />
-		<method name="optString(ILjava/lang/String;)Ljava/lang/String;" />
-		<method name="put(D)Lorg/json/JSONArray;" />
-		<method name="put(I)Lorg/json/JSONArray;" />
-		<method name="put(ID)Lorg/json/JSONArray;" />
-		<method name="put(II)Lorg/json/JSONArray;" />
-		<method name="put(IJ)Lorg/json/JSONArray;" />
-		<method name="put(ILjava/lang/Object;)Lorg/json/JSONArray;" />
-		<method name="put(IZ)Lorg/json/JSONArray;" />
-		<method name="put(J)Lorg/json/JSONArray;" />
-		<method name="put(Ljava/lang/Object;)Lorg/json/JSONArray;" />
-		<method name="put(Z)Lorg/json/JSONArray;" />
-		<method name="remove(I)Ljava/lang/Object;" since="19" />
-		<method name="toJSONObject(Lorg/json/JSONArray;)Lorg/json/JSONObject;" />
-		<method name="toString(I)Ljava/lang/String;" />
-	</class>
-	<class name="org/json/JSONException" since="1">
-		<extends name="java/lang/Exception" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="org/json/JSONObject" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/util/Map;)V" />
-		<method name="&lt;init>(Lorg/json/JSONObject;[Ljava/lang/String;)V" />
-		<method name="&lt;init>(Lorg/json/JSONTokener;)V" />
-		<method name="accumulate(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;" />
-		<method name="get(Ljava/lang/String;)Ljava/lang/Object;" />
-		<method name="getBoolean(Ljava/lang/String;)Z" />
-		<method name="getDouble(Ljava/lang/String;)D" />
-		<method name="getInt(Ljava/lang/String;)I" />
-		<method name="getJSONArray(Ljava/lang/String;)Lorg/json/JSONArray;" />
-		<method name="getJSONObject(Ljava/lang/String;)Lorg/json/JSONObject;" />
-		<method name="getLong(Ljava/lang/String;)J" />
-		<method name="getString(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="has(Ljava/lang/String;)Z" />
-		<method name="isNull(Ljava/lang/String;)Z" />
-		<method name="keys()Ljava/util/Iterator;" />
-		<method name="length()I" />
-		<method name="names()Lorg/json/JSONArray;" />
-		<method name="numberToString(Ljava/lang/Number;)Ljava/lang/String;" />
-		<method name="opt(Ljava/lang/String;)Ljava/lang/Object;" />
-		<method name="optBoolean(Ljava/lang/String;)Z" />
-		<method name="optBoolean(Ljava/lang/String;Z)Z" />
-		<method name="optDouble(Ljava/lang/String;)D" />
-		<method name="optDouble(Ljava/lang/String;D)D" />
-		<method name="optInt(Ljava/lang/String;)I" />
-		<method name="optInt(Ljava/lang/String;I)I" />
-		<method name="optJSONArray(Ljava/lang/String;)Lorg/json/JSONArray;" />
-		<method name="optJSONObject(Ljava/lang/String;)Lorg/json/JSONObject;" />
-		<method name="optLong(Ljava/lang/String;)J" />
-		<method name="optLong(Ljava/lang/String;J)J" />
-		<method name="optString(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="optString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="put(Ljava/lang/String;D)Lorg/json/JSONObject;" />
-		<method name="put(Ljava/lang/String;I)Lorg/json/JSONObject;" />
-		<method name="put(Ljava/lang/String;J)Lorg/json/JSONObject;" />
-		<method name="put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;" />
-		<method name="put(Ljava/lang/String;Z)Lorg/json/JSONObject;" />
-		<method name="putOpt(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;" />
-		<method name="quote(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="remove(Ljava/lang/String;)Ljava/lang/Object;" />
-		<method name="toJSONArray(Lorg/json/JSONArray;)Lorg/json/JSONArray;" />
-		<method name="toString(I)Ljava/lang/String;" />
-		<method name="wrap(Ljava/lang/Object;)Ljava/lang/Object;" since="19" />
-		<field name="NULL" />
-	</class>
-	<class name="org/json/JSONStringer" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="array()Lorg/json/JSONStringer;" />
-		<method name="endArray()Lorg/json/JSONStringer;" />
-		<method name="endObject()Lorg/json/JSONStringer;" />
-		<method name="key(Ljava/lang/String;)Lorg/json/JSONStringer;" />
-		<method name="object()Lorg/json/JSONStringer;" />
-		<method name="value(D)Lorg/json/JSONStringer;" />
-		<method name="value(J)Lorg/json/JSONStringer;" />
-		<method name="value(Ljava/lang/Object;)Lorg/json/JSONStringer;" />
-		<method name="value(Z)Lorg/json/JSONStringer;" />
-	</class>
-	<class name="org/json/JSONTokener" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="back()V" />
-		<method name="dehexchar(C)I" />
-		<method name="more()Z" />
-		<method name="next()C" />
-		<method name="next(C)C" />
-		<method name="next(I)Ljava/lang/String;" />
-		<method name="nextClean()C" />
-		<method name="nextString(C)Ljava/lang/String;" />
-		<method name="nextTo(C)Ljava/lang/String;" />
-		<method name="nextTo(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="nextValue()Ljava/lang/Object;" />
-		<method name="skipPast(Ljava/lang/String;)V" />
-		<method name="skipTo(C)C" />
-		<method name="syntaxError(Ljava/lang/String;)Lorg/json/JSONException;" />
-	</class>
-	<class name="org/w3c/dom/Attr" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/w3c/dom/Node" />
-		<method name="getName()Ljava/lang/String;" />
-		<method name="getOwnerElement()Lorg/w3c/dom/Element;" />
-		<method name="getSchemaTypeInfo()Lorg/w3c/dom/TypeInfo;" since="8" />
-		<method name="getSpecified()Z" />
-		<method name="getValue()Ljava/lang/String;" />
-		<method name="isId()Z" since="8" />
-		<method name="setValue(Ljava/lang/String;)V" />
-	</class>
-	<class name="org/w3c/dom/CDATASection" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/w3c/dom/Text" />
-	</class>
-	<class name="org/w3c/dom/CharacterData" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/w3c/dom/Node" />
-		<method name="appendData(Ljava/lang/String;)V" />
-		<method name="deleteData(II)V" />
-		<method name="getData()Ljava/lang/String;" />
-		<method name="getLength()I" />
-		<method name="insertData(ILjava/lang/String;)V" />
-		<method name="replaceData(IILjava/lang/String;)V" />
-		<method name="setData(Ljava/lang/String;)V" />
-		<method name="substringData(II)Ljava/lang/String;" />
-	</class>
-	<class name="org/w3c/dom/Comment" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/w3c/dom/CharacterData" />
-	</class>
-	<class name="org/w3c/dom/DOMConfiguration" since="8">
-		<extends name="java/lang/Object" />
-		<method name="canSetParameter(Ljava/lang/String;Ljava/lang/Object;)Z" />
-		<method name="getParameter(Ljava/lang/String;)Ljava/lang/Object;" />
-		<method name="getParameterNames()Lorg/w3c/dom/DOMStringList;" />
-		<method name="setParameter(Ljava/lang/String;Ljava/lang/Object;)V" />
-	</class>
-	<class name="org/w3c/dom/DOMError" since="8">
-		<extends name="java/lang/Object" />
-		<method name="getLocation()Lorg/w3c/dom/DOMLocator;" />
-		<method name="getMessage()Ljava/lang/String;" />
-		<method name="getRelatedData()Ljava/lang/Object;" />
-		<method name="getRelatedException()Ljava/lang/Object;" />
-		<method name="getSeverity()S" />
-		<method name="getType()Ljava/lang/String;" />
-		<field name="SEVERITY_ERROR" />
-		<field name="SEVERITY_FATAL_ERROR" />
-		<field name="SEVERITY_WARNING" />
-	</class>
-	<class name="org/w3c/dom/DOMErrorHandler" since="8">
-		<extends name="java/lang/Object" />
-		<method name="handleError(Lorg/w3c/dom/DOMError;)Z" />
-	</class>
-	<class name="org/w3c/dom/DOMException" since="1">
-		<extends name="java/lang/RuntimeException" />
-		<method name="&lt;init>(SLjava/lang/String;)V" />
-		<field name="DOMSTRING_SIZE_ERR" />
-		<field name="HIERARCHY_REQUEST_ERR" />
-		<field name="INDEX_SIZE_ERR" />
-		<field name="INUSE_ATTRIBUTE_ERR" />
-		<field name="INVALID_ACCESS_ERR" />
-		<field name="INVALID_CHARACTER_ERR" />
-		<field name="INVALID_MODIFICATION_ERR" />
-		<field name="INVALID_STATE_ERR" />
-		<field name="NAMESPACE_ERR" />
-		<field name="NOT_FOUND_ERR" />
-		<field name="NOT_SUPPORTED_ERR" />
-		<field name="NO_DATA_ALLOWED_ERR" />
-		<field name="NO_MODIFICATION_ALLOWED_ERR" />
-		<field name="SYNTAX_ERR" />
-		<field name="TYPE_MISMATCH_ERR" since="8" />
-		<field name="VALIDATION_ERR" since="8" />
-		<field name="WRONG_DOCUMENT_ERR" />
-		<field name="code" />
-	</class>
-	<class name="org/w3c/dom/DOMImplementation" since="1">
-		<extends name="java/lang/Object" />
-		<method name="createDocument(Ljava/lang/String;Ljava/lang/String;Lorg/w3c/dom/DocumentType;)Lorg/w3c/dom/Document;" />
-		<method name="createDocumentType(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/w3c/dom/DocumentType;" />
-		<method name="getFeature(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;" since="8" />
-		<method name="hasFeature(Ljava/lang/String;Ljava/lang/String;)Z" />
-	</class>
-	<class name="org/w3c/dom/DOMImplementationList" since="8">
-		<extends name="java/lang/Object" />
-		<method name="getLength()I" />
-		<method name="item(I)Lorg/w3c/dom/DOMImplementation;" />
-	</class>
-	<class name="org/w3c/dom/DOMImplementationSource" since="8">
-		<extends name="java/lang/Object" />
-		<method name="getDOMImplementation(Ljava/lang/String;)Lorg/w3c/dom/DOMImplementation;" />
-		<method name="getDOMImplementationList(Ljava/lang/String;)Lorg/w3c/dom/DOMImplementationList;" />
-	</class>
-	<class name="org/w3c/dom/DOMLocator" since="8">
-		<extends name="java/lang/Object" />
-		<method name="getByteOffset()I" />
-		<method name="getColumnNumber()I" />
-		<method name="getLineNumber()I" />
-		<method name="getRelatedNode()Lorg/w3c/dom/Node;" />
-		<method name="getUri()Ljava/lang/String;" />
-		<method name="getUtf16Offset()I" />
-	</class>
-	<class name="org/w3c/dom/DOMStringList" since="8">
-		<extends name="java/lang/Object" />
-		<method name="contains(Ljava/lang/String;)Z" />
-		<method name="getLength()I" />
-		<method name="item(I)Ljava/lang/String;" />
-	</class>
-	<class name="org/w3c/dom/Document" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/w3c/dom/Node" />
-		<method name="adoptNode(Lorg/w3c/dom/Node;)Lorg/w3c/dom/Node;" since="8" />
-		<method name="createAttribute(Ljava/lang/String;)Lorg/w3c/dom/Attr;" />
-		<method name="createAttributeNS(Ljava/lang/String;Ljava/lang/String;)Lorg/w3c/dom/Attr;" />
-		<method name="createCDATASection(Ljava/lang/String;)Lorg/w3c/dom/CDATASection;" />
-		<method name="createComment(Ljava/lang/String;)Lorg/w3c/dom/Comment;" />
-		<method name="createDocumentFragment()Lorg/w3c/dom/DocumentFragment;" />
-		<method name="createElement(Ljava/lang/String;)Lorg/w3c/dom/Element;" />
-		<method name="createElementNS(Ljava/lang/String;Ljava/lang/String;)Lorg/w3c/dom/Element;" />
-		<method name="createEntityReference(Ljava/lang/String;)Lorg/w3c/dom/EntityReference;" />
-		<method name="createProcessingInstruction(Ljava/lang/String;Ljava/lang/String;)Lorg/w3c/dom/ProcessingInstruction;" />
-		<method name="createTextNode(Ljava/lang/String;)Lorg/w3c/dom/Text;" />
-		<method name="getDoctype()Lorg/w3c/dom/DocumentType;" />
-		<method name="getDocumentElement()Lorg/w3c/dom/Element;" />
-		<method name="getDocumentURI()Ljava/lang/String;" since="8" />
-		<method name="getDomConfig()Lorg/w3c/dom/DOMConfiguration;" since="8" />
-		<method name="getElementById(Ljava/lang/String;)Lorg/w3c/dom/Element;" />
-		<method name="getElementsByTagName(Ljava/lang/String;)Lorg/w3c/dom/NodeList;" />
-		<method name="getElementsByTagNameNS(Ljava/lang/String;Ljava/lang/String;)Lorg/w3c/dom/NodeList;" />
-		<method name="getImplementation()Lorg/w3c/dom/DOMImplementation;" />
-		<method name="getInputEncoding()Ljava/lang/String;" since="8" />
-		<method name="getStrictErrorChecking()Z" since="8" />
-		<method name="getXmlEncoding()Ljava/lang/String;" since="8" />
-		<method name="getXmlStandalone()Z" since="8" />
-		<method name="getXmlVersion()Ljava/lang/String;" since="8" />
-		<method name="importNode(Lorg/w3c/dom/Node;Z)Lorg/w3c/dom/Node;" />
-		<method name="normalizeDocument()V" since="8" />
-		<method name="renameNode(Lorg/w3c/dom/Node;Ljava/lang/String;Ljava/lang/String;)Lorg/w3c/dom/Node;" since="8" />
-		<method name="setDocumentURI(Ljava/lang/String;)V" since="8" />
-		<method name="setStrictErrorChecking(Z)V" since="8" />
-		<method name="setXmlStandalone(Z)V" since="8" />
-		<method name="setXmlVersion(Ljava/lang/String;)V" since="8" />
-	</class>
-	<class name="org/w3c/dom/DocumentFragment" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/w3c/dom/Node" />
-	</class>
-	<class name="org/w3c/dom/DocumentType" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/w3c/dom/Node" />
-		<method name="getEntities()Lorg/w3c/dom/NamedNodeMap;" />
-		<method name="getInternalSubset()Ljava/lang/String;" />
-		<method name="getName()Ljava/lang/String;" />
-		<method name="getNotations()Lorg/w3c/dom/NamedNodeMap;" />
-		<method name="getPublicId()Ljava/lang/String;" />
-		<method name="getSystemId()Ljava/lang/String;" />
-	</class>
-	<class name="org/w3c/dom/Element" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/w3c/dom/Node" />
-		<method name="getAttribute(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="getAttributeNS(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="getAttributeNode(Ljava/lang/String;)Lorg/w3c/dom/Attr;" />
-		<method name="getAttributeNodeNS(Ljava/lang/String;Ljava/lang/String;)Lorg/w3c/dom/Attr;" />
-		<method name="getElementsByTagName(Ljava/lang/String;)Lorg/w3c/dom/NodeList;" />
-		<method name="getElementsByTagNameNS(Ljava/lang/String;Ljava/lang/String;)Lorg/w3c/dom/NodeList;" />
-		<method name="getSchemaTypeInfo()Lorg/w3c/dom/TypeInfo;" since="8" />
-		<method name="getTagName()Ljava/lang/String;" />
-		<method name="hasAttribute(Ljava/lang/String;)Z" />
-		<method name="hasAttributeNS(Ljava/lang/String;Ljava/lang/String;)Z" />
-		<method name="removeAttribute(Ljava/lang/String;)V" />
-		<method name="removeAttributeNS(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="removeAttributeNode(Lorg/w3c/dom/Attr;)Lorg/w3c/dom/Attr;" />
-		<method name="setAttribute(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="setAttributeNS(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="setAttributeNode(Lorg/w3c/dom/Attr;)Lorg/w3c/dom/Attr;" />
-		<method name="setAttributeNodeNS(Lorg/w3c/dom/Attr;)Lorg/w3c/dom/Attr;" />
-		<method name="setIdAttribute(Ljava/lang/String;Z)V" since="8" />
-		<method name="setIdAttributeNS(Ljava/lang/String;Ljava/lang/String;Z)V" since="8" />
-		<method name="setIdAttributeNode(Lorg/w3c/dom/Attr;Z)V" since="8" />
-	</class>
-	<class name="org/w3c/dom/Entity" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/w3c/dom/Node" />
-		<method name="getInputEncoding()Ljava/lang/String;" since="8" />
-		<method name="getNotationName()Ljava/lang/String;" />
-		<method name="getPublicId()Ljava/lang/String;" />
-		<method name="getSystemId()Ljava/lang/String;" />
-		<method name="getXmlEncoding()Ljava/lang/String;" since="8" />
-		<method name="getXmlVersion()Ljava/lang/String;" since="8" />
-	</class>
-	<class name="org/w3c/dom/EntityReference" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/w3c/dom/Node" />
-	</class>
-	<class name="org/w3c/dom/NameList" since="8">
-		<extends name="java/lang/Object" />
-		<method name="contains(Ljava/lang/String;)Z" />
-		<method name="containsNS(Ljava/lang/String;Ljava/lang/String;)Z" />
-		<method name="getLength()I" />
-		<method name="getName(I)Ljava/lang/String;" />
-		<method name="getNamespaceURI(I)Ljava/lang/String;" />
-	</class>
-	<class name="org/w3c/dom/NamedNodeMap" since="1">
-		<extends name="java/lang/Object" />
-		<method name="getLength()I" />
-		<method name="getNamedItem(Ljava/lang/String;)Lorg/w3c/dom/Node;" />
-		<method name="getNamedItemNS(Ljava/lang/String;Ljava/lang/String;)Lorg/w3c/dom/Node;" />
-		<method name="item(I)Lorg/w3c/dom/Node;" />
-		<method name="removeNamedItem(Ljava/lang/String;)Lorg/w3c/dom/Node;" />
-		<method name="removeNamedItemNS(Ljava/lang/String;Ljava/lang/String;)Lorg/w3c/dom/Node;" />
-		<method name="setNamedItem(Lorg/w3c/dom/Node;)Lorg/w3c/dom/Node;" />
-		<method name="setNamedItemNS(Lorg/w3c/dom/Node;)Lorg/w3c/dom/Node;" />
-	</class>
-	<class name="org/w3c/dom/Node" since="1">
-		<extends name="java/lang/Object" />
-		<method name="appendChild(Lorg/w3c/dom/Node;)Lorg/w3c/dom/Node;" />
-		<method name="cloneNode(Z)Lorg/w3c/dom/Node;" />
-		<method name="compareDocumentPosition(Lorg/w3c/dom/Node;)S" since="8" />
-		<method name="getAttributes()Lorg/w3c/dom/NamedNodeMap;" />
-		<method name="getBaseURI()Ljava/lang/String;" since="8" />
-		<method name="getChildNodes()Lorg/w3c/dom/NodeList;" />
-		<method name="getFeature(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;" since="8" />
-		<method name="getFirstChild()Lorg/w3c/dom/Node;" />
-		<method name="getLastChild()Lorg/w3c/dom/Node;" />
-		<method name="getLocalName()Ljava/lang/String;" />
-		<method name="getNamespaceURI()Ljava/lang/String;" />
-		<method name="getNextSibling()Lorg/w3c/dom/Node;" />
-		<method name="getNodeName()Ljava/lang/String;" />
-		<method name="getNodeType()S" />
-		<method name="getNodeValue()Ljava/lang/String;" />
-		<method name="getOwnerDocument()Lorg/w3c/dom/Document;" />
-		<method name="getParentNode()Lorg/w3c/dom/Node;" />
-		<method name="getPrefix()Ljava/lang/String;" />
-		<method name="getPreviousSibling()Lorg/w3c/dom/Node;" />
-		<method name="getTextContent()Ljava/lang/String;" since="8" />
-		<method name="getUserData(Ljava/lang/String;)Ljava/lang/Object;" since="8" />
-		<method name="hasAttributes()Z" />
-		<method name="hasChildNodes()Z" />
-		<method name="insertBefore(Lorg/w3c/dom/Node;Lorg/w3c/dom/Node;)Lorg/w3c/dom/Node;" />
-		<method name="isDefaultNamespace(Ljava/lang/String;)Z" since="8" />
-		<method name="isEqualNode(Lorg/w3c/dom/Node;)Z" since="8" />
-		<method name="isSameNode(Lorg/w3c/dom/Node;)Z" since="8" />
-		<method name="isSupported(Ljava/lang/String;Ljava/lang/String;)Z" />
-		<method name="lookupNamespaceURI(Ljava/lang/String;)Ljava/lang/String;" since="8" />
-		<method name="lookupPrefix(Ljava/lang/String;)Ljava/lang/String;" since="8" />
-		<method name="normalize()V" />
-		<method name="removeChild(Lorg/w3c/dom/Node;)Lorg/w3c/dom/Node;" />
-		<method name="replaceChild(Lorg/w3c/dom/Node;Lorg/w3c/dom/Node;)Lorg/w3c/dom/Node;" />
-		<method name="setNodeValue(Ljava/lang/String;)V" />
-		<method name="setPrefix(Ljava/lang/String;)V" />
-		<method name="setTextContent(Ljava/lang/String;)V" since="8" />
-		<method name="setUserData(Ljava/lang/String;Ljava/lang/Object;Lorg/w3c/dom/UserDataHandler;)Ljava/lang/Object;" since="8" />
-		<field name="ATTRIBUTE_NODE" />
-		<field name="CDATA_SECTION_NODE" />
-		<field name="COMMENT_NODE" />
-		<field name="DOCUMENT_FRAGMENT_NODE" />
-		<field name="DOCUMENT_NODE" />
-		<field name="DOCUMENT_POSITION_CONTAINED_BY" since="8" />
-		<field name="DOCUMENT_POSITION_CONTAINS" since="8" />
-		<field name="DOCUMENT_POSITION_DISCONNECTED" since="8" />
-		<field name="DOCUMENT_POSITION_FOLLOWING" since="8" />
-		<field name="DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC" since="8" />
-		<field name="DOCUMENT_POSITION_PRECEDING" since="8" />
-		<field name="DOCUMENT_TYPE_NODE" />
-		<field name="ELEMENT_NODE" />
-		<field name="ENTITY_NODE" />
-		<field name="ENTITY_REFERENCE_NODE" />
-		<field name="NOTATION_NODE" />
-		<field name="PROCESSING_INSTRUCTION_NODE" />
-		<field name="TEXT_NODE" />
-	</class>
-	<class name="org/w3c/dom/NodeList" since="1">
-		<extends name="java/lang/Object" />
-		<method name="getLength()I" />
-		<method name="item(I)Lorg/w3c/dom/Node;" />
-	</class>
-	<class name="org/w3c/dom/Notation" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/w3c/dom/Node" />
-		<method name="getPublicId()Ljava/lang/String;" />
-		<method name="getSystemId()Ljava/lang/String;" />
-	</class>
-	<class name="org/w3c/dom/ProcessingInstruction" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/w3c/dom/Node" />
-		<method name="getData()Ljava/lang/String;" />
-		<method name="getTarget()Ljava/lang/String;" />
-		<method name="setData(Ljava/lang/String;)V" />
-	</class>
-	<class name="org/w3c/dom/Text" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/w3c/dom/CharacterData" />
-		<method name="getWholeText()Ljava/lang/String;" since="8" />
-		<method name="isElementContentWhitespace()Z" since="8" />
-		<method name="replaceWholeText(Ljava/lang/String;)Lorg/w3c/dom/Text;" since="8" />
-		<method name="splitText(I)Lorg/w3c/dom/Text;" />
-	</class>
-	<class name="org/w3c/dom/TypeInfo" since="8">
-		<extends name="java/lang/Object" />
-		<method name="getTypeName()Ljava/lang/String;" />
-		<method name="getTypeNamespace()Ljava/lang/String;" />
-		<method name="isDerivedFrom(Ljava/lang/String;Ljava/lang/String;I)Z" />
-		<field name="DERIVATION_EXTENSION" />
-		<field name="DERIVATION_LIST" />
-		<field name="DERIVATION_RESTRICTION" />
-		<field name="DERIVATION_UNION" />
-	</class>
-	<class name="org/w3c/dom/UserDataHandler" since="8">
-		<extends name="java/lang/Object" />
-		<method name="handle(SLjava/lang/String;Ljava/lang/Object;Lorg/w3c/dom/Node;Lorg/w3c/dom/Node;)V" />
-		<field name="NODE_ADOPTED" />
-		<field name="NODE_CLONED" />
-		<field name="NODE_DELETED" />
-		<field name="NODE_IMPORTED" />
-		<field name="NODE_RENAMED" />
-	</class>
-	<class name="org/w3c/dom/ls/DOMImplementationLS" since="8">
-		<extends name="java/lang/Object" />
-		<method name="createLSInput()Lorg/w3c/dom/ls/LSInput;" />
-		<method name="createLSOutput()Lorg/w3c/dom/ls/LSOutput;" />
-		<method name="createLSParser(SLjava/lang/String;)Lorg/w3c/dom/ls/LSParser;" />
-		<method name="createLSSerializer()Lorg/w3c/dom/ls/LSSerializer;" />
-		<field name="MODE_ASYNCHRONOUS" />
-		<field name="MODE_SYNCHRONOUS" />
-	</class>
-	<class name="org/w3c/dom/ls/LSException" since="8">
-		<extends name="java/lang/RuntimeException" />
-		<method name="&lt;init>(SLjava/lang/String;)V" />
-		<field name="PARSE_ERR" />
-		<field name="SERIALIZE_ERR" />
-		<field name="code" />
-	</class>
-	<class name="org/w3c/dom/ls/LSInput" since="8">
-		<extends name="java/lang/Object" />
-		<method name="getBaseURI()Ljava/lang/String;" />
-		<method name="getByteStream()Ljava/io/InputStream;" />
-		<method name="getCertifiedText()Z" />
-		<method name="getCharacterStream()Ljava/io/Reader;" />
-		<method name="getEncoding()Ljava/lang/String;" />
-		<method name="getPublicId()Ljava/lang/String;" />
-		<method name="getStringData()Ljava/lang/String;" />
-		<method name="getSystemId()Ljava/lang/String;" />
-		<method name="setBaseURI(Ljava/lang/String;)V" />
-		<method name="setByteStream(Ljava/io/InputStream;)V" />
-		<method name="setCertifiedText(Z)V" />
-		<method name="setCharacterStream(Ljava/io/Reader;)V" />
-		<method name="setEncoding(Ljava/lang/String;)V" />
-		<method name="setPublicId(Ljava/lang/String;)V" />
-		<method name="setStringData(Ljava/lang/String;)V" />
-		<method name="setSystemId(Ljava/lang/String;)V" />
-	</class>
-	<class name="org/w3c/dom/ls/LSOutput" since="8">
-		<extends name="java/lang/Object" />
-		<method name="getByteStream()Ljava/io/OutputStream;" />
-		<method name="getCharacterStream()Ljava/io/Writer;" />
-		<method name="getEncoding()Ljava/lang/String;" />
-		<method name="getSystemId()Ljava/lang/String;" />
-		<method name="setByteStream(Ljava/io/OutputStream;)V" />
-		<method name="setCharacterStream(Ljava/io/Writer;)V" />
-		<method name="setEncoding(Ljava/lang/String;)V" />
-		<method name="setSystemId(Ljava/lang/String;)V" />
-	</class>
-	<class name="org/w3c/dom/ls/LSParser" since="8">
-		<extends name="java/lang/Object" />
-		<method name="abort()V" />
-		<method name="getAsync()Z" />
-		<method name="getBusy()Z" />
-		<method name="getDomConfig()Lorg/w3c/dom/DOMConfiguration;" />
-		<method name="getFilter()Lorg/w3c/dom/ls/LSParserFilter;" />
-		<method name="parse(Lorg/w3c/dom/ls/LSInput;)Lorg/w3c/dom/Document;" />
-		<method name="parseURI(Ljava/lang/String;)Lorg/w3c/dom/Document;" />
-		<method name="parseWithContext(Lorg/w3c/dom/ls/LSInput;Lorg/w3c/dom/Node;S)Lorg/w3c/dom/Node;" />
-		<method name="setFilter(Lorg/w3c/dom/ls/LSParserFilter;)V" />
-		<field name="ACTION_APPEND_AS_CHILDREN" />
-		<field name="ACTION_INSERT_AFTER" />
-		<field name="ACTION_INSERT_BEFORE" />
-		<field name="ACTION_REPLACE" />
-		<field name="ACTION_REPLACE_CHILDREN" />
-	</class>
-	<class name="org/w3c/dom/ls/LSParserFilter" since="8">
-		<extends name="java/lang/Object" />
-		<method name="acceptNode(Lorg/w3c/dom/Node;)S" />
-		<method name="getWhatToShow()I" />
-		<method name="startElement(Lorg/w3c/dom/Element;)S" />
-		<field name="FILTER_ACCEPT" />
-		<field name="FILTER_INTERRUPT" />
-		<field name="FILTER_REJECT" />
-		<field name="FILTER_SKIP" />
-	</class>
-	<class name="org/w3c/dom/ls/LSResourceResolver" since="8">
-		<extends name="java/lang/Object" />
-		<method name="resolveResource(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/w3c/dom/ls/LSInput;" />
-	</class>
-	<class name="org/w3c/dom/ls/LSSerializer" since="8">
-		<extends name="java/lang/Object" />
-		<method name="getDomConfig()Lorg/w3c/dom/DOMConfiguration;" />
-		<method name="getNewLine()Ljava/lang/String;" />
-		<method name="setNewLine(Ljava/lang/String;)V" />
-		<method name="write(Lorg/w3c/dom/Node;Lorg/w3c/dom/ls/LSOutput;)Z" />
-		<method name="writeToString(Lorg/w3c/dom/Node;)Ljava/lang/String;" />
-		<method name="writeToURI(Lorg/w3c/dom/Node;Ljava/lang/String;)Z" />
-	</class>
-	<class name="org/xml/sax/AttributeList" since="1">
-		<extends name="java/lang/Object" />
-		<method name="getLength()I" />
-		<method name="getName(I)Ljava/lang/String;" />
-		<method name="getType(I)Ljava/lang/String;" />
-		<method name="getType(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="getValue(I)Ljava/lang/String;" />
-		<method name="getValue(Ljava/lang/String;)Ljava/lang/String;" />
-	</class>
-	<class name="org/xml/sax/Attributes" since="1">
-		<extends name="java/lang/Object" />
-		<method name="getIndex(Ljava/lang/String;)I" />
-		<method name="getIndex(Ljava/lang/String;Ljava/lang/String;)I" />
-		<method name="getLength()I" />
-		<method name="getLocalName(I)Ljava/lang/String;" />
-		<method name="getQName(I)Ljava/lang/String;" />
-		<method name="getType(I)Ljava/lang/String;" />
-		<method name="getType(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="getType(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="getURI(I)Ljava/lang/String;" />
-		<method name="getValue(I)Ljava/lang/String;" />
-		<method name="getValue(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="getValue(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
-	</class>
-	<class name="org/xml/sax/ContentHandler" since="1">
-		<extends name="java/lang/Object" />
-		<method name="characters([CII)V" />
-		<method name="endDocument()V" />
-		<method name="endElement(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="endPrefixMapping(Ljava/lang/String;)V" />
-		<method name="ignorableWhitespace([CII)V" />
-		<method name="processingInstruction(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="setDocumentLocator(Lorg/xml/sax/Locator;)V" />
-		<method name="skippedEntity(Ljava/lang/String;)V" />
-		<method name="startDocument()V" />
-		<method name="startElement(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lorg/xml/sax/Attributes;)V" />
-		<method name="startPrefixMapping(Ljava/lang/String;Ljava/lang/String;)V" />
-	</class>
-	<class name="org/xml/sax/DTDHandler" since="1">
-		<extends name="java/lang/Object" />
-		<method name="notationDecl(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="unparsedEntityDecl(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
-	</class>
-	<class name="org/xml/sax/DocumentHandler" since="1">
-		<extends name="java/lang/Object" />
-		<method name="characters([CII)V" />
-		<method name="endDocument()V" />
-		<method name="endElement(Ljava/lang/String;)V" />
-		<method name="ignorableWhitespace([CII)V" />
-		<method name="processingInstruction(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="setDocumentLocator(Lorg/xml/sax/Locator;)V" />
-		<method name="startDocument()V" />
-		<method name="startElement(Ljava/lang/String;Lorg/xml/sax/AttributeList;)V" />
-	</class>
-	<class name="org/xml/sax/EntityResolver" since="1">
-		<extends name="java/lang/Object" />
-		<method name="resolveEntity(Ljava/lang/String;Ljava/lang/String;)Lorg/xml/sax/InputSource;" />
-	</class>
-	<class name="org/xml/sax/ErrorHandler" since="1">
-		<extends name="java/lang/Object" />
-		<method name="error(Lorg/xml/sax/SAXParseException;)V" />
-		<method name="fatalError(Lorg/xml/sax/SAXParseException;)V" />
-		<method name="warning(Lorg/xml/sax/SAXParseException;)V" />
-	</class>
-	<class name="org/xml/sax/HandlerBase" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/xml/sax/DTDHandler" />
-		<implements name="org/xml/sax/DocumentHandler" />
-		<implements name="org/xml/sax/EntityResolver" />
-		<implements name="org/xml/sax/ErrorHandler" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="org/xml/sax/InputSource" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/io/InputStream;)V" />
-		<method name="&lt;init>(Ljava/io/Reader;)V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="getByteStream()Ljava/io/InputStream;" />
-		<method name="getCharacterStream()Ljava/io/Reader;" />
-		<method name="getEncoding()Ljava/lang/String;" />
-		<method name="getPublicId()Ljava/lang/String;" />
-		<method name="getSystemId()Ljava/lang/String;" />
-		<method name="setByteStream(Ljava/io/InputStream;)V" />
-		<method name="setCharacterStream(Ljava/io/Reader;)V" />
-		<method name="setEncoding(Ljava/lang/String;)V" />
-		<method name="setPublicId(Ljava/lang/String;)V" />
-		<method name="setSystemId(Ljava/lang/String;)V" />
-	</class>
-	<class name="org/xml/sax/Locator" since="1">
-		<extends name="java/lang/Object" />
-		<method name="getColumnNumber()I" />
-		<method name="getLineNumber()I" />
-		<method name="getPublicId()Ljava/lang/String;" />
-		<method name="getSystemId()Ljava/lang/String;" />
-	</class>
-	<class name="org/xml/sax/Parser" since="1">
-		<extends name="java/lang/Object" />
-		<method name="parse(Ljava/lang/String;)V" />
-		<method name="parse(Lorg/xml/sax/InputSource;)V" />
-		<method name="setDTDHandler(Lorg/xml/sax/DTDHandler;)V" />
-		<method name="setDocumentHandler(Lorg/xml/sax/DocumentHandler;)V" />
-		<method name="setEntityResolver(Lorg/xml/sax/EntityResolver;)V" />
-		<method name="setErrorHandler(Lorg/xml/sax/ErrorHandler;)V" />
-		<method name="setLocale(Ljava/util/Locale;)V" />
-	</class>
-	<class name="org/xml/sax/SAXException" since="1">
-		<extends name="java/lang/Exception" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/Exception;)V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Exception;)V" />
-		<method name="getException()Ljava/lang/Exception;" />
-	</class>
-	<class name="org/xml/sax/SAXNotRecognizedException" since="1">
-		<extends name="org/xml/sax/SAXException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="org/xml/sax/SAXNotSupportedException" since="1">
-		<extends name="org/xml/sax/SAXException" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-	</class>
-	<class name="org/xml/sax/SAXParseException" since="1">
-		<extends name="org/xml/sax/SAXException" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;II)V" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IILjava/lang/Exception;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Lorg/xml/sax/Locator;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Lorg/xml/sax/Locator;Ljava/lang/Exception;)V" />
-		<method name="getColumnNumber()I" />
-		<method name="getLineNumber()I" />
-		<method name="getPublicId()Ljava/lang/String;" />
-		<method name="getSystemId()Ljava/lang/String;" />
-	</class>
-	<class name="org/xml/sax/XMLFilter" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/xml/sax/XMLReader" />
-		<method name="getParent()Lorg/xml/sax/XMLReader;" />
-		<method name="setParent(Lorg/xml/sax/XMLReader;)V" />
-	</class>
-	<class name="org/xml/sax/XMLReader" since="1">
-		<extends name="java/lang/Object" />
-		<method name="getContentHandler()Lorg/xml/sax/ContentHandler;" />
-		<method name="getDTDHandler()Lorg/xml/sax/DTDHandler;" />
-		<method name="getEntityResolver()Lorg/xml/sax/EntityResolver;" />
-		<method name="getErrorHandler()Lorg/xml/sax/ErrorHandler;" />
-		<method name="getFeature(Ljava/lang/String;)Z" />
-		<method name="getProperty(Ljava/lang/String;)Ljava/lang/Object;" />
-		<method name="parse(Ljava/lang/String;)V" />
-		<method name="parse(Lorg/xml/sax/InputSource;)V" />
-		<method name="setContentHandler(Lorg/xml/sax/ContentHandler;)V" />
-		<method name="setDTDHandler(Lorg/xml/sax/DTDHandler;)V" />
-		<method name="setEntityResolver(Lorg/xml/sax/EntityResolver;)V" />
-		<method name="setErrorHandler(Lorg/xml/sax/ErrorHandler;)V" />
-		<method name="setFeature(Ljava/lang/String;Z)V" />
-		<method name="setProperty(Ljava/lang/String;Ljava/lang/Object;)V" />
-	</class>
-	<class name="org/xml/sax/ext/Attributes2" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/xml/sax/Attributes" />
-		<method name="isDeclared(I)Z" />
-		<method name="isDeclared(Ljava/lang/String;)Z" />
-		<method name="isDeclared(Ljava/lang/String;Ljava/lang/String;)Z" />
-		<method name="isSpecified(I)Z" />
-		<method name="isSpecified(Ljava/lang/String;)Z" />
-		<method name="isSpecified(Ljava/lang/String;Ljava/lang/String;)Z" />
-	</class>
-	<class name="org/xml/sax/ext/Attributes2Impl" since="1">
-		<extends name="org/xml/sax/helpers/AttributesImpl" />
-		<implements name="org/xml/sax/ext/Attributes2" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Lorg/xml/sax/Attributes;)V" />
-		<method name="setDeclared(IZ)V" />
-		<method name="setSpecified(IZ)V" />
-	</class>
-	<class name="org/xml/sax/ext/DeclHandler" since="1">
-		<extends name="java/lang/Object" />
-		<method name="attributeDecl(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="elementDecl(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="externalEntityDecl(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="internalEntityDecl(Ljava/lang/String;Ljava/lang/String;)V" />
-	</class>
-	<class name="org/xml/sax/ext/DefaultHandler2" since="1">
-		<extends name="org/xml/sax/helpers/DefaultHandler" />
-		<implements name="org/xml/sax/ext/DeclHandler" />
-		<implements name="org/xml/sax/ext/EntityResolver2" />
-		<implements name="org/xml/sax/ext/LexicalHandler" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="org/xml/sax/ext/EntityResolver2" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/xml/sax/EntityResolver" />
-		<method name="getExternalSubset(Ljava/lang/String;Ljava/lang/String;)Lorg/xml/sax/InputSource;" />
-		<method name="resolveEntity(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/xml/sax/InputSource;" />
-	</class>
-	<class name="org/xml/sax/ext/LexicalHandler" since="1">
-		<extends name="java/lang/Object" />
-		<method name="comment([CII)V" />
-		<method name="endCDATA()V" />
-		<method name="endDTD()V" />
-		<method name="endEntity(Ljava/lang/String;)V" />
-		<method name="startCDATA()V" />
-		<method name="startDTD(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="startEntity(Ljava/lang/String;)V" />
-	</class>
-	<class name="org/xml/sax/ext/Locator2" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/xml/sax/Locator" />
-		<method name="getEncoding()Ljava/lang/String;" />
-		<method name="getXMLVersion()Ljava/lang/String;" />
-	</class>
-	<class name="org/xml/sax/ext/Locator2Impl" since="1">
-		<extends name="org/xml/sax/helpers/LocatorImpl" />
-		<implements name="org/xml/sax/ext/Locator2" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Lorg/xml/sax/Locator;)V" />
-		<method name="setEncoding(Ljava/lang/String;)V" />
-		<method name="setXMLVersion(Ljava/lang/String;)V" />
-	</class>
-	<class name="org/xml/sax/helpers/AttributeListImpl" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/xml/sax/AttributeList" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Lorg/xml/sax/AttributeList;)V" />
-		<method name="addAttribute(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="clear()V" />
-		<method name="removeAttribute(Ljava/lang/String;)V" />
-		<method name="setAttributeList(Lorg/xml/sax/AttributeList;)V" />
-	</class>
-	<class name="org/xml/sax/helpers/AttributesImpl" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/xml/sax/Attributes" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Lorg/xml/sax/Attributes;)V" />
-		<method name="addAttribute(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="clear()V" />
-		<method name="removeAttribute(I)V" />
-		<method name="setAttribute(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="setAttributes(Lorg/xml/sax/Attributes;)V" />
-		<method name="setLocalName(ILjava/lang/String;)V" />
-		<method name="setQName(ILjava/lang/String;)V" />
-		<method name="setType(ILjava/lang/String;)V" />
-		<method name="setURI(ILjava/lang/String;)V" />
-		<method name="setValue(ILjava/lang/String;)V" />
-	</class>
-	<class name="org/xml/sax/helpers/DefaultHandler" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/xml/sax/ContentHandler" />
-		<implements name="org/xml/sax/DTDHandler" />
-		<implements name="org/xml/sax/EntityResolver" />
-		<implements name="org/xml/sax/ErrorHandler" />
-		<method name="&lt;init>()V" />
-	</class>
-	<class name="org/xml/sax/helpers/LocatorImpl" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/xml/sax/Locator" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Lorg/xml/sax/Locator;)V" />
-		<method name="setColumnNumber(I)V" />
-		<method name="setLineNumber(I)V" />
-		<method name="setPublicId(Ljava/lang/String;)V" />
-		<method name="setSystemId(Ljava/lang/String;)V" />
-	</class>
-	<class name="org/xml/sax/helpers/NamespaceSupport" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="declarePrefix(Ljava/lang/String;Ljava/lang/String;)Z" />
-		<method name="getDeclaredPrefixes()Ljava/util/Enumeration;" />
-		<method name="getPrefix(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="getPrefixes()Ljava/util/Enumeration;" />
-		<method name="getPrefixes(Ljava/lang/String;)Ljava/util/Enumeration;" />
-		<method name="getURI(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="isNamespaceDeclUris()Z" />
-		<method name="popContext()V" />
-		<method name="processName(Ljava/lang/String;[Ljava/lang/String;Z)[Ljava/lang/String;" />
-		<method name="pushContext()V" />
-		<method name="reset()V" />
-		<method name="setNamespaceDeclUris(Z)V" />
-		<field name="NSDECL" />
-		<field name="XMLNS" />
-	</class>
-	<class name="org/xml/sax/helpers/ParserAdapter" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/xml/sax/DocumentHandler" />
-		<implements name="org/xml/sax/XMLReader" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Lorg/xml/sax/Parser;)V" />
-	</class>
-	<class name="org/xml/sax/helpers/ParserFactory" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="makeParser()Lorg/xml/sax/Parser;" />
-		<method name="makeParser(Ljava/lang/String;)Lorg/xml/sax/Parser;" />
-	</class>
-	<class name="org/xml/sax/helpers/XMLFilterImpl" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/xml/sax/ContentHandler" />
-		<implements name="org/xml/sax/DTDHandler" />
-		<implements name="org/xml/sax/EntityResolver" />
-		<implements name="org/xml/sax/ErrorHandler" />
-		<implements name="org/xml/sax/XMLFilter" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Lorg/xml/sax/XMLReader;)V" />
-	</class>
-	<class name="org/xml/sax/helpers/XMLReaderAdapter" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/xml/sax/ContentHandler" />
-		<implements name="org/xml/sax/Parser" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Lorg/xml/sax/XMLReader;)V" />
-	</class>
-	<class name="org/xml/sax/helpers/XMLReaderFactory" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="createXMLReader()Lorg/xml/sax/XMLReader;" />
-		<method name="createXMLReader(Ljava/lang/String;)Lorg/xml/sax/XMLReader;" />
-	</class>
-	<class name="org/xmlpull/v1/XmlPullParser" since="1">
-		<extends name="java/lang/Object" />
-		<method name="defineEntityReplacementText(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="getAttributeCount()I" />
-		<method name="getAttributeName(I)Ljava/lang/String;" />
-		<method name="getAttributeNamespace(I)Ljava/lang/String;" />
-		<method name="getAttributePrefix(I)Ljava/lang/String;" />
-		<method name="getAttributeType(I)Ljava/lang/String;" />
-		<method name="getAttributeValue(I)Ljava/lang/String;" />
-		<method name="getAttributeValue(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="getColumnNumber()I" />
-		<method name="getDepth()I" />
-		<method name="getEventType()I" />
-		<method name="getFeature(Ljava/lang/String;)Z" />
-		<method name="getInputEncoding()Ljava/lang/String;" />
-		<method name="getLineNumber()I" />
-		<method name="getName()Ljava/lang/String;" />
-		<method name="getNamespace()Ljava/lang/String;" />
-		<method name="getNamespace(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="getNamespaceCount(I)I" />
-		<method name="getNamespacePrefix(I)Ljava/lang/String;" />
-		<method name="getNamespaceUri(I)Ljava/lang/String;" />
-		<method name="getPositionDescription()Ljava/lang/String;" />
-		<method name="getPrefix()Ljava/lang/String;" />
-		<method name="getProperty(Ljava/lang/String;)Ljava/lang/Object;" />
-		<method name="getText()Ljava/lang/String;" />
-		<method name="getTextCharacters([I)[C" />
-		<method name="isAttributeDefault(I)Z" />
-		<method name="isEmptyElementTag()Z" />
-		<method name="isWhitespace()Z" />
-		<method name="next()I" />
-		<method name="nextTag()I" />
-		<method name="nextText()Ljava/lang/String;" />
-		<method name="nextToken()I" />
-		<method name="require(ILjava/lang/String;Ljava/lang/String;)V" />
-		<method name="setFeature(Ljava/lang/String;Z)V" />
-		<method name="setInput(Ljava/io/InputStream;Ljava/lang/String;)V" />
-		<method name="setInput(Ljava/io/Reader;)V" />
-		<method name="setProperty(Ljava/lang/String;Ljava/lang/Object;)V" />
-		<field name="CDSECT" />
-		<field name="COMMENT" />
-		<field name="DOCDECL" />
-		<field name="END_DOCUMENT" />
-		<field name="END_TAG" />
-		<field name="ENTITY_REF" />
-		<field name="FEATURE_PROCESS_DOCDECL" />
-		<field name="FEATURE_PROCESS_NAMESPACES" />
-		<field name="FEATURE_REPORT_NAMESPACE_ATTRIBUTES" />
-		<field name="FEATURE_VALIDATION" />
-		<field name="IGNORABLE_WHITESPACE" />
-		<field name="NO_NAMESPACE" />
-		<field name="PROCESSING_INSTRUCTION" />
-		<field name="START_DOCUMENT" />
-		<field name="START_TAG" />
-		<field name="TEXT" />
-		<field name="TYPES" />
-	</class>
-	<class name="org/xmlpull/v1/XmlPullParserException" since="1">
-		<extends name="java/lang/Exception" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="&lt;init>(Ljava/lang/String;Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/Throwable;)V" />
-		<method name="getColumnNumber()I" />
-		<method name="getDetail()Ljava/lang/Throwable;" />
-		<method name="getLineNumber()I" />
-		<field name="column" />
-		<field name="detail" />
-		<field name="row" />
-	</class>
-	<class name="org/xmlpull/v1/XmlPullParserFactory" since="1">
-		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
-		<method name="getFeature(Ljava/lang/String;)Z" />
-		<method name="isNamespaceAware()Z" />
-		<method name="isValidating()Z" />
-		<method name="newInstance()Lorg/xmlpull/v1/XmlPullParserFactory;" />
-		<method name="newInstance(Ljava/lang/String;Ljava/lang/Class;)Lorg/xmlpull/v1/XmlPullParserFactory;" />
-		<method name="newPullParser()Lorg/xmlpull/v1/XmlPullParser;" />
-		<method name="newSerializer()Lorg/xmlpull/v1/XmlSerializer;" />
-		<method name="setFeature(Ljava/lang/String;Z)V" />
-		<method name="setNamespaceAware(Z)V" />
-		<method name="setValidating(Z)V" />
-		<field name="PROPERTY_NAME" />
-		<field name="classNamesLocation" />
-		<field name="features" />
-		<field name="parserClasses" />
-		<field name="serializerClasses" />
-	</class>
-	<class name="org/xmlpull/v1/XmlSerializer" since="1">
-		<extends name="java/lang/Object" />
-		<method name="attribute(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/xmlpull/v1/XmlSerializer;" />
-		<method name="cdsect(Ljava/lang/String;)V" />
-		<method name="comment(Ljava/lang/String;)V" />
-		<method name="docdecl(Ljava/lang/String;)V" />
-		<method name="endDocument()V" />
-		<method name="endTag(Ljava/lang/String;Ljava/lang/String;)Lorg/xmlpull/v1/XmlSerializer;" />
-		<method name="entityRef(Ljava/lang/String;)V" />
-		<method name="flush()V" />
-		<method name="getDepth()I" />
-		<method name="getFeature(Ljava/lang/String;)Z" />
-		<method name="getName()Ljava/lang/String;" />
-		<method name="getNamespace()Ljava/lang/String;" />
-		<method name="getPrefix(Ljava/lang/String;Z)Ljava/lang/String;" />
-		<method name="getProperty(Ljava/lang/String;)Ljava/lang/Object;" />
-		<method name="ignorableWhitespace(Ljava/lang/String;)V" />
-		<method name="processingInstruction(Ljava/lang/String;)V" />
-		<method name="setFeature(Ljava/lang/String;Z)V" />
-		<method name="setOutput(Ljava/io/OutputStream;Ljava/lang/String;)V" />
-		<method name="setOutput(Ljava/io/Writer;)V" />
-		<method name="setPrefix(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="setProperty(Ljava/lang/String;Ljava/lang/Object;)V" />
-		<method name="startDocument(Ljava/lang/String;Ljava/lang/Boolean;)V" />
-		<method name="startTag(Ljava/lang/String;Ljava/lang/String;)Lorg/xmlpull/v1/XmlSerializer;" />
-		<method name="text(Ljava/lang/String;)Lorg/xmlpull/v1/XmlSerializer;" />
-		<method name="text([CII)Lorg/xmlpull/v1/XmlSerializer;" />
-	</class>
-	<class name="org/xmlpull/v1/sax2/Driver" since="1">
-		<extends name="java/lang/Object" />
-		<implements name="org/xml/sax/Attributes" />
-		<implements name="org/xml/sax/Locator" />
-		<implements name="org/xml/sax/XMLReader" />
-		<method name="&lt;init>()V" />
-		<method name="&lt;init>(Lorg/xmlpull/v1/XmlPullParser;)V" />
-		<method name="parseSubTree(Lorg/xmlpull/v1/XmlPullParser;)V" />
-		<method name="startElement(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
-		<field name="APACHE_DYNAMIC_VALIDATION_FEATURE" />
-		<field name="APACHE_SCHEMA_VALIDATION_FEATURE" />
-		<field name="DECLARATION_HANDLER_PROPERTY" />
-		<field name="LEXICAL_HANDLER_PROPERTY" />
-		<field name="NAMESPACES_FEATURE" />
-		<field name="NAMESPACE_PREFIXES_FEATURE" />
-		<field name="VALIDATION_FEATURE" />
-		<field name="contentHandler" />
-		<field name="errorHandler" />
-		<field name="pp" />
-		<field name="systemId" />
-	</class>
-</api>
diff --git a/sdk/build_tools_runtime.properties b/sdk/build_tools_runtime.properties
new file mode 100644
index 0000000..f2fbb40
--- /dev/null
+++ b/sdk/build_tools_runtime.properties
@@ -0,0 +1,2 @@
+Runtime.Jvm=1.6
+
diff --git a/sdk/platform_source.prop_template b/sdk/platform_source.prop_template
index 09a2d81..7ecb1e2 100644
--- a/sdk/platform_source.prop_template
+++ b/sdk/platform_source.prop_template
@@ -2,7 +2,7 @@
 Pkg.UserSrc=false
 Platform.Version=${PLATFORM_VERSION}
 Platform.CodeName=KitKat
-Pkg.Revision=2
+Pkg.Revision=1
 AndroidVersion.ApiLevel=${PLATFORM_SDK_VERSION}
 AndroidVersion.CodeName=${PLATFORM_VERSION_CODENAME}
 Layoutlib.Api=10
diff --git a/sdk/usbdriver_source.properties b/sdk/usbdriver_source.properties
index 5a0875c..d68d7c2 100755
--- a/sdk/usbdriver_source.properties
+++ b/sdk/usbdriver_source.properties
@@ -1,3 +1,3 @@
-Pkg.Revision=9

+Pkg.Revision=10

 Archive.HostOs=WINDOWS

 Extra.Path=usb_driver

diff --git a/tools/elftree/Android.mk b/tools/elftree/Android.mk
index b1c1eb7..5f2849d 100644
--- a/tools/elftree/Android.mk
+++ b/tools/elftree/Android.mk
@@ -14,8 +14,8 @@
 
 LOCAL_PATH := $(call my-dir)
 
-supported_platforms := linux-x86
-cur_platform := $(filter $(HOST_OS)-$(HOST_ARCH),$(supported_platforms))
+supported_platforms := linux
+cur_platform := $(filter $(HOST_OS),$(supported_platforms))
 
 ifdef cur_platform
 
diff --git a/tools/idegen/intellij-gen.sh b/tools/idegen/intellij-gen.sh
index 860bd3c..3c4efc5 100755
--- a/tools/idegen/intellij-gen.sh
+++ b/tools/idegen/intellij-gen.sh
@@ -54,7 +54,11 @@
 idegenjar=$script_dir/idegen.jar
 if [ ! -e $idegenjar ]; then
   # See if the jar is in the build directory.
-  idegenjar=$root_dir/out/host/linux-x86/framework/idegen.jar
+  platform="linux"
+  if [ "Darwin" = "$(uname)" ]; then
+    platform="darwin"
+  fi
+  idegenjar="$root_dir/out/host/$platform-x86/framework/idegen.jar"
 fi
 
 if [ ! -e "$index_file" ]; then